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

  1. Cross-Platform Confidence: Ensures PRISM works correctly on Windows despite being developed on macOS

  2. Early Problem Detection: Catches Windows-specific issues before they reach users

  3. Documentation: Serves as living documentation of Windows requirements

  4. CI/CD Ready: Can be integrated into GitHub Actions for automated testing

  5. 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

  1. Compound Extensions: Reserved names with compound extensions like AUX.nii.gz are not fully detected (Python’s splitext only removes last extension)

  2. Long Path Support: Tests for paths >260 chars require Windows 10+ with long paths enabled

  3. Unicode Output: Some emojis may not display correctly in older Windows terminals

Files Modified

  • tests/test_windows_compatibility.py - Added UTF-8 encoding

  • tests/README.md - Added Windows test section

Files Created

  • tests/test_windows_paths.py

  • tests/test_windows_web_uploads.py

  • tests/test_windows_datasets.py

  • tests/run_windows_tests.py

  • tests/run_windows_tests.ps1

  • docs/WINDOWS_TESTING.md

  • docs/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.