From 5971750c4fa5c1701f5fe15319647136875e2def Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Sun, 29 Mar 2026 18:02:16 +0200 Subject: [PATCH] refactor: add cross watch rename tests --- test_manual.ps1 | 42 +++++++++++++++++++++++++++++++++++++----- test_manual.sh | 38 ++++++++++++++++++++++++++++++++++---- 2 files changed, 71 insertions(+), 9 deletions(-) diff --git a/test_manual.ps1 b/test_manual.ps1 index cee98fe..672bc6b 100644 --- a/test_manual.ps1 +++ b/test_manual.ps1 @@ -14,15 +14,17 @@ if (-not (Test-Path $NW)) { exit 1 } -$TESTDIR = Join-Path $env:TEMP "nightwatch_manual_$PID" -New-Item -ItemType Directory -Path $TESTDIR | Out-Null +$TESTDIR = Join-Path $env:TEMP "nightwatch_manual_$PID" +$TESTDIR2 = Join-Path $env:TEMP "nightwatch_manual2_$PID" +New-Item -ItemType Directory -Path $TESTDIR | Out-Null +New-Item -ItemType Directory -Path $TESTDIR2 | Out-Null -Write-Host "--- watching $TESTDIR ---" +Write-Host "--- watching $TESTDIR and $TESTDIR2 ---" Write-Host "--- starting nightwatch (Ctrl-C to stop early) ---" Write-Host "" -# Start nightwatch in background, events go to stdout -$proc = Start-Process -FilePath $NW -ArgumentList $TESTDIR -NoNewWindow -PassThru +# Start nightwatch in background watching both dirs, events go to stdout +$proc = Start-Process -FilePath $NW -ArgumentList $TESTDIR, $TESTDIR2 -NoNewWindow -PassThru Start-Sleep -Milliseconds 500 Write-Host "[op] touch file1.txt" @@ -73,8 +75,38 @@ Write-Host "[op] rmdir dirB (and contents)" Remove-Item -Recurse -Force -Path "$TESTDIR\dirB" Start-Sleep -Milliseconds 500 +Write-Host "" +Write-Host "# cross-root renames (both dirs watched)" +Write-Host "" + +Write-Host "[op] mkdir subA in both roots" +New-Item -ItemType Directory -Path "$TESTDIR\subA" | Out-Null +New-Item -ItemType Directory -Path "$TESTDIR2\subA" | Out-Null +Start-Sleep -Milliseconds 400 + +Write-Host "[op] touch crossfile.txt in dir1" +New-Item -ItemType File -Path "$TESTDIR\crossfile.txt" | Out-Null +Start-Sleep -Milliseconds 400 + +Write-Host "[op] rename crossfile.txt: dir1 -> dir2 (root to root)" +Move-Item -Path "$TESTDIR\crossfile.txt" -Destination "$TESTDIR2\crossfile.txt" +Start-Sleep -Milliseconds 400 + +Write-Host "[op] touch subA\crosssub.txt in dir1" +New-Item -ItemType File -Path "$TESTDIR\subA\crosssub.txt" | Out-Null +Start-Sleep -Milliseconds 400 + +Write-Host "[op] rename subA\crosssub.txt: dir1\subA -> dir2\subA (subdir to subdir)" +Move-Item -Path "$TESTDIR\subA\crosssub.txt" -Destination "$TESTDIR2\subA\crosssub.txt" +Start-Sleep -Milliseconds 400 + +Write-Host "[op] rename subA: dir1 -> dir2 (subdir across roots)" +Move-Item -Path "$TESTDIR\subA" -Destination "$TESTDIR2\subA2" +Start-Sleep -Milliseconds 500 + Write-Host "" Write-Host "--- done, stopping nightwatch ---" Stop-Process -Id $proc.Id -ErrorAction SilentlyContinue $proc.WaitForExit() Remove-Item -Recurse -Force -Path $TESTDIR +Remove-Item -Recurse -Force -Path $TESTDIR2 diff --git a/test_manual.sh b/test_manual.sh index 12db2ac..3680d14 100755 --- a/test_manual.sh +++ b/test_manual.sh @@ -14,12 +14,13 @@ if [ ! -x "$NW" ]; then fi TESTDIR=$(mktemp -d) -echo "--- watching $TESTDIR ---" +TESTDIR2=$(mktemp -d) +echo "--- watching $TESTDIR and $TESTDIR2 ---" echo "--- starting nightwatch (Ctrl-C to stop early) ---" echo "" -# Start nightwatch in background, events go to stdout -"$NW" "$TESTDIR" & +# Start nightwatch in background watching both dirs, events go to stdout +"$NW" "$TESTDIR" "$TESTDIR2" & NW_PID=$! sleep 0.5 @@ -71,8 +72,37 @@ echo "[op] rmdir dirB (and contents)" rm -rf "$TESTDIR/dirB" sleep 0.5 +echo "" +echo "# cross-root renames (both dirs watched)" +echo "" + +echo "[op] mkdir subA in both roots" +mkdir "$TESTDIR/subA" +mkdir "$TESTDIR2/subA" +sleep 0.4 + +echo "[op] touch crossfile.txt in dir1" +touch "$TESTDIR/crossfile.txt" +sleep 0.4 + +echo "[op] rename crossfile.txt: dir1 -> dir2 (root to root)" +mv "$TESTDIR/crossfile.txt" "$TESTDIR2/crossfile.txt" +sleep 0.4 + +echo "[op] touch subA/crosssub.txt in dir1" +touch "$TESTDIR/subA/crosssub.txt" +sleep 0.4 + +echo "[op] rename subA/crosssub.txt: dir1/subA -> dir2/subA (subdir to subdir)" +mv "$TESTDIR/subA/crosssub.txt" "$TESTDIR2/subA/crosssub.txt" +sleep 0.4 + +echo "[op] rename subA: dir1 -> dir2 (subdir across roots)" +mv "$TESTDIR/subA" "$TESTDIR2/subA2" +sleep 0.5 + echo "" echo "--- done, stopping nightwatch ---" kill $NW_PID 2>/dev/null wait $NW_PID 2>/dev/null -rm -rf "$TESTDIR" +rm -rf "$TESTDIR" "$TESTDIR2"