Contents

kylef/spectre

[*Sp*ecial *E*xecutive for *C*ommand-line *T*est *R*unning and

Usage

describe("a person") {
  let person = Person(name: "Kyle")

  $0.it("has a name") {
    try expect(person.name) == "Kyle"
  }

  $0.it("returns the name as description") {
    try expect(person.description) == "Kyle"
  }
}

Reporters

Spectre currently has two built-in reporters, Standard and the Dot reporter. Custom reporters are supported, make a type that conforms to Reporter.

The default reporter can be configured via an environment variable. For example:

$ env SPECTRE_REPORTER=dot swift test
$ env SPECTRE_REPORTER=tap swift test
Standard

The standard reporter produces output as follows:

Passing Tests

[Standard Reporter Success]

Failing Tests

[Standard Reporter Failure]

Dot

Using the -t argument, you can use the dot reporter.

Passing Tests

[Dot Reporter Success]

Failing Tests

[Dot Reporter Failure]

Expectation

Equivalence
try expect(name) == "Kyle"
try expect(name) != "Kyle"
Truthiness
try expect(alive).to.beTrue()
try expect(alive).to.beFalse()
try expect(alive).to.beNil()
Error handling
try expect(try write()).toThrow()
try expect(try write()).toThrow(FileError.NoPermission)
Comparable
try expect(5) > 2
try expect(5) >= 2
try expect(5) < 10
try expect(5) <= 10
Types
try expect("kyle").to.beOfType(String.self)
Causing a failure
throw failure("Everything is broken.")
Custom assertions

You can easily provide your own assertions, you just need to throw a failure when the assertion does not meet expectaions.

Examples

The following projects use Spectre:

Installation / Running

Swift Package Manager

Check out Commander as an example.

Playground

You can use Spectre in an Xcode Playground, open Spectre.playground in this repository, failures are printed in the console.

[Spectre in an Xcode Playground]

Package Metadata

Repository: kylef/spectre

Default branch: master

README: README.md