nu-command 0.112.2

Nushell's built-in commands
Documentation
use nu_protocol::{DataSource, IntoPipelineData, PipelineMetadata, Span};
use nu_test_support::prelude::*;
use rstest::rstest;

enum ExpectTo {
    Keep,
    Drop,
}

#[rstest]
#[case("1", ExpectTo::Drop)]
#[case("01/02/2026", ExpectTo::Drop)]
#[case("true", ExpectTo::Drop)]
#[case("truee", ExpectTo::Keep)]
#[case("test", ExpectTo::Keep)]
fn content_type_metadata(#[case] input: &str, #[case] expect_to: ExpectTo) -> Result {
    let in_meta = Some(
        PipelineMetadata::default()
            .with_data_source(DataSource::FilePath("test.txt".into()))
            .with_content_type(Some("text/plain".into())),
    );

    let data = input
        .into_value(Span::test_data())
        .into_pipeline_data_with_metadata(in_meta.clone());

    let out_meta = test()
        .run_raw_with_data("detect type", data)?
        .body
        .take_metadata();

    let expected = match expect_to {
        ExpectTo::Keep => in_meta,
        ExpectTo::Drop => in_meta.map(|m| m.with_content_type(None)),
    };

    assert_eq!(expected, out_meta);

    Ok(())
}