Skip to content

Commit

Permalink
[docs] Document tools tests workflow (dotnet#101186)
Browse files Browse the repository at this point in the history
* [docs] Document tools tests workflow
  • Loading branch information
lambdageek authored and matouskozak committed Apr 30, 2024
1 parent 26e6d09 commit 8faae71
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions docs/workflow/testing/testing-managed-tools.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Testing managed tools

There are managed unit and functional tests for a number of tools including the
compiler for NativeAOT (`ILCompiler`), and the trimmer (`illink`).

## Adding new testsuites

To add a new test suite, create a new `.csproj` with a name that ends in `Tests`, such as:
`MyTool.Tests.csproj`. The property `IsTestProject` will be set by the `Directories.Build.props` in
the repository root. The property will, in turn, add references to the xunit package and the
apropriate test runner.

Now add a `ProjectToBuild` item in `eng/Substes.props` to one of the existing subsets, such as
`clr.toolstests`, or a new subset.

## Adding new testsuites to CI

To run the tests in CI, add a new pipeline or add to an exsiting pipeline such as `CLR_Tools_Tests`
in `eng/pipelines/runtime.yml`. Update the trigger condition, perhaps by adding a new set of paths
to `eng/pipelines/common/evaluate-default-paths.yml` in order to run the tests when the tool source
or the test sources change.

## Running tests locally

Build and run the tests locally either with

```console
./build.[sh|cmd] -s clr.toolstests -c [Release|Debug] -build -test
```

or

```console
./dotnet.[sh|cmd] test .../MyTool.Tests.csproj -c [Release|Debug]
```

The `dotnet-test` xunit filter mechanisms work to run a single test or a subset of the tests

```console
./dotnet.[sh|cmd] test .../MyTool.Tests.csproj -c [Release|Debug] --filter "FullyQualifiedName~MyTest"
```

The above command runs all tests whose fully-qualified name contains the substring `MyTest`. See
[dotnet test - Run selective unit tests](https://learn.microsoft.com/en-us/dotnet/core/testing/selective-unit-tests?pivots=mstest#syntax)
for the full syntax.

0 comments on commit 8faae71

Please sign in to comment.