1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/command_line.h" 6 #include "base/file_util.h" 7 #include "base/files/file_path.h" 8 #include "base/files/scoped_temp_dir.h" 9 #include "base/message_loop/message_loop.h" 10 #include "base/path_service.h" 11 #include "chrome/browser/extensions/startup_helper.h" 12 #include "chrome/common/chrome_paths.h" 13 #include "chrome/common/chrome_switches.h" 14 #include "content/public/test/test_browser_thread.h" 15 #include "testing/gtest/include/gtest/gtest.h" 16 17 namespace extensions { 18 19 // Tests the environment for packing extensions from the command line 20 // when using the --pack-extension switch. 21 class PackExtensionTest : public testing::Test { 22 public: 23 PackExtensionTest() 24 : ui_thread_(content::BrowserThread::UI, &message_loop_), 25 file_thread_(content::BrowserThread::FILE, &message_loop_) { 26 PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir_); 27 test_data_dir_ = test_data_dir_.AppendASCII("extensions"); 28 } 29 30 protected: 31 bool TestPackExtension(const base::FilePath& path) { 32 base::ScopedTempDir temp_dir; 33 EXPECT_TRUE(temp_dir.CreateUniqueTempDir()); 34 EXPECT_TRUE(base::CopyDirectory(path, temp_dir.path(), true)); 35 CommandLine command_line(CommandLine::NO_PROGRAM); 36 command_line.AppendSwitchPath(switches::kPackExtension, 37 temp_dir.path().Append(path.BaseName())); 38 return startup_helper_.PackExtension(command_line); 39 } 40 41 base::MessageLoop message_loop_; 42 content::TestBrowserThread ui_thread_; 43 content::TestBrowserThread file_thread_; 44 45 base::FilePath test_data_dir_; 46 StartupHelper startup_helper_; 47 }; 48 49 TEST_F(PackExtensionTest, Extension) { 50 ASSERT_TRUE(TestPackExtension(test_data_dir_.AppendASCII("api_test") 51 .AppendASCII("tabs") 52 .AppendASCII("basics"))); 53 } 54 55 TEST_F(PackExtensionTest, PackagedApp) { 56 ASSERT_TRUE(TestPackExtension(test_data_dir_.AppendASCII("packaged_app"))); 57 } 58 59 TEST_F(PackExtensionTest, PlatformApp) { 60 ASSERT_TRUE(TestPackExtension(test_data_dir_.AppendASCII("platform_apps") 61 .AppendASCII("minimal"))); 62 } 63 64 } // namespace extensions 65