refactor: add cross watch rename tests

This commit is contained in:
CJ van den Berg 2026-03-29 18:02:16 +02:00
parent 6927431726
commit 5971750c4f
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
2 changed files with 71 additions and 9 deletions

View file

@ -15,14 +15,16 @@ if (-not (Test-Path $NW)) {
}
$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

View file

@ -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"