tree e0b83da2543678561379e523c95c79f221361c3c
parent 4c1cea85b222a1ec94890be8960c69f549870454
author Philip Zeyliger <philip@bold.dev> 1749506052 +0000
committer Autoformatter <bot@sketch.dev> 1749506339 +0000

test: fix unicode filename testdata causing Go module packaging issues

Replace static unicode testdata files with dynamic file creation to avoid Go
module zip creation errors while preserving comprehensive unicode filename
testing functionality.

Problem Analysis:
Unicode characters in testdata filenames (🚀rocket.md, café.js, 测试文件.go,
русский.py, Übung.html, Makefile-日本語, readme-español.md, claude.한국어.md)
were causing go get failures when creating module zip files. The error
'malformed file path "claudetool/onstart/testdata/🚀rocket.md": invalid char '🚀''
prevented users from downloading the sketch.dev module using go get.

The existing tests verified that AnalyzeCodebase could handle unicode filenames
correctly, which is important functionality for international users. However,
the static testdata approach was incompatible with Go module packaging.

Implementation Changes:

1. Test File Modification:
   - Modified TestAnalyzeCodebase Non-ASCII Filenames test to use t.TempDir()
   - Added dynamic creation of unicode test files at runtime instead of static testdata
   - Created temporary git repository with proper unicode configuration
   - Added comprehensive git setup with core.quotepath=false and core.precomposeunicode=true

2. Dynamic File Creation:
   - Implemented map[string]string for test files with unicode filenames as keys
   - Files include same content as original testdata but created dynamically
   - Added proper subdirectory creation for subdir/claude.한국어.md test case
   - Git repository initialization and file addition handled programmatically

3. Git Configuration:
   - Added proper git config setup for unicode filename handling
   - Set user.name and user.email for temporary test repositories
   - Configured core.quotepath=false to handle unicode paths correctly
   - Used 'git add .' to add all files at once avoiding individual unicode filename issues

4. Static File Removal:
   - Removed all 8 problematic unicode testdata files
   - Deleted empty testdata directory structure
   - Cleaned up repository to eliminate unicode filenames from git history

5. Test Preservation:
   - Maintained identical test coverage for unicode filename functionality
   - Preserved all categorization tests (build files, documentation, guidance)
   - Kept extension counting verification for unicode files
   - Added proper imports (os/exec, path/filepath) for dynamic file creation

Technical Details:
- Uses Go's testing.T.TempDir() for isolated test environments
- Temporary git repositories prevent unicode files from entering main repository
- Same unicode characters tested: Chinese (测试), Korean (한국어), Russian (русский),
  French (café), German (Übung), Japanese (日本語), and emoji (🚀)
- File categorization still validates Makefile detection, README recognition, and claude.md guidance
- Error handling for git commands ensures test failures provide clear diagnostics

Benefits:
- Resolves Go module packaging issues allowing successful go get operations
- Maintains comprehensive unicode filename testing without repository pollution
- Dynamic approach is more robust and doesn't require static test file maintenance
- Tests run in isolation with proper cleanup via t.TempDir()
- Preserves international user support validation while fixing distribution issues

Testing:
- All tests pass with dynamic file creation approach
- Unicode filename categorization works identically to static file approach
- Extension counting and file analysis functionality preserved
- Git operations handle unicode filenames correctly in test environment

Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: s31257070090e907dk
