1
0
mirror of https://github.com/nushell/nushell.git synced 2025-07-08 02:17:22 +02:00

Fix a panic when parsing empty file ()

The previous implementation presumed that if files were given, they had
contents. The change makes the fallback to permanent files uniform.

Fix 
This commit is contained in:
Andrej Kolchin
2024-02-08 00:47:44 +00:00
committed by GitHub
parent 3633772d52
commit fb7f6fc08b
2 changed files with 15 additions and 5 deletions
crates/nu-protocol/src/engine
tests/shell

@ -355,11 +355,10 @@ impl<'a> StateWorkingSet<'a> {
return &contents[begin..end]; return &contents[begin..end];
} }
} }
} else {
return self.permanent_state.get_span_contents(span);
} }
panic!("internal error: missing span contents in file cache") // if no files with span were found, fall back on permanent ones
return self.permanent_state.get_span_contents(span);
} }
pub fn enter_scope(&mut self) { pub fn enter_scope(&mut self) {

@ -329,3 +329,14 @@ fn main_script_can_have_subcommands2() {
assert!(actual.out.contains("usage: script.nu")); assert!(actual.out.contains("usage: script.nu"));
}) })
} }
#[test]
fn source_empty_file() {
Playground::setup("source_empty_file", |dirs, sandbox| {
sandbox.mkdir("source_empty_file");
sandbox.with_files(vec![FileWithContent("empty.nu", "")]);
let actual = nu!(cwd: dirs.test(), pipeline("nu empty.nu"));
assert!(actual.out.is_empty());
})
}