summaryrefslogtreecommitdiff
path: root/rust/library_test.go
diff options
context:
space:
mode:
authorIvan Lozano <ivanlozano@google.com>2019-10-31 19:38:29 -0700
committerIvan Lozano <ivanlozano@google.com>2019-11-04 09:20:08 -0800
commitad8b18b87260a83aeadb28d637f77474158fcdb1 (patch)
tree0362797ca4b2cf0d34eb14ad3cfd0ed61ad67dc0 /rust/library_test.go
parent5d0b3b7195e35199f48bc8cd685f0b5786487cfe (diff)
Enforce correct rust library file names.
rustc expects libraries and proc_macro filenames to conform to a particular format, alphanumeric with underscores and lib${crate_name}.*. Enforce this with a check when getStem() is called. This makes the crate_name property required for proc_macros and libraries. This also removes the notion of a default crate name derived from the module name. It's not needed for binaries, so this won't impact them. Bug: 143579265 Test: m -j crosvm.experimental Change-Id: I2770cf7d02dd4291c3d240d58d242b940098dcee
Diffstat (limited to 'rust/library_test.go')
-rw-r--r--rust/library_test.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/rust/library_test.go b/rust/library_test.go
index 66bcd20fb..9f9f374b9 100644
--- a/rust/library_test.go
+++ b/rust/library_test.go
@@ -77,3 +77,40 @@ func TestDylibPreferDynamic(t *testing.T) {
t.Errorf("missing prefer-dynamic flag for libfoo dylib, rustcFlags: %#v", libfooDylib.Args["rustcFlags"])
}
}
+
+func TestValidateLibraryStem(t *testing.T) {
+ testRustError(t, "crate_name must be defined.", `
+ rust_library_host {
+ name: "libfoo",
+ srcs: ["foo.rs"],
+ }`)
+
+ testRustError(t, "library crate_names must be alphanumeric with underscores allowed", `
+ rust_library_host {
+ name: "libfoo-bar",
+ srcs: ["foo.rs"],
+ crate_name: "foo-bar"
+ }`)
+
+ testRustError(t, "Invalid name or stem property; library filenames must start with lib<crate_name>", `
+ rust_library_host {
+ name: "foobar",
+ srcs: ["foo.rs"],
+ crate_name: "foo_bar"
+ }`)
+ testRustError(t, "Invalid name or stem property; library filenames must start with lib<crate_name>", `
+ rust_library_host {
+ name: "foobar",
+ stem: "libfoo",
+ srcs: ["foo.rs"],
+ crate_name: "foo_bar"
+ }`)
+ testRustError(t, "Invalid name or stem property; library filenames must start with lib<crate_name>", `
+ rust_library_host {
+ name: "foobar",
+ stem: "foo_bar",
+ srcs: ["foo.rs"],
+ crate_name: "foo_bar"
+ }`)
+
+}