Merge "updater: Let read_file() return Value::Type::STRING."
This commit is contained in:
@@ -51,6 +51,8 @@
|
||||
#include "updater/install.h"
|
||||
#include "updater/updater.h"
|
||||
|
||||
using namespace std::string_literals;
|
||||
|
||||
using PackageEntries = std::unordered_map<std::string, std::string>;
|
||||
|
||||
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);
|
||||
|
||||
@@ -742,7 +742,7 @@ Value* RunProgramFn(const char* name, State* state, const std::vector<std::uniqu
|
||||
}
|
||||
|
||||
// read_file(filename)
|
||||
// Reads a local file 'filename' and returns its contents as a Value string.
|
||||
// Reads a local file 'filename' and returns its contents as a string Value.
|
||||
Value* ReadFileFn(const char* name, State* state, const std::vector<std::unique_ptr<Expr>>& 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<std::unique_
|
||||
}
|
||||
const std::string& filename = args[0];
|
||||
|
||||
FileContents fc;
|
||||
if (LoadFileContents(filename.c_str(), &fc) == 0) {
|
||||
return new Value(Value::Type::BLOB, std::string(fc.data.cbegin(), fc.data.cend()));
|
||||
std::string contents;
|
||||
if (android::base::ReadFileToString(filename, &contents)) {
|
||||
return new Value(Value::Type::STRING, std::move(contents));
|
||||
}
|
||||
|
||||
// Leave it to caller to handle the failure.
|
||||
LOG(ERROR) << name << ": Failed to read " << filename;
|
||||
PLOG(ERROR) << name << ": Failed to read " << filename;
|
||||
return StringValue("");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user