diff options
Diffstat (limited to 'brillo/osrelease_reader_unittest.cc')
-rw-r--r-- | brillo/osrelease_reader_unittest.cc | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/brillo/osrelease_reader_unittest.cc b/brillo/osrelease_reader_unittest.cc new file mode 100644 index 0000000..88185a0 --- /dev/null +++ b/brillo/osrelease_reader_unittest.cc @@ -0,0 +1,95 @@ +// 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_.path().Append("etc").Append("os-release.d"); + osrelease_ = temp_dir_.path().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_.path()); +} + +TEST_F(OsReleaseReaderTest, MissingOsReleaseDTest) { + base::DeleteFile(osreleased_, true); + store_.LoadTestingOnly(temp_dir_.path()); +} + +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_.path()); + + 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_.path()); + + 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 |