From e4f5388cf32e18551d0710c35dff84c71a8031e5 Mon Sep 17 00:00:00 2001 From: Joel Galenson Date: Mon, 19 Jul 2021 11:14:55 -0700 Subject: [PATCH] Let cargo2android.py generate data properties for tests. Some tests load data from files. These files thus need to be copied to the correct location on the host/device so that the tests can access them. This adds an option to cargo2android.py so that it can generate these data properties. Bug: 171710847 Test: Use for a crate. Change-Id: I14a1ad8aca4625cc5f09807d19ffd7499fcf3689 --- scripts/cargo2android.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/scripts/cargo2android.py b/scripts/cargo2android.py index 12c982fda..f6ab3acc5 100755 --- a/scripts/cargo2android.py +++ b/scripts/cargo2android.py @@ -603,6 +603,8 @@ class Crate(object): self.write(' test_suites: ["general-tests"],') self.write(' auto_gen_config: true,') self.dump_edition_flags_libs() + if 'test' in self.crate_types and len(self.srcs) == 1: + self.dump_test_data() self.write('}') def dump_single_type_android_module(self): @@ -665,6 +667,8 @@ class Crate(object): self.write(' vendor_ramdisk_available: true,') if self.runner.args.min_sdk_version and crate_type == 'lib': self.write(' min_sdk_version: "%s",' % self.runner.args.min_sdk_version) + if crate_type == 'test' and not self.default_srcs: + self.dump_test_data() if self.runner.args.add_module_block: with open(self.runner.args.add_module_block, 'r') as f: self.write(' %s,' % f.read().replace('\n', '\n ')) @@ -698,6 +702,12 @@ class Crate(object): shared_libs = [lib for lib in self.shared_libs if not lib in self.runner.args.lib_blocklist] self.dump_android_property_list('shared_libs', '"lib%s"', shared_libs) + def dump_test_data(self): + data = [data for (name, data) in map(lambda kv: kv.split('=', 1), self.runner.args.test_data) + if self.srcs == [name]] + if data: + self.dump_android_property_list('data', '"%s"', data) + def main_src_basename_path(self): return re.sub('/', '_', re.sub('.rs$', '', self.main_src)) @@ -1632,6 +1642,12 @@ def get_parser(): nargs='*', default=[], help='Make the given libraries (without lib prefixes) whole_static_libs.') + parser.add_argument( + '--test-data', + nargs='*', + default=[], + help=('Add the given file to the given test\'s data property. ' + + 'Usage: test-path=data-path')) parser.add_argument( '--dependency-blocklist', nargs='*',