🤖

swift-testingでCI上で実行しないテストを書く

2024/12/16に公開

swift-testingのenabledを使うとテストの実行条件を書くことが出来る。
ここでCI上で動作しているかのチェックをすれば、CIではテストをスキップできる。

@Test(.enabled(if: !isRunningInCI()))
func sort() async throws {
 ...
}
func isRunningInCI() -> Bool {
    let environment = ProcessInfo.processInfo.environment
    
    let ciEnvironments = [
        "GITHUB_ACTIONS",
        "TRAVIS",
        "CIRCLECI",
        "GITLAB_CI",
        "JENKINS_HOME",
        "APPVEYOR"
    ]
    
    for ciEnv in ciEnvironments {
        if environment[ciEnv] != nil {
            return true
        }
    }
    
    return false
}

Discussion