blob: 74114619f45da44285e504d1f72e731624cfded7 [file] [log] [blame]
# Copyright 2016 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Test cros_generate_os_release."""
import os
from chromite.lib import cros_build_lib
from chromite.lib import cros_test_lib
from chromite.lib import osutils
from chromite.scripts import cros_generate_os_release
class CrosGenerateOsReleaseTest(cros_test_lib.TempDirTestCase):
"""Tests GenerateOsRelease."""
def setUp(self) -> None:
# Use a fresh tempdir as the root for each test case.
self.osrelease = os.path.join(self.tempdir, "etc", "os-release")
self.osreleased = os.path.join(self.tempdir, "etc", "os-release.d")
osutils.SafeMakedirs(self.osreleased)
def testOnlyOsRelease(self) -> None:
"""Tests the script without /etc/os-release."""
osutils.WriteFile(os.path.join(self.osreleased, "TEST"), "hello")
cros_generate_os_release.GenerateOsRelease(self.tempdir)
self.assertEqual("TEST=hello\n", osutils.ReadFile(self.osrelease))
def testOnlyOsReleaseD(self) -> None:
"""Tests the script without /etc/os-release.d."""
osutils.RmDir(self.osreleased)
osutils.WriteFile(self.osrelease, "TEST=bonjour\n")
cros_generate_os_release.GenerateOsRelease(self.tempdir)
self.assertEqual("TEST=bonjour\n", osutils.ReadFile(self.osrelease))
def testFailOnDuplicate(self) -> None:
"""Tests with a field set both in os-release and os-release.d/."""
osutils.WriteFile(os.path.join(self.osreleased, "TEST"), "hello")
osutils.WriteFile(self.osrelease, "TEST=bonjour")
self.assertRaises(
cros_build_lib.DieSystemExit,
cros_generate_os_release.GenerateOsRelease,
self.tempdir,
)
def testNormal(self) -> None:
"""Normal scenario: both os-release and os-release.d are present."""
osutils.WriteFile(os.path.join(self.osreleased, "TEST1"), "hello")
osutils.WriteFile(self.osrelease, "TEST2=bonjour")
default_params = {"TEST1": "hello2", "TEST3": "hola"}
cros_generate_os_release.GenerateOsRelease(
self.tempdir, default_params=default_params
)
output = osutils.ReadFile(self.osrelease).splitlines()
output.sort()
self.assertEqual(["TEST1=hello", "TEST2=bonjour", "TEST3=hola"], output)
def testDefaultsOnly(self) -> None:
"""Test we always emit defaults even without any os-release.d frags."""
osutils.RmDir(self.osreleased)
cros_generate_os_release.GenerateOsRelease(self.tempdir, {"FOO": "bar"})
self.assertExists(self.osrelease)
self.assertEqual("FOO=bar\n", osutils.ReadFile(self.osrelease))