diff options
Diffstat (limited to 'rust/testing.go')
-rw-r--r-- | rust/testing.go | 233 |
1 files changed, 181 insertions, 52 deletions
diff --git a/rust/testing.go b/rust/testing.go index f9adec828..a0f86b220 100644 --- a/rust/testing.go +++ b/rust/testing.go @@ -16,62 +16,109 @@ package rust import ( "android/soong/android" + "android/soong/bloaty" "android/soong/cc" ) +// Preparer that will define all cc module types and a limited set of mutators and singletons that +// make those module types usable. +var PrepareForTestWithRustBuildComponents = android.GroupFixturePreparers( + android.FixtureRegisterWithContext(registerRequiredBuildComponentsForTest), +) + +// The directory in which rust test default modules will be defined. +// +// Placing them here ensures that their location does not conflict with default test modules +// defined by other packages. +const rustDefaultsDir = "defaults/rust/" + +// Preparer that will define default rust modules, e.g. standard prebuilt modules. +var PrepareForTestWithRustDefaultModules = android.GroupFixturePreparers( + cc.PrepareForTestWithCcDefaultModules, + bloaty.PrepareForTestWithBloatyDefaultModules, + PrepareForTestWithRustBuildComponents, + android.FixtureAddTextFile(rustDefaultsDir+"Android.bp", GatherRequiredDepsForTest()), +) + +// Preparer that will allow use of all rust modules fully. +var PrepareForIntegrationTestWithRust = android.GroupFixturePreparers( + PrepareForTestWithRustDefaultModules, +) + func GatherRequiredDepsForTest() string { bp := ` - rust_prebuilt_dylib { - name: "libarena_x86_64-unknown-linux-gnu", - srcs: [""], - host_supported: true, - } - rust_prebuilt_dylib { - name: "libfmt_macros_x86_64-unknown-linux-gnu", - srcs: [""], - host_supported: true, - } - rust_prebuilt_dylib { - name: "libgraphviz_x86_64-unknown-linux-gnu", - srcs: [""], - host_supported: true, - } - rust_prebuilt_dylib { - name: "libserialize_x86_64-unknown-linux-gnu", - srcs: [""], - host_supported: true, - } - rust_prebuilt_dylib { + rust_prebuilt_library { name: "libstd_x86_64-unknown-linux-gnu", - srcs: [""], + crate_name: "std", + rlib: { + srcs: ["libstd.rlib"], + }, + dylib: { + srcs: ["libstd.so"], + }, host_supported: true, + sysroot: true, } - rust_prebuilt_dylib { - name: "libsyntax_x86_64-unknown-linux-gnu", - srcs: [""], + rust_prebuilt_library { + name: "libtest_x86_64-unknown-linux-gnu", + crate_name: "test", + rlib: { + srcs: ["libtest.rlib"], + }, + dylib: { + srcs: ["libtest.so"], + }, host_supported: true, + sysroot: true, } - rust_prebuilt_dylib { - name: "libsyntax_ext_x86_64-unknown-linux-gnu", - srcs: [""], + rust_prebuilt_library { + name: "libstd_i686-unknown-linux-gnu", + crate_name: "std", + rlib: { + srcs: ["libstd.rlib"], + }, + dylib: { + srcs: ["libstd.so"], + }, host_supported: true, + sysroot: true, } - rust_prebuilt_dylib { - name: "libsyntax_pos_x86_64-unknown-linux-gnu", - srcs: [""], + rust_prebuilt_library { + name: "libtest_i686-unknown-linux-gnu", + crate_name: "test", + rlib: { + srcs: ["libtest.rlib"], + }, + dylib: { + srcs: ["libtest.so"], + }, host_supported: true, + sysroot: true, } - rust_prebuilt_dylib { - name: "libterm_x86_64-unknown-linux-gnu", - srcs: [""], + rust_prebuilt_library { + name: "libstd_x86_64-apple-darwin", + crate_name: "std", + rlib: { + srcs: ["libstd.rlib"], + }, + dylib: { + srcs: ["libstd.so"], + }, host_supported: true, + sysroot: true, } - rust_prebuilt_dylib { - name: "libtest_x86_64-unknown-linux-gnu", - srcs: [""], + rust_prebuilt_library { + name: "libtest_x86_64-apple-darwin", + crate_name: "test", + rlib: { + srcs: ["libtest.rlib"], + }, + dylib: { + srcs: ["libtest.so"], + }, host_supported: true, + sysroot: true, } - ////////////////////////////// // Device module requirements @@ -80,35 +127,117 @@ func GatherRequiredDepsForTest() string { no_libcrt: true, nocrt: true, system_shared_libs: [], + apex_available: ["//apex_available:platform", "//apex_available:anyapex"], + min_sdk_version: "29", + vendor_available: true, } -` + cc.GatherRequiredDepsForTest(android.NoOsType) + cc_library { + name: "libprotobuf-cpp-full", + no_libcrt: true, + nocrt: true, + system_shared_libs: [], + export_include_dirs: ["libprotobuf-cpp-full-includes"], + } + cc_library { + name: "libclang_rt.asan-aarch64-android", + no_libcrt: true, + nocrt: true, + system_shared_libs: [], + export_include_dirs: ["libprotobuf-cpp-full-includes"], + } + rust_library { + name: "libstd", + crate_name: "std", + srcs: ["foo.rs"], + no_stdlibs: true, + host_supported: true, + vendor_available: true, + vendor_ramdisk_available: true, + native_coverage: false, + sysroot: true, + apex_available: ["//apex_available:platform", "//apex_available:anyapex"], + min_sdk_version: "29", + } + rust_library { + name: "libtest", + crate_name: "test", + srcs: ["foo.rs"], + no_stdlibs: true, + host_supported: true, + vendor_available: true, + vendor_ramdisk_available: true, + native_coverage: false, + sysroot: true, + apex_available: ["//apex_available:platform", "//apex_available:anyapex"], + min_sdk_version: "29", + } + rust_library { + name: "libprotobuf", + crate_name: "protobuf", + srcs: ["foo.rs"], + host_supported: true, + } + rust_library { + name: "libgrpcio", + crate_name: "grpcio", + srcs: ["foo.rs"], + host_supported: true, + } + rust_library { + name: "libfutures", + crate_name: "futures", + srcs: ["foo.rs"], + host_supported: true, + } + rust_library { + name: "liblibfuzzer_sys", + crate_name: "libfuzzer_sys", + srcs:["foo.rs"], + host_supported: true, + } + rust_library { + name: "libcriterion", + crate_name: "criterion", + srcs:["foo.rs"], + host_supported: true, + } +` return bp } -func CreateTestContext() *android.TestContext { - ctx := android.NewTestArchContext() - cc.RegisterRequiredBuildComponentsForTest(ctx) +func registerRequiredBuildComponentsForTest(ctx android.RegistrationContext) { + ctx.RegisterModuleType("rust_benchmark", RustBenchmarkFactory) + ctx.RegisterModuleType("rust_benchmark_host", RustBenchmarkHostFactory) ctx.RegisterModuleType("rust_binary", RustBinaryFactory) ctx.RegisterModuleType("rust_binary_host", RustBinaryHostFactory) + ctx.RegisterModuleType("rust_bindgen", RustBindgenFactory) + ctx.RegisterModuleType("rust_bindgen_host", RustBindgenHostFactory) ctx.RegisterModuleType("rust_test", RustTestFactory) ctx.RegisterModuleType("rust_test_host", RustTestHostFactory) ctx.RegisterModuleType("rust_library", RustLibraryFactory) + ctx.RegisterModuleType("rust_library_dylib", RustLibraryDylibFactory) + ctx.RegisterModuleType("rust_library_rlib", RustLibraryRlibFactory) ctx.RegisterModuleType("rust_library_host", RustLibraryHostFactory) - ctx.RegisterModuleType("rust_library_host_rlib", RustLibraryRlibHostFactory) ctx.RegisterModuleType("rust_library_host_dylib", RustLibraryDylibHostFactory) - ctx.RegisterModuleType("rust_library_rlib", RustLibraryRlibFactory) - ctx.RegisterModuleType("rust_library_dylib", RustLibraryDylibFactory) - ctx.RegisterModuleType("rust_library_shared", RustLibrarySharedFactory) - ctx.RegisterModuleType("rust_library_static", RustLibraryStaticFactory) - ctx.RegisterModuleType("rust_library_host_shared", RustLibrarySharedHostFactory) - ctx.RegisterModuleType("rust_library_host_static", RustLibraryStaticHostFactory) + ctx.RegisterModuleType("rust_library_host_rlib", RustLibraryRlibHostFactory) + ctx.RegisterModuleType("rust_fuzz", RustFuzzFactory) + ctx.RegisterModuleType("rust_ffi", RustFFIFactory) + ctx.RegisterModuleType("rust_ffi_shared", RustFFISharedFactory) + ctx.RegisterModuleType("rust_ffi_static", RustFFIStaticFactory) + ctx.RegisterModuleType("rust_ffi_host", RustFFIHostFactory) + ctx.RegisterModuleType("rust_ffi_host_shared", RustFFISharedHostFactory) + ctx.RegisterModuleType("rust_ffi_host_static", RustFFIStaticHostFactory) ctx.RegisterModuleType("rust_proc_macro", ProcMacroFactory) + ctx.RegisterModuleType("rust_protobuf", RustProtobufFactory) + ctx.RegisterModuleType("rust_protobuf_host", RustProtobufHostFactory) + ctx.RegisterModuleType("rust_prebuilt_library", PrebuiltLibraryFactory) ctx.RegisterModuleType("rust_prebuilt_dylib", PrebuiltDylibFactory) + ctx.RegisterModuleType("rust_prebuilt_rlib", PrebuiltRlibFactory) ctx.PreDepsMutators(func(ctx android.RegisterMutatorsContext) { // rust mutators ctx.BottomUp("rust_libraries", LibraryMutator).Parallel() - ctx.BottomUp("rust_unit_tests", TestPerSrcMutator).Parallel() + ctx.BottomUp("rust_stdlinkage", LibstdMutator).Parallel() + ctx.BottomUp("rust_begin", BeginMutator).Parallel() }) - - return ctx + ctx.RegisterSingletonType("rust_project_generator", rustProjectGeneratorSingleton) } |