mix surfex.test (Surfex v0.9.0)

Copy Markdown View Source

Runs a requirement's tests as surfex reads them (Surfex.Select, §11): every test whose verifies: declarations resolve to the unit, a list's members included.

mix surfex.test cart-add                 # the tests declaring it
mix surfex.test spec.md#carts --within   # and those of the units inside it
mix surfex.test cart-add --list          # name them; run nothing
mix surfex.test cart-add -- --trace      # what follows `--` goes to mix test
mix surfex.test --deviations             # every deviation test, skips included

mix test --only verifies:cart-add selects a test tagged ["cart-add", "carts"] by neither id: ExUnit compares a list tag as one string. This task selects by declaration and runs mix test FILE:LINE … in a child process, which ExUnit's location filter selects exactly, then exits with that run's status. The run records its evidence as any run does. Each unit is any reference a tag may use. A unit that is unknown, ambiguous, or that no test declares is an error before anything runs.

--deviations runs every test that declares a deviation (@tag deviation: "#119", Surfex.Select.deviations/1) instead of a unit's, each by --only location:FILE:LINE and its skip reason by --include skip:REASON (Surfex.Select.deviation_args/1), so the skip beside the tag doesn't keep it from running and no other test runs. Its evidence then says whether any passes: mix surfex.status --evidence fails a passing one as a stale deviation. It takes no unit. None to run, another test in their files skipped for a deviation test's reason, or a skip reason that isn't a literal, is an error before anything runs.