| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- @echo off
- REM Windows Task Management Test Script
- REM Tests DDNS task functionality on Windows systems
- REM Exits with non-zero status on verification failure
- REM Usage: test-task-windows.bat [DDNS_COMMAND]
- REM Examples:
- REM test-task-windows.bat (uses default: python3 -m ddns)
- REM test-task-windows.bat ddns (uses ddns command)
- REM test-task-windows.bat ./dist/ddns.exe (uses binary executable)
- REM test-task-windows.bat "python -m ddns" (uses custom python command)
- setlocal enabledelayedexpansion
- set "PYTHON_CMD=python3"
- REM Check if DDNS command is provided as argument
- if "%~1"=="" (
- set "DDNS_CMD=%PYTHON_CMD% -m ddns"
- ) else (
- set "DDNS_CMD=%~1"
- )
- echo === DDNS Task Management Test for Windows ===
- echo DDNS Command: %DDNS_CMD%
- echo.
- REM Check if we're actually on Windows
- ver | findstr /i "Windows" >nul
- if !ERRORLEVEL! neq 0 (
- echo ERROR: This script is designed for Windows
- exit /b 1
- )
- for /f "tokens=*" %%i in ('ver') do echo Confirmed running on %%i
- REM Test Step 1: Initial state check
- echo.
- echo === Step 1: Initial state verification ===
- %DDNS_CMD% task -h
- if !ERRORLEVEL! neq 0 (
- echo ERROR: Task help command failed
- exit /b 1
- )
- %DDNS_CMD% task --status
- for /f "tokens=*" %%i in ('%DDNS_CMD% task --status ^| findstr "Installed:"') do set "initial_status=%%i"
- if not defined initial_status set "initial_status=Installed: Unknown"
- echo Initial status: !initial_status!
- REM Check initial system state - should not exist
- echo.
- echo === Step 2: Initial system state verification ===
- echo Checking Windows Task Scheduler...
- schtasks /query /tn "DDNS" >nul 2>&1
- if !ERRORLEVEL! == 0 (
- echo ERROR: DDNS scheduled task should not exist initially but was found
- exit /b 1
- ) else (
- echo OK: No DDNS scheduled task found initially
- )
- REM Test Step 3: Install task
- echo.
- echo === Step 3: Installing DDNS task ===
- echo !initial_status! | findstr /i "Installed.*No" >nul
- if !ERRORLEVEL! == 0 (
- echo Installing task with 12-minute interval...
- %DDNS_CMD% task --install 12
- if !ERRORLEVEL! neq 0 (
- echo ERROR: Task installation failed
- exit /b 1
- )
- echo OK: Task installation command completed
- ) else (
- echo Task already installed, proceeding with verification...
- )
- REM Test Step 4: Verify installation
- echo.
- echo === Step 4: Verifying installation ===
- for /f "tokens=*" %%i in ('%DDNS_CMD% task --status ^| findstr "Installed:"') do set "install_status=%%i"
- echo Status: !install_status!
- echo !install_status! | findstr /i "Installed.*Yes" >nul
- if !ERRORLEVEL! == 0 (
- echo OK: DDNS status verification passed
- ) else (
- echo ERROR: Expected 'Installed: Yes', got '!install_status!'
- exit /b 1
- )
- REM Check system state after installation
- echo.
- echo === Step 5: System verification after installation ===
- echo Checking Windows Task Scheduler...
- schtasks /query /tn "DDNS" >nul 2>&1
- if !ERRORLEVEL! == 0 (
- echo OK: DDNS scheduled task found
- echo Task details:
- schtasks /query /tn "DDNS" /fo list 2>nul | findstr /i "TaskName State"
- ) else (
- echo ERROR: Scheduled task should exist but was not found
- exit /b 1
- )
- REM Test Step 6: Delete task
- echo.
- echo === Step 6: Deleting DDNS task ===
- %DDNS_CMD% task --uninstall
- if !ERRORLEVEL! neq 0 (
- echo ERROR: Task deletion failed
- exit /b 1
- )
- echo OK: Task deletion command completed
- REM Test Step 7: Verify deletion
- echo.
- echo === Step 7: Verifying deletion ===
- for /f "tokens=*" %%i in ('%DDNS_CMD% task --status ^| findstr "Installed:"') do set "final_status=%%i"
- echo Status: !final_status!
- echo !final_status! | findstr /i "Installed.*No" >nul
- if !ERRORLEVEL! == 0 (
- echo OK: DDNS status verification passed
- ) else (
- echo ERROR: Expected 'Installed: No', got '!final_status!'
- exit /b 1
- )
- REM Final system state verification
- echo.
- echo === Step 8: Final system state verification ===
- echo Checking Windows Task Scheduler...
- schtasks /query /tn "DDNS" >nul 2>&1
- if !ERRORLEVEL! == 0 (
- echo ERROR: Scheduled task should not exist but was found
- exit /b 1
- ) else (
- echo OK: DDNS scheduled task successfully removed
- )
- REM Test help commands availability
- echo.
- echo === Step 9: Help commands verification ===
- %DDNS_CMD% task --help | findstr /i "install uninstall enable disable status" >nul
- if !ERRORLEVEL! == 0 (
- echo OK: Task commands found in help
- ) else (
- echo ERROR: Task commands missing from help
- exit /b 1
- )
- echo.
- echo ===============================================
- echo ALL TESTS PASSED - Windows task management OK
- echo ===============================================
- echo.
- exit /b 0
|