This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/main by this push:
     new 919f783532 Minor: migrate more arrow round trip tests to use 
RoundTripTest fixture (#10585)
919f783532 is described below

commit 919f783532be3be90532dd9841bd9d434716b3b7
Author: Andrew Lamb <[email protected]>
AuthorDate: Sun Aug 9 13:15:18 2026 -0400

    Minor: migrate more arrow round trip tests to use RoundTripTest fixture 
(#10585)
    
    # Which issue does this PR close?
    
    - part of #10540
    - Follow on to https://github.com/apache/arrow-rs/pull/10545
    
    # Rationale for this change
    
    There are 4000+ lines of tests in arrow_writer (and a bunch more in
    arrow_reader, I might point out) -- this makes it hard to find and add
    new tests or to evaluate test coverage
    
    I encapsulated the testing harness into a struct in
    https://github.com/apache/arrow-rs/pull/10545 and now I want to (slowly)
    move more tests to use this new harness.
    
    # What changes are included in this PR?
    
    1. Migrate a few tests from using `roundtrip()` to using
    `RoundTripTest`; This actually increases coverage as I will descsribe
    below
    2. Note this is less code and more coverage
    
    # Are these changes tested?
    yes by CI
    
    
    # Are there any user-facing changes?
    
    No
---
 parquet/src/arrow/arrow_writer/mod.rs | 127 ++++++++++------------------------
 1 file changed, 38 insertions(+), 89 deletions(-)

diff --git a/parquet/src/arrow/arrow_writer/mod.rs 
b/parquet/src/arrow/arrow_writer/mod.rs
index 0b4cdfff42..4ffdb17c96 100644
--- a/parquet/src/arrow/arrow_writer/mod.rs
+++ b/parquet/src/arrow/arrow_writer/mod.rs
@@ -2221,16 +2221,12 @@ mod tests {
 
     #[test]
     fn arrow_writer_non_null() {
-        // define schema
         let schema = Schema::new(vec![Field::new("a", DataType::Int32, 
false)]);
-
-        // create some data
         let a = Int32Array::from(vec![1, 2, 3, 4, 5]);
 
-        // build a record batch
-        let batch = RecordBatch::try_new(Arc::new(schema), 
vec![Arc::new(a)]).unwrap();
-
-        roundtrip(batch, Some(SMALL_SIZE / 2));
+        RoundTripTest::new(Arc::new(a))
+            .with_schema(Arc::new(schema))
+            .run();
     }
 
     #[test]
@@ -2261,15 +2257,11 @@ mod tests {
         .build()
         .unwrap();
         let a = ListArray::from(a_list_data);
+        assert_eq!(a.null_count(), 1);
 
-        // build a record batch
-        let batch = RecordBatch::try_new(Arc::new(schema), 
vec![Arc::new(a)]).unwrap();
-
-        assert_eq!(batch.column(0).null_count(), 1);
-
-        // This test fails if the max row group size is less than the batch's 
length
-        // see https://github.com/apache/arrow-rs/issues/518
-        roundtrip(batch, None);
+        RoundTripTest::new(Arc::new(a))
+            .with_schema(Arc::new(schema))
+            .run();
     }
 
     #[test]
@@ -2299,15 +2291,11 @@ mod tests {
         .build()
         .unwrap();
         let a = ListArray::from(a_list_data);
+        assert_eq!(a.null_count(), 0);
 
-        // build a record batch
-        let batch = RecordBatch::try_new(Arc::new(schema), 
vec![Arc::new(a)]).unwrap();
-
-        // This test fails if the max row group size is less than the batch's 
length
-        // see https://github.com/apache/arrow-rs/issues/518
-        assert_eq!(batch.column(0).null_count(), 0);
-
-        roundtrip(batch, None);
+        RoundTripTest::new(Arc::new(a))
+            .with_schema(Arc::new(schema))
+            .run();
     }
 
     #[test]
@@ -2327,12 +2315,11 @@ mod tests {
             Arc::new(Int32Array::from(vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10])),
             Some(vec![true, true, false, true, true].into()),
         );
+        assert_eq!(a.null_count(), 1);
 
-        let batch = RecordBatch::try_new(Arc::new(schema), 
vec![Arc::new(a)]).unwrap();
-
-        assert_eq!(batch.column(0).null_count(), 1);
-
-        roundtrip(batch, None);
+        RoundTripTest::new(Arc::new(a))
+            .with_schema(Arc::new(schema))
+            .run();
     }
 
     #[test]
@@ -2352,12 +2339,11 @@ mod tests {
             Arc::new(Int32Array::from(vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10])),
             None,
         );
+        assert_eq!(a.null_count(), 0);
 
-        let batch = RecordBatch::try_new(Arc::new(schema), 
vec![Arc::new(a)]).unwrap();
-
-        assert_eq!(batch.column(0).null_count(), 0);
-
-        roundtrip(batch, None);
+        RoundTripTest::new(Arc::new(a))
+            .with_schema(Arc::new(schema))
+            .run();
     }
 
     #[test]
@@ -2377,10 +2363,11 @@ mod tests {
             Arc::new(Int32Array::from(vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10])),
             None,
         );
+        assert_eq!(a.null_count(), 0);
 
-        let batch = RecordBatch::try_new(Arc::new(schema), 
vec![Arc::new(a)]).unwrap();
-
-        roundtrip(batch, None);
+        RoundTripTest::new(Arc::new(a))
+            .with_schema(Arc::new(schema))
+            .run();
     }
 
     #[test]
@@ -2400,12 +2387,11 @@ mod tests {
             Arc::new(Int32Array::from(vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10])),
             Some(vec![true, true, false, true, true].into()),
         );
+        assert_eq!(a.null_count(), 1);
 
-        let batch = RecordBatch::try_new(Arc::new(schema), 
vec![Arc::new(a)]).unwrap();
-
-        assert_eq!(batch.column(0).null_count(), 1);
-
-        roundtrip(batch, None);
+        RoundTripTest::new(Arc::new(a))
+            .with_schema(Arc::new(schema))
+            .run();
     }
 
     #[test]
@@ -2441,18 +2427,15 @@ mod tests {
             Arc::new(struct_array),
             Some(vec![true, false, true].into()),
         );
+        assert_eq!(list_view.null_count(), 1);
 
-        let batch = RecordBatch::try_new(Arc::new(schema), 
vec![Arc::new(list_view)]).unwrap();
-
-        roundtrip(batch, None);
+        RoundTripTest::new(Arc::new(list_view))
+            .with_schema(Arc::new(schema))
+            .run();
     }
 
     #[test]
     fn arrow_writer_binary() {
-        let string_field = Field::new("a", DataType::Utf8, false);
-        let binary_field = Field::new("b", DataType::Binary, false);
-        let schema = Schema::new(vec![string_field, binary_field]);
-
         let raw_string_values = vec!["foo", "bar", "baz", "quux"];
         let raw_binary_values = [
             b"foo".to_vec(),
@@ -2467,22 +2450,15 @@ mod tests {
 
         let string_values = StringArray::from(raw_string_values.clone());
         let binary_values = BinaryArray::from(raw_binary_value_refs);
-        let batch = RecordBatch::try_new(
-            Arc::new(schema),
-            vec![Arc::new(string_values), Arc::new(binary_values)],
-        )
-        .unwrap();
+        assert_eq!(string_values.null_count(), 0);
+        assert_eq!(binary_values.null_count(), 0);
 
-        roundtrip(batch, Some(SMALL_SIZE / 2));
+        RoundTripTest::new(Arc::new(string_values)).run();
+        RoundTripTest::new(Arc::new(binary_values)).run();
     }
 
     #[test]
     fn arrow_writer_binary_view() {
-        let string_field = Field::new("a", DataType::Utf8View, false);
-        let binary_field = Field::new("b", DataType::BinaryView, false);
-        let nullable_string_field = Field::new("a", DataType::Utf8View, true);
-        let schema = Schema::new(vec![string_field, binary_field, 
nullable_string_field]);
-
         let raw_string_values = vec!["foo", "bar", "large payload over 12 
bytes", "lulu"];
         let raw_binary_values = vec![
             b"foo".to_vec(),
@@ -2496,26 +2472,14 @@ mod tests {
         let string_view_values = StringViewArray::from(raw_string_values);
         let binary_view_values = 
BinaryViewArray::from_iter_values(raw_binary_values);
         let nullable_string_view_values = 
StringViewArray::from(nullable_string_values);
-        let batch = RecordBatch::try_new(
-            Arc::new(schema),
-            vec![
-                Arc::new(string_view_values),
-                Arc::new(binary_view_values),
-                Arc::new(nullable_string_view_values),
-            ],
-        )
-        .unwrap();
 
-        roundtrip(batch.clone(), Some(SMALL_SIZE / 2));
-        roundtrip(batch, None);
+        RoundTripTest::new(Arc::new(string_view_values)).run();
+        RoundTripTest::new(Arc::new(binary_view_values)).run();
+        RoundTripTest::new(Arc::new(nullable_string_view_values)).run();
     }
 
     #[test]
     fn arrow_writer_binary_view_long_value() {
-        let string_field = Field::new("a", DataType::Utf8View, false);
-        let binary_field = Field::new("b", DataType::BinaryView, false);
-        let schema = Schema::new(vec![string_field, binary_field]);
-
         // There is special case validation for long values (greater than 128)
         // 128 encodes as 0x80 0x00 0x00 0x00 in little endian, which should
         // trigger the long-string UTF-8 validation branch in the plain 
decoder.
@@ -2533,21 +2497,6 @@ mod tests {
         RoundTripTest::new(Arc::clone(&binary_view_values))
             .with_nullable(false)
             .run();
-
-        let batch = RecordBatch::try_new(
-            Arc::new(schema),
-            vec![string_view_values, binary_view_values],
-        )
-        .unwrap();
-
-        // Disable dictionary to exercise plain encoding paths in the reader.
-        for version in [WriterVersion::PARQUET_1_0, 
WriterVersion::PARQUET_2_0] {
-            let props = WriterProperties::builder()
-                .set_writer_version(version)
-                .set_dictionary_enabled(false)
-                .build();
-            roundtrip_opts(&batch, props);
-        }
     }
 
     fn get_decimal_batch(precision: u8, scale: i8) -> RecordBatch {

Reply via email to