PowerShell CoreはCIにAppveyorとTravis CIをつかっている。
-
AppVeyor
- Windowsのテスト用
- CIの起点は
.\tools\appveyor.psm1
のInvoke-AppveyorTest
-
Travis CI
- Linux/macOSのテスト用
- CIの起点は
.\tools\travis.ps1
どちらのCIも内部的には.\build.psm1
モジュールのStart-PSPester
を呼んでおり、Start-PSPester
がテストの主処理となっている。
AppveyorのCIはAppveyorユーザーで実行され、Appveyorユーザーは昇格済みである。
WindowsのCIでは昇格済みのパターンと通常権限のパターンで2回Start-PSPester
が呼ばれている。
- 昇格済みのパターン
# 実行例であり、正確にすべてのパラメーターを記載しているわけではない
Start-PSPester -Tag 'RequireAdminOnWindows' -ExcludeTag 'Slow'
とSlow
テストを除外しRequireAdminOnWindows
タグだけを実行するパターンとなっている。
- 通常権限のパターン
# 実行例であり、正確にすべてのパラメーターを記載しているわけではない
Start-PSPester -Unelevate -Tag '' -ExcludeTag @('Slow', 'RequireAdminOnWindows')
と-ExcludeTag
パラメーターにRequireAdminOnWindows
が追加されRequireAdminOnWindows
タグ以外のテストをすべて実行している。
※ちなみにこの場合後述のCI
タグも実行対象となる。
また-Unelevate
パラメーターを指定しており、内部的にrunas.exe /trustlevel:0x20000 pwsh
が実行されて権限の降格がなされている。
Linux/macOSのCIはそれぞれtravisユーザーで行われている。
CIの設定上sudoが可能となっているがビルド環境を作る際に必要な箇所でのみ呼ばれており、CI自体は通常ユーザー権限でのみ実行されている。
この点に関してはGitHubに以下のIssueが上げられており、いずれはLinux/macOSにおいてroot権限でのテストがサポートされる見込みとなっている。
内部的には
# 実行例であり、正確にすべてのパラメーターを記載しているわけではない
Start-PSPester -Tag @('CI') -ExcludeTag 'Slow'
とCI
タグのついたテストのみを実行している。
通常のビルトとは別にフルビルドを行う際は、Start-PSPester
の実行対象にFEATURE
、SCENARIO
タグなどが付与され、テストケースが増やされる。