You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.8 KiB
96 lines
2.8 KiB
// Copyright 2014 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 <brillo/osrelease_reader.h>
|
|
|
|
#include <base/files/file_util.h>
|
|
#include <base/files/scoped_temp_dir.h>
|
|
#include <gtest/gtest.h>
|
|
|
|
using std::string;
|
|
|
|
namespace brillo {
|
|
|
|
class OsReleaseReaderTest : public ::testing::Test {
|
|
public:
|
|
void SetUp() override {
|
|
CHECK(temp_dir_.CreateUniqueTempDir());
|
|
osreleased_ = temp_dir_.GetPath().Append("etc").Append("os-release.d");
|
|
osrelease_ = temp_dir_.GetPath().Append("etc").Append("os-release");
|
|
base::CreateDirectory(osreleased_);
|
|
}
|
|
|
|
protected:
|
|
base::FilePath temp_file_, osrelease_, osreleased_;
|
|
base::ScopedTempDir temp_dir_;
|
|
OsReleaseReader store_; // reader under test.
|
|
};
|
|
|
|
TEST_F(OsReleaseReaderTest, MissingOsReleaseTest) {
|
|
store_.LoadTestingOnly(temp_dir_.GetPath());
|
|
}
|
|
|
|
TEST_F(OsReleaseReaderTest, MissingOsReleaseDTest) {
|
|
base::DeleteFile(osreleased_, true);
|
|
store_.LoadTestingOnly(temp_dir_.GetPath());
|
|
}
|
|
|
|
TEST_F(OsReleaseReaderTest, CompleteTest) {
|
|
string hello = "hello";
|
|
string ola = "ola";
|
|
string bob = "bob";
|
|
string osreleasecontent = "TEST_KEY=bonjour\nNAME=bob\n";
|
|
|
|
base::WriteFile(osreleased_.Append("TEST_KEY"), hello.data(), hello.size());
|
|
base::WriteFile(osreleased_.Append("GREETINGS"), ola.data(), ola.size());
|
|
base::WriteFile(osrelease_, osreleasecontent.data(), osreleasecontent.size());
|
|
|
|
store_.LoadTestingOnly(temp_dir_.GetPath());
|
|
|
|
string test_key_value;
|
|
ASSERT_TRUE(store_.GetString("TEST_KEY", &test_key_value));
|
|
|
|
string greetings_value;
|
|
ASSERT_TRUE(store_.GetString("GREETINGS", &greetings_value));
|
|
|
|
string name_value;
|
|
ASSERT_TRUE(store_.GetString("NAME", &name_value));
|
|
|
|
string nonexistent_value;
|
|
// Getting the string should fail if the key does not exist.
|
|
ASSERT_FALSE(store_.GetString("DOES_NOT_EXIST", &nonexistent_value));
|
|
|
|
// hello in chosen (from os-release.d) instead of bonjour from os-release.
|
|
ASSERT_EQ(hello, test_key_value);
|
|
|
|
// greetings is set to ola.
|
|
ASSERT_EQ(ola, greetings_value);
|
|
|
|
// Name from os-release is set.
|
|
ASSERT_EQ(bob, name_value);
|
|
}
|
|
|
|
TEST_F(OsReleaseReaderTest, NoNewLine) {
|
|
// New lines should be stripped from os-release.d files.
|
|
string hello = "hello\n";
|
|
string bonjour = "bonjour\ngarbage";
|
|
|
|
base::WriteFile(osreleased_.Append("HELLO"), hello.data(), hello.size());
|
|
base::WriteFile(
|
|
osreleased_.Append("BONJOUR"), bonjour.data(), bonjour.size());
|
|
|
|
store_.LoadTestingOnly(temp_dir_.GetPath());
|
|
|
|
string hello_value;
|
|
string bonjour_value;
|
|
|
|
ASSERT_TRUE(store_.GetString("HELLO", &hello_value));
|
|
ASSERT_TRUE(store_.GetString("BONJOUR", &bonjour_value));
|
|
|
|
ASSERT_EQ("hello", hello_value);
|
|
ASSERT_EQ("bonjour", bonjour_value);
|
|
}
|
|
|
|
} // namespace brillo
|