Skip to content

Make it easier to search for test failures in a log from CI #1144

@etcwilde

Description

@etcwilde

Motivation

I'm currently playing the game of "spot the test failure" in some SwiftPM tests (this is a subset that contains at least one of the test failures):

...
[2025-06-09T18:38:36.702Z] ◇ Test case passing 3 arguments tripleName → "mips64el-img-linux-gnuabin32" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') started started.
[2025-06-09T18:38:36.702Z] ◇ Test case passing 1 argument data → DataKnownTripleParsing(tripleName: "x86_64-unknown-windows-msvc", expectedArch: Optional(Basics.Triple.Arch.x86_64), expectedSubArch: nil, expectedVendor: nil, expectedOs: Optional(Basics.Triple.OS.win32), expectedEnvironment: Optional(Basics.Triple.Environment.msvc), expectedObjectFormat: Optional(Basics.Triple.ObjectFormat.coff)) (BasicsTests.TripleTests.DataKnownTripleParsing) to "Known Triple Parsing" (aka 'knownTripleParsing(data:)') started started.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 3 arguments tripleName → "arm-none-linux-musleabi" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ◇ Test case passing 3 arguments tripleName → "mips64-unknown-linux-gnuabin32" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') started started.
[2025-06-09T18:38:36.702Z] ◇ Test case passing 1 argument data → DataKnownTripleParsing(tripleName: "wasm32-unknown-wasi", expectedArch: Optional(Basics.Triple.Arch.wasm32), expectedSubArch: nil, expectedVendor: nil, expectedOs: Optional(Basics.Triple.OS.wasi), expectedEnvironment: nil, expectedObjectFormat: Optional(Basics.Triple.ObjectFormat.wasm)) (BasicsTests.TripleTests.DataKnownTripleParsing) to "Known Triple Parsing" (aka 'knownTripleParsing(data:)') started started.
[2025-06-09T18:38:36.702Z] ◇ Test case passing 1 argument data → DataKnownTripleParsing(tripleName: "armv7em-apple-none-eabihf-macho", expectedArch: Optional(Basics.Triple.Arch.arm), expectedSubArch: Optional(Basics.Triple.SubArch.arm(Basics.Triple.SubArch.ARM.v7em)), expectedVendor: Optional(Basics.Triple.Vendor.apple), expectedOs: Optional(Basics.Triple.OS.noneOS), expectedEnvironment: Optional(Basics.Triple.Environment.eabihf), expectedObjectFormat: Optional(Basics.Triple.ObjectFormat.macho)) (BasicsTests.TripleTests.DataKnownTripleParsing) to "Known Triple Parsing" (aka 'knownTripleParsing(data:)') started started.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 3 arguments tripleName → "mips-mti-linux-gnu" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 3 arguments tripleName → "mips64-unknown-linux-gnuabi64" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ◇ Test case passing 3 arguments tripleName → "mips-unknown-linux-gnu" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') started started.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 1 argument data → DataKnownTripleParsing(tripleName: "aarch64-unknown-linux-gnu", expectedArch: Optional(Basics.Triple.Arch.aarch64), expectedSubArch: nil, expectedVendor: nil, expectedOs: Optional(Basics.Triple.OS.linux), expectedEnvironment: Optional(Basics.Triple.Environment.gnu), expectedObjectFormat: Optional(Basics.Triple.ObjectFormat.elf)) (BasicsTests.TripleTests.DataKnownTripleParsing) to "Known Triple Parsing" (aka 'knownTripleParsing(data:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 3 arguments firstTripleName → "x86_64-apple-macosx" (Swift.String), secondTripleName → "x86_64-apple-linux" (Swift.String), isCompatible → false (Swift.Bool) to "isRuntimeCompatibleWith returns expected value" (aka 'isRuntimeCompatibleWith(firstTripleName:secondTripleName:isCompatible:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 3 arguments firstTripleName → "x86_64-apple-macosx14.0" (Swift.String), secondTripleName → "x86_64-apple-macosx13.0" (Swift.String), isCompatible → true (Swift.Bool) to "isRuntimeCompatibleWith returns expected value" (aka 'isRuntimeCompatibleWith(firstTripleName:secondTripleName:isCompatible:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 3 arguments tripleName → "mips64el-img-linux-gnuabin32" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 3 arguments tripleName → "riscv64-unknown-linux" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ◇ Test case passing 3 arguments tripleName → "mipsel-unknown-linux-gnu" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') started started.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 3 arguments tripleName → "mipsel-img-linux-gnu" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ◇ Test case passing 2 arguments tripleName → "armv7em-unknown-none-coff" (Swift.String), expected → ".coff" (Swift.String) to "Test dynamicLibraryExtesion attribute on Triple returns expected value" (aka 'noneOSDynamicLibrary(tripleName:expected:)') started started.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 1 argument data → DataKnownTripleParsing(tripleName: "x86_64-apple-macosx", expectedArch: Optional(Basics.Triple.Arch.x86_64), expectedSubArch: nil, expectedVendor: Optional(Basics.Triple.Vendor.apple), expectedOs: Optional(Basics.Triple.OS.macosx), expectedEnvironment: nil, expectedObjectFormat: Optional(Basics.Triple.ObjectFormat.macho)) (BasicsTests.TripleTests.DataKnownTripleParsing) to "Known Triple Parsing" (aka 'knownTripleParsing(data:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 1 argument data → DataKnownTripleParsing(tripleName: "aarch64-unknown-linux-android", expectedArch: Optional(Basics.Triple.Arch.aarch64), expectedSubArch: nil, expectedVendor: nil, expectedOs: Optional(Basics.Triple.OS.linux), expectedEnvironment: Optional(Basics.Triple.Environment.android), expectedObjectFormat: Optional(Basics.Triple.ObjectFormat.elf)) (BasicsTests.TripleTests.DataKnownTripleParsing) to "Known Triple Parsing" (aka 'knownTripleParsing(data:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ◇ Test case passing 2 arguments tripleName → "armv7em-unknown-none-macho" (Swift.String), expected → ".macho" (Swift.String) to "Test dynamicLibraryExtesion attribute on Triple returns expected value" (aka 'noneOSDynamicLibrary(tripleName:expected:)') started started.
[2025-06-09T18:38:36.702Z] ◇ Test case passing 3 arguments tripleName → "aarch64-oe-linux" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') started started.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 3 arguments tripleName → "mips-unknown-linux-gnu" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 3 arguments tripleName → "arm-none-none-eabi" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.702Z] ◇ Test case passing 2 arguments tripleName → "armv7em-unknown-none-xcoff" (Swift.String), expected → ".xcoff" (Swift.String) to "Test dynamicLibraryExtesion attribute on Triple returns expected value" (aka 'noneOSDynamicLibrary(tripleName:expected:)') started started.
[2025-06-09T18:38:36.702Z] ✔ Test case passing 1 argument data → DataKnownTripleParsing(tripleName: "x86_64-unknown-windows-msvc", expectedArch: Optional(Basics.Triple.Arch.x86_64), expectedSubArch: nil, expectedVendor: nil, expectedOs: Optional(Basics.Triple.OS.win32), expectedEnvironment: Optional(Basics.Triple.Environment.msvc), expectedObjectFormat: Optional(Basics.Triple.ObjectFormat.coff)) (BasicsTests.TripleTests.DataKnownTripleParsing) to "Known Triple Parsing" (aka 'knownTripleParsing(data:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 2 arguments tripleName → "wasm32-unknown-wasi" (Swift.String), expected → ".wasm" (Swift.String) to "Test dynamicLibraryExtesion attribute on Triple returns expected value" (aka 'noneOSDynamicLibrary(tripleName:expected:)') started started.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 1 argument data → DataKnownTripleParsing(tripleName: "x86_64-unknown-linux-gnu", expectedArch: Optional(Basics.Triple.Arch.x86_64), expectedSubArch: nil, expectedVendor: nil, expectedOs: Optional(Basics.Triple.OS.linux), expectedEnvironment: Optional(Basics.Triple.Environment.gnu), expectedObjectFormat: Optional(Basics.Triple.ObjectFormat.elf)) (BasicsTests.TripleTests.DataKnownTripleParsing) to "Known Triple Parsing" (aka 'knownTripleParsing(data:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 3 arguments tripleName → "mips64-unknown-linux-gnuabin32" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 3 arguments tripleName → "aarch64-apple-macosx" (Swift.String), isApple → true (Swift.Bool), isDarwin → true (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') started started.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 2 arguments tripleName → "armv7em-unknown-none-xcoff" (Swift.String), expected → ".xcoff" (Swift.String) to "Test dynamicLibraryExtesion attribute on Triple returns expected value" (aka 'noneOSDynamicLibrary(tripleName:expected:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 2 arguments tripleName → "armv7em-unknown-none-elf" (Swift.String), expected → ".elf" (Swift.String) to "Test dynamicLibraryExtesion attribute on Triple returns expected value" (aka 'noneOSDynamicLibrary(tripleName:expected:)') started started.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 3 arguments tripleName → "arm-oe-linux-gnueabi" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') started started.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 3 arguments tripleName → "armv7em-unknown-none-macho" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') started started.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 1 argument path → "/" (Swift.String) to callingCreateDirectoryOnAnExistingDirectoryIsSuccessful(path:) started started.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 3 arguments tripleName → "armv7em-apple-none-macho" (Swift.String), isApple → true (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') started started.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 2 arguments tripleName → "armv7em-unknown-none-coff" (Swift.String), expected → ".coff" (Swift.String) to "Test dynamicLibraryExtesion attribute on Triple returns expected value" (aka 'noneOSDynamicLibrary(tripleName:expected:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 1 argument data → DataKnownTripleParsing(tripleName: "armv7em-apple-none-eabihf-macho", expectedArch: Optional(Basics.Triple.Arch.arm), expectedSubArch: Optional(Basics.Triple.SubArch.arm(Basics.Triple.SubArch.ARM.v7em)), expectedVendor: Optional(Basics.Triple.Vendor.apple), expectedOs: Optional(Basics.Triple.OS.noneOS), expectedEnvironment: Optional(Basics.Triple.Environment.eabihf), expectedObjectFormat: Optional(Basics.Triple.ObjectFormat.macho)) (BasicsTests.TripleTests.DataKnownTripleParsing) to "Known Triple Parsing" (aka 'knownTripleParsing(data:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 1 argument path → "/" (Swift.String) to callingCreateDirectoryOnAnExistingDirectoryIsSuccessful(path:) passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 3 arguments tripleName → "aarch64-oe-linux" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 3 arguments tripleName → "arm-oe-linux-gnueabi" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 2 arguments tripleName → "armv7em-unknown-none-wasm" (Swift.String), expected → ".wasm" (Swift.String) to "Test dynamicLibraryExtesion attribute on Triple returns expected value" (aka 'noneOSDynamicLibrary(tripleName:expected:)') started started.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 3 arguments tripleName → "armv7em-unknown-none-macho" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 3 arguments tripleName → "mipsel-unknown-linux-gnu" (Swift.String), isApple → false (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 2 arguments tripleName → "armv7em-unknown-none-macho" (Swift.String), expected → ".macho" (Swift.String) to "Test dynamicLibraryExtesion attribute on Triple returns expected value" (aka 'noneOSDynamicLibrary(tripleName:expected:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 1 argument data → DataKnownTripleParsing(tripleName: "wasm32-unknown-wasi", expectedArch: Optional(Basics.Triple.Arch.wasm32), expectedSubArch: nil, expectedVendor: nil, expectedOs: Optional(Basics.Triple.OS.wasi), expectedEnvironment: nil, expectedObjectFormat: Optional(Basics.Triple.ObjectFormat.wasm)) (BasicsTests.TripleTests.DataKnownTripleParsing) to "Known Triple Parsing" (aka 'knownTripleParsing(data:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 1 argument path → "/something/ws" (Swift.String) to callingCreateDirectoryOnAnExistingDirectoryIsSuccessful(path:) started started.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 3 arguments tripleName → "armv7em-apple-none" (Swift.String), isApple → true (Swift.Bool), isDarwin → false (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') started started.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 1 argument path → "/what/is/this/" (Swift.String) to callingCreateDirectoryOnAnExistingDirectoryIsSuccessful(path:) started started.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 3 arguments tripleName → "x86_64h-apple-darwin" (Swift.String), isApple → true (Swift.Bool), isDarwin → true (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') started started.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 1 argument path → "/what/is/this/" (Swift.String) to callingCreateDirectoryOnAnExistingDirectoryIsSuccessful(path:) passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 2 arguments tripleName → "wasm32-unknown-wasi" (Swift.String), expected → ".wasm" (Swift.String) to "Test dynamicLibraryExtesion attribute on Triple returns expected value" (aka 'noneOSDynamicLibrary(tripleName:expected:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 3 arguments tripleName → "aarch64-apple-macosx" (Swift.String), isApple → true (Swift.Bool), isDarwin → true (Swift.Bool) to "Triple is Apple and is Darwin" (aka 'isAppleIsDarwin(_:_:_:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ✔ Test case passing 2 arguments tripleName → "armv7em-unknown-none-elf" (Swift.String), expected → ".elf" (Swift.String) to "Test dynamicLibraryExtesion attribute on Triple returns expected value" (aka 'noneOSDynamicLibrary(tripleName:expected:)') passed after 0.001 seconds.
[2025-06-09T18:38:36.703Z] ◇ Test case passing 1 argument path → "/tmp" (Swift.String) to callingCreateDirectoryOnAnExistingDirectoryIsSuccessful(path:) started started.
[2025-06-09T18:38:36.970Z] ◇ Test case passing 2 arguments path → ".././/.." (Swift.String), expected → ["..", ".."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) started started.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → "foo/bar/.." (Swift.String), expected → ["foo"] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → "." (Swift.String), expected → ["."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeAllPlatform(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → "bar/../foo/..//" (Swift.String), expected → ["."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → ".." (Swift.String), expected → [".."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeAllPlatform(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → "bar/../foo" (Swift.String), expected → ["foo"] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → "bar/../foo/..//yabba/a/b/" (Swift.String), expected → ["yabba", "a", "b"] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → "bar" (Swift.String), expected → ["bar"] (Swift.Array<Swift.String>) to relativePathComponentsAttributeAllPlatform(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → ".././/.." (Swift.String), expected → ["..", ".."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ◇ Test case passing 2 arguments path → "../a/.." (Swift.String), expected → [".."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) started started.
[2025-06-09T18:38:36.970Z] ◇ Test case passing 2 arguments path → "../a" (Swift.String), expected → ["..", "a"] (Swift.Array<Swift.String>) to relativePathComponentsAttributeAllPlatform(path:expected:) started started.
[2025-06-09T18:38:36.970Z] ◇ Test case passing 2 arguments path → "abc" (Swift.String), expected → ["abc"] (Swift.Array<Swift.String>) to relativePathComponentsAttributeAllPlatform(path:expected:) started started.
[2025-06-09T18:38:36.970Z] ◇ Test case passing 2 arguments path → "./.." (Swift.String), expected → [".."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) started started.
[2025-06-09T18:38:36.970Z] ◇ Test case passing 2 arguments path → "a/.." (Swift.String), expected → ["."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) started started.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → "../a/.." (Swift.String), expected → [".."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ◇ Test case passing 2 arguments path → "a/../////../////./////" (Swift.String), expected → [".."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) started started.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → "../a" (Swift.String), expected → ["..", "a"] (Swift.Array<Swift.String>) to relativePathComponentsAttributeAllPlatform(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → "abc" (Swift.String), expected → ["abc"] (Swift.Array<Swift.String>) to relativePathComponentsAttributeAllPlatform(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → "./.." (Swift.String), expected → [".."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → "a/.." (Swift.String), expected → ["."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test case passing 2 arguments path → "a/../////../////./////" (Swift.String), expected → [".."] (Swift.Array<Swift.String>) to relativePathComponentsAttributeFailsOnWindows(path:expected:) passed after 0.001 seconds.
[2025-06-09T18:38:36.970Z] [debug]: server response for https://packages.example.com/mona/LinkedList/1.1.1: 200 in 0.32s
[2025-06-09T18:38:36.970Z] ✔ Suite SigningEntityTests passed after 0.387 seconds.
[2025-06-09T18:38:36.970Z] [info]: downloading mona.LinkedList 1.1.1 source archive from https://packages.example.com/mona/LinkedList/1.1.1.zip
[2025-06-09T18:38:36.970Z] ✔ Suite LLVMObjdumpSymbolProviderTests passed after 0.404 seconds.
[2025-06-09T18:38:36.970Z] ✔ Suite TestGetNumberOfMatches passed after 0.404 seconds.
[2025-06-09T18:38:36.970Z] ✔ Suite SwiftCompilerOutputParserTests passed after 0.404 seconds.
[2025-06-09T18:38:36.970Z] ✔ Suite TestGetBuildSystemArgs passed after 0.404 seconds.
[2025-06-09T18:38:36.970Z] ✔ Suite BasicTests passed after 0.404 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test readingExistingFileReturnsExpectedContents() passed after 0.347 seconds.
[2025-06-09T18:38:36.970Z] ✔ Suite QueryEngineTests passed after 0.486 seconds.
[2025-06-09T18:38:36.970Z] ✔ Suite AdjacencyMatrixTests passed after 0.486 seconds.
[2025-06-09T18:38:36.970Z] ✔ Suite MirrorsConfigurationTests passed after 0.486 seconds.
[2025-06-09T18:38:36.970Z] ✔ Suite CategoryTests passed after 0.486 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test testWriteFileContentsSuccessful() passed after 0.401 seconds.
[2025-06-09T18:38:36.970Z] ✔ Suite FilePackageSigningEntityStorageTests passed after 0.486 seconds.
[2025-06-09T18:38:36.970Z] ✔ Suite EnvironmentKeyTests passed after 0.502 seconds.
[2025-06-09T18:38:36.970Z] ✘ Test testErrorOccursIfParentIsNotADirectory() passed after 0.418 seconds with 1 known issue.
[2025-06-09T18:38:36.970Z] ✘ Test errorOccursWhenWritingToRootDirectory() passed after 0.434 seconds with 1 known issue.
[2025-06-09T18:38:36.970Z] ✔ Test absolutePathBaseNameWithoutExtFailedOnWindows(path:expected:) with 1 test case passed after 0.413 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test absolutePathBaseNameWithoutExt(path:expected:) with 5 test cases passed after 0.413 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test suffixExtraction(path:expectedSuffix:expectedExtension:) with 6 test cases passed after 0.404 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test extraHeaders() passed after 0.511 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test delete() passed after 0.511 seconds.
[2025-06-09T18:38:36.970Z] ✔ Test isDescendant(path:ancesterOf:expected:) with 2 test cases passed after 0.404 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test absolutePathBaseNameExtractionFailsOnWindows(path:expected:) with 1 test case passed after 0.403 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test absolutePathBaseNameExtractionAllPlatforms(path:expected:) with 3 test cases passed after 0.403 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test suffixExtractionFailsOnWindows(path:) with 5 test cases passed after 0.404 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test testGet() passed after 0.511 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test isAncestor(path:ancesterOf:expected:) with 2 test cases passed after 0.403 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test isAncestorOfOrEqual(path:ancestorOfOrEqualTo:expected:) with 6 test cases passed after 0.403 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test noUserAgent() passed after 0.526 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test put() passed after 0.526 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test relativePathBaseNameWithoutExtFailsOnWindows(path:expected:) with 6 test cases passed after 0.412 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test isDescendantOfOrEqual(path:descendentOfOrEqualTo:expected:) with 6 test cases passed after 0.420 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test happyCase() passed after 0.526 seconds.
[2025-06-09T18:38:37.225Z] ✔ Suite DirectedGraphTests passed after 0.535 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test relativePathBaseNameWithoutExt(path:expected:) with 7 test cases passed after 0.412 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test exceedsDownloadSizeLimitProgress() passed after 0.527 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test relativePathDirectoryNameExtraction(path:expected:) with 3 test cases passed after 0.411 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test validResponseCodes() passed after 0.527 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test fileCorrupt() passed after 0.526 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test relativePathDirectoryNameExtractionFailsOnWindows(path:expected:) with 6 test cases passed after 0.411 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test post() passed after 0.527 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test userAgent() passed after 0.527 seconds.
[2025-06-09T18:38:37.225Z] ✔ Suite ToolsVersionSpecificationGenerationTests passed after 0.535 seconds.
[2025-06-09T18:38:37.225Z] ✔ Test absolutePathDirectoryNameAttributeFailsOnWindows(path:expected:) with 2 test cases passed after 0.411 seconds.
...

When looking for a test failure in CI or from an existing log, it's useful to be able to search for a common term.
Swift-Testing uses non-ascii and symbols to indicate failing and passing tests, making searching for the failing tests difficult.

Proposed solution

It would be great if we could put swift-testing in a CI/log mode that does not use UTF8 characters and instead uses something more common like error: or failed: to indicate test failures while being easy to type for search purposes.

Alternatives considered

No response

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    command-line experience⌨️ enhancements to the command line interfaceenhancementNew feature or requestissue-handlingRelated to Issue handling within the testing library

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions