test: codify sandbox category A/B split in markers and docs#58
Conversation
Each sandbox-limited write test class now carries @pytest.mark.sandbox_limitation(category=...) with either "disabled" (7 classes, codes 8800/1000/5004 — live API supports these but sandbox does not) or "unsupported" (2 classes, code 3500 — campaign type absent from sandbox by design). TestWriteBids and TestWriteSmartAdTargets receive the first class-level marker; all seven existing markers gain the category kwarg. The module docstring, API_COVERAGE.md Sandbox Category Split section, and the #28 row in API_ISSUE_AUDIT.md reflect the same split. Closes #28. Closes #56. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
@claude review. Focus on critical issues: bugs, security vulnerabilities, logical errors, data loss risks, performance problems. Do NOT nitpick style, naming conventions, minor formatting, or subjective preferences — only flag issues that could break functionality or cause real harm in production. |
|
Claude finished @axisrow's task in 1m 0s —— View job Code Review
No critical issues found. This PR is entirely documentation and metadata — there are no functional or runtime behavior changes. Key observations:
No bugs, no security issues, no logic errors, no data loss risk, no performance impact. |
Summary
categorykwarg to@pytest.mark.sandbox_limitationinpyproject.toml— backwards compatible, no functional changes.category="disabled"(7 classes, codes 8800/1000/5004) orcategory="unsupported"(2 classes, code 3500).TestWriteBidsandTestWriteSmartAdTargetsreceive the first class-levelsandbox_limitationmarker (previously relied on inline-only_is_sandbox_error).tests/test_integration_write.pyto group sandbox-limited scenarios under Category A / Category B.tests/API_COVERAGE.mdwith inline A/B tables, error codes, and test class cross-references (GitHub comments as historical reference).tests/API_ISSUE_AUDIT.md: test: roadmap for write integration beyond current Yandex sandbox limits #28 row marked resolved, test: add guarded live API draft create/delete tier for sandbox-limited coverage #56 row added.Context
Follow-up to PR #57. The A/B split was published as GitHub comments on #28 and #56 (2026-04-19) but not yet codified in the repo. This PR closes that gap and satisfies the acceptance criteria for both issues.
Closes
Closes #28. Closes #56.
Test plan
pytest --collect-only -m integration_write --strict-markers -q— collection clean, 19 selectedpytest -m integration_write --record-mode=none -q -rs— 10 passed, 9 skipped, no cassette rewritespytest -m "not integration and not integration_write and not integration_live_write" -q— unit suite greengit diff --name-only main...HEAD— exactly 4 files🤖 Generated with Claude Code