Throw exception if a file cannot be opened, fix travis-ci builds (#117)

* throw exception if a file cannot be opened

* Add a new function in utils.hpp: open_file_or_throw: This function
  returns an opened std::ifstream or throws by calling `inja_throw`.
* Use this function in Parser::load_file which previously returned an
  empty string if the file couldn't be opened.
* Use this function in Environment::load_json which previously threw
  a `nlohmann::detail::parse_error` if the file couldn't be opened.
* In Parser::parse_statement: When including files through `include`,
  do not attempt to (re-)parse templates from files that were already
  included. Additionally, this prevents inja from attempting to load
  in-memory templates by their name from disk.
* Add tests that check if an exception is thrown when attempting to
  open files that do not exist.

* cmake: enable C++11

* cmake: require C++11 when depending on single_inja

* code style
This commit is contained in:
Tom
2019-09-08 15:05:01 +02:00
committed by pantor
parent 57ac9b9372
commit 419c93c840
7 changed files with 48 additions and 9 deletions
+1
View File
@@ -378,6 +378,7 @@ TEST_CASE("templates") {
inja::Template t2 = env.parse("{% include \"greeting\" %}!");
CHECK( env.render(t2, data) == "Hello Peter!" );
CHECK_THROWS_WITH( env.parse("{% include \"does-not-exist\" %}!"), "[inja.exception.file_error] failed accessing file at 'does-not-exist'" );
}
}