minitest-cli 0.4.2__tar.gz → 0.4.4__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.
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/PKG-INFO +1 -1
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/pyproject.toml +1 -1
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/build.py +1 -1
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/utils/update_check.py +33 -2
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/uv.lock +1 -1
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/.env.example +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/.github/workflows/ci.yml +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/.github/workflows/release.yml +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/.gitignore +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/.opencode/skill/release/SKILL.md +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/AGENTS.md +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/README.md +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/RELEASE.md +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/pyrightconfig.json +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/__init__.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/api/__init__.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/api/client.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/assets/__init__.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/assets/callback.html +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/__init__.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/apps.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/auth.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/build_helpers.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/flow.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/flow_helpers.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/flow_modify.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/run.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/run_display.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/run_helpers.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/skill.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/__init__.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/app_context.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/auth.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/config.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/credentials.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/oauth.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/token_exchange.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/main.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/models/__init__.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/models/app.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/models/base.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/models/build.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/models/flow_run.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/models/flow_template.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/utils/__init__.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/utils/output.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/__init__.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_apps_commands.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_auth.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_auth_commands.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_build_commands.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_code_quality.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_flow_commands.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_run_commands.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_skill_command.py +0 -0
- {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: minitest-cli
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Summary: Minitest CLI – command-line interface for the Minitest testing platform
|
|
5
5
|
Project-URL: Homepage, https://minitap.ai/
|
|
6
6
|
Project-URL: Source, https://github.com/minitap-ai/minitest-cli
|
|
@@ -45,7 +45,7 @@ def upload(
|
|
|
45
45
|
typer.Option(help="Target platform. Auto-detected from file extension."),
|
|
46
46
|
] = None,
|
|
47
47
|
) -> None:
|
|
48
|
-
"""Upload a
|
|
48
|
+
"""Upload a build file (.apk for Android, .ipa for iOS)."""
|
|
49
49
|
settings, app_id, json_mode = resolve_app()
|
|
50
50
|
resolved_platform = platform.value if platform else detect_platform(file)
|
|
51
51
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"""PyPI version check – cached for 24 hours, non-blocking, max 2s timeout."""
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
|
+
import shutil
|
|
5
|
+
import sys
|
|
4
6
|
import time
|
|
5
7
|
from pathlib import Path
|
|
6
8
|
|
|
@@ -45,6 +47,34 @@ def _write_cache(settings: Settings, latest_version: str) -> None:
|
|
|
45
47
|
pass
|
|
46
48
|
|
|
47
49
|
|
|
50
|
+
def _is_brew_install() -> bool:
|
|
51
|
+
"""Detect if the running minitest binary was installed via Homebrew."""
|
|
52
|
+
exe = shutil.which("minitest")
|
|
53
|
+
if exe is None:
|
|
54
|
+
exe = sys.executable
|
|
55
|
+
return "/Cellar/" in exe or "/homebrew/" in exe.lower()
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _version_tuple(v: str) -> tuple[int, ...]:
|
|
59
|
+
"""Parse a version string like '0.4.3' into a comparable tuple (0, 4, 3)."""
|
|
60
|
+
try:
|
|
61
|
+
return tuple(int(x) for x in v.split("."))
|
|
62
|
+
except (ValueError, AttributeError):
|
|
63
|
+
return (0,)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def _is_newer(latest: str, current: str) -> bool:
|
|
67
|
+
"""Return True if latest is strictly newer than current."""
|
|
68
|
+
return _version_tuple(latest) > _version_tuple(current)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _upgrade_command() -> str:
|
|
72
|
+
"""Return the appropriate upgrade command based on install method."""
|
|
73
|
+
if _is_brew_install():
|
|
74
|
+
return "brew upgrade minitest-cli"
|
|
75
|
+
return "pip install --upgrade minitest-cli"
|
|
76
|
+
|
|
77
|
+
|
|
48
78
|
def check_for_updates(settings: Settings) -> None:
|
|
49
79
|
"""Check PyPI for a newer version and warn on stderr if available.
|
|
50
80
|
|
|
@@ -60,11 +90,12 @@ def check_for_updates(settings: Settings) -> None:
|
|
|
60
90
|
latest = response.json()["info"]["version"]
|
|
61
91
|
_write_cache(settings, latest)
|
|
62
92
|
|
|
63
|
-
if latest
|
|
93
|
+
if _is_newer(latest, __version__):
|
|
94
|
+
upgrade_cmd = _upgrade_command()
|
|
64
95
|
print_warning(
|
|
65
96
|
f"A new version of minitest-cli is available: {latest} "
|
|
66
97
|
f"(current: {__version__}). "
|
|
67
|
-
f"Update with:
|
|
98
|
+
f"Update with: {upgrade_cmd}"
|
|
68
99
|
)
|
|
69
100
|
except Exception: # noqa: BLE001
|
|
70
101
|
# Never block or crash the CLI for an update check failure
|
|
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
|