mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 19:07:42 +02:00
Refactor: introduce 2 associated functions to PipelineData
(#16233)
# Description As title: this pr is try to introduce 2 functions to `PipelineData`: 1. PipelineData::list_stream --> create a PipelineData::ListStream 2. PipelineData::byte_stream -> create a PipelineData::ByteStream And use these functions everywhere. ### Reason behind this change I tried to implement `pipefail` feature, but this would required to change `PipelineData` from enum to struct. So use these functions can reduce diff if I finally change to struct. [Discord message here](https://discord.com/channels/601130461678272522/615962413203718156/1396999539000479784) is my plan. # User-Facing Changes NaN # Tests + Formatting NaN # After Submitting NaN
This commit is contained in:
@ -184,20 +184,20 @@ pub trait InterfaceManager {
|
||||
signals: &Signals,
|
||||
) -> Result<PipelineData, ShellError> {
|
||||
self.prepare_pipeline_data(match header {
|
||||
PipelineDataHeader::Empty => PipelineData::Empty,
|
||||
PipelineDataHeader::Value(value, metadata) => PipelineData::Value(value, metadata),
|
||||
PipelineDataHeader::Empty => PipelineData::empty(),
|
||||
PipelineDataHeader::Value(value, metadata) => PipelineData::value(value, metadata),
|
||||
PipelineDataHeader::ListStream(info) => {
|
||||
let handle = self.stream_manager().get_handle();
|
||||
let reader = handle.read_stream(info.id, self.get_interface())?;
|
||||
let ls = ListStream::new(reader, info.span, signals.clone());
|
||||
PipelineData::ListStream(ls, info.metadata)
|
||||
PipelineData::list_stream(ls, info.metadata)
|
||||
}
|
||||
PipelineDataHeader::ByteStream(info) => {
|
||||
let handle = self.stream_manager().get_handle();
|
||||
let reader = handle.read_stream(info.id, self.get_interface())?;
|
||||
let bs =
|
||||
ByteStream::from_result_iter(reader, info.span, signals.clone(), info.type_);
|
||||
PipelineData::ByteStream(bs, info.metadata)
|
||||
PipelineData::byte_stream(bs, info.metadata)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -302,7 +302,7 @@ fn write_pipeline_data_empty() -> Result<(), ShellError> {
|
||||
let manager = TestInterfaceManager::new(&test);
|
||||
let interface = manager.get_interface();
|
||||
|
||||
let (header, writer) = interface.init_write_pipeline_data(PipelineData::Empty, &())?;
|
||||
let (header, writer) = interface.init_write_pipeline_data(PipelineData::empty(), &())?;
|
||||
|
||||
assert!(matches!(header, PipelineDataHeader::Empty));
|
||||
|
||||
@ -324,7 +324,7 @@ fn write_pipeline_data_value() -> Result<(), ShellError> {
|
||||
let value = Value::test_int(7);
|
||||
|
||||
let (header, writer) =
|
||||
interface.init_write_pipeline_data(PipelineData::Value(value.clone(), None), &())?;
|
||||
interface.init_write_pipeline_data(PipelineData::value(value.clone(), None), &())?;
|
||||
|
||||
match header {
|
||||
PipelineDataHeader::Value(read_value, _) => assert_eq!(value, read_value),
|
||||
@ -349,7 +349,7 @@ fn write_pipeline_data_prepared_properly() {
|
||||
// Sending a binary should be an error in our test scenario
|
||||
let value = Value::test_binary(vec![7, 8]);
|
||||
|
||||
match interface.init_write_pipeline_data(PipelineData::Value(value, None), &()) {
|
||||
match interface.init_write_pipeline_data(PipelineData::value(value, None), &()) {
|
||||
Ok(_) => panic!("prepare_pipeline_data was not called"),
|
||||
Err(err) => {
|
||||
assert_eq!(
|
||||
@ -376,7 +376,7 @@ fn write_pipeline_data_list_stream() -> Result<(), ShellError> {
|
||||
];
|
||||
|
||||
// Set up pipeline data for a list stream
|
||||
let pipe = PipelineData::ListStream(
|
||||
let pipe = PipelineData::list_stream(
|
||||
ListStream::new(
|
||||
values.clone().into_iter(),
|
||||
Span::test_data(),
|
||||
@ -430,7 +430,7 @@ fn write_pipeline_data_byte_stream() -> Result<(), ShellError> {
|
||||
let span = Span::new(400, 500);
|
||||
|
||||
// Set up pipeline data for a byte stream
|
||||
let data = PipelineData::ByteStream(
|
||||
let data = PipelineData::byte_stream(
|
||||
ByteStream::read(
|
||||
std::io::Cursor::new(expected),
|
||||
span,
|
||||
|
Reference in New Issue
Block a user