diff --git a/internal/status/status.go b/internal/status/status.go index ed58f21..13c9379 100644 --- a/internal/status/status.go +++ b/internal/status/status.go @@ -12,7 +12,7 @@ const ( OverwritingNewPath Status = "overwriting new path" ForbiddenCharacters Status = "forbidden characters present" FilenameLengthExceeded Status = "filename too long" - TargetFileChanging Status = "target file is changing" + SourceAlreadyRenamed Status = "source already renamed" SourceNotFound Status = "source not found" Ignored Status = "ignored" ) diff --git a/report/report_test/report_test.go b/report/report_test/report_test.go index c7edf5a..6811a50 100644 --- a/report/report_test/report_test.go +++ b/report/report_test/report_test.go @@ -50,7 +50,7 @@ var filesWithConflicts = file.Changes{ { Source: "1.txt", Target: "2.txt", - Status: status.TargetFileChanging, + Status: status.SourceAlreadyRenamed, }, { Source: "nonexistent_file.txt", diff --git a/report/report_test/testdata/report_file_conflicts_in_JSON_stdout.golden b/report/report_test/testdata/report_file_conflicts_in_JSON_stdout.golden index 6bb5e76..db4ff3c 100644 --- a/report/report_test/testdata/report_file_conflicts_in_JSON_stdout.golden +++ b/report/report_test/testdata/report_file_conflicts_in_JSON_stdout.golden @@ -1 +1 @@ -[{"base_dir":"","target_dir":"","source":"original.txt","target":"","status":"empty filename","is_dir":false},{"base_dir":"","target_dir":"","source":"original.txt","target":"new_file.","status":"trailing periods present","is_dir":false},{"base_dir":"","target_dir":"","source":"file1.txt","target":"existing_file.txt","status":"target exists","is_dir":false},{"base_dir":"","target_dir":"","source":"original.txt","target":"new:file.txt","status":"forbidden characters present","is_dir":false},{"base_dir":"","target_dir":"","source":"file2.txt","target":"new_file.txt","status":"overwriting new path","is_dir":false},{"base_dir":"","target_dir":"","source":"original.txt","target":"this_is_a_very_long_filename_that_exceeds_the_maximum_allowed_length.txt","status":"filename too long","is_dir":false},{"base_dir":"","target_dir":"","source":"1.txt","target":"2.txt","status":"target file is changing","is_dir":false},{"base_dir":"","target_dir":"","source":"nonexistent_file.txt","target":"new_name.txt","status":"source not found","is_dir":false}] \ No newline at end of file +[{"base_dir":"","target_dir":"","source":"original.txt","target":"","status":"empty filename","is_dir":false},{"base_dir":"","target_dir":"","source":"original.txt","target":"new_file.","status":"trailing periods present","is_dir":false},{"base_dir":"","target_dir":"","source":"file1.txt","target":"existing_file.txt","status":"target exists","is_dir":false},{"base_dir":"","target_dir":"","source":"original.txt","target":"new:file.txt","status":"forbidden characters present","is_dir":false},{"base_dir":"","target_dir":"","source":"file2.txt","target":"new_file.txt","status":"overwriting new path","is_dir":false},{"base_dir":"","target_dir":"","source":"original.txt","target":"this_is_a_very_long_filename_that_exceeds_the_maximum_allowed_length.txt","status":"filename too long","is_dir":false},{"base_dir":"","target_dir":"","source":"1.txt","target":"2.txt","status":"source already renamed","is_dir":false},{"base_dir":"","target_dir":"","source":"nonexistent_file.txt","target":"new_name.txt","status":"source not found","is_dir":false}] \ No newline at end of file diff --git a/report/report_test/testdata/report_file_conflicts_no_color_stdout.golden b/report/report_test/testdata/report_file_conflicts_no_color_stdout.golden index c420cd3..9be7ad4 100644 --- a/report/report_test/testdata/report_file_conflicts_no_color_stdout.golden +++ b/report/report_test/testdata/report_file_conflicts_no_color_stdout.golden @@ -7,6 +7,6 @@ | original.txt | new:file.txt | forbidden characters present | | file2.txt | new_file.txt | overwriting new path | | original.txt | this_is_a_very_long_filename_that_exceeds_the_maximum_allowed_length.txt | filename too long | -| 1.txt | 2.txt | target file is changing | +| 1.txt | 2.txt | source already renamed | | nonexistent_file.txt | new_name.txt | source not found | *——————————————————————*——————————————————————————————————————————————————————————————————————————*——————————————————————————————* diff --git a/report/report_test/testdata/report_file_conflicts_stdout.golden b/report/report_test/testdata/report_file_conflicts_stdout.golden index 6caafa1..b0c1b1d 100644 --- a/report/report_test/testdata/report_file_conflicts_stdout.golden +++ b/report/report_test/testdata/report_file_conflicts_stdout.golden @@ -7,6 +7,6 @@ | original.txt | new:file.txt | forbidden characters present | | file2.txt | new_file.txt | overwriting new path | | original.txt | this_is_a_very_long_filename_that_exceeds_the_maximum_allowed_length.txt | filename too long | -| 1.txt | 2.txt | target file is changing | +| 1.txt | 2.txt | source already renamed | | nonexistent_file.txt | new_name.txt | source not found | *——————————————————————*——————————————————————————————————————————————————————————————————————————*——————————————————————————————* diff --git a/validate/validate.go b/validate/validate.go index 39562a6..d72fa51 100644 --- a/validate/validate.go +++ b/validate/validate.go @@ -175,10 +175,10 @@ func checkPathExistsConflict( return conflictDetected } -// checkTargetFileChangingConflict ensures that renaming a file to a target that -// is changing later is detected to prevent data loss. It is automatically fixed -// by swapping the items around so that any renaming targets do not change later. -func checkTargetFileChangingConflict( +// checkSourceAlreadyRenamedConflict ensures that renaming a file multiple times +// is detected to prevent data loss. It is automatically fixed by swapping the +// items around so that any renaming targets do not change later. +func checkSourceAlreadyRenamedConflict( ctx validationCtx, ) (conflictDetected bool) { seenIndex, ok := ctx.seenPaths[ctx.change.SourcePath] @@ -187,7 +187,7 @@ func checkTargetFileChangingConflict( } conflictDetected = true - ctx.change.Status = status.TargetFileChanging + ctx.change.Status = status.SourceAlreadyRenamed if ctx.autoFix { changes[seenIndex], changes[ctx.changeIndex] = changes[ctx.changeIndex], changes[seenIndex] @@ -412,7 +412,7 @@ func checkAndHandleConflict(ctx validationCtx, loopIndex *int) (detected bool) { checkPathExistsConflict, checkOverwritingPathConflict, checkSourceNotFoundConflict, - checkTargetFileChangingConflict, // INFO: Needs to be the last check + checkSourceAlreadyRenamedConflict, // INFO: Needs to be the last check } for i, check := range checks { diff --git a/validate/validate_test/validate_test.go b/validate/validate_test/validate_test.go index fab82dd..fffb002 100644 --- a/validate/validate_test/validate_test.go +++ b/validate/validate_test/validate_test.go @@ -112,7 +112,7 @@ func TestValidate(t *testing.T) { { Source: "dsc-002.arw", Target: "dsc-003.arw", - Status: status.TargetFileChanging, + Status: status.SourceAlreadyRenamed, BaseDir: "testdata/images", }, }, @@ -250,12 +250,12 @@ func TestValidate(t *testing.T) { { Source: "02.txt", Target: "01.txt", - Status: status.TargetFileChanging, + Status: status.SourceAlreadyRenamed, }, { Source: "01.txt", Target: "00.txt", - Status: status.TargetFileChanging, + Status: status.SourceAlreadyRenamed, }, }, ConflictDetected: true,