nushell/crates/nu-command/tests/commands/lines.rs
Reilly Wood ee5a387300
Handle mixed LF+CRLF in lines (#7316)
This closes #4989. Previously `lines` was unable to handle text input
with CRLF line breaks _and_ LF line breaks.

### Before:

![image](https://user-images.githubusercontent.com/26268125/205207685-b25da9e1-19fa-4abb-8ab2-0dd216c63fc0.png)

### After:


![image](https://user-images.githubusercontent.com/26268125/205207808-9f687242-a8c2-4b79-a12c-38b0583d8d52.png)
2022-12-02 11:30:26 -05:00

63 lines
1.3 KiB
Rust

use nu_test_support::{nu, pipeline};
#[test]
fn lines() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
open cargo_sample.toml -r
| lines
| skip while $it != "[dependencies]"
| skip 1
| first
| split column "="
| get column1.0
| str trim
"#
));
assert_eq!(actual.out, "rustyline");
}
#[test]
fn lines_proper_buffering() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
open lines_test.txt -r
| lines
| str length
| to json -r
"#
));
assert_eq!(actual.out, "[8193,3]");
}
#[test]
fn lines_multi_value_split() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
open sample-simple.json
| get first second
| lines
| length
"#
));
assert_eq!(actual.out, "6");
}
/// test whether this handles CRLF and LF in the same input
#[test]
fn lines_mixed_line_endings() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
"foo\nbar\r\nquux" | lines | length
"#
));
assert_eq!(actual.out, "3");
}