# `Mutare.Run.BrokenPartition`
[🔗](https://github.com/foxbenjaminfox/mutare/blob/v0.5.1/lib/mutare/run/broken_partition.ex#L1)

A partition (`:partition_env`) whose environment failed the run's tests with no mutant
active, while the same tests passed on partition `1` — one of `Mutare.Run`'s
`:broken_partitions`.

  * `:partition` — the partition.
  * `:mutant` — the report id of the kill on `:partition` whose tests were rerun there.
  * `:failure` — how the rerun failed (`t:failure/0`).
  * `:reason` — the output line that best explains the failure, or `nil`.

# `failure`

```elixir
@type failure() :: :tests_failed | :timeout | :app_start
```

How the rerun failed: its tests failed (`:tests_failed`), ran past the per-mutant cap
(`:timeout`), or the application would not start (`:app_start`).

# `t`

```elixir
@type t() :: %Mutare.Run.BrokenPartition{
  failure: failure(),
  mutant: pos_integer(),
  partition: pos_integer(),
  reason: String.t() | nil
}
```

# `kills`

```elixir
@spec kills(t(), [Mutare.Result.t()]) :: non_neg_integer()
```

How many of `results` are kills on `broken`'s partition: the kills that may be false.

# `rerun_failure`

```elixir
@spec rerun_failure(t()) :: String.t()
```

How the rerun failed, as a clause naming the kill by its id (`what_failed/2`), then the
explaining output line if any, e.g.
`the tests that killed mutant 12 failed: ** (RuntimeError) no database`.

# `what_failed`

```elixir
@spec what_failed(t(), String.t()) :: String.t()
```

How the rerun failed, as a clause, naming the kill whose tests were rerun as `mutant`
(`"mutant 12"`, or with its location where the caller has the site), e.g.
`the tests that killed mutant 12 failed`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
