[Fuchsia] Generate <test_target_name> Wrapper in Output Directory
Allow fuchsia_test_runner template to create an executable wrapper with same name as test target itself. When building a test target, in addition to the test component <test_target_name>_component, three wrapper scripts are created: 1. deploy_<test_target_name>, for deploying the Fuchsia package onto a device 2. run_<test_target_name>, for running the Fuchsia package on the device 3. <test_target_name>, for running the Fuchsia package on the device The first two executables will be found in ${OUTPUT_DIR}/bin whereas %package% will be found directly in the output directory. This change also allows ninja to identify which test target to build in the case of duplicate target names (e.g. unit_tests) since ninja prioritizes executable targets. Bug: 1268956 Change-Id: I582ab0d22a1b19b0e8df1bb96e0c8d207b021a2c Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3296401 Auto-Submit: Chong Gu <chonggu@google.com> Reviewed-by: David Dorwin <ddorwin@chromium.org> Commit-Queue: Chong Gu <chonggu@google.com> Cr-Commit-Position: refs/heads/main@{#950169}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
a2c06811b1
commit
bb94e0f01e
@@ -151,6 +151,17 @@ template("fuchsia_run_script_with_packages") {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Create a wrapper script rather than using a group() in order to ensure
|
||||||
|
# "ninja $target_name" always works.
|
||||||
|
if (defined(invoker.executable_wrapper)) {
|
||||||
|
generate_wrapper(invoker.executable_wrapper) {
|
||||||
|
forward_variables_from(invoker, TESTONLY_AND_VISIBILITY)
|
||||||
|
executable = _generated_script_path
|
||||||
|
wrapper_script = "$root_build_dir/${invoker.executable_wrapper}"
|
||||||
|
deps = [ ":${invoker._run_target}" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Generates a script which deploys a package to the TUF repo of a Fuchsia
|
# Generates a script which deploys a package to the TUF repo of a Fuchsia
|
||||||
@@ -203,6 +214,7 @@ template("fuchsia_test_runner") {
|
|||||||
executable_args = []
|
executable_args = []
|
||||||
}
|
}
|
||||||
output_name_format = "run_%package%"
|
output_name_format = "run_%package%"
|
||||||
|
executable_wrapper = invoker.target_name
|
||||||
|
|
||||||
# Populate the arguments used by the test runner, defined at build-time.
|
# Populate the arguments used by the test runner, defined at build-time.
|
||||||
executable_args += [
|
executable_args += [
|
||||||
@@ -251,14 +263,6 @@ template("fuchsia_test_runner") {
|
|||||||
testonly = invoker.testonly
|
testonly = invoker.testonly
|
||||||
include_fuchsia_build_dir = true
|
include_fuchsia_build_dir = true
|
||||||
}
|
}
|
||||||
|
|
||||||
group(target_name) {
|
|
||||||
forward_variables_from(invoker, TESTONLY_AND_VISIBILITY)
|
|
||||||
deps = [
|
|
||||||
":${_install_target}",
|
|
||||||
":${_run_target}",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Transitional target that aliases "fuchsia_package_runner" to an installer
|
# Transitional target that aliases "fuchsia_package_runner" to an installer
|
||||||
|
@@ -268,13 +268,11 @@ that make working with both Fuchsia and Chromium checkouts easier.
|
|||||||
|
|
||||||
* `default_fuchsia_build_dir_for_installation`. Point this to an output
|
* `default_fuchsia_build_dir_for_installation`. Point this to an output
|
||||||
directory in Fuchsia. For instance. `/path/to/src/fuchsia/out/qemu-x64`. This
|
directory in Fuchsia. For instance. `/path/to/src/fuchsia/out/qemu-x64`. This
|
||||||
will automatically add the `--fuchsia-out-dir` flag to most `run_*` and
|
will automatically add the `--fuchsia-out-dir` flag to wrapper scripts.
|
||||||
`deploy_*` scripts.
|
|
||||||
* `default_fuchsia_device_node_name`. Set this to a Fuchsia device node name.
|
* `default_fuchsia_device_node_name`. Set this to a Fuchsia device node name.
|
||||||
This will automatically add the `--node-name` flag to most `run_*` and
|
This will automatically add the `--node-name` flag to most wrapper scripts.
|
||||||
`deploy_*` scripts.
|
* Finally, use the `-d` flag when running the <test_target_name> wrappers to
|
||||||
* Finally, use the `-d` flag to `run_*` scripts to execute them on an already
|
execute them on an already running device or emulator, rather than starting an
|
||||||
running device or emulator, rather than starting an ephemeral emulator
|
ephemeral emulator instance. This speeds up subsequent runs since the runner
|
||||||
instance. This speeds up subsequent runs since the runner script does not need
|
script does not need to wait for the emulator instance to boot and only
|
||||||
to wait for the emulator instance to boot and only differential changes are
|
differential changes are pushed to the device.
|
||||||
pushed to the device.
|
|
||||||
|
@@ -1,10 +1,19 @@
|
|||||||
# Deploying and running gtests on Fuchsia.
|
# Deploying and running gtests on Fuchsia.
|
||||||
|
|
||||||
Fuchsia gtest binaries are deployed and executed via scripts that are
|
Fuchsia gtest binaries are deployed and executed via scripts that are
|
||||||
automatically generated by the `test()` GN target.
|
automatically generated by the `test()` GN target. For each test, three wrapper
|
||||||
The binaries can deploy to either emulators started by the runner script,
|
scripts are created:
|
||||||
an existing emulator instance, or a physical device. To build a gtest binary,
|
|
||||||
check this [documentation](build_instructions.md).
|
1. deploy_<test_target_name>, for deploying the Fuchsia package onto a device
|
||||||
|
2. run_<test_target_name>, for running the Fuchsia package on the device
|
||||||
|
3. <test_target_name>, for running the Fuchsia package on the device
|
||||||
|
|
||||||
|
The first two executables are found in ${OUTPUT_DIR}/bin whereas the last one
|
||||||
|
will be found directly in the output directory.
|
||||||
|
|
||||||
|
The aforementioned devices can be either emulators started by the scripts
|
||||||
|
themselves, an existing emulator instance, or a physical device. To build a
|
||||||
|
gtest binary, check this [documentation](build_instructions.md).
|
||||||
|
|
||||||
For the sake of this example, we will be using `base_unittests` as the package
|
For the sake of this example, we will be using `base_unittests` as the package
|
||||||
we wish to install and/or execute.
|
we wish to install and/or execute.
|
||||||
@@ -14,7 +23,7 @@ we wish to install and/or execute.
|
|||||||
The test script brings up an emulator, runs the tests on it, and
|
The test script brings up an emulator, runs the tests on it, and
|
||||||
shuts the emulator down when finished.
|
shuts the emulator down when finished.
|
||||||
```bash
|
```bash
|
||||||
$ out/fuchsia/bin/run_base_unittests
|
$ out/fuchsia/base_unittests
|
||||||
```
|
```
|
||||||
|
|
||||||
The flag `--custom-image` can be used to specify the Fuchsia boot image used
|
The flag `--custom-image` can be used to specify the Fuchsia boot image used
|
||||||
@@ -27,7 +36,7 @@ workstation image.
|
|||||||
Note the `-d` flag, which is an alias for `--device`.
|
Note the `-d` flag, which is an alias for `--device`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ out/fuchsia/bin/run_base_unittests -d
|
$ out/fuchsia/base_unittests -d
|
||||||
```
|
```
|
||||||
|
|
||||||
## Run on a device paved with Fuchsia built from source
|
## Run on a device paved with Fuchsia built from source
|
||||||
@@ -36,7 +45,7 @@ Make sure that the CPU architecture of your Chromium output directory matches
|
|||||||
the architecture of the Fuchsia output directory (x64==x64, arm64==arm64, etc.).
|
the architecture of the Fuchsia output directory (x64==x64, arm64==arm64, etc.).
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ out/fuchsia/bin/run_base_unittests -d
|
$ out/fuchsia/base_unittests -d
|
||||||
--fuchsia-out-dir=/path/to/fuchsia/outdir
|
--fuchsia-out-dir=/path/to/fuchsia/outdir
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -48,17 +57,17 @@ default_fuchsia_build_dir_for_installation = "/path/to/fuchsia/outdir"
|
|||||||
```
|
```
|
||||||
|
|
||||||
With this flag in place, the `--fuchsia-out-dir` flag will automatically be
|
With this flag in place, the `--fuchsia-out-dir` flag will automatically be
|
||||||
used whenever you `run_` or `install_` Fuchsia packages, making your command
|
used whenever you use the wrapper scripts to run or deploy Fuchsia packages,
|
||||||
lines much shorter:
|
making your command lines much shorter:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ out/fuchsia/bin/run_base_unittests -d
|
$ out/fuchsia/base_unittests -d
|
||||||
```
|
```
|
||||||
|
|
||||||
## Install on a device running Fuchsia built from source
|
## Install on a device running Fuchsia built from source
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ out/fuchsia/bin/install_base_unittests
|
$ out/fuchsia/bin/deploy_base_unittests
|
||||||
--fuchsia-out-dir=/path/to/fuchsia/outdir
|
--fuchsia-out-dir=/path/to/fuchsia/outdir
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -75,7 +84,7 @@ Note the `--ssh-config` flag, which should point to the config file used to set
|
|||||||
up the connection between the host and the remote device.
|
up the connection between the host and the remote device.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ out/fuchsia/bin/run_base_unittests -d
|
$ out/fuchsia/base_unittests -d
|
||||||
--host=localhost --ssh-config=/path/to/ssh/config
|
--host=localhost --ssh-config=/path/to/ssh/config
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user