Move repeated tests into their own file

accessors_test.rs is getting a bit unwieldy, approaching 1K LOC. This CL breaks out the repeated tests into their own file (accessors_repeated_test.rs), as we expect the tests here to grow. This follows the precedent of `accessors_map_test.rs`.

PiperOrigin-RevId: 588554476
diff --git a/rust/test/shared/BUILD b/rust/test/shared/BUILD
index 04988de..86d31c9 100644
--- a/rust/test/shared/BUILD
+++ b/rust/test/shared/BUILD
@@ -281,6 +281,46 @@
 )
 
 rust_test(
+    name = "accessors_repeated_cpp_test",
+    srcs = ["accessors_repeated_test.rs"],
+    aliases = {
+        "//rust:protobuf_cpp": "protobuf",
+    },
+    proc_macro_deps = [
+        "@crate_index//:paste",
+    ],
+    tags = [
+        # TODO: Enable testing on arm once we support sanitizers for Rust on Arm.
+        "not_build:arm",
+    ],
+    deps = [
+        "@crate_index//:googletest",
+        "//rust:protobuf_cpp",
+        "//rust/test:unittest_cc_rust_proto",
+    ],
+)
+
+rust_test(
+    name = "accessors_repeated_upb_test",
+    srcs = ["accessors_repeated_test.rs"],
+    aliases = {
+        "//rust:protobuf_upb": "protobuf",
+    },
+    proc_macro_deps = [
+        "@crate_index//:paste",
+    ],
+    tags = [
+        # TODO: Enable testing on arm once we support sanitizers for Rust on Arm.
+        "not_build:arm",
+    ],
+    deps = [
+        "@crate_index//:googletest",
+        "//rust:protobuf_upb",
+        "//rust/test:unittest_upb_rust_proto",
+    ],
+)
+
+rust_test(
     name = "accessors_map_cpp_test",
     srcs = ["accessors_map_test.rs"],
     proc_macro_deps = [
diff --git a/rust/test/shared/accessors_repeated_test.rs b/rust/test/shared/accessors_repeated_test.rs
new file mode 100644
index 0000000..f88dbf0
--- /dev/null
+++ b/rust/test/shared/accessors_repeated_test.rs
@@ -0,0 +1,127 @@
+// 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::*;
+use paste::paste;
+use unittest_proto::proto2_unittest::TestAllTypes;
+
+macro_rules! generate_repeated_numeric_test {
+  ($(($t: ty, $field: ident)),*) => {
+      paste! { $(
+          #[test]
+          fn [< test_repeated_ $field _accessors >]() {
+              let mut msg = TestAllTypes::new();
+              assert_that!(msg.[< repeated_ $field >]().len(), eq(0));
+              assert_that!(msg.[<repeated_ $field >]().get(0), none());
+
+              let mut mutator = msg.[<repeated_ $field _mut >]();
+              mutator.push(1 as $t);
+              assert_that!(mutator.len(), eq(1));
+              assert_that!(mutator.get(0), some(eq(1 as $t)));
+              mutator.set(0, 2 as $t);
+              assert_that!(mutator.get(0), some(eq(2 as $t)));
+              mutator.push(1 as $t);
+
+              mutator.push(3 as $t);
+              assert_that!(mutator.get_mut(2).is_some(), eq(true));
+              let mut mut_elem = mutator.get_mut(2).unwrap();
+              mut_elem.set(4 as $t);
+              assert_that!(mut_elem.get(), eq(4 as $t));
+              mut_elem.clear();
+              assert_that!(mut_elem.get(), eq(0 as $t));
+
+              assert_that!(
+                  mutator.iter().collect::<Vec<_>>(),
+                  eq(vec![2 as $t, 1 as $t, 0 as $t])
+              );
+              assert_that!(
+                  (*mutator).into_iter().collect::<Vec<_>>(),
+                  eq(vec![2 as $t, 1 as $t, 0 as $t])
+              );
+
+              for mut mutable_elem in msg.[<repeated_ $field _mut >]() {
+                  mutable_elem.set(0 as $t);
+              }
+              assert_that!(
+                  msg.[<repeated_ $field _mut >]().iter().all(|v| v == (0 as $t)),
+                  eq(true)
+              );
+          }
+
+          #[test]
+          fn [< test_repeated_ $field _set >]() {
+              let mut msg = TestAllTypes::new();
+              let mut mutator = msg.[<repeated_ $field _mut>]();
+              let mut msg2 = TestAllTypes::new();
+              let mut mutator2 = msg2.[<repeated_ $field _mut>]();
+              for i in 0..5 {
+                  mutator2.push(i as $t);
+              }
+              protobuf::MutProxy::set(&mut mutator, *mutator2);
+
+              assert_that!(
+                  mutator.iter().collect::<Vec<_>>(),
+                  eq(mutator2.iter().collect::<Vec<_>>())
+              );
+          }
+      )* }
+  };
+}
+
+generate_repeated_numeric_test!(
+    (i32, int32),
+    (u32, uint32),
+    (i64, int64),
+    (u64, uint64),
+    (f32, float),
+    (f64, double)
+);
+
+#[test]
+fn test_repeated_bool_accessors() {
+    let mut msg = TestAllTypes::new();
+    assert_that!(msg.repeated_bool().len(), eq(0));
+    assert_that!(msg.repeated_bool().get(0), none());
+
+    let mut mutator = msg.repeated_bool_mut();
+    mutator.push(true);
+    assert_that!(mutator.len(), eq(1));
+    assert_that!(mutator.get(0), some(eq(true)));
+    mutator.set(0, false);
+    assert_that!(mutator.get(0), some(eq(false)));
+    mutator.push(true);
+
+    mutator.push(false);
+    assert_that!(mutator.get_mut(2), pat!(Some(_)));
+    let mut mut_elem = mutator.get_mut(2).unwrap();
+    mut_elem.set(true);
+    assert_that!(mut_elem.get(), eq(true));
+    mut_elem.clear();
+    assert_that!(mut_elem.get(), eq(false));
+
+    assert_that!(mutator.iter().collect::<Vec<_>>(), eq(vec![false, true, false]));
+    assert_that!((*mutator).into_iter().collect::<Vec<_>>(), eq(vec![false, true, false]));
+
+    for mut mutable_elem in msg.repeated_bool_mut() {
+        mutable_elem.set(false);
+    }
+    assert_that!(msg.repeated_bool().iter().all(|v| v), eq(false));
+}
+
+#[test]
+fn test_repeated_bool_set() {
+    let mut msg = TestAllTypes::new();
+    let mut mutator = msg.repeated_bool_mut();
+    let mut msg2 = TestAllTypes::new();
+    let mut mutator2 = msg2.repeated_bool_mut();
+    for _ in 0..5 {
+        mutator2.push(true);
+    }
+    protobuf::MutProxy::set(&mut mutator, *mutator2);
+
+    assert_that!(mutator.iter().collect::<Vec<_>>(), eq(mutator2.iter().collect::<Vec<_>>()));
+}
diff --git a/rust/test/shared/accessors_test.rs b/rust/test/shared/accessors_test.rs
index 70c8cc0..ccd3d46 100644
--- a/rust/test/shared/accessors_test.rs
+++ b/rust/test/shared/accessors_test.rs
@@ -9,7 +9,6 @@
 
 use googletest::prelude::*;
 use matchers::{is_set, is_unset};
-use paste::paste;
 use protobuf::Optional;
 use unittest_proto::proto2_unittest::{TestAllTypes, TestAllTypes_};
 
@@ -734,120 +733,3 @@
     msg.oneof_bytes_mut().set(b"123");
     assert_that!(msg.oneof_field_mut(), matches_pattern!(OneofBytes(_)));
 }
-
-macro_rules! generate_repeated_numeric_test {
-    ($(($t: ty, $field: ident)),*) => {
-        paste! { $(
-            #[test]
-            fn [< test_repeated_ $field _accessors >]() {
-                let mut msg = TestAllTypes::new();
-                assert_that!(msg.[< repeated_ $field >]().len(), eq(0));
-                assert_that!(msg.[<repeated_ $field >]().get(0), none());
-
-                let mut mutator = msg.[<repeated_ $field _mut >]();
-                mutator.push(1 as $t);
-                assert_that!(mutator.len(), eq(1));
-                assert_that!(mutator.get(0), some(eq(1 as $t)));
-                mutator.set(0, 2 as $t);
-                assert_that!(mutator.get(0), some(eq(2 as $t)));
-                mutator.push(1 as $t);
-
-                mutator.push(3 as $t);
-                assert_that!(mutator.get_mut(2).is_some(), eq(true));
-                let mut mut_elem = mutator.get_mut(2).unwrap();
-                mut_elem.set(4 as $t);
-                assert_that!(mut_elem.get(), eq(4 as $t));
-                mut_elem.clear();
-                assert_that!(mut_elem.get(), eq(0 as $t));
-
-                assert_that!(
-                    mutator.iter().collect::<Vec<_>>(),
-                    eq(vec![2 as $t, 1 as $t, 0 as $t])
-                );
-                assert_that!(
-                    (*mutator).into_iter().collect::<Vec<_>>(),
-                    eq(vec![2 as $t, 1 as $t, 0 as $t])
-                );
-
-                for mut mutable_elem in msg.[<repeated_ $field _mut >]() {
-                    mutable_elem.set(0 as $t);
-                }
-                assert_that!(
-                    msg.[<repeated_ $field _mut >]().iter().all(|v| v == (0 as $t)),
-                    eq(true)
-                );
-            }
-
-            #[test]
-            fn [< test_repeated_ $field _set >]() {
-                let mut msg = TestAllTypes::new();
-                let mut mutator = msg.[<repeated_ $field _mut>]();
-                let mut msg2 = TestAllTypes::new();
-                let mut mutator2 = msg2.[<repeated_ $field _mut>]();
-                for i in 0..5 {
-                    mutator2.push(i as $t);
-                }
-                protobuf::MutProxy::set(&mut mutator, *mutator2);
-
-                assert_that!(
-                    mutator.iter().collect::<Vec<_>>(),
-                    eq(mutator2.iter().collect::<Vec<_>>())
-                );
-            }
-        )* }
-    };
-}
-
-generate_repeated_numeric_test!(
-    (i32, int32),
-    (u32, uint32),
-    (i64, int64),
-    (u64, uint64),
-    (f32, float),
-    (f64, double)
-);
-
-#[test]
-fn test_repeated_bool_accessors() {
-    let mut msg = TestAllTypes::new();
-    assert_that!(msg.repeated_bool().len(), eq(0));
-    assert_that!(msg.repeated_bool().get(0), none());
-
-    let mut mutator = msg.repeated_bool_mut();
-    mutator.push(true);
-    assert_that!(mutator.len(), eq(1));
-    assert_that!(mutator.get(0), some(eq(true)));
-    mutator.set(0, false);
-    assert_that!(mutator.get(0), some(eq(false)));
-    mutator.push(true);
-
-    mutator.push(false);
-    assert_that!(mutator.get_mut(2), pat!(Some(_)));
-    let mut mut_elem = mutator.get_mut(2).unwrap();
-    mut_elem.set(true);
-    assert_that!(mut_elem.get(), eq(true));
-    mut_elem.clear();
-    assert_that!(mut_elem.get(), eq(false));
-
-    assert_that!(mutator.iter().collect::<Vec<_>>(), eq(vec![false, true, false]));
-    assert_that!((*mutator).into_iter().collect::<Vec<_>>(), eq(vec![false, true, false]));
-
-    for mut mutable_elem in msg.repeated_bool_mut() {
-        mutable_elem.set(false);
-    }
-    assert_that!(msg.repeated_bool().iter().all(|v| v), eq(false));
-}
-
-#[test]
-fn test_repeated_bool_set() {
-    let mut msg = TestAllTypes::new();
-    let mut mutator = msg.repeated_bool_mut();
-    let mut msg2 = TestAllTypes::new();
-    let mut mutator2 = msg2.repeated_bool_mut();
-    for _ in 0..5 {
-        mutator2.push(true);
-    }
-    protobuf::MutProxy::set(&mut mutator, *mutator2);
-
-    assert_that!(mutator.iter().collect::<Vec<_>>(), eq(mutator2.iter().collect::<Vec<_>>()));
-}