Add subcommand into filesize (#3987)

* Add subcommand `into filesize`

It's currently not possible to convert a number or a string containing a number
into a filesize. The only way to create an instance of filesize type today is
with a literal in nushell syntax. This commit adds the `into filesize`
subcommand so that file sizes can be created from the outputs of programs
producing numbers or strings, like standard unix tools.

There is a limitation with this - it doesn't currently parse values like `10 MB`
or `10 MiB`, it can only look at the number itself. If the desire is there, more
flexible parsing can be added.

* fixup! Add subcommand `into filesize`

* fixup! Add subcommand `into filesize`
This commit is contained in:
Lily Mara
2021-09-02 16:19:54 -07:00
committed by GitHub
parent 260ff99710
commit d90420ac4c
5 changed files with 262 additions and 0 deletions

View File

@ -0,0 +1,76 @@
use nu_test_support::{nu, pipeline};
#[test]
fn into_filesize_int() {
let actual = nu!(
cwd: ".", pipeline(
r#"
1 | into filesize
"#
));
assert!(actual.out.contains("1 B"));
}
#[test]
fn into_filesize_decimal() {
let actual = nu!(
cwd: ".", pipeline(
r#"
1.2 | into filesize
"#
));
assert!(actual.out.contains("1 B"));
}
#[test]
fn into_filesize_str() {
let actual = nu!(
cwd: ".", pipeline(
r#"
'2000' | into filesize
"#
));
assert!(actual.out.contains("2.0 KB"));
}
#[test]
fn into_filesize_str_newline() {
let actual = nu!(
cwd: ".", pipeline(
r#"
'2000
' | into filesize
"#
));
assert!(actual.out.contains("2.0 KB"));
}
#[test]
fn into_filesize_str_many_newlines() {
let actual = nu!(
cwd: ".", pipeline(
r#"
'2000
' | into filesize
"#
));
assert!(actual.out.contains("2.0 KB"));
}
#[test]
fn into_filesize_filesize() {
let actual = nu!(
cwd: ".", pipeline(
r#"
3kb | into filesize
"#
));
assert!(actual.out.contains("3.0 KB"));
}

View File

@ -25,6 +25,7 @@ mod headers;
mod help;
mod histogram;
mod insert;
mod into_filesize;
mod into_int;
mod keep;
mod last;