Skip to content

Commit

Permalink
Add a trivial 2023 edition test case for Rust.
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 588874094
  • Loading branch information
protobuf-github-bot authored and copybara-github committed Dec 7, 2023
1 parent 361faa6 commit 43f92cb
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 0 deletions.
26 changes: 26 additions & 0 deletions rust/test/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,32 @@ rust_upb_proto_library(
deps = [":dots_in_package_proto"],
)

proto_library(
name = "edition2023_proto",
testonly = True,
srcs = ["edition2023.proto"],
)

cc_proto_library(
name = "edition2023_cc_proto",
testonly = True,
deps = [":edition2023_proto"],
)

rust_cc_proto_library(
name = "edition2023_cc_rust_proto",
testonly = True,
visibility = ["//rust/test/shared:__subpackages__"],
deps = [":edition2023_cc_proto"],
)

rust_upb_proto_library(
name = "edition2023_upb_rust_proto",
testonly = True,
visibility = ["//rust/test/shared:__subpackages__"],
deps = [":edition2023_proto"],
)

proto_library(
name = "no_package_import_proto",
testonly = True,
Expand Down
8 changes: 8 additions & 0 deletions rust/test/edition2023.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
edition = "2023";

package test;

message EditionsMessage {
int32 plain_field = 1;
int32 implicit_presence_field = 2 [features.field_presence = IMPLICIT];
}
26 changes: 26 additions & 0 deletions rust/test/shared/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,32 @@ rust_test(
],
)

rust_test(
name = "edition2023_cpp_test",
srcs = ["edition2023_test.rs"],
tags = [
# TODO: Enable testing on arm once we support sanitizers for Rust on Arm.
"not_build:arm",
],
deps = [
"@crate_index//:googletest",
"//rust/test:edition2023_cc_rust_proto",
],
)

rust_test(
name = "edition2023_upb_test",
srcs = ["edition2023_test.rs"],
tags = [
# TODO: Enable testing on arm once we support sanitizers for Rust on Arm.
"not_build:arm",
],
deps = [
"@crate_index//:googletest",
"//rust/test:edition2023_upb_rust_proto",
],
)

rust_test(
name = "package_cpp_test",
srcs = ["package_test.rs"],
Expand Down
23 changes: 23 additions & 0 deletions rust/test/shared/edition2023_test.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2023 Google LLC. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd

use googletest::prelude::*;

// Tests that an proto file that declares edition="2023" works. Note that this
// is _not_ a test for Rust Edition 2023 (which doesn't exist) but instead
// Protobuf Edition 2023 (which exists).

#[test]
fn check_edition2023_works() {
let mut msg = edition2023_proto::test::EditionsMessage::new();

// plain_field supports presence.
assert_that!(msg.plain_field_mut().or_default().get(), eq(0));

// implicit presence fields' _mut() skips FieldEntry.
assert_that!(msg.implicit_presence_field_mut().get(), eq(0));
}

0 comments on commit 43f92cb

Please sign in to comment.