diff options
Diffstat (limited to 'util/test_kconfig_check.py')
-rw-r--r-- | util/test_kconfig_check.py | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/util/test_kconfig_check.py b/util/test_kconfig_check.py deleted file mode 100644 index 0426dc3e6f..0000000000 --- a/util/test_kconfig_check.py +++ /dev/null @@ -1,154 +0,0 @@ -# Copyright 2021 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 for Kconfig checker""" - -import contextlib -import io -import os -import re -import sys -import tempfile -import unittest - -import kconfig_check - -# Prefix that we strip from each Kconfig option, when considering whether it is -# equivalent to a CONFIG option with the same name -PREFIX = 'PLATFORM_EC_' - -@contextlib.contextmanager -def capture_sys_output(): - """Capture output for testing purposes - - Use this to suppress stdout/stderr output: - with capture_sys_output() as (stdout, stderr) - ...do something... - """ - capture_out, capture_err = io.StringIO(), io.StringIO() - old_out, old_err = sys.stdout, sys.stderr - try: - sys.stdout, sys.stderr = capture_out, capture_err - yield capture_out, capture_err - finally: - sys.stdout, sys.stderr = old_out, old_err - - -# Use unittest since it produced less verbose output than pytest and can be run -# directly from Python. You can still run this test with 'pytest' if you like. -class KconfigCheck(unittest.TestCase): - """Tests for the KconfigCheck class""" - def test_simple_check(self): - """Check it detected a new ad-hoc CONFIG""" - checker = kconfig_check.KconfigCheck() - self.assertEqual(['NEW_ONE'], checker.find_new_adhoc( - configs=['NEW_ONE', 'OLD_ONE', 'IN_KCONFIG'], - kconfigs=['IN_KCONFIG'], - allowed=['OLD_ONE'])) - - def test_sorted_check(self): - """Check it sorts the results in order""" - checker = kconfig_check.KconfigCheck() - self.assertSequenceEqual( - ['ANOTHER_NEW_ONE', 'NEW_ONE'], - checker.find_new_adhoc( - configs=['NEW_ONE', 'ANOTHER_NEW_ONE', 'OLD_ONE', 'IN_KCONFIG'], - kconfigs=['IN_KCONFIG'], - allowed=['OLD_ONE'])) - - def test_read_configs(self): - """Test KconfigCheck.read_configs()""" - checker = kconfig_check.KconfigCheck() - with tempfile.NamedTemporaryFile() as configs: - with open(configs.name, 'w') as out: - out.write("""CONFIG_OLD_ONE=y -NOT_A_CONFIG -CONFIG_STRING="something" -CONFIG_INT=123 -CONFIG_HEX=45ab -""") - self.assertEqual(['OLD_ONE', 'STRING', 'INT', 'HEX'], - checker.read_configs(configs.name)) - - @classmethod - def setup_srctree(cls, srctree): - """Set up some Kconfig files in a directory and subdirs - - Args: - srctree: Directory to write to - """ - with open(os.path.join(srctree, 'Kconfig'), 'w') as out: - out.write('config PLATFORM_EC_MY_KCONFIG\n') - subdir = os.path.join(srctree, 'subdir') - os.mkdir(subdir) - with open(os.path.join(subdir, 'Kconfig.wibble'), 'w') as out: - out.write('menuconfig PLATFORM_EC_MENU_KCONFIG\n') - - # Add a directory which should be ignored - bad_subdir = os.path.join(subdir, 'Kconfig') - os.mkdir(bad_subdir) - with open(os.path.join(bad_subdir, 'Kconfig.bad'), 'w') as out: - out.write('menuconfig PLATFORM_EC_BAD_KCONFIG') - - def test_find_kconfigs(self): - """Test KconfigCheck.find_kconfigs()""" - checker = kconfig_check.KconfigCheck() - with tempfile.TemporaryDirectory() as srctree: - self.setup_srctree(srctree) - files = checker.find_kconfigs(srctree) - fnames = [fname[len(srctree):] for fname in files] - self.assertEqual(['/Kconfig', '/subdir/Kconfig.wibble'], fnames) - - def test_scan_kconfigs(self): - """Test KconfigCheck.scan_configs()""" - checker = kconfig_check.KconfigCheck() - with tempfile.TemporaryDirectory() as srctree: - self.setup_srctree(srctree) - self.assertEqual(['MY_KCONFIG', 'MENU_KCONFIG'], - checker.scan_kconfigs(srctree, PREFIX)) - - @classmethod - def setup_allowed_and_configs(cls, allowed_fname, configs_fname): - """Set up the 'allowed' and 'configs' files for tests - - Args: - allowed_fname: Filename to write allowed CONFIGs to - configs_fname: Filename to which CONFIGs to check should be written - """ - with open(allowed_fname, 'w') as out: - out.write('CONFIG_OLD_ONE') - with open(configs_fname, 'w') as out: - out.write('\n'.join(['CONFIG_OLD_ONE', 'CONFIG_NEW_ONE', - 'CONFIG_MY_KCONFIG'])) - - def test_find_new_adhoc_configs(self): - """Test KconfigCheck.find_new_adhoc_configs()""" - checker = kconfig_check.KconfigCheck() - with tempfile.TemporaryDirectory() as srctree: - self.setup_srctree(srctree) - with tempfile.NamedTemporaryFile() as allowed: - with tempfile.NamedTemporaryFile() as configs: - self.setup_allowed_and_configs(allowed.name, configs.name) - result = checker.find_new_adhoc_configs( - configs.name, srctree, allowed.name, PREFIX) - self.assertEqual(['NEW_ONE'], result) - - def test_check(self): - """Test running the 'check' subcommand""" - with capture_sys_output() as (stdout, stderr): - with tempfile.TemporaryDirectory() as srctree: - self.setup_srctree(srctree) - with tempfile.NamedTemporaryFile() as allowed: - with tempfile.NamedTemporaryFile() as configs: - self.setup_allowed_and_configs(allowed.name, configs.name) - ret_code = kconfig_check.main( - ['-c', configs.name, '-s', srctree, - '-a', allowed.name, '-p', PREFIX, 'check']) - self.assertEqual(1, ret_code) - self.assertEqual('', stdout.getvalue()) - found = re.findall('(CONFIG_.*)', stderr.getvalue()) - self.assertEqual(['CONFIG_NEW_ONE'], found) - - -if __name__ == '__main__': - unittest.main() |