chromium/chrome/installer/test/upgrade_test.cc

// Copyright 2011 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Boilerplate for an upgrade scenario test.  The mini_installer.exe residing in
// the same directory as the host executable is re-versioned.

#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/path_service.h"
#include "chrome/installer/test/alternate_version_generator.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace {
const wchar_t kMiniInstallerExe[] = L"mini_installer.exe";
}  // namespace

// Boilerplate for a future upgrade scenario test.
class UpgradeTest : public testing::Test {
 public:
  // Generate a newer version of mini_installer.exe.
  static void SetUpTestCase() {
    base::FilePath dir_exe;
    ASSERT_TRUE(base::PathService::Get(base::DIR_EXE, &dir_exe));
    ASSERT_TRUE(base::CreateTemporaryFile(&next_mini_installer_path_));
    ASSERT_TRUE(upgrade_test::GenerateAlternateVersion(
        dir_exe.Append(&kMiniInstallerExe[0]), next_mini_installer_path_,
        upgrade_test::NEXT_VERSION, nullptr, nullptr));
  }

  // Clean up by deleting the created newer version of mini_installer.exe.
  static void TearDownTestCase() {
    EXPECT_TRUE(base::DeleteFile(next_mini_installer_path_));
  }

 private:
  static base::FilePath next_mini_installer_path_;
};  // class UpgradeTest

base::FilePath UpgradeTest::next_mini_installer_path_;

TEST_F(UpgradeTest, DoNothing) {}