Fix OSError on Windows by sanitizing process recording filenames #379
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
Process recordings generate a default filename incorporating a timestamp (e.g., 2023-10-27T10:00:00Z).
Problem
The ISO 8601 timestamp format includes colons (
:), which are reserved characters on Windows file systems. This caused anOSErrorwhen attempting to save process recordings on Windows machines (issue #377).Solution
This PR updates the filename generation logic in
_appmap/recording.pyto replace colons with hyphens in the timestamp string (e.g.,2023-10-27T10-00-00Z). It also changes the format to separate the PID from the timestamp with a dash for consistency, so the filenames are like2023-10-27T10-00-00Z-31337.appmap.json.Changes
_appmap/recording.py: Added.replace(":", "-")to theappmap_namegeneration._appmap/test/test_recording.py: Added a regression testtest_process_recording_filename_is_sanitizedto ensure generated filenames are valid and free of colons.-.Validation