bcbd1bdb22
Integ / changes (push) Has been skipped
Pre-commit / pre-commit (push) Failing after 1s
CLI exit codes / changes (push) Has been skipped
Test (Install) / changes (push) Has been skipped
Test (Python) / changes (push) Has been skipped
Test (TypeScript) / changes (push) Has been skipped
CLI exit codes / cli-gate (push) Has been cancelled
Test (Install) / test-install-gate (push) Has been cancelled
Integ / integ-gate (push) Has been cancelled
Test (Python) / test-python-gate (push) Has been cancelled
Test (TypeScript) / test-typescript-gate (push) Has been cancelled
Test (Install) / python-minimal (3.12) (push) Has been cancelled
Test (Install) / python-minimal (3.11) (push) Has been cancelled
Test (Install) / python-extra (agno, mirage.agents.agno) (push) Has been cancelled
Test (Install) / python-extra (chroma, mirage.resource.chroma) (push) Has been cancelled
Test (Install) / python-extra (pdf, mirage.core.filetype.pdf) (push) Has been cancelled
Integ / integ (push) Has been cancelled
Integ / integ-database (push) Has been cancelled
Integ / integ-database-ts (push) Has been cancelled
Integ / integ-data (push) Has been cancelled
Integ / integ-ssh (push) Has been cancelled
Integ / integ-ssh-ts (push) Has been cancelled
Test (Python) / audit (push) Has been cancelled
Test (TypeScript) / test (push) Has been cancelled
Test (TypeScript) / python-fs-shim (push) Has been cancelled
CLI exit codes / Python CLI (push) Has been cancelled
CLI exit codes / TypeScript CLI (push) Has been cancelled
CLI exit codes / Cross-language snapshot interop (push) Has been cancelled
Test (Python) / test (push) Has been cancelled
Test (Python) / import-isolation (deepagents, openai, mirage.agents.openai_agents) (push) Has been cancelled
Test (Python) / import-isolation (deepagents, pydantic-ai, mirage.agents.pydantic_ai) (push) Has been cancelled
Integ / integ-ts (push) Has been cancelled
Integ / integ-fuse (push) Has been cancelled
Test (Install) / python-extra (databricks, mirage.resource.databricks_volume) (push) Has been cancelled
Test (Install) / python-extra (deepagents, mirage.agents.langchain) (push) Has been cancelled
Test (Install) / python-extra (email, mirage.resource.email) (push) Has been cancelled
Test (Install) / python-extra (fuse, mirage.fuse.mount) (push) Has been cancelled
Test (Install) / python-extra (hdf5, mirage.core.filetype.hdf5) (push) Has been cancelled
Test (Install) / python-extra (hf, mirage.resource.hf_buckets) (push) Has been cancelled
Test (Install) / python-extra (lancedb, mirage.resource.lancedb) (push) Has been cancelled
Test (Install) / python-extra (langfuse, mirage.resource.langfuse) (push) Has been cancelled
Test (Install) / python-extra (mongodb, mirage.resource.mongodb) (push) Has been cancelled
Test (Install) / python-extra (nextcloud, mirage.resource.nextcloud) (push) Has been cancelled
Test (Install) / python-extra (openai, mirage.agents.openai_agents) (push) Has been cancelled
Test (Install) / python-extra (openhands, mirage.agents.openhands, 3.12) (push) Has been cancelled
Test (Install) / python-extra (parquet, mirage.core.filetype.parquet) (push) Has been cancelled
Test (Install) / python-extra (postgres, mirage.resource.postgres) (push) Has been cancelled
Test (Install) / python-extra (pydantic-ai, mirage.agents.pydantic_ai) (push) Has been cancelled
Test (Install) / python-extra (qdrant, mirage.resource.qdrant) (push) Has been cancelled
Test (Install) / python-extra (redis, mirage.resource.redis) (push) Has been cancelled
Test (Install) / python-extra (s3, mirage.resource.s3) (push) Has been cancelled
Test (Install) / python-extra (ssh, mirage.resource.ssh) (push) Has been cancelled
Test (Install) / ts-minimal (push) Has been cancelled
61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
from mirage.commands.spec.usage import (extra_operand_error,
|
|
missing_value_error,
|
|
unknown_option_error, usage_exit_code)
|
|
|
|
|
|
def test_exit_codes_match_gnu():
|
|
assert usage_exit_code("cat") == 1
|
|
assert usage_exit_code("grep") == 2
|
|
assert usage_exit_code("ls") == 2
|
|
assert usage_exit_code("sort") == 2
|
|
assert usage_exit_code("tar") == 64
|
|
|
|
|
|
def test_unknown_long_option_reports_full_token():
|
|
msg, code = unknown_option_error("cat", "--bogus=x")
|
|
assert msg == (b"cat: unrecognized option '--bogus=x'\n"
|
|
b"Try 'cat --help' for more information.\n")
|
|
assert code == 1
|
|
|
|
|
|
def test_unknown_short_option_reports_char():
|
|
msg, code = unknown_option_error("grep", "Y")
|
|
assert msg == (b"grep: invalid option -- 'Y'\n"
|
|
b"Try 'grep --help' for more information.\n")
|
|
assert code == 2
|
|
|
|
|
|
def test_find_uses_predicate_wording():
|
|
msg, code = unknown_option_error("find", "--bogus")
|
|
assert msg == b"find: unknown predicate `--bogus'\n"
|
|
assert code == 1
|
|
|
|
|
|
def test_missing_value_short_and_long():
|
|
msg, code = missing_value_error("grep", "m")
|
|
assert msg.startswith(b"grep: option requires an argument -- 'm'\n")
|
|
assert code == 2
|
|
msg, code = missing_value_error("du", "--max-depth")
|
|
assert msg.startswith(b"du: option '--max-depth' requires an argument\n")
|
|
assert code == 1
|
|
|
|
|
|
def test_extra_operand_uses_gnu_wording_and_exit():
|
|
err = extra_operand_error("uniq", "c.txt")
|
|
assert str(err) == ("uniq: extra operand 'c.txt'\n"
|
|
"Try 'uniq --help' for more information.")
|
|
assert err.exit_code == 1
|
|
|
|
|
|
def test_extra_operand_diff_prefixes_hint_and_exits_2():
|
|
err = extra_operand_error("diff", "c.txt")
|
|
assert str(err) == ("diff: extra operand 'c.txt'\n"
|
|
"diff: Try 'diff --help' for more information.")
|
|
assert err.exit_code == 2
|
|
|
|
|
|
def test_extra_operand_mktemp_says_too_many_templates():
|
|
err = extra_operand_error("mktemp", "t2")
|
|
assert str(err).startswith("mktemp: too many templates\n")
|
|
assert err.exit_code == 1
|