Skip to content

Commit 844b39a

Browse files
committed
simplify tests
1 parent 0bbaf3a commit 844b39a

1 file changed

Lines changed: 38 additions & 54 deletions

File tree

  • datafusion/datasource/src/file_stream

datafusion/datasource/src/file_stream/mod.rs

Lines changed: 38 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -396,9 +396,9 @@ impl FileStreamMetrics {
396396

397397
#[cfg(test)]
398398
mod tests {
399-
use crate::PartitionedFile;
400-
use crate::file_scan_config::FileScanConfigBuilder;
399+
use crate::file_scan_config::{FileScanConfig, FileScanConfigBuilder};
401400
use crate::tests::make_partition;
401+
use crate::{PartitionedFile, TableSchema};
402402
use datafusion_common::error::Result;
403403
use datafusion_execution::object_store::ObjectStoreUrl;
404404
use datafusion_physical_plan::metrics::ExecutionPlanMetricsSet;
@@ -526,7 +526,7 @@ mod tests {
526526

527527
let on_error = self.on_error;
528528

529-
let table_schema = crate::table_schema::TableSchema::new(file_schema, vec![]);
529+
let table_schema = TableSchema::new(file_schema, vec![]);
530530
let config = FileScanConfigBuilder::new(
531531
ObjectStoreUrl::parse("test:///").unwrap(),
532532
Arc::new(MockSource::new(table_schema)),
@@ -540,8 +540,7 @@ mod tests {
540540
.with_file_opener(Arc::new(self.opener))
541541
.with_metrics(&metrics_set)
542542
.with_on_error(on_error)
543-
.build()
544-
.unwrap();
543+
.build()?;
545544

546545
file_stream
547546
.collect::<Vec<_>>()
@@ -562,6 +561,23 @@ mod tests {
562561
.expect("error executing stream")
563562
}
564563

564+
/// Create the smallest valid file scan config for builder validation tests.
565+
fn builder_test_config() -> FileScanConfig {
566+
let table_schema = TableSchema::new(Arc::new(Schema::empty()), vec![]);
567+
FileScanConfigBuilder::new(
568+
ObjectStoreUrl::parse("test:///").unwrap(),
569+
Arc::new(MockSource::new(table_schema)),
570+
)
571+
.with_file(PartitionedFile::new("mock_file", 10))
572+
.build()
573+
}
574+
575+
/// Convenience helper to keep builder error assertions focused on the
576+
/// specific missing or invalid input under test.
577+
fn builder_error(builder: FileStreamBuilder<'_>) -> String {
578+
builder.build().err().unwrap().to_string()
579+
}
580+
565581
#[tokio::test]
566582
async fn on_error_opening() -> Result<()> {
567583
let batches = FileStreamTest::new()
@@ -859,65 +875,33 @@ mod tests {
859875

860876
#[test]
861877
fn builder_requires_partition_file_opener_and_metrics() {
862-
let table_schema =
863-
crate::table_schema::TableSchema::new(Arc::new(Schema::empty()), vec![]);
864-
let config = FileScanConfigBuilder::new(
865-
ObjectStoreUrl::parse("test:///").unwrap(),
866-
Arc::new(MockSource::new(table_schema)),
867-
)
868-
.with_file(PartitionedFile::new("mock_file", 10))
869-
.build();
878+
let config = builder_test_config();
870879

871-
let err = FileStreamBuilder::new(&config).build().err().unwrap();
872-
assert!(
873-
err.to_string()
874-
.contains("FileStreamBuilder missing required field: partition")
875-
);
880+
let err = builder_error(FileStreamBuilder::new(&config));
881+
assert!(err.contains("FileStreamBuilder missing required field: partition"));
876882

877-
let err = FileStreamBuilder::new(&config)
878-
.with_partition(0)
879-
.build()
880-
.err()
881-
.unwrap();
882-
assert!(
883-
err.to_string()
884-
.contains("FileStreamBuilder missing required field: file_opener")
885-
);
883+
let err = builder_error(FileStreamBuilder::new(&config).with_partition(0));
884+
assert!(err.contains("FileStreamBuilder missing required field: file_opener"));
886885

887-
let err = FileStreamBuilder::new(&config)
888-
.with_partition(0)
889-
.with_file_opener(Arc::new(TestOpener::default()))
890-
.build()
891-
.err()
892-
.unwrap();
893-
assert!(
894-
err.to_string()
895-
.contains("FileStreamBuilder missing required field: metrics")
886+
let err = builder_error(
887+
FileStreamBuilder::new(&config)
888+
.with_partition(0)
889+
.with_file_opener(Arc::new(TestOpener::default())),
896890
);
891+
assert!(err.contains("FileStreamBuilder missing required field: metrics"));
897892
}
898893

899894
#[test]
900895
fn builder_errors_on_invalid_partition() {
901-
let table_schema =
902-
crate::table_schema::TableSchema::new(Arc::new(Schema::empty()), vec![]);
903-
let config = FileScanConfigBuilder::new(
904-
ObjectStoreUrl::parse("test:///").unwrap(),
905-
Arc::new(MockSource::new(table_schema)),
906-
)
907-
.with_file(PartitionedFile::new("mock_file", 10))
908-
.build();
896+
let config = builder_test_config();
909897
let metrics = ExecutionPlanMetricsSet::new();
910898

911-
let err = FileStreamBuilder::new(&config)
912-
.with_partition(1)
913-
.with_file_opener(Arc::new(TestOpener::default()))
914-
.with_metrics(&metrics)
915-
.build()
916-
.err()
917-
.unwrap();
918-
assert!(
919-
err.to_string()
920-
.contains("FileStreamBuilder invalid partition index: 1")
899+
let err = builder_error(
900+
FileStreamBuilder::new(&config)
901+
.with_partition(1)
902+
.with_file_opener(Arc::new(TestOpener::default()))
903+
.with_metrics(&metrics),
921904
);
905+
assert!(err.contains("FileStreamBuilder invalid partition index: 1"));
922906
}
923907
}

0 commit comments

Comments
 (0)