| // Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "installer/chromeos_install_config.h" |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <unistd.h> |
| |
| #include <gtest/gtest.h> |
| |
| #include "installer/chromeos_postinst.h" |
| #include "installer/inst_util.h" |
| |
| using std::string; |
| |
| void TestConfigureInstall(const string& install_dev, |
| const string& install_path, |
| bool expected_success, |
| const string& expected_slot, |
| const string& expected_root, |
| const string& expected_kernel, |
| const string& expected_boot) { |
| InstallConfig install_config; |
| |
| BiosType expected_bios = kBiosTypeSecure; |
| |
| EXPECT_EQ(ConfigureInstall(install_dev, |
| install_path, |
| expected_bios, |
| &install_config), |
| expected_success); |
| |
| if (!expected_success) |
| return; |
| |
| EXPECT_EQ(install_config.slot, expected_slot); |
| EXPECT_EQ(install_config.root.device(), expected_root); |
| EXPECT_EQ(install_config.kernel.device(), expected_kernel); |
| EXPECT_EQ(install_config.boot.device(), expected_boot); |
| EXPECT_EQ(install_config.bios_type, expected_bios); |
| } |
| |
| void TestStrToBiosType(string name, |
| bool expected_success, |
| BiosType expected_result) { |
| BiosType bios_type = kBiosTypeUnknown; |
| |
| EXPECT_EQ(StrToBiosType(name, &bios_type), |
| expected_success); |
| |
| if (!expected_success) |
| return; |
| |
| EXPECT_EQ(bios_type, expected_result); |
| } |
| |
| void TestKernelConfigToBiosType(string kernel_config, |
| bool expected_success, |
| BiosType expected_result) { |
| BiosType bios_type = kBiosTypeUnknown; |
| |
| EXPECT_EQ(KernelConfigToBiosType(kernel_config, &bios_type), |
| expected_success); |
| |
| if (!expected_success) |
| return; |
| |
| EXPECT_EQ(bios_type, expected_result); |
| } |
| |
| class InstallConfigTest : public ::testing::Test { }; |
| |
| TEST(InstallConfigTest, ConfigureInstallTest) { |
| TestConfigureInstall("/dev/sda3", "/mnt", |
| true, |
| "A", "/dev/sda3", "/dev/sda2", "/dev/sda12"); |
| TestConfigureInstall("/dev/sda5", "/mnt", |
| true, |
| "B", "/dev/sda5", "/dev/sda4", "/dev/sda12"); |
| TestConfigureInstall("/dev/mmcblk0p3", "/mnt", |
| true, "A", |
| "/dev/mmcblk0p3", "/dev/mmcblk0p2", "/dev/mmcblk0p12"); |
| TestConfigureInstall("/dev/mmcblk0p5", "/mnt", |
| true, "B", |
| "/dev/mmcblk0p5", "/dev/mmcblk0p4", "/dev/mmcblk0p12"); |
| TestConfigureInstall("/dev/sda2", "/mnt", |
| false, "", "", "", ""); |
| TestConfigureInstall("/dev/sda", "/mnt", |
| false, "", "", "", ""); |
| } |
| |
| TEST(InstallConfigTest, StrToBiosTypeTest) { |
| TestStrToBiosType("secure", true, kBiosTypeSecure); |
| TestStrToBiosType("uboot", true, kBiosTypeUBoot); |
| TestStrToBiosType("legacy", true, kBiosTypeLegacy); |
| TestStrToBiosType("efi", true, kBiosTypeEFI); |
| TestStrToBiosType("fuzzy", false, kBiosTypeUnknown); |
| } |
| |
| TEST(InstallConfigTest, KernelConfigToBiosTypeTest) { |
| BiosType legacy_bios = kBiosTypeLegacy; |
| #ifdef __arm__ |
| legacy_bios = kBiosTypeUBoot; |
| #endif |
| |
| TestKernelConfigToBiosType("kernel_config cros_secure", |
| true, kBiosTypeSecure); |
| TestKernelConfigToBiosType("cros_legacy kernel_config", |
| true, legacy_bios); |
| TestKernelConfigToBiosType("kernel_config cros_efi foo", |
| true, kBiosTypeEFI); |
| TestKernelConfigToBiosType("kernel_config", |
| false, kBiosTypeUnknown); |
| } |