blob: 046b5bf9beefc55997524362e21d402448be4cd0 [file] [log] [blame]
# -*- coding: utf-8 -*-
# Copyright 2016 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.
"""Test cros_generate_os_release."""
from __future__ import print_function
import os
import sys
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
assert sys.version_info >= (3, 6), 'This module requires Python 3.6+'
class CrosGenerateOsReleaseTest(cros_test_lib.TempDirTestCase):
"""Tests GenerateOsRelease."""
def setUp(self):
# 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):
"""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):
"""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):
"""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):
"""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)