Skip to content

Commit

Permalink
tests: Add alias testing
Browse files Browse the repository at this point in the history
Add simple test cases to verify alias' functionality.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
  • Loading branch information
pdgendt authored and marc-hb committed Sep 6, 2024
1 parent 9383d82 commit d4ad256
Showing 1 changed file with 90 additions and 0 deletions.
90 changes: 90 additions & 0 deletions tests/test_alias.py
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit d4ad256

Please sign in to comment.