22 lines
992 B
Python
22 lines
992 B
Python
from typer.testing import CliRunner
|
|
from spriteforge.cli import app
|
|
|
|
runner=CliRunner()
|
|
|
|
def test_validate_and_dry_run(tmp_path):
|
|
path=tmp_path/"assets.yaml"
|
|
path.write_text("floor:\n backend: procedural\n generator: floor\n tags: [environment]\n")
|
|
result=runner.invoke(app,["validate",str(path)])
|
|
assert result.exit_code==0 and "1 asset(s)" in result.stdout
|
|
result=runner.invoke(app,["build",str(path),"--tag","environment","--jobs","3","--dry-run"])
|
|
assert result.exit_code==0 and "floor\tprocedural" in result.stdout and "jobs=3" in result.stdout
|
|
|
|
def test_cli_reports_line(tmp_path):
|
|
path=tmp_path/"bad.yaml";path.write_text("Bad-ID:\n backend: import\n source: x.png\n")
|
|
result=runner.invoke(app,["validate",str(path)])
|
|
assert result.exit_code==1 and ":1:1:" in result.stderr
|
|
|
|
def test_missing_catalog_is_explicit():
|
|
result=runner.invoke(app,["stats","--build-dir","missing"])
|
|
assert result.exit_code==1 and "index.json" in result.stderr
|