165 lines
5.6 KiB
PowerShell
165 lines
5.6 KiB
PowerShell
#
|
|
# Set and display project path
|
|
#
|
|
|
|
$UNITY_PROJECT_PATH = "${env:GITHUB_WORKSPACE}/${env:PROJECT_PATH}"
|
|
Write-Output "Using project path $UNITY_PROJECT_PATH"
|
|
|
|
#
|
|
# Set and display the artifacts path
|
|
#
|
|
|
|
Write-Output "Using artifacts path ${env:ARTIFACTS_PATH} to save test results."
|
|
$FULL_ARTIFACTS_PATH = "${env:GITHUB_WORKSPACE}\${env:ARTIFACTS_PATH}"
|
|
|
|
#
|
|
# Set and display the coverage results path
|
|
#
|
|
|
|
Write-Output "Using coverage results path ${env:COVERAGE_RESULTS_PATH} to save test coverage results."
|
|
$FULL_COVERAGE_RESULTS_PATH = "${env:GITHUB_WORKSPACE}\${env:COVERAGE_RESULTS_PATH}"
|
|
|
|
#
|
|
# Display custom parameters
|
|
#
|
|
|
|
Write-Output "Using custom parameters ${env:CUSTOM_PARAMETERS}"
|
|
|
|
# The following tests are 2019 mode (requires Unity 2019.2.11f1 or later)
|
|
# Reference: https://docs.unity3d.com/2019.3/Documentation/Manual/CommandLineArguments.html
|
|
|
|
#
|
|
# Display the unity version
|
|
#
|
|
|
|
Write-Output "Using Unity version ${env:UNITY_VERSION} to test."
|
|
|
|
#
|
|
# Overall info
|
|
#
|
|
|
|
Write-Output ""
|
|
Write-Output "###########################"
|
|
Write-Output "# Artifacts folder #"
|
|
Write-Output "###########################"
|
|
Write-Output ""
|
|
Write-Output "Creating $FULL_ARTIFACTS_PATH if it does not exist."
|
|
New-Item -Path "$FULL_ARTIFACTS_PATH" -ItemType Directory
|
|
|
|
Write-Output ""
|
|
Write-Output "###########################"
|
|
Write-Output "# Project directory #"
|
|
Write-Output "###########################"
|
|
Write-Output ""
|
|
Get-ChildItem -Hidden -Path $UNITY_PROJECT_PATH
|
|
|
|
#
|
|
# Testing for each platform
|
|
#
|
|
foreach ( $platform in ${env:TEST_PLATFORMS}.Split(";") )
|
|
{
|
|
if ( "$platform" -eq "standalone" )
|
|
{
|
|
Write-Output ""
|
|
Write-Output "###########################"
|
|
Write-Output "# Building Standalone #"
|
|
Write-Output "###########################"
|
|
Write-Output ""
|
|
|
|
# Create directories if they do not exist
|
|
if(-Not (Test-Path -Path $Env:UNITY_PROJECT_PATH\Assets\Editor))
|
|
{
|
|
# We use -Force to suppress output, doesn't overwrite anything
|
|
New-Item -ItemType Directory -Force -Path $Env:UNITY_PROJECT_PATH\Assets\Editor
|
|
}
|
|
if(-Not (Test-Path -Path $Env:UNITY_PROJECT_PATH\Assets\Player))
|
|
{
|
|
# We use -Force to suppress output, doesn't overwrite anything
|
|
New-Item -ItemType Directory -Force -Path $Env:UNITY_PROJECT_PATH\Assets\Player
|
|
}
|
|
|
|
# Copy the scripts
|
|
Copy-Item -Path "c:\UnityStandaloneScripts\Assets\Editor" -Destination $Env:UNITY_PROJECT_PATH\Assets\Editor -Recurse
|
|
Copy-Item -Path "c:\UnityStandaloneScripts\Assets\Player" -Destination $Env:UNITY_PROJECT_PATH\Assets\Player -Recurse
|
|
|
|
# Verify recursive paths
|
|
Get-ChildItem -Path $Env:UNITY_PROJECT_PATH\Assets\Editor -Recurse
|
|
Get-ChildItem -Path $Env:UNITY_PROJECT_PATH\Assets\Player -Recurse
|
|
|
|
$runTests="-runTests -testPlatform StandaloneWindows64 -builtTestRunnerPath $UNITY_PROJECT_PATH\Build\UnityTestRunner-Standalone.exe"
|
|
}
|
|
else
|
|
{
|
|
Write-Output ""
|
|
Write-Output "###########################"
|
|
Write-Output "# Testing in $platform #"
|
|
Write-Output "###########################"
|
|
Write-Output ""
|
|
|
|
if ( $platform -ne "COMBINE_RESULTS" )
|
|
{
|
|
$runTests = "-runTests -testPlatform $platform -testResults $FULL_ARTIFACTS_PATH/$platform-results.xml"
|
|
}
|
|
else
|
|
{
|
|
$runTests = "-quit"
|
|
}
|
|
}
|
|
|
|
$TEST_OUTPUT = Start-Process -NoNewWindow -Wait -PassThru "C:\Program Files\Unity\Hub\Editor\${env:UNITY_VERSION}\editor\Unity.exe" -ArgumentList "-batchmode -logFile $FULL_ARTIFACTS_PATH\$platform.log -projectPath $UNITY_PROJECT_PATH -coverageResultsPath $FULL_COVERAGE_RESULTS_PATH $runTests -enableCodeCoverage -debugCodeOptimization -coverageOptions ${env:COVERAGE_OPTIONS} ${env:CUSTOM_PARAMETERS}"
|
|
|
|
# Catch exit code
|
|
$TEST_EXIT_CODE = $TEST_OUTPUT.ExitCode
|
|
|
|
# Print unity log output
|
|
Get-Content "$FULL_ARTIFACTS_PATH/$platform.log"
|
|
|
|
if ( ( $TEST_EXIT_CODE -eq 0 ) -and ( "$platform" -eq "standalone" ) )
|
|
{
|
|
# Code Coverage currently only supports code ran in the Editor and not in Standalone/Player.
|
|
# https://docs.unity.cn/Packages/com.unity.testtools.codecoverage@1.1/manual/TechnicalDetails.html#how-it-works
|
|
|
|
$TEST_OUTPUT = Start-Process -NoNewWindow -Wait -PassThru "$UNITY_PROJECT_PATH\Build\UnityTestRunner-Standalone.exe" -ArgumentList "-batchmode -nographics -logFile $FULL_ARTIFACTS_PATH\$platform-player.log -testResults $FULL_ARTIFACTS_PATH\$platform-results.xml"
|
|
|
|
# Catch exit code
|
|
$TEST_EXIT_CODE = $TEST_OUTPUT.ExitCode
|
|
|
|
# Print player log output
|
|
Get-Content "$FULL_ARTIFACTS_PATH/$platform-player.log"
|
|
}
|
|
|
|
# Display results
|
|
if ($TEST_EXIT_CODE -eq 0)
|
|
{
|
|
Write-Output "Run succeeded, no failures occurred";
|
|
}
|
|
elseif ($TEST_EXIT_CODE -eq 2)
|
|
{
|
|
Write-Output "Run succeeded, some tests failed";
|
|
}
|
|
elseif ($TEST_EXIT_CODE -eq 3)
|
|
{
|
|
Write-Output "Run failure (other failure)";
|
|
}
|
|
else
|
|
{
|
|
Write-Output "Unexpected exit code $TEST_EXIT_CODE";
|
|
}
|
|
|
|
if ( $TEST_EXIT_CODE -ne 0)
|
|
{
|
|
$TEST_RUNNER_EXIT_CODE = $TEST_EXIT_CODE
|
|
}
|
|
|
|
Write-Output ""
|
|
Write-Output "###########################"
|
|
Write-Output "# $platform Results #"
|
|
Write-Output "###########################"
|
|
Write-Output ""
|
|
|
|
if ($platform -ne "COMBINE_RESULTS")
|
|
{
|
|
Get-Content "$FULL_ARTIFACTS_PATH/$platform-results.xml"
|
|
Get-Content "$FULL_ARTIFACTS_PATH/$platform-results.xml" | Select-String "test-run" | Select-String "Passed"
|
|
}
|
|
} |