aboutsummaryrefslogtreecommitdiffstats
path: root/src/parse/test.rs
diff options
context:
space:
mode:
authorJonas Maier <jonas@x77.dev>2026-03-10 20:51:22 +0100
committerJonas Maier <jonas@x77.dev>2026-03-10 20:51:22 +0100
commit43446ee22cd0bcb726ccdcc665cf105ba950cf7a (patch)
tree0ad4059d51de3b144fcf6cc434e468cd38ae93e5 /src/parse/test.rs
parentf41cdc03e1b36a65877e009065eb609caf5d1b13 (diff)
downloadpish-43446ee22cd0bcb726ccdcc665cf105ba950cf7a.tar.gz
better tilde parsing
Diffstat (limited to 'src/parse/test.rs')
-rw-r--r--src/parse/test.rs39
1 files changed, 38 insertions, 1 deletions
diff --git a/src/parse/test.rs b/src/parse/test.rs
index 4ae6341..eab24cc 100644
--- a/src/parse/test.rs
+++ b/src/parse/test.rs
@@ -12,7 +12,9 @@ fn parse_test(l: Ast<PreExpansion>, r: Ast<PreExpansion>) {
r.cdisplay(&mut right).unwrap();
let left = String::from_utf8_lossy(&left);
let right = String::from_utf8_lossy(&right);
- panic!("parse equality error\nleft: {left}\nright: {right}")
+ if left != right {
+ panic!("parse equality error\nleft: {left}\nright: {right}")
+ }
}
}
@@ -80,6 +82,41 @@ fn tilde() {
}
#[test]
+fn tilde2() {
+ parse_test(
+ parse(b"echo ~/foo/bar"),
+ pipes([cmd([
+ estr(b"echo"),
+ str([var(b"HOME"), plain(b"/foo/bar")]),
+ ])]),
+ );
+}
+
+#[test]
+fn tilde3() {
+ parse_test(
+ parse(b"echo ~ "),
+ pipes([cmd([estr(b"echo"), str([var(b"HOME")])])]),
+ );
+}
+
+#[test]
+fn tilde4() {
+ parse_test(
+ parse(b"echo ~'x'"),
+ pipes([cmd([estr(b"echo"), estr(b"~x")])]),
+ );
+}
+
+#[test]
+fn tilde5() {
+ parse_test(
+ parse(b"echo ~$FOO"),
+ pipes([cmd([estr(b"echo"), str([plain(b"~"), var(b"FOO")])])]),
+ );
+}
+
+#[test]
fn set_variable_in_fun() {
parse_test(
parse(b"fun setter { set x = 1 }"),