# Manual test for nightwatch CLI. # Usage: .\test_manual.ps1 [path-to-nightwatch-binary] # # Run this in one terminal. It starts nightwatch watching a temp dir, # performs a sequence of filesystem operations, then exits. # You should see one event per line on stdout as they happen. param( [string]$NW = ".\zig-out\bin\nightwatch.exe" ) if (-not (Test-Path $NW)) { Write-Error "error: binary not found: $NW" exit 1 } $TESTDIR = Join-Path $env:TEMP "nightwatch_manual_$PID" $TESTDIR2 = Join-Path $env:TEMP "nightwatch_manual2_$PID" $UNWATCHED = Join-Path $env:TEMP "nightwatch_unwatched_$PID" New-Item -ItemType Directory -Path $TESTDIR | Out-Null New-Item -ItemType Directory -Path $TESTDIR2 | Out-Null New-Item -ItemType Directory -Path $UNWATCHED | Out-Null Write-Host "--- watching $TESTDIR and $TESTDIR2 (unwatched: $UNWATCHED) ---" Write-Host "--- starting nightwatch (Ctrl-C to stop early) ---" Write-Host "" # 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" New-Item -ItemType File -Path "$TESTDIR\file1.txt" | Out-Null Start-Sleep -Milliseconds 400 Write-Host "[op] write to file1.txt" Set-Content -Path "$TESTDIR\file1.txt" -Value "hello nightwatch" Start-Sleep -Milliseconds 400 Write-Host "[op] mkdir subdir" New-Item -ItemType Directory -Path "$TESTDIR\subdir" | Out-Null Start-Sleep -Milliseconds 400 Write-Host "[op] touch subdir\file2.txt" New-Item -ItemType File -Path "$TESTDIR\subdir\file2.txt" | Out-Null Start-Sleep -Milliseconds 400 Write-Host "[op] rename file1.txt -> renamed.txt" Rename-Item -Path "$TESTDIR\file1.txt" -NewName "renamed.txt" Start-Sleep -Milliseconds 400 Write-Host "[op] delete renamed.txt" Remove-Item -Path "$TESTDIR\renamed.txt" Start-Sleep -Milliseconds 400 Write-Host "[op] delete subdir\file2.txt" Remove-Item -Path "$TESTDIR\subdir\file2.txt" Start-Sleep -Milliseconds 400 Write-Host "[op] rmdir subdir" Remove-Item -Path "$TESTDIR\subdir" Start-Sleep -Milliseconds 400 Write-Host "[op] mkdir dirA" New-Item -ItemType Directory -Path "$TESTDIR\dirA" | Out-Null Start-Sleep -Milliseconds 400 Write-Host "[op] touch dirA\file3.txt" New-Item -ItemType File -Path "$TESTDIR\dirA\file3.txt" | Out-Null Start-Sleep -Milliseconds 400 Write-Host "[op] rename dirA -> dirB" Rename-Item -Path "$TESTDIR\dirA" -NewName "dirB" Start-Sleep -Milliseconds 400 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 "# move in/out (one side unwatched)" Write-Host "" Write-Host "[op] touch outfile.txt in dir1" New-Item -ItemType File -Path "$TESTDIR\outfile.txt" | Out-Null Start-Sleep -Milliseconds 400 Write-Host "[op] move outfile.txt: dir1 -> unwatched (move out)" Move-Item -Path "$TESTDIR\outfile.txt" -Destination "$UNWATCHED\outfile.txt" Start-Sleep -Milliseconds 400 Write-Host "[op] move outfile.txt: unwatched -> dir1 (move in)" Move-Item -Path "$UNWATCHED\outfile.txt" -Destination "$TESTDIR\outfile.txt" Start-Sleep -Milliseconds 400 Write-Host "[op] delete outfile.txt" Remove-Item -Path "$TESTDIR\outfile.txt" Start-Sleep -Milliseconds 400 Write-Host "[op] mkdir unwatched\subdir with a file" New-Item -ItemType Directory -Path "$UNWATCHED\subdir" | Out-Null New-Item -ItemType File -Path "$UNWATCHED\subdir\inside.txt" | Out-Null Start-Sleep -Milliseconds 400 Write-Host "[op] move unwatched\subdir -> dir1\subdir (move subdir in)" Move-Item -Path "$UNWATCHED\subdir" -Destination "$TESTDIR\subdir" Start-Sleep -Milliseconds 400 Write-Host "[op] delete dir1\subdir\inside.txt" Remove-Item -Path "$TESTDIR\subdir\inside.txt" Start-Sleep -Milliseconds 400 Write-Host "[op] rmdir dir1\subdir" Remove-Item -Path "$TESTDIR\subdir" 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 Remove-Item -Recurse -Force -Path $UNWATCHED