blob: c46c40ce7173159e10feb269902897a355bfd6e4 [file] [log] [blame]
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -07001# Copyright 2016 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Test cros_generate_os_release."""
6
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -07007import os
8
9from chromite.lib import cros_build_lib
10from chromite.lib import cros_test_lib
11from chromite.lib import osutils
Mike Frysinger03b983f2020-02-21 02:31:49 -050012from chromite.scripts import cros_generate_os_release
13
14
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070015class CrosGenerateOsReleaseTest(cros_test_lib.TempDirTestCase):
Alex Klein1699fab2022-09-08 08:46:06 -060016 """Tests GenerateOsRelease."""
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070017
Alex Klein1699fab2022-09-08 08:46:06 -060018 def setUp(self):
19 # Use a fresh tempdir as the root for each test case.
20 self.osrelease = os.path.join(self.tempdir, "etc", "os-release")
21 self.osreleased = os.path.join(self.tempdir, "etc", "os-release.d")
22 osutils.SafeMakedirs(self.osreleased)
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070023
Alex Klein1699fab2022-09-08 08:46:06 -060024 def testOnlyOsRelease(self):
25 """Tests the script without /etc/os-release."""
26 osutils.WriteFile(os.path.join(self.osreleased, "TEST"), "hello")
27 cros_generate_os_release.GenerateOsRelease(self.tempdir)
28 self.assertEqual("TEST=hello\n", osutils.ReadFile(self.osrelease))
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070029
Alex Klein1699fab2022-09-08 08:46:06 -060030 def testOnlyOsReleaseD(self):
31 """Tests the script without /etc/os-release.d."""
32 osutils.RmDir(self.osreleased)
33 osutils.WriteFile(self.osrelease, "TEST=bonjour\n")
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070034
Alex Klein1699fab2022-09-08 08:46:06 -060035 cros_generate_os_release.GenerateOsRelease(self.tempdir)
36 self.assertEqual("TEST=bonjour\n", osutils.ReadFile(self.osrelease))
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070037
Alex Klein1699fab2022-09-08 08:46:06 -060038 def testFailOnDuplicate(self):
39 """Tests with a field set both in os-release and os-release.d/."""
40 osutils.WriteFile(os.path.join(self.osreleased, "TEST"), "hello")
41 osutils.WriteFile(self.osrelease, "TEST=bonjour")
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070042
Alex Klein1699fab2022-09-08 08:46:06 -060043 self.assertRaises(
44 cros_build_lib.DieSystemExit,
45 cros_generate_os_release.GenerateOsRelease,
46 self.tempdir,
47 )
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070048
Alex Klein1699fab2022-09-08 08:46:06 -060049 def testNormal(self):
50 """Normal scenario: both os-release and os-release.d are present."""
51 osutils.WriteFile(os.path.join(self.osreleased, "TEST1"), "hello")
52 osutils.WriteFile(self.osrelease, "TEST2=bonjour")
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070053
Alex Klein1699fab2022-09-08 08:46:06 -060054 default_params = {"TEST1": "hello2", "TEST3": "hola"}
Andrey Ulanov2568e172016-05-04 17:25:52 -070055
Alex Klein1699fab2022-09-08 08:46:06 -060056 cros_generate_os_release.GenerateOsRelease(
57 self.tempdir, default_params=default_params
58 )
59 output = osutils.ReadFile(self.osrelease).splitlines()
60 output.sort()
61 self.assertEqual(["TEST1=hello", "TEST2=bonjour", "TEST3=hola"], output)
Daniel Campelloe7593042021-05-18 18:26:49 +000062
Alex Klein1699fab2022-09-08 08:46:06 -060063 def testDefaultsOnly(self):
64 """Make sure we always emit defaults even without any os-release.d frags."""
65 osutils.RmDir(self.osreleased)
66 cros_generate_os_release.GenerateOsRelease(self.tempdir, {"FOO": "bar"})
67 self.assertExists(self.osrelease)
68 self.assertEqual("FOO=bar\n", osutils.ReadFile(self.osrelease))