This repository has been archived on 2026-11-08. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
qqq-orb/tests/test_cli_ci_contract.py
james.maesandOpenAI Codex 26b0a3a18b feat: centralize QQQ pipeline profiles and release coordination [minor]
Own canonical consumer validation, selective workflow generation, Maven caching and RC completion in the shared orb. Centralize native workers and preserve acceptance/publication contracts with packed-output, behavioral and estate-audit tests.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-20 06:35:13 -05:00

30 lines
1.3 KiB
Python

"""Guard full CLI validation before optional publication."""
from pathlib import Path
import unittest
import yaml
ROOT = Path(__file__).resolve().parents[1]
class CliContract(unittest.TestCase):
def test_single_full_validation_and_opt_in_publication(self):
config = yaml.safe_load((ROOT / "src/jobs/cli_verify_publish.yml").read_text())
self.assertIs(config["parameters"]["publish"]["default"], False)
self.assertEqual(config["docker"], [{"image": "cimg/node:22.12"}])
steps = config["steps"]
ci = [i for i, s in enumerate(steps) if isinstance(s, dict) and s.get("run", {}).get("command") == "npm ci"]
verify = [i for i, s in enumerate(steps) if "scripts/cli_verify.sh" in str(s)]
publish = [i for i, s in enumerate(steps) if "scripts/cli_publish.sh" in str(s)]
self.assertEqual(len(ci), 1)
self.assertEqual(len(verify), 1)
self.assertEqual(len(publish), 1)
self.assertLess(ci[0], verify[0])
self.assertLess(verify[0], publish[0])
self.assertEqual(steps[publish[0]]["when"]["condition"], "<< parameters.publish >>")
cache = next(s["save_cache"] for s in steps if isinstance(s, dict) and "save_cache" in s)
self.assertEqual(cache["paths"], ["~/.npm"])
if __name__ == "__main__":
unittest.main()