From 90607e9056f6ff4cec2447fdd7a8b252d67ffde7 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 11 Feb 2025 14:58:07 -0800 Subject: Don't panic in ModuleForTests and friends Panicking in ModuleForTests and similar test helper functions was a mistake. Go's test runner stops running tests as soon as any test panics, which means debugging multiple tests panicking requires rerunning all the tests after fixing each panic to find the next one. Pass the *testing.T into ModuleForTests and friends so that it can call t.Fatalf instead. Test: all soong tests pass Change-Id: I5d0f2424eaf04fb795079e6d1e4b9469d8c7033c --- rust/library_test.go | 60 ++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) (limited to 'rust/library_test.go') diff --git a/rust/library_test.go b/rust/library_test.go index 1198fcc9f..6db95253f 100644 --- a/rust/library_test.go +++ b/rust/library_test.go @@ -42,10 +42,10 @@ func TestLibraryVariants(t *testing.T) { }`) // Test all variants are being built. - libfooRlib := ctx.ModuleForTests("libfoo", "linux_glibc_x86_64_rlib_rlib-std").Rule("rustc") - libfooDylib := ctx.ModuleForTests("libfoo", "linux_glibc_x86_64_dylib").Rule("rustc") - libfooFFIRlib := ctx.ModuleForTests("libfoo.ffi", "linux_glibc_x86_64_rlib_rlib-std").Rule("rustc") - libfooShared := ctx.ModuleForTests("libfoo.ffi", "linux_glibc_x86_64_shared").Rule("rustc") + libfooRlib := ctx.ModuleForTests(t, "libfoo", "linux_glibc_x86_64_rlib_rlib-std").Rule("rustc") + libfooDylib := ctx.ModuleForTests(t, "libfoo", "linux_glibc_x86_64_dylib").Rule("rustc") + libfooFFIRlib := ctx.ModuleForTests(t, "libfoo.ffi", "linux_glibc_x86_64_rlib_rlib-std").Rule("rustc") + libfooShared := ctx.ModuleForTests(t, "libfoo.ffi", "linux_glibc_x86_64_shared").Rule("rustc") rlibCrateType := "rlib" dylibCrateType := "dylib" @@ -82,7 +82,7 @@ func TestDylibPreferDynamic(t *testing.T) { crate_name: "foo", }`) - libfooDylib := ctx.ModuleForTests("libfoo", "linux_glibc_x86_64_dylib").Rule("rustc") + libfooDylib := ctx.ModuleForTests(t, "libfoo", "linux_glibc_x86_64_dylib").Rule("rustc") if !strings.Contains(libfooDylib.Args["rustcFlags"], "prefer-dynamic") { t.Errorf("missing prefer-dynamic flag for libfoo dylib, rustcFlags: %#v", libfooDylib.Args["rustcFlags"]) @@ -134,7 +134,7 @@ func TestSharedLibrary(t *testing.T) { crate_name: "foo", }`) - libfoo := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_shared") + libfoo := ctx.ModuleForTests(t, "libfoo", "android_arm64_armv8-a_shared") libfooOutput := libfoo.Rule("rustc") if !strings.Contains(libfooOutput.Args["linkFlags"], "-Wl,-soname=libfoo.so") { @@ -160,7 +160,7 @@ func TestSharedLibraryToc(t *testing.T) { shared_libs: ["libfoo"], }`) - fizzbuzz := ctx.ModuleForTests("fizzbuzz", "android_arm64_armv8-a").Rule("ld") + fizzbuzz := ctx.ModuleForTests(t, "fizzbuzz", "android_arm64_armv8-a").Rule("ld") if !android.SuffixInList(fizzbuzz.Implicits.Strings(), "libfoo.so.toc") { t.Errorf("missing expected libfoo.so.toc implicit dependency, instead found: %#v", @@ -176,7 +176,7 @@ func TestStaticLibraryLinkage(t *testing.T) { crate_name: "foo", }`) - libfoo := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_rlib_rlib-std") + libfoo := ctx.ModuleForTests(t, "libfoo", "android_arm64_armv8-a_rlib_rlib-std") if !android.InList("libstd", libfoo.Module().(*Module).Properties.AndroidMkRlibs) { t.Errorf("Static libstd rlib expected to be a dependency of Rust rlib libraries. Rlib deps are: %#v", @@ -209,9 +209,9 @@ func TestNativeDependencyOfRlib(t *testing.T) { } `) - rustRlibRlibStd := ctx.ModuleForTests("librust_rlib", "android_arm64_armv8-a_rlib_rlib-std") - rustRlibDylibStd := ctx.ModuleForTests("librust_rlib", "android_arm64_armv8-a_rlib_dylib-std") - ffiRlib := ctx.ModuleForTests("libffi_static", "android_arm64_armv8-a_rlib_rlib-std") + rustRlibRlibStd := ctx.ModuleForTests(t, "librust_rlib", "android_arm64_armv8-a_rlib_rlib-std") + rustRlibDylibStd := ctx.ModuleForTests(t, "librust_rlib", "android_arm64_armv8-a_rlib_dylib-std") + ffiRlib := ctx.ModuleForTests(t, "libffi_static", "android_arm64_armv8-a_rlib_rlib-std") modules := []android.TestingModule{ rustRlibRlibStd, @@ -285,10 +285,10 @@ func TestAutoDeps(t *testing.T) { ], }`) - libfooRlib := ctx.ModuleForTests("libfoo", "linux_glibc_x86_64_rlib_rlib-std") - libfooDylib := ctx.ModuleForTests("libfoo", "linux_glibc_x86_64_dylib") - libfooFFIRlib := ctx.ModuleForTests("libfoo.ffi", "linux_glibc_x86_64_rlib_rlib-std") - libfooShared := ctx.ModuleForTests("libfoo.ffi", "linux_glibc_x86_64_shared") + libfooRlib := ctx.ModuleForTests(t, "libfoo", "linux_glibc_x86_64_rlib_rlib-std") + libfooDylib := ctx.ModuleForTests(t, "libfoo", "linux_glibc_x86_64_dylib") + libfooFFIRlib := ctx.ModuleForTests(t, "libfoo.ffi", "linux_glibc_x86_64_rlib_rlib-std") + libfooShared := ctx.ModuleForTests(t, "libfoo.ffi", "linux_glibc_x86_64_shared") for _, static := range []android.TestingModule{libfooRlib, libfooFFIRlib} { if !android.InList("libbar.rlib-std", static.Module().(*Module).Properties.AndroidMkRlibs) { @@ -330,7 +330,7 @@ func TestStrippedLibrary(t *testing.T) { } `) - foo := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_dylib") + foo := ctx.ModuleForTests(t, "libfoo", "android_arm64_armv8-a_dylib") foo.Output("libfoo.dylib.so") foo.Output("unstripped/libfoo.dylib.so") // Check that the `cp` rule is using the stripped version as input. @@ -339,7 +339,7 @@ func TestStrippedLibrary(t *testing.T) { t.Errorf("installed library not based on stripped version: %v", cp.Input) } - fizzBar := ctx.ModuleForTests("libbar", "android_arm64_armv8-a_dylib").MaybeOutput("unstripped/libbar.dylib.so") + fizzBar := ctx.ModuleForTests(t, "libbar", "android_arm64_armv8-a_dylib").MaybeOutput("unstripped/libbar.dylib.so") if fizzBar.Rule != nil { t.Errorf("unstripped library exists, so stripped library has incorrectly been generated") } @@ -372,15 +372,15 @@ func TestLibstdLinkage(t *testing.T) { prefer_rlib: true, }`) - libfooDylib := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_dylib").Module().(*Module) - libfooRlibStatic := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_rlib_rlib-std").Module().(*Module) - libfooRlibDynamic := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_rlib_dylib-std").Module().(*Module) + libfooDylib := ctx.ModuleForTests(t, "libfoo", "android_arm64_armv8-a_dylib").Module().(*Module) + libfooRlibStatic := ctx.ModuleForTests(t, "libfoo", "android_arm64_armv8-a_rlib_rlib-std").Module().(*Module) + libfooRlibDynamic := ctx.ModuleForTests(t, "libfoo", "android_arm64_armv8-a_rlib_dylib-std").Module().(*Module) - libbarShared := ctx.ModuleForTests("libbar", "android_arm64_armv8-a_shared").Module().(*Module) - libbarFFIRlib := ctx.ModuleForTests("libbar", "android_arm64_armv8-a_rlib_rlib-std").Module().(*Module) + libbarShared := ctx.ModuleForTests(t, "libbar", "android_arm64_armv8-a_shared").Module().(*Module) + libbarFFIRlib := ctx.ModuleForTests(t, "libbar", "android_arm64_armv8-a_rlib_rlib-std").Module().(*Module) // prefer_rlib works the same for both rust_library and rust_ffi, so a single check is sufficient here. - libbarRlibStd := ctx.ModuleForTests("libbar.prefer_rlib", "android_arm64_armv8-a_shared").Module().(*Module) + libbarRlibStd := ctx.ModuleForTests(t, "libbar.prefer_rlib", "android_arm64_armv8-a_shared").Module().(*Module) if !android.InList("libstd", libfooRlibStatic.Properties.AndroidMkRlibs) { t.Errorf("rlib-std variant for device rust_library_rlib does not link libstd as an rlib") @@ -422,7 +422,7 @@ func TestRustFFIExportedIncludes(t *testing.T) { shared_libs: ["libbar"], host_supported: true, }`) - libfooStatic := ctx.ModuleForTests("libfoo", "linux_glibc_x86_64_static").Rule("cc") + libfooStatic := ctx.ModuleForTests(t, "libfoo", "linux_glibc_x86_64_static").Rule("cc") android.AssertStringDoesContain(t, "cFlags for lib module", libfooStatic.Args["cFlags"], " -Irust_includes ") } @@ -443,8 +443,8 @@ func TestRustVersionScript(t *testing.T) { `) //linkFlags - librs := ctx.ModuleForTests("librs", "android_arm64_armv8-a_dylib").Rule("rustc") - libffi := ctx.ModuleForTests("libffi", "android_arm64_armv8-a_shared").Rule("rustc") + librs := ctx.ModuleForTests(t, "librs", "android_arm64_armv8-a_dylib").Rule("rustc") + libffi := ctx.ModuleForTests(t, "libffi", "android_arm64_armv8-a_shared").Rule("rustc") if !strings.Contains(librs.Args["linkFlags"], "-Wl,--version-script=librs.map.txt") { t.Errorf("missing expected -Wl,--version-script= linker flag for libextended shared lib, linkFlags: %#v", @@ -632,13 +632,13 @@ func TestVersionedStubs(t *testing.T) { } } - libBarLinkRule := ctx.ModuleForTests("libBar", "android_arm64_armv8-a_shared").Rule("ld") + libBarLinkRule := ctx.ModuleForTests(t, "libBar", "android_arm64_armv8-a_shared").Rule("ld") libBarFlags := libBarLinkRule.Args["libFlags"] - libBarRsRustcRule := ctx.ModuleForTests("libbar_rs", "android_arm64_armv8-a_dylib").Rule("rustc") + libBarRsRustcRule := ctx.ModuleForTests(t, "libbar_rs", "android_arm64_armv8-a_dylib").Rule("rustc") libBarRsFlags := libBarRsRustcRule.Args["linkFlags"] - libBarFfiRsRustcRule := ctx.ModuleForTests("libbar_ffi_rs", "android_arm64_armv8-a_shared").Rule("rustc") + libBarFfiRsRustcRule := ctx.ModuleForTests(t, "libbar_ffi_rs", "android_arm64_armv8-a_shared").Rule("rustc") libBarFfiRsFlags := libBarFfiRsRustcRule.Args["linkFlags"] libFoo1StubPath := "libFoo/android_arm64_armv8-a_shared_1/unstripped/libFoo.so" @@ -709,7 +709,7 @@ func TestAddnoOverride64GlobalCflags(t *testing.T) { android.PrepareForTestWithVisibility, rustMockedFiles.AddToFixture()).RunTestWithBp(t, bp) - cFlags := ctx.ModuleForTests("libclient", "android_arm64_armv8-a_shared").Rule("cc").Args["cFlags"] + cFlags := ctx.ModuleForTests(t, "libclient", "android_arm64_armv8-a_shared").Rule("cc").Args["cFlags"] if !strings.Contains(cFlags, "${config.NoOverride64GlobalCflags}") { t.Errorf("expected %q in cflags, got %q", "${config.NoOverride64GlobalCflags}", cFlags) -- cgit v1.2.3-59-g8ed1b