Skip to content

fix: improve copy-ignored verbose output, error context, and symlink handling#1090

Merged
max-sixty merged 5 commits intomainfrom
verbose
Feb 18, 2026
Merged

fix: improve copy-ignored verbose output, error context, and symlink handling#1090
max-sixty merged 5 commits intomainfrom
verbose

Conversation

@max-sixty
Copy link
Copy Markdown
Owner

@max-sixty max-sixty commented Feb 18, 2026

Summary

Closes #1084

  • Verbose output: -v flag now shows entries being copied (was silently ignored)
  • Error context: all error paths include file/directory paths (was "source path is not an existing regular file" with no path)
  • Broken symlink handling: use symlink_metadata instead of exists() to detect broken symlinks left by interrupted copies (was EEXIST requiring git clean -fdx)
  • Non-regular files: skip sockets/FIFOs in directories instead of failing (relevant for node_modules/)
  • Symlink helper: extract platform-specific symlink creation into create_symlink() for cleaner coverage instrumentation

Test plan

  • test_copy_ignored_verbose — verbose output for files
  • test_copy_ignored_verbose_directory — verbose output for directories
  • test_copy_ignored_broken_symlink_idempotent — EEXIST fix after ctrl+c
  • test_copy_ignored_error_includes_path_file — error context for file copies
  • test_copy_ignored_directory_with_symlinks — symlink preservation in directories
  • All 32 copy-ignored tests pass
  • Full test suite passes

This was written by Claude Code on behalf of @max-sixty

…k handling

Closes #1084

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
max-sixty and others added 3 commits February 17, 2026 17:08
Split error path test into two tests — one for directory recursive copy
errors and one for top-level file copy errors — to cover lines 636-639
in step_commands.rs for codecov/patch.

Co-Authored-By: Claude <noreply@anthropic.com>
Add test_copy_ignored_directory_with_symlinks to cover symlink creation
in copy_dir_recursive_fallback (lines 755-756 in step_commands.rs).

Co-Authored-By: Claude <noreply@anthropic.com>
Move #[cfg(unix)] and #[cfg(windows)] symlink creation into a dedicated
create_symlink() function. This gives LLVM coverage cleaner source
regions to instrument — inline #[cfg()] on individual statements caused
coverage misattribution where the unix symlink path showed 0 hits
despite being executed.

Co-Authored-By: Claude <noreply@anthropic.com>
@max-sixty max-sixty merged commit b1fb430 into main Feb 18, 2026
22 checks passed
@max-sixty max-sixty deleted the verbose branch February 18, 2026 02:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

wt step copy-ignored --verbose not printing verbose output, fails

2 participants