From d4ad25641bb8c98ee6cd5c6acac1a02006bba6e9 Mon Sep 17 00:00:00 2001 From: Pieter De Gendt Date: Wed, 17 Jul 2024 15:13:58 +0200 Subject: [PATCH] tests: Add alias testing Add simple test cases to verify alias' functionality. Signed-off-by: Pieter De Gendt --- tests/test_alias.py | 90 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 tests/test_alias.py diff --git a/tests/test_alias.py b/tests/test_alias.py new file mode 100644 index 0000000..6dba398 --- /dev/null +++ b/tests/test_alias.py @@ -0,0 +1,90 @@ +# Copyright (c) 2024, Basalte bv +# +# SPDX-License-Identifier: Apache-2.0 + +import os +import subprocess + +import pytest + +from conftest import cmd + +assert 'TOXTEMPDIR' in os.environ, "you must run these tests using tox" + +@pytest.fixture(autouse=True) +def autouse_tmpdir(config_tmpdir, west_init_tmpdir): + # Since this module tests west's configuration file features, + # adding autouse=True to the config_tmpdir and west_init_tmpdir fixtures + # saves typing and is less error-prone than using it below in every test case. + pass + +def test_alias_commands(): + cmd('config alias.test1 topdir') + cmd('config --global alias.test2 topdir') + cmd('config --system alias.test3 topdir') + + topdir_out = cmd('topdir') + + assert cmd('test1') == topdir_out + assert cmd('test2') == topdir_out + assert cmd('test3') == topdir_out + +def test_alias_help(): + cmd('config alias.test topdir') + + help_out = cmd('help test') + + assert "An alias that expands to: topdir" in help_out + assert cmd('-h test') == help_out + +def test_alias_recursive_commands(): + list_format = '{revision} TESTALIAS {name}' + cmd(['config', 'alias.test1', f'list -f "{list_format}"']) + cmd('config alias.test2 test1') + + assert cmd('test2') == cmd(['list', '-f', list_format]) + +def test_alias_infinite_recursion(): + cmd('config alias.test1 test2') + cmd('config alias.test2 test3') + cmd('config alias.test3 test1') + + with pytest.raises(subprocess.CalledProcessError) as excinfo: + cmd('test1', stderr=subprocess.STDOUT) + + assert 'unknown command "test1";' in str(excinfo.value.stdout) + +def test_alias_empty(): + cmd(['config', 'alias.empty', '']) + + # help command shouldn't fail + cmd('help') + + with pytest.raises(subprocess.CalledProcessError) as excinfo: + cmd('empty', stderr=subprocess.STDOUT) + + assert 'empty alias "empty"' in str(excinfo.value.stdout) + +def test_alias_early_args(): + cmd('config alias.test1 topdir') + + # An alias with an early command argument shouldn't fail + assert "Replacing alias test1 with ['topdir']" in cmd('-v test1') + +def test_alias_command_with_arguments(): + list_format = '{revision} TESTALIAS {name}' + cmd(['config', 'alias.revs', f'list -f "{list_format}"']) + + assert cmd('revs') == cmd(['list', '-f', list_format]) + +def test_alias_override(): + before = cmd('list') + list_format = '{name} : {revision}' + formatted = cmd(['list', '-f', list_format]) + + cmd(['config', 'alias.list', f'list -f "{list_format}"']) + + after = cmd('list') + + assert before != after + assert formatted == after