nu-command 0.112.1

Nushell's built-in commands
Documentation
use nu_test_support::prelude::*;

#[cfg(windows)]
#[test]
fn parses_single_path_prefix() -> Result {
    let code = r#"
        echo 'C:\users\viking\spam.txt'
        | path parse
        | get prefix
    "#;

    test().cwd("tests").run(code).expect_value_eq("C:")
}

#[test]
fn parses_single_path_parent() -> Result {
    let code = "
        echo 'home/viking/spam.txt'
        | path parse
        | get parent
    ";

    test().cwd("tests").run(code).expect_value_eq("home/viking")
}

#[test]
fn parses_single_path_stem() -> Result {
    let code = "
        echo 'home/viking/spam.txt'
        | path parse
        | get stem
    ";

    test().cwd("tests").run(code).expect_value_eq("spam")
}

#[test]
fn parses_custom_extension_gets_extension() -> Result {
    let code = "
        echo 'home/viking/spam.tar.gz'
        | path parse --extension tar.gz
        | get extension
    ";

    test().cwd("tests").run(code).expect_value_eq("tar.gz")
}

#[test]
fn parses_custom_extension_gets_stem() -> Result {
    let code = "
        echo 'home/viking/spam.tar.gz'
        | path parse --extension tar.gz
        | get stem
    ";

    test().cwd("tests").run(code).expect_value_eq("spam")
}

#[test]
fn parses_ignoring_extension_gets_extension() -> Result {
    let code = "
        echo 'home/viking/spam.tar.gz'
        | path parse --extension ''
        | get extension
    ";

    test().cwd("tests").run(code).expect_value_eq("")
}

#[test]
fn parses_ignoring_extension_gets_stem() -> Result {
    let code = r#"
        echo 'home/viking/spam.tar.gz'
        | path parse --extension ""
        | get stem
    "#;

    test().cwd("tests").run(code).expect_value_eq("spam.tar.gz")
}

#[test]
fn parses_into_correct_number_of_columns() -> Result {
    let code = "
        echo 'home/viking/spam.txt'
        | path parse
        | transpose
        | get column0
        | length
    ";

    #[cfg(windows)]
    let expected = 4;
    #[cfg(not(windows))]
    let expected = 3;

    test().cwd("tests").run(code).expect_value_eq(expected)
}

#[test]
fn const_path_parse() -> Result {
    let code = "const name = ('spam/eggs.txt' | path parse); $name.parent";
    test().run(code).expect_value_eq("spam")?;

    let code = "const name = ('spam/eggs.txt' | path parse); $name.stem";
    test().run(code).expect_value_eq("eggs")?;

    let code = "const name = ('spam/eggs.txt' | path parse); $name.extension";
    test().run(code).expect_value_eq("txt")?;
    Ok(())
}