Implemented assignments, working on job control

This commit is contained in:
2025-03-15 16:56:53 -04:00
parent 97b4b1835d
commit 2acf70ef96
25 changed files with 1390 additions and 280 deletions

View File

@@ -1,3 +1,4 @@
use expand::unescape_str;
use parse::lex::{Tk, TkFlags, TkRule};
use state::write_vars;
use super::super::*;
@@ -10,10 +11,18 @@ fn simple_expansion() {
let mut tokens: Vec<Tk> = LexStream::new(varsub, LexFlags::empty())
.filter(|tk| !matches!(tk.class, TkRule::EOI | TkRule::SOI))
.collect();
let var_tk = tokens.pop().unwrap();
let var_tk = tokens.pop().unwrap();
let var_span = var_tk.span.clone();
let exp_tk = var_tk.expand(var_span, TkFlags::empty());
write_vars(|v| v.vars_mut().clear());
insta::assert_debug_snapshot!(exp_tk.get_words())
let var_span = var_tk.span.clone();
let exp_tk = var_tk.expand(var_span, TkFlags::empty());
write_vars(|v| v.vars_mut().clear());
insta::assert_debug_snapshot!(exp_tk.get_words())
}
#[test]
fn unescape_string() {
let string = "echo $foo \\$bar";
let unescaped = unescape_str(string);
insta::assert_snapshot!(unescaped)
}