diff --git a/tests/component/updater_test.cpp b/tests/component/updater_test.cpp index 91e5cc1a..9fcf17f1 100644 --- a/tests/component/updater_test.cpp +++ b/tests/component/updater_test.cpp @@ -51,6 +51,8 @@ #include "updater/install.h" #include "updater/updater.h" +using namespace std::string_literals; + using PackageEntries = std::unordered_map; static constexpr size_t kTransferListHeaderLines = 4; @@ -366,6 +368,27 @@ TEST_F(UpdaterTest, package_extract_file) { CloseArchive(handle); } +TEST_F(UpdaterTest, read_file) { + // read_file() expects one argument. + expect(nullptr, "read_file()", kArgsParsingFailure); + expect(nullptr, "read_file(\"arg1\", \"arg2\")", kArgsParsingFailure); + + // Write some value to file and read back. + TemporaryFile temp_file; + std::string script("write_value(\"foo\", \""s + temp_file.path + "\");"); + expect("t", script, kNoCause); + + script = "read_file(\""s + temp_file.path + "\") == \"foo\""; + expect("t", script, kNoCause); + + script = "read_file(\""s + temp_file.path + "\") == \"bar\""; + expect("", script, kNoCause); + + // It should fail gracefully when read fails. + script = "read_file(\"/doesntexist\")"; + expect("", script, kNoCause); +} + TEST_F(UpdaterTest, write_value) { // write_value() expects two arguments. expect(nullptr, "write_value()", kArgsParsingFailure); diff --git a/updater/install.cpp b/updater/install.cpp index 02a6fe7c..d0be955a 100644 --- a/updater/install.cpp +++ b/updater/install.cpp @@ -742,7 +742,7 @@ Value* RunProgramFn(const char* name, State* state, const std::vector>& argv) { if (argv.size() != 1) { return ErrorAbort(state, kArgsParsingFailure, "%s() expects 1 arg, got %zu", name, argv.size()); @@ -754,13 +754,13 @@ Value* ReadFileFn(const char* name, State* state, const std::vector