tests: Add alias testing
Add simple test cases to verify alias' functionality. Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
This commit is contained in:
parent
9383d8216e
commit
d4ad25641b
|
@ -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
|
Loading…
Reference in New Issue