From 1f76470ac401ca7c290bcdcd1fab293d9795768b Mon Sep 17 00:00:00 2001 From: Stuart Axelbrooke Date: Sun, 6 Jul 2025 13:37:38 -0700 Subject: [PATCH] Refactor databuild tests --- databuild/BUILD.bazel | 53 ++------------------------ databuild/README.md | 3 +- databuild/test/BUILD.bazel | 51 +++++++++++++++++++++++++ databuild/{ => test}/databuild_test.rs | 2 +- databuild/{ => test}/simple.proto | 0 databuild/{ => test}/simple_test.rs | 0 6 files changed, 56 insertions(+), 53 deletions(-) create mode 100644 databuild/test/BUILD.bazel rename databuild/{ => test}/databuild_test.rs (98%) rename databuild/{ => test}/simple.proto (100%) rename databuild/{ => test}/simple_test.rs (100%) diff --git a/databuild/BUILD.bazel b/databuild/BUILD.bazel index 634cb7c..167f776 100644 --- a/databuild/BUILD.bazel +++ b/databuild/BUILD.bazel @@ -1,18 +1,12 @@ load("@rules_proto//proto:defs.bzl", "proto_library") load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_test") -# Simple proto for testing -proto_library( - name = "simple_proto", - srcs = ["simple.proto"], - visibility = ["//visibility:public"], -) - # Prost generator binary for converting proto files to Rust code rust_binary( name = "prost_generator", srcs = ["prost_generator.rs"], edition = "2021", + visibility = ["//visibility:public"], deps = [ "@crates//:prost", "@crates//:prost-build", @@ -21,33 +15,6 @@ rust_binary( ], ) -# Generate Rust code for simple proto using prost generator -genrule( - name = "generate_simple_rust", - srcs = ["simple.proto"], - outs = ["simple.rs"], - cmd = "PROTOC=$(location @com_google_protobuf//:protoc) $(location :prost_generator) $(location simple.proto) /dev/null $@", - tools = [ - ":prost_generator", - "@com_google_protobuf//:protoc", - ], -) - -# Test the simple generation -rust_test( - name = "simple_test", - srcs = [ - "simple_test.rs", - ":generate_simple_rust", - ], - edition = "2021", - deps = [ - "@crates//:prost", - "@crates//:serde", - "@crates//:serde_json", - ], -) - # Generate Rust code for databuild proto genrule( name = "generate_databuild_rust", @@ -57,9 +24,10 @@ genrule( outs = ["databuild.rs"], cmd = "PROTOC=$(location @com_google_protobuf//:protoc) $(location :prost_generator) $(location databuild.proto) /dev/null $@", tools = [ - ":prost_generator", + "//databuild:prost_generator", "@com_google_protobuf//:protoc", ], + visibility = ["//visibility:public"], ) # DataBuild library using generated prost code @@ -79,21 +47,6 @@ rust_library( ], ) -# Test the databuild generation -rust_test( - name = "databuild_test", - srcs = [ - "databuild_test.rs", - ":generate_databuild_rust", - ], - edition = "2021", - deps = [ - "@crates//:prost", - "@crates//:serde", - "@crates//:serde_json", - ], -) - # Legacy filegroup for backwards compatibility filegroup( name = "proto", diff --git a/databuild/README.md b/databuild/README.md index 92106f6..9f7c188 100644 --- a/databuild/README.md +++ b/databuild/README.md @@ -68,8 +68,7 @@ let job_config = JobConfig { ## Testing ```bash -bazel test //databuild:databuild_test -bazel build //databuild:databuild +bazel test //databuild:... ``` ## Benefits of This Approach diff --git a/databuild/test/BUILD.bazel b/databuild/test/BUILD.bazel new file mode 100644 index 0000000..17a56e7 --- /dev/null +++ b/databuild/test/BUILD.bazel @@ -0,0 +1,51 @@ +load("@rules_proto//proto:defs.bzl", "proto_library") +load("@rules_rust//rust:defs.bzl", "rust_test") + +# Test the databuild generation +rust_test( + name = "databuild_test", + srcs = [ + "databuild_test.rs", + "//databuild:generate_databuild_rust", + ], + edition = "2021", + deps = [ + "@crates//:prost", + "@crates//:serde", + "@crates//:serde_json", + ], +) + +# Generate Rust code for simple proto using prost generator +genrule( + name = "generate_simple_rust", + srcs = ["simple.proto"], + outs = ["simple.rs"], + cmd = "PROTOC=$(location @com_google_protobuf//:protoc) $(location //databuild:prost_generator) $(location simple.proto) /dev/null $@", + tools = [ + "//databuild:prost_generator", + "@com_google_protobuf//:protoc", + ], +) + +# Simple proto for testing +proto_library( + name = "simple_proto", + srcs = ["simple.proto"], + visibility = ["//visibility:public"], +) + +# Test the simple generation +rust_test( + name = "simple_test", + srcs = [ + "simple_test.rs", + ":generate_simple_rust", + ], + edition = "2021", + deps = [ + "@crates//:prost", + "@crates//:serde", + "@crates//:serde_json", + ], +) diff --git a/databuild/databuild_test.rs b/databuild/test/databuild_test.rs similarity index 98% rename from databuild/databuild_test.rs rename to databuild/test/databuild_test.rs index 4395438..ab98baf 100644 --- a/databuild/databuild_test.rs +++ b/databuild/test/databuild_test.rs @@ -1,5 +1,5 @@ // Include the generated protobuf code -include!("databuild.rs"); +include!("../databuild.rs"); #[cfg(test)] mod tests { diff --git a/databuild/simple.proto b/databuild/test/simple.proto similarity index 100% rename from databuild/simple.proto rename to databuild/test/simple.proto diff --git a/databuild/simple_test.rs b/databuild/test/simple_test.rs similarity index 100% rename from databuild/simple_test.rs rename to databuild/test/simple_test.rs