blob: d419ecb4ea71acc5be50130d1f38462ffee304cf [file] [log] [blame]
Mike Frysingere58c0e22017-10-04 15:43:30 -04001# -*- coding: utf-8 -*-
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -07002# Copyright 2016 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""Test cros_generate_os_release."""
7
8from __future__ import print_function
9
10import os
11
12from chromite.lib import cros_build_lib
13from chromite.lib import cros_test_lib
14from chromite.lib import osutils
15import cros_generate_os_release
16
17
18class CrosGenerateOsReleaseTest(cros_test_lib.TempDirTestCase):
19 """Tests GenerateOsRelease."""
20
21 def setUp(self):
22 # Use a fresh tempdir as the root for each test case.
Mike Frysinger80de5012019-08-01 14:10:53 -040023 self.osrelease = os.path.join(self.tempdir, 'etc', 'os-release')
24 self.osreleased = os.path.join(self.tempdir, 'etc', 'os-release.d')
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070025 osutils.SafeMakedirs(self.osreleased)
26
27 def testOnlyOsRelease(self):
28 """Tests the script without /etc/os-release."""
Mike Frysinger80de5012019-08-01 14:10:53 -040029 osutils.WriteFile(os.path.join(self.osreleased, 'TEST'), 'hello')
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070030 cros_generate_os_release.GenerateOsRelease(self.tempdir)
Mike Frysinger2d589a12019-08-25 14:15:12 -040031 self.assertEqual('TEST=hello\n', osutils.ReadFile(self.osrelease))
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070032
33 def testOnlyOsReleaseD(self):
34 """Tests the script without /etc/os-release.d."""
35 osutils.RmDir(self.osreleased)
Mike Frysinger80de5012019-08-01 14:10:53 -040036 osutils.WriteFile(self.osrelease, 'TEST=bonjour\n')
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070037
38 cros_generate_os_release.GenerateOsRelease(self.tempdir)
Mike Frysinger2d589a12019-08-25 14:15:12 -040039 self.assertEqual('TEST=bonjour\n', osutils.ReadFile(self.osrelease))
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070040
41 def testFailOnDuplicate(self):
42 """Tests with a field set both in os-release and os-release.d/."""
Mike Frysinger80de5012019-08-01 14:10:53 -040043 osutils.WriteFile(os.path.join(self.osreleased, 'TEST'), 'hello')
44 osutils.WriteFile(self.osrelease, 'TEST=bonjour')
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070045
46 self.assertRaises(cros_build_lib.DieSystemExit,
47 cros_generate_os_release.GenerateOsRelease, self.tempdir)
48
49 def testNormal(self):
50 """Normal scenario: both os-release and os-release.d are present."""
Mike Frysinger80de5012019-08-01 14:10:53 -040051 osutils.WriteFile(os.path.join(self.osreleased, 'TEST1'), 'hello')
52 osutils.WriteFile(self.osrelease, 'TEST2=bonjour')
Bertrand SIMONNET83ee6ce2014-10-06 14:20:10 -070053
Mike Frysinger80de5012019-08-01 14:10:53 -040054 default_params = {'TEST1': 'hello2',
55 'TEST3': 'hola'}
Andrey Ulanov2568e172016-05-04 17:25:52 -070056
57 cros_generate_os_release.GenerateOsRelease(self.tempdir,
58 default_params=default_params)
59 output = osutils.ReadFile(self.osrelease).splitlines()
60 output.sort()
Mike Frysinger2d589a12019-08-25 14:15:12 -040061 self.assertEqual(['TEST1=hello',
62 'TEST2=bonjour',
63 'TEST3=hola'],
64 output)