| @setlocal enableextensions | |
| @echo off | |
| set D=%~dp0 | |
| set PCBUILD=%D%..\..\PCBuild\ | |
| set TARGETDIR=%TEMP% | |
| set TESTX86= | |
| set TESTX64= | |
| set TESTALLUSER= | |
| set TESTPERUSER= | |
| :CheckOpts | |
| if "%1" EQU "-h" goto Help | |
| if "%1" EQU "-x86" (set TESTX86=1) && shift && goto CheckOpts | |
| if "%1" EQU "-x64" (set TESTX64=1) && shift && goto CheckOpts | |
| if "%1" EQU "-t" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts | |
| if "%1" EQU "--target" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts | |
| if "%1" EQU "-a" (set TESTALLUSER=1) && shift && goto CheckOpts | |
| if "%1" EQU "--alluser" (set TESTALLUSER=1) && shift && goto CheckOpts | |
| if "%1" EQU "-p" (set TESTPERUSER=1) && shift && goto CheckOpts | |
| if "%1" EQU "--peruser" (set TESTPERUSER=1) && shift && goto CheckOpts | |
| if not defined TESTX86 if not defined TESTX64 (set TESTX86=1) && (set TESTX64=1) | |
| if not defined TESTALLUSER if not defined TESTPERUSER (set TESTALLUSER=1) && (set TESTPERUSER=1) | |
| if defined TESTX86 ( | |
| for %%f in ("%PCBUILD%win32\en-us\*.exe") do ( | |
| if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" | |
| if errorlevel 1 exit /B | |
| if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" | |
| if errorlevel 1 exit /B | |
| ) | |
| ) | |
| if defined TESTX64 ( | |
| for %%f in ("%PCBUILD%amd64\en-us\*.exe") do ( | |
| if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" | |
| if errorlevel 1 exit /B | |
| if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" | |
| if errorlevel 1 exit /B | |
| ) | |
| ) | |
| exit /B 0 | |
| :test | |
| @setlocal | |
| @echo on | |
| @if not exist "%~1" exit /B 1 | |
| @set EXE=%~1 | |
| @if not "%EXE:embed=%"=="%EXE%" exit /B 0 | |
| @set EXITCODE=0 | |
| @echo Installing %1 into %2 | |
| "%~1" /passive /log "%~2\install\log.txt" TargetDir="%~2\Python" Include_debug=1 Include_symbols=1 %~3 | |
| @if not errorlevel 1 ( | |
| @echo Printing version | |
| "%~2\Python\python.exe" -c "import sys; print(sys.version)" > "%~2\version.txt" 2>&1 | |
| ) | |
| @if not errorlevel 1 ( | |
| @echo Capturing Start Menu | |
| @dir /s/b "%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" > "%~2\startmenu.txt" 2>&1 | |
| @dir /s/b "%APPDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" >> "%~2\startmenu.txt" 2>&1 | |
| @echo Capturing registry | |
| @for /F "usebackq" %%f in (`reg query HKCR /s /f python /k`) do @( | |
| echo %%f >> "%~2\hkcr.txt" | |
| reg query "%%f" /s >> "%~2\hkcr.txt" 2>&1 | |
| ) | |
| @reg query HKCU\Software\Python /s > "%~2\hkcu.txt" 2>&1 | |
| @reg query HKLM\Software\Python /reg:32 /s > "%~2\hklm.txt" 2>&1 | |
| @reg query HKLM\Software\Python /reg:64 /s >> "%~2\hklm.txt" 2>&1 | |
| cmd /k exit 0 | |
| ) | |
| @if not errorlevel 1 ( | |
| @echo Installing package | |
| "%~2\Python\python.exe" -m pip install "azure<0.10" > "%~2\pip.txt" 2>&1 | |
| @if not errorlevel 1 ( | |
| "%~2\Python\python.exe" -m pip uninstall -y azure python-dateutil six >> "%~2\pip.txt" 2>&1 | |
| ) | |
| ) | |
| @if not errorlevel 1 ( | |
| @echo Testing Tcl/tk | |
| @set TCL_LIBRARY=%~2\Python\tcl\tcl8.6 | |
| "%~2\Python\python.exe" -m test -uall -v test_ttk_guionly test_tk test_idle > "%~2\tcltk.txt" 2>&1 | |
| @set TCL_LIBRARY= | |
| ) | |
| @set EXITCODE=%ERRORLEVEL% | |
| @echo Result was %EXITCODE% | |
| @echo Removing %1 | |
| "%~1" /passive /uninstall /log "%~2\uninstall\log.txt" | |
| @echo off | |
| exit /B %EXITCODE% | |
| :Help | |
| echo testrelease.bat [--target TARGET] [-x86] [-x64] [--alluser] [--peruser] [-h] | |
| echo. | |
| echo --target (-t) Specify the target directory for installs and logs | |
| echo -x86 Run tests for x86 installers | |
| echo -x64 Run tests for x64 installers | |
| echo --alluser (-a) Run tests for all-user installs (requires Administrator) | |
| echo --peruser (-p) Run tests for per-user installs | |
| echo -h Display this help information | |
| echo. | |
| echo If no test architecture is specified, all architectures will be tested. | |
| echo If no install type is selected, all install types will be tested. | |
| echo. |