diff --git a/CHANGELOG.md b/CHANGELOG.md index f73f6814..99f1b9fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project does not currently adhere to a particular versioning scheme. - Add import system. ([#544][gh-544]) - Add multi line comment `#{ ... #}` syntax. ([#595][gh-595]) +- Add error message when input file is not found. ([#513][gh-513]) ## [0.2.36] - 2024-07-04 @@ -372,6 +373,7 @@ and this project does not currently adhere to a particular versioning scheme. [gh-494]: https://github.com/HigherOrderCO/Bend/issues/494 [gh-502]: https://github.com/HigherOrderCO/Bend/issues/502 [gh-512]: https://github.com/HigherOrderCO/Bend/issues/512 +[gh-513]: https://github.com/HigherOrderCO/Bend/issues/513 [gh-514]: https://github.com/HigherOrderCO/Bend/issues/514 [gh-516]: https://github.com/HigherOrderCO/Bend/issues/516 [gh-526]: https://github.com/HigherOrderCO/Bend/issues/526 diff --git a/src/fun/load_book.rs b/src/fun/load_book.rs index 4e94a1fb..db1bd121 100644 --- a/src/fun/load_book.rs +++ b/src/fun/load_book.rs @@ -16,8 +16,16 @@ pub fn load_file_to_book( package_loader: impl PackageLoader, diag: DiagnosticsConfig, ) -> Result { - let code = std::fs::read_to_string(path).map_err(|e| e.to_string())?; - load_to_book(path, &code, package_loader, diag) + match path.try_exists() { + Ok(exists) => { + if !exists { + return Err(format!("The file '{}' was not found.", path.display()).into()); + } + let code = std::fs::read_to_string(path).map_err(|e| e.to_string())?; + load_to_book(path, &code, package_loader, diag) + } + Err(e) => Err(e.to_string().into()), + } } pub fn load_to_book( diff --git a/tests/golden_tests/cli/input_file_not_found.args b/tests/golden_tests/cli/input_file_not_found.args new file mode 100644 index 00000000..b5f6bc09 --- /dev/null +++ b/tests/golden_tests/cli/input_file_not_found.args @@ -0,0 +1,2 @@ +run +tests/golden_tests/missing_dir/input_file_not_found.bend diff --git a/tests/golden_tests/cli/input_file_not_found.bend b/tests/golden_tests/cli/input_file_not_found.bend new file mode 100644 index 00000000..e69de29b diff --git a/tests/snapshots/cli__input_file_not_found.bend.snap b/tests/snapshots/cli__input_file_not_found.bend.snap new file mode 100644 index 00000000..58ec9395 --- /dev/null +++ b/tests/snapshots/cli__input_file_not_found.bend.snap @@ -0,0 +1,6 @@ +--- +source: tests/golden_tests.rs +input_file: tests/golden_tests/cli/input_file_not_found.bend +--- +Errors: +The file 'tests/golden_tests/missing_dir/input_file_not_found.bend' was not found.