Windows-Specific Test Suite - Summary
What Was Created
This document summarizes the comprehensive Windows-specific test suite created for the PRISM validator.
Test Files Created
1. test_windows_paths.py (532 lines)
Comprehensive Windows path and filename testing:
✅ Drive letter handling (C:, D:, etc.)
✅ UNC network paths (\server\share)
✅ Long paths (>260 characters)
✅ Mixed path separators (/ and )
✅ Relative Windows paths
✅ Reserved filenames (CON, PRN, AUX, etc.)
✅ Invalid characters (<, >, :, “, |, ?, *)
✅ Trailing spaces and dots
✅ Filename length limits (255 chars)
✅ Windows system files (Thumbs.db, Desktop.ini)
✅ macOS system files (for cross-platform datasets)
✅ Unicode filenames
✅ Line ending handling (CRLF vs LF)
✅ Text encoding (UTF-8, Latin-1, ASCII)
✅ File locking scenarios
Result: 17/17 tests passed
2. test_windows_web_uploads.py (472 lines)
Windows-specific web interface upload testing:
✅ Upload path normalization
✅ Drive letter handling in uploads
✅ Large batch uploads (5000+ files)
✅ DataLad-style uploads (metadata only)
✅ Metadata paths JSON format
✅ Session directory management
✅ Temporary file cleanup
✅ Concurrent session isolation
✅ Path traversal prevention
✅ Filename injection prevention
✅ Hidden file handling
Result: 11/11 tests passed
3. test_windows_datasets.py (494 lines)
Dataset validation on Windows filesystems:
✅ Case-insensitive filesystem behavior
✅ Mixed case subject folders
✅ Windows path validation
✅ System file filtering in datasets
✅ Locked file handling
✅ Long filename paths
✅ Special characters in content
✅ Read-only file handling
✅ .bidsignore with Windows paths
✅ Cross-platform dataset compatibility
Result: 10/10 tests passed
4. run_windows_tests.py (104 lines)
Master test runner (Python version):
Runs all four test suites sequentially
Provides comprehensive summary
Captures stdout/stderr
5-minute timeout per test
Detailed error reporting
5. run_windows_tests.ps1 (160 lines)
Master test runner (PowerShell version):
Native Windows PowerShell integration
Virtual environment activation
Colored output
Individual or batch test execution
Verbose mode support
6. Updated test_windows_compatibility.py (255 lines)
Enhanced existing compatibility tests:
Added UTF-8 encoding support
Platform detection
Path normalization
Cross-platform file operations
Case sensitivity detection
Documentation Created
WINDOWS_TESTING.md (346 lines)
Comprehensive guide covering:
Overview of Windows-specific tests
Detailed description of each test file
How to run tests (multiple methods)
Windows-specific considerations
Common issues and solutions
CI/CD integration examples
Contributing guidelines
Updated tests/README.md
Added Windows test section:
List of all Windows test files
Quick start commands
Link to detailed documentation
Key Features
UTF-8 Encoding Support
All test files include UTF-8 console encoding support for Windows:
if sys.platform.startswith('win'):
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
Cross-Platform Compatibility
Tests detect the platform and adjust expectations:
Windows-specific validations only run on Windows
Non-Windows platforms get informative warnings
Tests still run on all platforms for verification
Comprehensive Coverage
Tests cover all Windows-specific scenarios:
File System: NTFS case-insensitivity, path limits
Path Handling: Drive letters, UNC paths, mixed separators
Filenames: Reserved names, invalid characters, length limits
System Files: Windows and macOS system files
Web Uploads: Session management, path security
Dataset Validation: BIDS compatibility, cross-platform datasets
Running the Tests
Quick Start
# PowerShell (recommended)
.\tests\run_windows_tests.ps1
# Python
python tests/run_windows_tests.py
# Individual test
python tests/test_windows_paths.py
All Tests Pass
📊 RESULTS: 4/4 test suites passed
🎉 All Windows test suites passed!
Test Statistics
Test Suite |
Tests |
Status |
|---|---|---|
Windows Paths |
17 |
✅ All Pass |
Web Uploads |
11 |
✅ All Pass |
Dataset Validation |
10 |
✅ All Pass |
Core Compatibility |
7 |
✅ All Pass |
Total |
45 |
✅ 100% |
Benefits
Cross-Platform Confidence: Ensures PRISM works correctly on Windows despite being developed on macOS
Early Problem Detection: Catches Windows-specific issues before they reach users
Documentation: Serves as living documentation of Windows requirements
CI/CD Ready: Can be integrated into GitHub Actions for automated testing
Comprehensive: Covers edge cases and platform-specific quirks
Next Steps
For Continuous Integration
Add to .github/workflows/tests.yml:
- name: Run Windows Tests
if: runner.os == 'Windows'
run: |
python tests/run_windows_tests.py
For Development
Developers should run Windows tests before committing:
# Before committing
python tests/run_windows_tests.py
For Users
Users experiencing Windows issues can run tests to diagnose:
# Diagnose Windows compatibility
python tests/test_windows_paths.py
Known Limitations
Compound Extensions: Reserved names with compound extensions like
AUX.nii.gzare not fully detected (Python’ssplitextonly removes last extension)Long Path Support: Tests for paths >260 chars require Windows 10+ with long paths enabled
Unicode Output: Some emojis may not display correctly in older Windows terminals
Files Modified
tests/test_windows_compatibility.py- Added UTF-8 encodingtests/README.md- Added Windows test section
Files Created
tests/test_windows_paths.pytests/test_windows_web_uploads.pytests/test_windows_datasets.pytests/run_windows_tests.pytests/run_windows_tests.ps1docs/WINDOWS_TESTING.mddocs/WINDOWS_TEST_SUMMARY.md(this file)
Conclusion
The PRISM validator now has comprehensive Windows-specific testing covering all major Windows filesystem quirks, path handling differences, and platform-specific edge cases. All 45 tests pass successfully on Windows, providing confidence that the tool works correctly despite being originally developed on macOS.