diff options
author | Tao Bao <tbao@google.com> | 2016-11-04 05:30:24 +0100 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2016-11-04 05:30:24 +0100 |
commit | da2b34b5d08839b7ef2eb08a70d27947ddaa46aa (patch) | |
tree | 404cdcad9fbc43878ffcb572d6b8da19f25c4898 /tests | |
parent | Merge "tests: Set up testdata path for continuous native tests." (diff) | |
parent | updater: Fix an off-by-1 bug in file_getprop(). (diff) | |
download | android_bootable_recovery-da2b34b5d08839b7ef2eb08a70d27947ddaa46aa.tar android_bootable_recovery-da2b34b5d08839b7ef2eb08a70d27947ddaa46aa.tar.gz android_bootable_recovery-da2b34b5d08839b7ef2eb08a70d27947ddaa46aa.tar.bz2 android_bootable_recovery-da2b34b5d08839b7ef2eb08a70d27947ddaa46aa.tar.lz android_bootable_recovery-da2b34b5d08839b7ef2eb08a70d27947ddaa46aa.tar.xz android_bootable_recovery-da2b34b5d08839b7ef2eb08a70d27947ddaa46aa.tar.zst android_bootable_recovery-da2b34b5d08839b7ef2eb08a70d27947ddaa46aa.zip |
Diffstat (limited to 'tests')
-rw-r--r-- | tests/component/updater_test.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/component/updater_test.cpp b/tests/component/updater_test.cpp index a859f11c1..bd1df558e 100644 --- a/tests/component/updater_test.cpp +++ b/tests/component/updater_test.cpp @@ -16,7 +16,9 @@ #include <string> +#include <android-base/file.h> #include <android-base/properties.h> +#include <android-base/test_utils.h> #include <gtest/gtest.h> #include "edify/expr.h" @@ -97,3 +99,51 @@ TEST_F(UpdaterTest, sha1_check) { // sha1_check() expects at least one argument. expect(nullptr, "sha1_check()", kArgsParsingFailure); } + +TEST_F(UpdaterTest, file_getprop) { + // file_getprop() expects two arguments. + expect(nullptr, "file_getprop()", kArgsParsingFailure); + expect(nullptr, "file_getprop(\"arg1\")", kArgsParsingFailure); + expect(nullptr, "file_getprop(\"arg1\", \"arg2\", \"arg3\")", kArgsParsingFailure); + + // File doesn't exist. + expect(nullptr, "file_getprop(\"/doesntexist\", \"key1\")", kFileGetPropFailure); + + // Reject too large files (current limit = 65536). + TemporaryFile temp_file1; + std::string buffer(65540, '\0'); + ASSERT_TRUE(android::base::WriteStringToFile(buffer, temp_file1.path)); + + // Read some keys. + TemporaryFile temp_file2; + std::string content("ro.product.name=tardis\n" + "# comment\n\n\n" + "ro.product.model\n" + "ro.product.board = magic \n"); + ASSERT_TRUE(android::base::WriteStringToFile(content, temp_file2.path)); + + std::string script1("file_getprop(\"" + std::string(temp_file2.path) + + "\", \"ro.product.name\")"); + expect("tardis", script1.c_str(), kNoCause); + + std::string script2("file_getprop(\"" + std::string(temp_file2.path) + + "\", \"ro.product.board\")"); + expect("magic", script2.c_str(), kNoCause); + + // No match. + std::string script3("file_getprop(\"" + std::string(temp_file2.path) + + "\", \"ro.product.wrong\")"); + expect("", script3.c_str(), kNoCause); + + std::string script4("file_getprop(\"" + std::string(temp_file2.path) + + "\", \"ro.product.name=\")"); + expect("", script4.c_str(), kNoCause); + + std::string script5("file_getprop(\"" + std::string(temp_file2.path) + + "\", \"ro.product.nam\")"); + expect("", script5.c_str(), kNoCause); + + std::string script6("file_getprop(\"" + std::string(temp_file2.path) + + "\", \"ro.product.model\")"); + expect("", script6.c_str(), kNoCause); +} |