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/files/file_path.h" 7#include "base/files/file_util.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 17namespace extensions { 18 19// Tests the environment for packing extensions from the command line 20// when using the --pack-extension switch. 21class 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 49TEST_F(PackExtensionTest, Extension) { 50 ASSERT_TRUE(TestPackExtension(test_data_dir_.AppendASCII("api_test") 51 .AppendASCII("tabs") 52 .AppendASCII("basics"))); 53} 54 55TEST_F(PackExtensionTest, PackagedApp) { 56 ASSERT_TRUE(TestPackExtension(test_data_dir_.AppendASCII("packaged_app"))); 57} 58 59TEST_F(PackExtensionTest, PlatformApp) { 60 ASSERT_TRUE(TestPackExtension(test_data_dir_.AppendASCII("platform_apps") 61 .AppendASCII("minimal"))); 62} 63 64} // namespace extensions 65