# compiler: allow emitting tests to an object file · gitcafe/zig

[View on GitCafe](https://git.cafe/gitcafe/zig/commit/927f233ff82bd422b387b4eef7fcbc67823e4b85)

Repository: [gitcafe/zig](https://git.cafe/gitcafe/zig)

Visibility: public

Requested revision: 927f233ff82bd422b387b4eef7fcbc67823e4b85

Requested commit: 927f233ff82bd422b387b4eef7fcbc67823e4b85

Commit: 927f233ff82bd422b387b4eef7fcbc67823e4b85

Tree: b921686a62e6e60efa6db973488d9fffb93c8ebb

Author: mlugg

Committer: Matthew Lugg

## Message

```
compiler: allow emitting tests to an object file

This is fairly straightforward; the actual compiler changes are limited
to the CLI, since `Compilation` already supports this combination.

A new `std.Build` API is introduced to allow representing this. By
passing the `emit_object` option to `std.Build.addTest`, you get a
`Step.Compile` which emits an object file; you can then use that as you
would any other object, such as either installing it for external use,
or linking it into another step.

A standalone test is added to cover the build system API. It builds a
test into an object, and links it into a final executable, which it then
runs.

Using this build system mechanism prevents the build system from
noticing that you're running a `zig test`, so the build runner and test
runner do not communicate over stdio. However, that's okay, because the
real-world use cases for this feature don't want to do that anyway!

Resolves: #23374

```

## Parents

- [6a7ca4b8b0fcce9e5f6a4d3f799e83021929c975](https://git.cafe/gitcafe/zig/commit/6a7ca4b8b0fcce9e5f6a4d3f799e83021929c975?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zig/tree/927f233ff82bd422b387b4eef7fcbc67823e4b85?format=markdown)
