aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/.appveyor/test.ps1
diff options
context:
space:
mode:
Diffstat (limited to '.appveyor/test.ps1')
-rw-r--r--.appveyor/test.ps173
1 files changed, 73 insertions, 0 deletions
diff --git a/.appveyor/test.ps1 b/.appveyor/test.ps1
new file mode 100644
index 0000000..7701645
--- /dev/null
+++ b/.appveyor/test.ps1
@@ -0,0 +1,73 @@
+param(
+ [string] $BuildDir = $null,
+ [string] $Platform = $null
+)
+
+$ErrorActionPreference = "Stop";
+Set-PSDebug -Strict
+
+function Invoke-Exe {
+ param(
+ [ScriptBlock] $Cmd,
+ [int[]] $AllowedExitCodes = @(0)
+ )
+
+ $backupErrorActionPreference = $script:ErrorActionPreference
+ $script:ErrorActionPreference = 'Continue'
+
+ try {
+ & $Cmd
+ if ($AllowedExitCodes -notcontains $LastExitCode) {
+ throw "External command failed with exit code ${LastExitCode}: $Cmd"
+ }
+ } finally {
+ $script:ErrorActionPreference = $backupErrorActionPreference
+ }
+}
+
+function Test-AppVeyor {
+ return Test-Path env:APPVEYOR
+}
+
+function Get-AppVeyorBuildDir {
+ return 'C:\Projects\build'
+}
+
+function Set-AppVeyorDefaults {
+ $script:BuildDir = Get-AppVeyorBuildDir
+ $script:Configuration = $env:CONFIGURATION
+}
+
+function Run-ProjectTests {
+ param(
+ [Parameter(Mandatory=$true)]
+ [string] $BuildDir,
+ [Parameter(Mandatory=$true)]
+ [string] $Configuration
+ )
+
+ $unit_tests_dir = "$BuildDir\test\unit_tests\$Configuration"
+ cd $unit_tests_dir
+
+ Invoke-Exe { .\unit_tests.exe --log_level=all }
+}
+
+function Run-ProjectTestsAppVeyor {
+ if (Test-AppVeyor) {
+ Set-AppVeyorDefaults
+ $appveyor_cwd = pwd
+ }
+
+ try {
+ Run-ProjectTests `
+ -BuildDir $script:BuildDir `
+ -Configuration $script:Configuration
+ } finally {
+ if (Test-AppVeyor) {
+ cd $appveyor_cwd
+ Set-PSDebug -Off
+ }
+ }
+}
+
+Run-ProjectTestsAppVeyor