strictcli 0.12.0__tar.gz → 0.13.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- strictcli-0.13.0/.rlsbl/changes/.validated +1 -0
- strictcli-0.13.0/.rlsbl/changes/0.13.0.jsonl +3 -0
- strictcli-0.13.0/.rlsbl/releases/v0.13.0.toml +4 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/CHANGELOG.md +6 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/PKG-INFO +1 -1
- {strictcli-0.12.0 → strictcli-0.13.0}/package-lock.json +2 -2
- {strictcli-0.12.0 → strictcli-0.13.0}/package.json +1 -1
- {strictcli-0.12.0 → strictcli-0.13.0}/pyproject.toml +1 -1
- {strictcli-0.12.0 → strictcli-0.13.0}/strictcli/__init__.py +34 -4
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_check_schema.py +7 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_dump_schema.py +66 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/uv.lock +1 -1
- strictcli-0.12.0/.rlsbl/changes/.validated +0 -1
- {strictcli-0.12.0 → strictcli-0.13.0}/.claude/settings.json +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.github/workflows/ci.yml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.github/workflows/publish.yml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.gitignore +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/.claude/settings.json +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/.github/workflows/ci.yml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/.github/workflows/publish.yml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/.gitignore +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/.rlsbl/hooks/post-release.sh +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/.rlsbl/hooks/pre-checks.sh +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/.rlsbl/hooks/pre-release.sh +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/.rlsbl/lint/go.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/.rlsbl/lint/npm.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/.rlsbl/lint/python.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/CHANGELOG.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/CLAUDE.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/bases/LICENSE +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.10.0.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.10.0.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.11.0.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.11.0.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.12.0.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.12.0.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.4.0.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.4.0.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.4.1.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.4.1.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.5.0.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.5.0.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.6.0.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.6.0.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.6.1.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.6.1.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.7.0.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.7.0.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.7.1.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.7.1.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.0.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.0.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.1.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.1.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.2.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.2.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.3.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.3.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.4.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.4.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.5.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.5.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.6.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.6.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.7.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.8.7.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.9.0.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.9.0.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.9.1.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/0.9.1.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/changes/unreleased.jsonl +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/config.json +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/hashes.json +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/hooks/post-release.sh +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/hooks/pre-checks.sh +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/hooks/pre-release.sh +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/lint/go.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/lint/npm.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/lint/python.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/releases/unreleased.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/releases/v0.10.0.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/releases/v0.11.0.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/releases/v0.12.0.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/releases/v0.8.5.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/releases/v0.8.6.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/releases/v0.8.7.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/releases/v0.9.0.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/releases/v0.9.1.toml +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.rlsbl/version +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/.strictcli/schema.json +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/CLAUDE.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/LICENSE +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/README.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/index.js +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/postinstall.js +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_arg_default.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_at_prefix.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_auto_version.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_check_command.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_check_discovery.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_check_runner.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_check_types.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_choices.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_command_help_suggestion.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_config.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_config_file_path.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_deep_nesting.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_dependencies.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_deprecated.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_e2e.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_env.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_exit_codes.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_float_type.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_global_flags.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_help.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_int_type.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_mutex.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_nesting.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_parser.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_passthrough.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_registration.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_repeatable.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_tagdsl.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_tags.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_toml_loading.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_validate.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/tests/test_variadic.py +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/todo/.defer/deferred.md +0 -0
- {strictcli-0.12.0 → strictcli-0.13.0}/todo/.done/original-idea.md +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
052122abb24b7318d56b1c0d657fbaf740d6f5a5
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
{"commits":["12ad7c022938b07cf1f44b20bdbe9de0ae6a84be"],"user_facing":true,"description":"**New feature.** Schema dump (--dump-schema) now includes a project_id field read from pyproject.toml, providing provenance for schema validation.","type":"feature"}
|
|
2
|
+
{"commits":["a50cf7899c938974b12e8e74201bdf58c0205a55"],"user_facing":false}
|
|
3
|
+
{"commits":["214721745a82a47189a13b2443fb9ddc59826347"],"user_facing":false}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "strictcli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "strictcli",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.13.0",
|
|
10
10
|
"hasInstallScript": true,
|
|
11
11
|
"license": "MIT"
|
|
12
12
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
__version__ = "0.
|
|
5
|
+
__version__ = "0.13.0"
|
|
6
6
|
|
|
7
7
|
__all__ = [
|
|
8
8
|
"App", "Flag", "Arg", "Tag", "MutexGroup", "CoRequired", "Requires",
|
|
@@ -1460,7 +1460,11 @@ class App:
|
|
|
1460
1460
|
print(_format_version(self))
|
|
1461
1461
|
sys.exit(0)
|
|
1462
1462
|
except _DumpSchemaRequested:
|
|
1463
|
-
|
|
1463
|
+
try:
|
|
1464
|
+
path = _write_schema(self)
|
|
1465
|
+
except RuntimeError as e:
|
|
1466
|
+
print(f"error: {e}", file=sys.stderr)
|
|
1467
|
+
sys.exit(1)
|
|
1464
1468
|
print(path)
|
|
1465
1469
|
sys.exit(0)
|
|
1466
1470
|
except _ParseError as e:
|
|
@@ -1503,8 +1507,13 @@ class App:
|
|
|
1503
1507
|
except _VersionRequested:
|
|
1504
1508
|
stdout_buf.write(_format_version(self) + "\n")
|
|
1505
1509
|
except _DumpSchemaRequested:
|
|
1506
|
-
|
|
1507
|
-
|
|
1510
|
+
try:
|
|
1511
|
+
path = _write_schema(self)
|
|
1512
|
+
except RuntimeError as e:
|
|
1513
|
+
stderr_buf.write(f"error: {e}\n")
|
|
1514
|
+
exit_code = 1
|
|
1515
|
+
else:
|
|
1516
|
+
stdout_buf.write(path + "\n")
|
|
1508
1517
|
except _ParseError as e:
|
|
1509
1518
|
stderr_buf.write(f"error: {e}\n")
|
|
1510
1519
|
prefix = e.command_prefix or self.name
|
|
@@ -3087,14 +3096,35 @@ def _build_schema_defaults() -> dict:
|
|
|
3087
3096
|
}
|
|
3088
3097
|
|
|
3089
3098
|
|
|
3099
|
+
def _read_project_id() -> str:
|
|
3100
|
+
"""Read project name from pyproject.toml in the current working directory."""
|
|
3101
|
+
pyproject_path = Path(os.getcwd()) / "pyproject.toml"
|
|
3102
|
+
if not pyproject_path.exists():
|
|
3103
|
+
raise RuntimeError(
|
|
3104
|
+
"Cannot determine project_id: pyproject.toml not found "
|
|
3105
|
+
"or missing [project].name"
|
|
3106
|
+
)
|
|
3107
|
+
with open(pyproject_path, "rb") as f:
|
|
3108
|
+
data = tomllib.load(f)
|
|
3109
|
+
project_name = data.get("project", {}).get("name")
|
|
3110
|
+
if not project_name:
|
|
3111
|
+
raise RuntimeError(
|
|
3112
|
+
"Cannot determine project_id: pyproject.toml not found "
|
|
3113
|
+
"or missing [project].name"
|
|
3114
|
+
)
|
|
3115
|
+
return project_name
|
|
3116
|
+
|
|
3117
|
+
|
|
3090
3118
|
def _dump_schema(app: App) -> dict:
|
|
3091
3119
|
"""Produce a JSON-serializable dict representing the app's command tree.
|
|
3092
3120
|
|
|
3093
3121
|
Fields whose values match the schema defaults are omitted.
|
|
3094
3122
|
The top-level ``defaults`` key documents what each missing field means.
|
|
3095
3123
|
"""
|
|
3124
|
+
project_id = _read_project_id()
|
|
3096
3125
|
schema: dict = {
|
|
3097
3126
|
"defaults": _build_schema_defaults(),
|
|
3127
|
+
"project_id": project_id,
|
|
3098
3128
|
"name": app.name,
|
|
3099
3129
|
"version": app.version,
|
|
3100
3130
|
"help": app.help,
|
|
@@ -2,9 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
|
|
5
|
+
import pytest
|
|
5
6
|
import strictcli
|
|
6
7
|
|
|
7
8
|
|
|
9
|
+
@pytest.fixture(autouse=True)
|
|
10
|
+
def _pyproject_in_tmp(tmp_path):
|
|
11
|
+
"""Ensure every test that uses tmp_path has a pyproject.toml for project_id."""
|
|
12
|
+
(tmp_path / "pyproject.toml").write_text('[project]\nname = "testproject"\n')
|
|
13
|
+
|
|
14
|
+
|
|
8
15
|
CHECKS_TOML = """\
|
|
9
16
|
app = "testapp"
|
|
10
17
|
|
|
@@ -5,8 +5,17 @@ from __future__ import annotations
|
|
|
5
5
|
import json
|
|
6
6
|
import os
|
|
7
7
|
|
|
8
|
+
import pytest
|
|
8
9
|
import strictcli
|
|
9
10
|
|
|
11
|
+
_PYPROJECT_TOML = '[project]\nname = "testproject"\n'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.fixture(autouse=True)
|
|
15
|
+
def _pyproject_in_tmp(tmp_path):
|
|
16
|
+
"""Ensure every test that uses tmp_path has a pyproject.toml for project_id."""
|
|
17
|
+
(tmp_path / "pyproject.toml").write_text(_PYPROJECT_TOML)
|
|
18
|
+
|
|
10
19
|
|
|
11
20
|
def _make_app(**kwargs):
|
|
12
21
|
"""Create a minimal app for testing."""
|
|
@@ -662,3 +671,60 @@ class TestSchemaNonDefaultValues:
|
|
|
662
671
|
app.test(["--dump-schema"])
|
|
663
672
|
data = json.loads((tmp_path / ".strictcli" / "schema.json").read_text())
|
|
664
673
|
assert data["config"] is True
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
class TestSchemaProjectId:
|
|
677
|
+
"""Schema contains project_id from pyproject.toml."""
|
|
678
|
+
|
|
679
|
+
def test_project_id_present(self, tmp_path, monkeypatch):
|
|
680
|
+
monkeypatch.chdir(tmp_path)
|
|
681
|
+
app = _make_app()
|
|
682
|
+
|
|
683
|
+
@app.command("noop", help="Does nothing")
|
|
684
|
+
def noop():
|
|
685
|
+
pass
|
|
686
|
+
|
|
687
|
+
app.test(["--dump-schema"])
|
|
688
|
+
data = json.loads((tmp_path / ".strictcli" / "schema.json").read_text())
|
|
689
|
+
assert data["project_id"] == "testproject"
|
|
690
|
+
|
|
691
|
+
def test_project_id_custom_name(self, tmp_path, monkeypatch):
|
|
692
|
+
(tmp_path / "pyproject.toml").write_text(
|
|
693
|
+
'[project]\nname = "my-custom-tool"\n'
|
|
694
|
+
)
|
|
695
|
+
monkeypatch.chdir(tmp_path)
|
|
696
|
+
app = _make_app()
|
|
697
|
+
|
|
698
|
+
@app.command("noop", help="Does nothing")
|
|
699
|
+
def noop():
|
|
700
|
+
pass
|
|
701
|
+
|
|
702
|
+
app.test(["--dump-schema"])
|
|
703
|
+
data = json.loads((tmp_path / ".strictcli" / "schema.json").read_text())
|
|
704
|
+
assert data["project_id"] == "my-custom-tool"
|
|
705
|
+
|
|
706
|
+
def test_project_id_error_no_pyproject(self, tmp_path, monkeypatch):
|
|
707
|
+
os.remove(tmp_path / "pyproject.toml")
|
|
708
|
+
monkeypatch.chdir(tmp_path)
|
|
709
|
+
app = _make_app()
|
|
710
|
+
|
|
711
|
+
@app.command("noop", help="Does nothing")
|
|
712
|
+
def noop():
|
|
713
|
+
pass
|
|
714
|
+
|
|
715
|
+
result = app.test(["--dump-schema"])
|
|
716
|
+
assert result.exit_code != 0
|
|
717
|
+
assert "project_id" in result.stderr
|
|
718
|
+
|
|
719
|
+
def test_project_id_error_no_project_name(self, tmp_path, monkeypatch):
|
|
720
|
+
(tmp_path / "pyproject.toml").write_text("[tool.something]\nkey = 1\n")
|
|
721
|
+
monkeypatch.chdir(tmp_path)
|
|
722
|
+
app = _make_app()
|
|
723
|
+
|
|
724
|
+
@app.command("noop", help="Does nothing")
|
|
725
|
+
def noop():
|
|
726
|
+
pass
|
|
727
|
+
|
|
728
|
+
result = app.test(["--dump-schema"])
|
|
729
|
+
assert result.exit_code != 0
|
|
730
|
+
assert "project_id" in result.stderr
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
c161283293520cc94f39d9cfec589f6f4cf5a352
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|