Skip to content

Commit

Permalink
Add {add,remove}:test with tests
Browse files Browse the repository at this point in the history
  • Loading branch information
thejohnfreeman committed Feb 24, 2024
1 parent 83d2604 commit 85ec7ca
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 1 deletion.
47 changes: 47 additions & 0 deletions src/cupcake/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -1235,6 +1235,53 @@ def remove_exe(self, source_dir_, name):

confee.write(metadata)

@cascade.command('add:test')
@cascade.argument('name', required=True)
def add_test(self, source_dir_, name):
"""Add a test."""
loader = jinja2.PackageLoader('cupcake', 'data/new')
jenv = jinja2.Environment(
loader=loader,
keep_trailing_newline=True,
trim_blocks=True,
lstrip_blocks=True,
)

tnames = ['tests/{{name}}.cpp']
self.generate_(jenv, source_dir_, tnames, name, context={})

metadata = confee.read(source_dir_ / 'cupcake.json')
confee.add(
metadata.tests,
{'name': name, 'links': ['${PROJECT_NAME}.imports.test'] },
)
confee.write(metadata)

@cascade.command('remove:test')
@cascade.argument('name', required=True)
def remove_test(self, source_dir_, name):
"""Remove a test."""
# Find the test in the metadata.
metadata = confee.read(source_dir_ / 'cupcake.json')
tests = confee.filter(metadata.tests[:], subject['name'] == name)
tests = list(tests)
# Exit if it is missing or ambiguous.
if len(tests) < 1:
raise SystemExit(f'unknown test name: {name}')
if len(tests) > 1:
raise SystemExit(f'ambiguous test name: {name}')
[proxy] = tests
confee.delete(proxy)

(source_dir_ / 'tests' / f'{name}.cpp').unlink(missing_ok=True)
(source_dir_ / 'tests' / f'{name}.c').unlink(missing_ok=True)
try:
shutil.rmtree(source_dir_ / 'tests' / f'{name}')
except FileNotFoundError:
pass

confee.write(metadata)

@cascade.command()
@cascade.argument('url', default='.')
def export(self, CONAN, url):
Expand Down
2 changes: 1 addition & 1 deletion tests/test_add.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def test_add_requirement(cwd, sh, version, reference, src, dst, command, group):
with pytest.raises(subprocess.CalledProcessError):
sh> sh.cupcake('remove', 'fmt')

@pytest.mark.parametrize('kind', ['lib', 'exe'])
@pytest.mark.parametrize('kind', ['lib', 'exe', 'test'])
def test_add_target(sh, version, kind):
sh> sh.cupcake('new', 'foo', '--version', version)
sh = sh @ 'foo'
Expand Down

0 comments on commit 85ec7ca

Please sign in to comment.