Index: chrome/browser/file_select_helper_unittest.cc |
diff --git a/chrome/browser/file_select_helper_unittest.cc b/chrome/browser/file_select_helper_unittest.cc |
index 5eb0436957f75448ef797d6bd58d9ea11dfbcdee..9c5fbe917805de28927648907b7571f15fca8059 100644 |
--- a/chrome/browser/file_select_helper_unittest.cc |
+++ b/chrome/browser/file_select_helper_unittest.cc |
@@ -2,10 +2,36 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/command_line.h" |
+#include "base/files/file_path.h" |
+#include "base/files/file_util.h" |
+#include "base/files/scoped_temp_dir.h" |
+#include "base/macros.h" |
+#include "base/path_service.h" |
+#include "base/process/launch.h" |
#include "chrome/browser/file_select_helper.h" |
+#include "chrome/common/chrome_paths.h" |
#include "testing/gtest/include/gtest/gtest.h" |
-TEST(FileSelectHelperTest, IsAcceptTypeValid) { |
+class FileSelectHelperTest : public testing::Test { |
+ public: |
+ FileSelectHelperTest() {} |
+ |
+ protected: |
+ virtual void SetUp() override { |
+ ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &data_dir_)); |
+ data_dir_ = data_dir_.AppendASCII("file_select_helper"); |
+ ASSERT_TRUE(base::PathExists(data_dir_)); |
+ } |
+ |
+ // The path to input data used in tests. |
+ base::FilePath data_dir_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(FileSelectHelperTest); |
+}; |
+ |
+TEST_F(FileSelectHelperTest, IsAcceptTypeValid) { |
EXPECT_TRUE(FileSelectHelper::IsAcceptTypeValid("a/b")); |
EXPECT_TRUE(FileSelectHelper::IsAcceptTypeValid("abc/def")); |
EXPECT_TRUE(FileSelectHelper::IsAcceptTypeValid("abc/*")); |
@@ -17,3 +43,38 @@ TEST(FileSelectHelperTest, IsAcceptTypeValid) { |
EXPECT_FALSE(FileSelectHelper::IsAcceptTypeValid("ABC/*")); |
EXPECT_FALSE(FileSelectHelper::IsAcceptTypeValid("abc/def ")); |
} |
+ |
+#if defined(OS_MACOSX) && !defined(OS_IOS) |
+TEST_F(FileSelectHelperTest, ZipPackage) { |
+ // Zip the package. |
+ const char app_name[] = "CalculatorFake.app"; |
+ base::FilePath src = data_dir_.Append(app_name); |
+ base::FilePath dest = FileSelectHelper::ZipPackage(src); |
+ ASSERT_FALSE(dest.empty()); |
+ ASSERT_TRUE(base::PathExists(dest)); |
+ |
+ base::ScopedTempDir temp_dir; |
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
+ |
+ // Unzip the package into a temporary directory. |
+ CommandLine cl(base::FilePath("/usr/bin/unzip")); |
+ cl.AppendArg(dest.value().c_str()); |
+ cl.AppendArg("-d"); |
+ cl.AppendArg(temp_dir.path().value().c_str()); |
+ std::string output; |
+ EXPECT_TRUE(base::GetAppOutput(cl, &output)); |
+ |
+ // Verify that several key files haven't changed. |
+ const char* files_to_verify[] = {"Contents/Info.plist", |
+ "Contents/MacOS/Calculator", |
+ "Contents/_CodeSignature/CodeResources"}; |
+ size_t file_count = arraysize(files_to_verify); |
+ for (size_t i = 0; i < file_count; i++) { |
+ const char* relative_path = files_to_verify[i]; |
+ base::FilePath orig_file = src.Append(relative_path); |
+ base::FilePath final_file = |
+ temp_dir.path().Append(app_name).Append(relative_path); |
+ EXPECT_TRUE(base::ContentsEqual(orig_file, final_file)); |
+ } |
+} |
+#endif // defined(OS_MACOSX) && !defined(OS_IOS) |