<!-- Generated with Stardoc: http://skydoc.bazel.build -->

A test verifying other targets can be successfully analyzed as part of a `bazel test`

<a id="analysis_test"></a>

## analysis_test

<pre>
analysis_test(<a href="#analysis_test-name">name</a>, <a href="#analysis_test-targets">targets</a>)
</pre>

Test rule checking that other targets can be successfully analyzed.

This rule essentially verifies that all targets under `targets` would
generate no errors when analyzed with `bazel build [targets] --nobuild`.
Action success/failure for the targets and their transitive dependencies
are not verified. An analysis test simply ensures that each target in the transitive
dependencies propagate providers appropriately and register actions for their outputs
appropriately.

NOTE: If the targets fail to analyze, instead of the analysis_test failing, the analysis_test
will fail to build. Ideally, it would instead result in a test failure. This is a current
infrastructure limitation that may be fixed in the future.

Typical usage:

  load("@bazel_skylib//rules:analysis_test.bzl", "analysis_test")
  analysis_test(
      name = "my_analysis_test",
      targets = [
          "//some/package:rule",
      ],
  )

Args:
  name: The name of the test rule.
  targets: A list of targets to ensure build.

**ATTRIBUTES**


| Name  | Description | Type | Mandatory | Default |
| :------------- | :------------- | :------------- | :------------- | :------------- |
| <a id="analysis_test-name"></a>name |  A unique name for this target.   | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required |  |
| <a id="analysis_test-targets"></a>targets |  -   | <a href="https://bazel.build/concepts/labels">List of labels</a> | required |  |


