updater: Remove some obsoleted functions for file-based OTA.
This CL removes the updater support for delete(), symlink(), rename(), set_metadata() and set_metadata_recursive(). Such functions have been removed from the generation script in commit f388104eaacd05cfa075d6478369e1d0df5ddbf3 (platform/build). Note: This CL also removes delete_recursive() which seems to have never been supported in generation script. Bug: 35853185 Test: recovery_component_test passes. Change-Id: I51e1ec946fa73761118fa1eaa082423df6d588e9
This commit is contained in:
@@ -161,119 +161,6 @@ TEST_F(UpdaterTest, file_getprop) {
|
||||
expect("", script6.c_str(), kNoCause);
|
||||
}
|
||||
|
||||
TEST_F(UpdaterTest, delete) {
|
||||
// Delete none.
|
||||
expect("0", "delete()", kNoCause);
|
||||
expect("0", "delete(\"/doesntexist\")", kNoCause);
|
||||
expect("0", "delete(\"/doesntexist1\", \"/doesntexist2\")", kNoCause);
|
||||
expect("0", "delete(\"/doesntexist1\", \"/doesntexist2\", \"/doesntexist3\")", kNoCause);
|
||||
|
||||
// Delete one file.
|
||||
TemporaryFile temp_file1;
|
||||
ASSERT_TRUE(android::base::WriteStringToFile("abc", temp_file1.path));
|
||||
std::string script1("delete(\"" + std::string(temp_file1.path) + "\")");
|
||||
expect("1", script1.c_str(), kNoCause);
|
||||
|
||||
// Delete two files.
|
||||
TemporaryFile temp_file2;
|
||||
ASSERT_TRUE(android::base::WriteStringToFile("abc", temp_file2.path));
|
||||
TemporaryFile temp_file3;
|
||||
ASSERT_TRUE(android::base::WriteStringToFile("abc", temp_file3.path));
|
||||
std::string script2("delete(\"" + std::string(temp_file2.path) + "\", \"" +
|
||||
std::string(temp_file3.path) + "\")");
|
||||
expect("2", script2.c_str(), kNoCause);
|
||||
|
||||
// Delete already deleted files.
|
||||
expect("0", script2.c_str(), kNoCause);
|
||||
|
||||
// Delete one out of three.
|
||||
TemporaryFile temp_file4;
|
||||
ASSERT_TRUE(android::base::WriteStringToFile("abc", temp_file4.path));
|
||||
std::string script3("delete(\"/doesntexist1\", \"" + std::string(temp_file4.path) +
|
||||
"\", \"/doesntexist2\")");
|
||||
expect("1", script3.c_str(), kNoCause);
|
||||
}
|
||||
|
||||
TEST_F(UpdaterTest, rename) {
|
||||
// rename() expects two arguments.
|
||||
expect(nullptr, "rename()", kArgsParsingFailure);
|
||||
expect(nullptr, "rename(\"arg1\")", kArgsParsingFailure);
|
||||
expect(nullptr, "rename(\"arg1\", \"arg2\", \"arg3\")", kArgsParsingFailure);
|
||||
|
||||
// src_name or dst_name cannot be empty.
|
||||
expect(nullptr, "rename(\"\", \"arg2\")", kArgsParsingFailure);
|
||||
expect(nullptr, "rename(\"arg1\", \"\")", kArgsParsingFailure);
|
||||
|
||||
// File doesn't exist (both of src and dst).
|
||||
expect(nullptr, "rename(\"/doesntexist\", \"/doesntexisteither\")" , kFileRenameFailure);
|
||||
|
||||
// Can't create parent directory.
|
||||
TemporaryFile temp_file1;
|
||||
ASSERT_TRUE(android::base::WriteStringToFile("abc", temp_file1.path));
|
||||
std::string script1("rename(\"" + std::string(temp_file1.path) + "\", \"/proc/0/file1\")");
|
||||
expect(nullptr, script1.c_str(), kFileRenameFailure);
|
||||
|
||||
// Rename.
|
||||
TemporaryFile temp_file2;
|
||||
std::string script2("rename(\"" + std::string(temp_file1.path) + "\", \"" +
|
||||
std::string(temp_file2.path) + "\")");
|
||||
expect(temp_file2.path, script2.c_str(), kNoCause);
|
||||
|
||||
// Already renamed.
|
||||
expect(temp_file2.path, script2.c_str(), kNoCause);
|
||||
|
||||
// Parents create successfully.
|
||||
TemporaryFile temp_file3;
|
||||
TemporaryDir td;
|
||||
std::string temp_dir(td.path);
|
||||
std::string dst_file = temp_dir + "/aaa/bbb/a.txt";
|
||||
std::string script3("rename(\"" + std::string(temp_file3.path) + "\", \"" + dst_file + "\")");
|
||||
expect(dst_file.c_str(), script3.c_str(), kNoCause);
|
||||
|
||||
// Clean up the temp files under td.
|
||||
ASSERT_EQ(0, unlink(dst_file.c_str()));
|
||||
ASSERT_EQ(0, rmdir((temp_dir + "/aaa/bbb").c_str()));
|
||||
ASSERT_EQ(0, rmdir((temp_dir + "/aaa").c_str()));
|
||||
}
|
||||
|
||||
TEST_F(UpdaterTest, symlink) {
|
||||
// symlink expects 1+ argument.
|
||||
expect(nullptr, "symlink()", kArgsParsingFailure);
|
||||
|
||||
// symlink should fail if src is an empty string.
|
||||
TemporaryFile temp_file1;
|
||||
std::string script1("symlink(\"" + std::string(temp_file1.path) + "\", \"\")");
|
||||
expect(nullptr, script1.c_str(), kSymlinkFailure);
|
||||
|
||||
std::string script2("symlink(\"" + std::string(temp_file1.path) + "\", \"src1\", \"\")");
|
||||
expect(nullptr, script2.c_str(), kSymlinkFailure);
|
||||
|
||||
// symlink failed to remove old src.
|
||||
std::string script3("symlink(\"" + std::string(temp_file1.path) + "\", \"/proc\")");
|
||||
expect(nullptr, script3.c_str(), kSymlinkFailure);
|
||||
|
||||
// symlink can create symlinks.
|
||||
TemporaryFile temp_file;
|
||||
std::string content = "magicvalue";
|
||||
ASSERT_TRUE(android::base::WriteStringToFile(content, temp_file.path));
|
||||
|
||||
TemporaryDir td;
|
||||
std::string src1 = std::string(td.path) + "/symlink1";
|
||||
std::string src2 = std::string(td.path) + "/symlink2";
|
||||
std::string script4("symlink(\"" + std::string(temp_file.path) + "\", \"" +
|
||||
src1 + "\", \"" + src2 + "\")");
|
||||
expect("t", script4.c_str(), kNoCause);
|
||||
|
||||
// Verify the created symlinks.
|
||||
struct stat sb;
|
||||
ASSERT_TRUE(lstat(src1.c_str(), &sb) == 0 && S_ISLNK(sb.st_mode));
|
||||
ASSERT_TRUE(lstat(src2.c_str(), &sb) == 0 && S_ISLNK(sb.st_mode));
|
||||
|
||||
// Clean up the leftovers.
|
||||
ASSERT_EQ(0, unlink(src1.c_str()));
|
||||
ASSERT_EQ(0, unlink(src2.c_str()));
|
||||
}
|
||||
|
||||
TEST_F(UpdaterTest, package_extract_dir) {
|
||||
// package_extract_dir expects 2 arguments.
|
||||
expect(nullptr, "package_extract_dir()", kArgsParsingFailure);
|
||||
|
||||
Reference in New Issue
Block a user