Previous logic would place tests in both presubmit and postsubmit if the
postsubmit_tests configuration was not specified. This is both
unnecessary and wastes resources because presubmit tests are also run in
postsubmit.
Bug: 236006683
Test: Regenerate all TEST_MAPPINGs, manually check postsubmit removal
Change-Id: Ie8ff0e351776711e07bf7646efd916d970254e9c
These modules are not suitable for direct execution on cuttlefish, but
are still built as `rust_test` to get the harness.
Bug: 233924440
Test: Regenerate all TEST_MAPPINGs, pass presubmit
Change-Id: I4aebdb5e36cf3a80780483e0a7ebeb83e9735d29
update_crate_tests would previously assume test_mapping.json existed
when trying to generate a TEST_MAPPING update. This made updating
mappings for the majority of existing crates fail.
Bug: 233924440
Test: Regenerate all Rust TEST_MAPPINGs
Change-Id: I4d9b906f4db233ee0223a3035c1b63bf1ca681f4
Adds support for configuring TEST_MAPPING output in
update_crate_tests.py by defining a test_mapping_config.json.
The initial option that can be set is whether a test should be a
postsubmit test instead of a presubmit test.
Bug: 229727993
Test: update_crate_tests.py with test_mapping_config.json produces
postsubmit tests
Change-Id: I2f5a336c1af12630cc5df9d2c32ab63ac6099af8
aidl_test_rust_service_async is a helper binary and shouldn't be added
to TEST_MAPPINGs. diced_client_test does not work in presubmit yet.
Test: update_crate_tests.py no longer adds those tests.
Change-Id: I565680d2bee31e30bf5db224c46428385ed279a3
"presubmit" will continue to handle x86_64 virtual device and host tests
"presubmit-rust" will run the test on a pool of physical arm64 devices
Bug: 204332926
Test: regenerated a few TEST_MAPPING files
Change-Id: Idd5cad5107a96031f67305b63875034b2e5a5c60
With b/196306316 hopefully fixed, we should be able to use a single
rust_test entry for both device and host tests. This modifies
cargo2android.py so it generates these shared tests.
Test: Run on crates with simple tests, those with defaults, host-only,
and device-only tests.
Change-Id: Icfe8d1fb26a61bc9ed65b8a7b116a4ebcd782ce4
This script currently computes all transitive reverse dependencies for
a given crate and adds them to the generated TEST_MAPPING. This
creates a very large file and makes it difficult to rename/remove
tests, as a given test can be in many TEST_MAPPING files in other
directories. We fix this by instead importing the TEST_MAPPING files
of other third-party crates.
Note that we cannot do this for tests defined by this crate (as they
need to be in some TEST_MAPPING file) and for tests outside of
external. For the latter, we do not auto-generate those TEST_MAPPING
files, so they might contain extra tests we do not want or not contain
the tests we do want. We thus continue to list such tests
individually, which is suboptimal but at least is a strict improvement
over the current system.
Test: Run on a few crates.
Change-Id: Ibdf36e7844f5946c9e321ac60558792abd691b42
The previous commit to this file allowed it to create and upload a
commit when a TEST_MAPPING file changed. But it did not handle the
case where the TEST_MAPPING file did not previously exist. This fixes
that.
Test: Run script.
Change-Id: Id7b9e778c2b084f7ea2e4005a173c1fedeccd6c7
This will make it easier to run it on many crates and upload all of
the changes. It puts the uploaded CLs in a topic to save resources.
If the script does not change a TEST_MAPPING, it does not upload
anything.
Test: Run on a subset of crates.
Change-Id: I47b4756d968c54d7d810c8a19a8a7419aebc6e15
Currently the script can only run on a single crate at a time, and
each time it runs it re-initializes Bazel. By passing multiple crates
we can save time by only initializing Bazel once.
Test: Call with zero, one, and multiple crate arguments.
Change-Id: Ic83c16d87066a8555b736b35bc7971586ee26e16
Env.cwd is misleading as it captures the location of the crate/package
being updated. Move the detection logic to the Package class and rename
the attribute.
There is the expectation that before running soong_ui, cwd is set to
ANDROID_BUILD_TOP; and before running write_mapping, that cwd is set to
the package directory. Add comments to capture this.
Test: update_crate_tests.py in external/rust/crates/libc
Change-Id: I5c4f16afe0b92b7c85173e4149ee17dd39c773c2
Rename the Crate class to Package as this script may also be used to
update TEST_MAPPING for the prebuilts/rust toolchain.
Inline get_tests function as one branch was never used.
Rename `create_test_mapping` to `create` as it is already a method of
TestMapping.
Test: update_crate_tests.py in external/rust/crates/libc
Test: update_crate_tests.py in prebuilts/rust
Change-Id: I06bd6d4f93223bb50fdb898980bd25fa3cea9019
Normalize the object initializations by raising exceptions and catching
them within main.
Test: update_crate_tests.py in external/rust/crates/libc
Change-Id: I6080fa7f22d740f5dd384c15ef74097e61dbb210
We currently seem to emit TEST_MAPPING files in an arbitrary order,
which causes diffs to look confusing even when nothing has changed.
Let's sort them by the test name, which is both stable and easier to
read.
Test: Run cargo2android multiple times and see no TEST_MAPPING diff.
Change-Id: I398aa84a4891380e4292223445bd53959c024421
This test looks like it basically never passed without this.
Test: Run cargo2android.py and see timeout.
Change-Id: Ic7ef5576efb84d78130dd45db67e50ebe41f6d9a
If the TEST_MAPPING cannot be generated, print the reason, but
exit without error. It's not uncommon for the output of cargo2android
to fail to build e.g. if a new depencency is not satisfied, so we can
fall back to the previous TEST_MAPPING, or run update_crate_tests
locally once all dependencies are present.
Bug: 179132533
Test: tools/external_updater/updater.sh update rust/crates/textwrap
Test: tools/external_updater/updater.sh update rust/crates/libc
Change-Id: I4802c77332d1ab1d6604d48c47365f40bdbd1122
Allow this script to accept a path to the crate being updated.
This allows it to be run separately from cargo2android.
Also, fail gracefully on error. TEST_MAPPING update failures should
not block crate updates.
Test: tools/external_updater/updater.sh update rust/crates/libc
Bug: 179132533
Change-Id: I3a4229f479ab3d2793df16b470f0a0632b9ee495
The aidl tests and ChromeOS tests are not intended to be run in
presubmit, so exclude them.
Test: run cargo2android in external/rust/crates/libc.
Change-Id: I1ed92ed6e88886e3fea38612325ce5349db0fb69
This is important because:
1. Some crates do not have their own tests enabled in presubmit.
2. As much as possible, we try to stick with one version of each
crate. This often results in using different versions of
dependencies than a crate has specified in its Cargo.toml.
Ensuring that a crate's tests continue to pass when its dependencies
are upgraded improves our confidence that the update is safe.
The underlying implementation uses the new Bazel queryview
to query modules and reverse dependencies.
Bug: 168167373
Test: Run cargo2android.py on a number of crates including rusqlite,
scopeguard, lock_api.
Change-Id: Id24f2d3267cf8d5e0369ece2442f8971d4ab1343