diff options
author | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2015-04-13 20:03:49 -0700 |
---|---|---|
committer | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2015-04-13 20:03:49 -0700 |
commit | 218ddd03767772d3dfab0d44a9d924d919442924 (patch) | |
tree | 4c346eaa02b3a8098599290665286a0cee619e37 /tests/autotest-appveyor.ps1 | |
parent | 05032b4c06edaa5ab0ee02b5e9d38cc2bbedd8dc (diff) |
Add AppVeyor build scripts
Diffstat (limited to 'tests/autotest-appveyor.ps1')
-rw-r--r-- | tests/autotest-appveyor.ps1 | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/autotest-appveyor.ps1 b/tests/autotest-appveyor.ps1 new file mode 100644 index 0000000..8b7a24c --- /dev/null +++ b/tests/autotest-appveyor.ps1 @@ -0,0 +1,71 @@ +function Invoke-CmdScript($scriptName) +{ + $cmdLine = """$scriptName"" $args & set" + & $Env:SystemRoot\system32\cmd.exe /c $cmdLine | + select-string '^([^=]*)=(.*)$' | foreach-object { + $varName = $_.Matches[0].Groups[1].Value + $varValue = $_.Matches[0].Groups[2].Value + set-item Env:$varName $varValue + } +} + +$sources = @("src/pugixml.cpp") + (Get-ChildItem -Path "tests/*.cpp" -Exclude "fuzz_*.cpp") +$failed = $FALSE + +foreach ($vs in 9,10,11,12) +{ + foreach ($arch in "x86","x64") + { + Write-Output "# Setting up VS$vs $arch" + + Invoke-CmdScript "C:\Program Files (x86)\Microsoft Visual Studio $vs.0\VC\vcvarsall.bat" $arch + if (! $?) { throw "Error setting up VS$vs $arch" } + + foreach ($defines in "standard", "PUGIXML_WCHAR_MODE") + { + $target = "tests_vs${vs}_${arch}_${defines}" + $deflist = if ($defines -eq "standard") { "" } else { "/D$defines" } + + Add-AppveyorTest $target -Outcome Running + + Write-Output "# Building $target.exe" + & cmd /c "cl.exe /Fe$target.exe /EHsc /W4 /WX $deflist $sources 2>&1" | Tee-Object -Variable buildOutput + + if ($?) + { + Write-Output "# Running $target.exe" + + $sw = [Diagnostics.Stopwatch]::StartNew() + + & .\$target | Tee-Object -Variable testOutput + + if ($?) + { + Write-Output "# Passed" + + Update-AppveyorTest $target -Outcome Passed -StdOut ($testOutput | out-string) -Duration $sw.ElapsedMilliseconds + } + else + { + Write-Output "# Failed" + + Update-AppveyorTest $target -Outcome Failed -StdOut ($testOutput | out-string) -ErrorMessage "Running failed" + + $failed = $TRUE + } + } + else + { + Write-Output "# Failed to build" + + Update-AppveyorTest $target -Outcome Failed -StdOut ($buildOutput | out-string) -ErrorMessage "Compilation failed" + + $failed = $TRUE + } + } + } +} + +if ($failed) { throw "One or more build steps failed" } + +Write-Output "# End" |