Skip to content

Commit 2489fc4

Browse files
committed
tests: fix incorrect argument passing; new test
1 parent 08b4ead commit 2489fc4

4 files changed

Lines changed: 30 additions & 11 deletions

File tree

src/main.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
mod cli;
99
mod utils;
1010

11+
use std::env::args_os;
12+
1113
use bumpalo::Bump;
1214
use clap::Parser as _;
1315
use color_eyre::Result;
@@ -20,14 +22,19 @@ use crate::{
2022

2123
fn main() {
2224
if let Err(e) = ensure_consistent_panic(uu_main) {
23-
exit_err(e)
25+
exit_err(Some(e))
2426
}
2527
}
2628

2729
#[tracing::instrument]
2830
fn uu_main() -> Result<()> {
29-
let args = Args::parse();
30-
println!("{args:?}");
31+
let args = match Args::try_parse_from(args_os()) {
32+
Ok(args) => args,
33+
Err(msg) => {
34+
msg.print()?;
35+
exit_err(Option::<&str>::None)
36+
}
37+
};
3138

3239
let arena = Bump::with_capacity(4000); // 4KB minus metadata-ish
3340
let mut parser = Parser::new(&arena);
@@ -38,7 +45,7 @@ fn uu_main() -> Result<()> {
3845
return Ok(());
3946
}
4047
};
41-
println!("{ast}");
48+
println!("---\n{ast}");
4249
dbg!(arena.chunk_capacity());
4350

4451
// for token in lex {

src/utils.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,15 @@ pub fn exit_with(res: Result<Option<impl Into<ExitCode>>, impl Display + Debug>)
6565
let code = match res {
6666
Ok(Some(x)) => x.into(),
6767
Ok(None) => EXIT_SUCCESS,
68-
Err(e) => exit_err(e),
68+
Err(e) => exit_err(Some(e)),
6969
};
7070

7171
exit(code)
7272
}
7373

74-
pub fn exit_err(err: impl Display + Debug) -> ! {
75-
eprintln!("{err:?}");
74+
pub fn exit_err(err: Option<impl Display + Debug>) -> ! {
75+
if let Some(err) = err {
76+
eprintln!("{err}");
77+
}
7678
exit(EXIT_FAILURE)
7779
}

tests/awk.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
use std::env;
22

3+
use uutests::util::TestScenario;
4+
35
pub const TESTS_BINARY: &str = env!("CARGO_BIN_EXE_awk");
46

57
#[ctor::ctor]
@@ -12,5 +14,9 @@ fn init() {
1214
}
1315
}
1416

17+
fn ucmd() -> uutests::util::UCommand {
18+
TestScenario::new("awk").cmd(TESTS_BINARY)
19+
}
20+
1521
#[path = "by-util/test_awk.rs"]
1622
mod test_awk;

tests/by-util/test_awk.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
use uutests::new_ucmd;
1+
use crate::ucmd;
22

33
#[test]
44
fn empty_program_succeeds() {
5-
new_ucmd!().arg("").succeeds();
5+
ucmd().arg("").succeeds();
66
}
77

88
#[test]
9-
#[ignore = "parser does not yet support print/field expressions"]
109
fn print_first_field() {
11-
new_ucmd!().arg("{ print $1 }").succeeds();
10+
ucmd().args(&["{ print $1 }"]).succeeds();
11+
}
12+
13+
#[test]
14+
fn no_args_fails_code_one() {
15+
ucmd().fails_with_code(1);
1216
}

0 commit comments

Comments
 (0)