public/Invoke-PhpTests.ps1
function Invoke-PhpTests { <# .SYNOPSIS Test PHP Build. .PARAMETER PhpVersion PHP Version .PARAMETER Arch PHP Architecture .PARAMETER Ts PHP Build Type .PARAMETER Opcache Specify Cache #> [OutputType()] param ( [Parameter(Mandatory = $true, Position=0, HelpMessage='PHP Version')] [ValidateNotNull()] [ValidateLength(1, [int]::MaxValue)] [string] $PhpVersion, [Parameter(Mandatory = $true, Position=1, HelpMessage='PHP Architecture')] [ValidateNotNull()] [ValidateSet('x86', 'x64')] [string] $Arch, [Parameter(Mandatory = $true, Position=2, HelpMessage='PHP Build Type')] [ValidateNotNull()] [ValidateSet('nts', 'ts')] [string] $Ts, [Parameter(Mandatory = $true, Position=3, HelpMessage='Specify Cache')] [ValidateSet('nocache', 'opcache')] [string] $Opcache ) begin { } process { Set-NetSecurityProtocolType $VsData = (Get-VsVersion -PhpVersion $PhpVersion) if($null -eq $VsData.vs) { throw "PHP version $PhpVersion is not supported." } $currentDirectory = (Get-Location).Path $tempDirectory = [System.IO.Path]::GetTempPath() $buildDirectory = [System.IO.Path]::Combine($tempDirectory, [System.Guid]::NewGuid().ToString()) $testsDirectory = "tests" New-Item "$buildDirectory" -ItemType "directory" -Force > $null 2>&1 Set-Location "$buildDirectory" Add-TestRequirements -PhpVersion $PhpVersion -Arch $Arch -Ts $Ts -VsVersion $VsData.vs -TestsDirectory $testsDirectory Set-PhpIniForTests -BuildDirectory $buildDirectory -Opcache $Opcache $Env:Path = "$buildDirectory\phpbin;$Env:Path" $Env:TEST_PHP_EXECUTABLE = "$buildDirectory\phpbin\php.exe" $Env:TEST_PHP_JUNIT = "$buildDirectory\test-$Arch-$Ts-$opcache.xml" $Env:SKIP_IO_CAPTURE_TESTS = 1 $Env:OPENSSL_CONF = "$buildDirectory\phpbin\extras\ssl\openssl.cnf" $env:MYSQL_TEST_PORT = "3306" $Env:MYSQL_TEST_USER = "root" $Env:MYSQL_TEST_PASSWD = "" $Env:MYSQL_TEST_DB = "test" $Env:PDO_MYSQL_TEST_DSN = "mysql:host=localhost;dbname=test" $Env:PDO_MYSQL_TEST_USER = "root" $Env:PDO_MYSQL_TEST_PASS = "" Set-Location "$testsDirectory" Get-TestsList -OutputFile "tests-to-run.txt" $settings = Get-TestSettings -PhpVersion $PhpVersion php $settings.runner $settings.progress "-g" "FAIL,BORK,WARN,LEAK" "-r" "tests-to-run.txt" Copy-Item "$buildDirectory\test-$Arch-$Ts-$Opcache.xml" $currentDirectory Set-Location "$currentDirectory" } end { } } |