Generate a `scala_junit_test
` target for each file in the `sources
` field.
Backend: <span style="color: purple"><code>pants.backend.experimental.scala</code></span>
## <code>dependencies</code>
<span style="color: purple">type: <code>Iterable[str] | None</code></span> <span style="color: green">default: <code>None</code></span>
Addresses to other targets that this target depends on, e.g. ['helloworld/subdir:lib', 'helloworld/main.py:lib', '3rdparty:reqs#django'].
This augments any dependencies inferred by Pants, such as by analyzing your imports. Use `./pants dependencies
` or `./pants peek
` on this target to get the final result.
See [Targets and BUILD files](🔗) for more about how addresses are formed, including for generated targets. You can also run `./pants list ::
` to find all addresses in your project, or `./pants list dir
` to find all addresses defined in that directory.
If the target is in the same BUILD file, you can leave off the BUILD file path, e.g. `:tgt
` instead of `helloworld/subdir:tgt
`. For generated first-party addresses, use `./
` for the file path, e.g. `./main.py:tgt
`; for all other generated targets, use `:tgt#generated_name
`.
You may exclude dependencies by prefixing with `!
`, e.g. `['!helloworld/subdir:lib', '!./sibling.txt']
`. Ignores are intended for false positives with dependency inference; otherwise, simply leave off the dependency from the BUILD file.
## <code>description</code>
<span style="color: purple">type: <code>str | None</code></span> <span style="color: green">default: <code>None</code></span>
A human-readable description of the target.
Use `./pants list --documented ::
` to see all targets with descriptions.
## <code>experimental_provides_types</code>
<span style="color: purple">type: <code>Iterable[str] | None</code></span> <span style="color: green">default: <code>None</code></span>
Signals that the specified types should be fulfilled by these source files during dependency inference.
This allows for specific types within packages that are otherwise inferred as belonging to `jvm_artifact
` targets to be unambiguously inferred as belonging to this first-party source.
If a given type is defined, at least one source file captured by this target must actually provide that symbol.
## <code>extra_env_vars</code>
<span style="color: purple">type: <code>Iterable[str] | None</code></span> <span style="color: green">default: <code>None</code></span>
Additional environment variables to include in test processes.
Entries are strings in the form `ENV_VAR=value
` to use explicitly; or just `ENV_VAR
` to copy the value of a variable in Pants's own environment.
This will be merged with and override values from `[test].extra_env_vars
`.
## <code>jdk</code>
<span style="color: purple">type: <code>str | None</code></span> <span style="color: green">default: <code>None</code></span>
The major version of the JDK that this target should be built with. If not defined, will default to `[jvm].default_source_jdk
`.
## <code>overrides</code>
<span style="color: purple">type: <code>Dict[Union[str, Tuple[str, ...]], Dict[str, Any]] | None</code></span> <span style="color: green">default: <code>None</code></span>
Override the field values for generated `{generated_target_name}
` targets.
Expects a dictionary of relative file paths and globs to a dictionary for the overrides. You may either use a string for a single path / glob, or a string tuple for multiple paths / globs. Each override is a dictionary of field names to the overridden value.
For example: overrides={ "Foo.scala": {"dependencies": [":files"]}, "Bar.scala": {"skip_scalafmt": True}, ("Foo.scala", "Bar.scala"): {"tags": ["linter_disabled"]}, }"
File paths and globs are relative to the BUILD file's directory. Every overridden file is validated to belong to this target's `sources
` field.
If you'd like to override a field's value for every `scala_junit_tests
` target generated by this target, change the field directly on this target rather than using the `overrides
` field.
You can specify the same file name in multiple keys, so long as you don't override the same field more than one time for the file.
## <code>resolve</code>
<span style="color: purple">type: <code>str | None</code></span> <span style="color: green">default: <code>None</code></span>
The resolve from `[jvm].resolves
` to use when compiling this target.
If not defined, will default to `[jvm].default_resolve
`.
## <code>scalac_plugins</code>
<span style="color: purple">type: <code>Iterable[str] | None</code></span> <span style="color: green">default: <code>None</code></span>
The names of Scala plugins that this source file requires.
The plugin must be defined by a corresponding `scalac_plugin
` AND `jvm_artifact
` target, and must be present in this target's resolve's lockfile.
If not specified, this will default to the plugins specified in `[scalac].plugins_for_resolve
` for this target's resolve.
## <code>sources</code>
<span style="color: purple">type: <code>Iterable[str] | None</code></span> <span style="color: green">default: <code>('*Test.scala',)</code></span>
A list of files and globs that belong to this target.
Paths are relative to the BUILD file's directory. You can ignore files/globs by prefixing them with `!
`.
Example: `sources=['*Test.scala', '!TestIgnore.scala']
`
## <code>tags</code>
<span style="color: purple">type: <code>Iterable[str] | None</code></span> <span style="color: green">default: <code>None</code></span>
Arbitrary strings to describe a target.
For example, you may tag some test targets with 'integration_test' so that you could run `./pants --tag='integration_test' test ::
` to only run on targets with that tag.
## <code>timeout</code>
<span style="color: purple">type: <code>int | None</code></span> <span style="color: green">default: <code>None</code></span>
A timeout (in seconds) used by each test file belonging to this target.
If unset, will default to `[test].timeout_default
`; if that option is also unset, then the test will never time out. Will never exceed `[test].timeout_maximum
`. Only applies if the option `--test-timeouts
` is set to true (the default).
## <code>timeout</code>
<span style="color: purple">type: <code>int | None</code></span> <span style="color: green">default: <code>None</code></span>
A timeout (in seconds) used by each test file belonging to this target.
If unset, will default to `[test].timeout_default
`; if that option is also unset, then the test will never time out. Will never exceed `[test].timeout_maximum
`. Only applies if the option `--test-timeouts
` is set to true (the default).