aws-test-plugin 0.1.0__tar.gz → 0.1.2__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.
- aws_test_plugin-0.1.2/.claude-plugin/marketplace.json +17 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.claude-plugin/plugin.json +1 -1
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/CONTRIBUTING.md +5 -3
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/PKG-INFO +2 -1
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/README.md +1 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/agents/aws-test-engineer.md +28 -24
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/pyproject.toml +1 -1
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-contract-testing/SKILL.md +0 -4
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-e2e-testing/SKILL.md +0 -4
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/SKILL.md +0 -4
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-perf-load-testing/SKILL.md +0 -4
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-test-orchestrator/SKILL.md +0 -4
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-unit-testing/SKILL.md +0 -4
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/__init__.py +1 -1
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/tests/test_cli.py +0 -16
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/uv.lock +2 -2
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.gitattributes +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.github/CODEOWNERS +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.github/pull_request_template.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.github/workflows/ci.yml +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.github/workflows/codeql.yml +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.github/workflows/publish.yml +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.gitignore +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/.python-version +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/LICENSE +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/PLAN.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-contract-testing/references/openapi-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-e2e-testing/references/api-gateway-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-e2e-testing/references/batch-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-e2e-testing/references/step-function-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-dynamodb-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-eventbridge-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-kinesis-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-rds-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-s3-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-sns-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-integration-testing/references/lambda-sqs-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-perf-load-testing/references/benchmark-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-perf-load-testing/references/locust-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-test-orchestrator/references/secrets-and-config.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-unit-testing/references/boundary-branch-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-unit-testing/references/edge-case-patterns.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/AGENTS.md +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/cli.py +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/scripts/analyze_results.py +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/scripts/run_tests.py +0 -0
- {aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/scripts/scaffold.py +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "claude-aws-test-plugin",
|
|
3
|
+
"owner": {
|
|
4
|
+
"name": "whitewhiteqq"
|
|
5
|
+
},
|
|
6
|
+
"metadata": {
|
|
7
|
+
"description": "AI-powered test generation skills for AWS Python projects — Lambda, API Gateway, Step Functions, and Batch."
|
|
8
|
+
},
|
|
9
|
+
"plugins": [
|
|
10
|
+
{
|
|
11
|
+
"name": "claude-aws-test-plugin",
|
|
12
|
+
"source": "./",
|
|
13
|
+
"description": "Generates E2E, integration, contract, performance, and load tests by reading actual handler code.",
|
|
14
|
+
"version": "0.1.2"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aws-test-plugin",
|
|
3
3
|
"description": "AI-powered test generation skills for AWS Python projects — Lambda, API Gateway, Step Functions, and Batch. Generates E2E, integration, contract, performance, and load tests by reading actual handler code.",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.2",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "whitewhiteqq"
|
|
7
7
|
},
|
|
@@ -130,7 +130,7 @@ Principles:
|
|
|
130
130
|
- Default to `Rebase and merge` for pull requests into `develop` so that every individual commit — and its reasoning — is preserved in the public history. Use `Squash and merge` only when the branch contains exploratory or fixup commits that add no lasting value; when squashing, the single merge commit must capture all essential context from the branch (see Commit Message Style).
|
|
131
131
|
- Avoid GitHub merge commits for routine pull requests because they create noisy branch divergence and a less readable graph.
|
|
132
132
|
- Promote releases from `develop` to `main` with a maintainer-run fast-forward update so both branches share identical history.
|
|
133
|
-
- Tag every release on `main` with an annotated tag (`git tag -a v0.1.0 -m "..."`). The tag message should summarize what shipped, key decisions made since the prior release, and any known limitations. Annotated tags are git objects — they survive cloning and forking, unlike GitHub-only release notes.
|
|
133
|
+
- Tag every release on `main` with an annotated tag (`git tag -a v0.1.0 -m "..."`). Then create a GitHub Release targeting that tag — creating the Release is the PyPI publish trigger. Releases follow one path only: feature branch -> `develop` -> `main` -> version tag -> GitHub Release -> PyPI. The tag message should summarize what shipped, key decisions made since the prior release, and any known limitations. Annotated tags are git objects — they survive cloning and forking, unlike GitHub-only release notes.
|
|
134
134
|
|
|
135
135
|
## Commit Message Style
|
|
136
136
|
|
|
@@ -267,18 +267,20 @@ must also land in the commit messages that enter `develop`.
|
|
|
267
267
|
6. Submit a pull request to `develop` using `.github/pull_request_template.md`
|
|
268
268
|
7. Merge pull requests with `Rebase and merge` (preferred — preserves individual commit reasoning) or `Squash and merge` (only when intermediate commits are noise); do not use merge commits
|
|
269
269
|
8. Release `develop` to `main` with a maintainer-run fast-forward update after CI passes on `develop`; use `git merge --ff-only develop` from a local checkout of `main` so `main` advances without rewriting or duplicating commit history
|
|
270
|
-
9.
|
|
270
|
+
9. Create and push an annotated version tag from `main`, then create a GitHub Release targeting that tag; the Release is the PyPI publish trigger
|
|
271
|
+
10. Review responsibility is assigned through `.github/CODEOWNERS`
|
|
271
272
|
|
|
272
273
|
## Maintainer Notes
|
|
273
274
|
|
|
274
275
|
- Protect `main` and `develop` against direct pushes.
|
|
275
276
|
- Enable `Rebase and merge` (preferred) and `Squash and merge` (fallback) for contributor pull requests into `develop`. Disable `Create a merge commit` to enforce linear history.
|
|
276
277
|
- Do not rely on GitHub merge buttons for release promotion to `main`; use a local `git merge --ff-only develop` followed by `git push origin main`.
|
|
278
|
+
- Do not publish to PyPI from a feature branch or from `develop`. PyPI releases are triggered only by creating a GitHub Release after `develop` has been fast-forwarded into `main` and an annotated `v*` tag has been pushed from that `main` commit.
|
|
277
279
|
- Configure `develop` branch protection or rulesets to require linear history and the CI checks `Test (Python 3.10)`, `Test (Python 3.11)`, `Test (Python 3.12)`, `Test (Python 3.13)`, `Lint`, `Type Check`, and `Security`.
|
|
278
280
|
- Configure `main` so only maintainers can update it, with no force pushes or deletions.
|
|
279
281
|
- Keep release updates focused. Avoid mixing repository governance, experiments, and product changes in the same release.
|
|
280
282
|
- Do not rewrite shared branch history unless there is a clear operational reason and the change is communicated.
|
|
281
|
-
- After each fast-forward update to `main`, create an annotated tag and
|
|
283
|
+
- After each fast-forward update to `main`, create an annotated tag, push it, and then create a GitHub Release targeting that tag to publish to PyPI:
|
|
282
284
|
```bash
|
|
283
285
|
git tag -a v<VERSION> -m "v<VERSION>: <one-line theme>
|
|
284
286
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aws-test-plugin
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: AI-powered test generation skills for AWS Python projects — works with Claude Code, GitHub Copilot, and Codex
|
|
5
5
|
Project-URL: Homepage, https://github.com/whitewhiteqq/aws-test-plugin
|
|
6
6
|
Project-URL: Repository, https://github.com/whitewhiteqq/aws-test-plugin
|
|
@@ -329,6 +329,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
|
|
|
329
329
|
## Review Flow
|
|
330
330
|
|
|
331
331
|
- Pull requests should target `develop`; maintainers promote `develop` to `main` with a fast-forward release update.
|
|
332
|
+
- PyPI publishing is triggered by creating a GitHub Release targeting an annotated `v*` tag on `main`.
|
|
332
333
|
- Review ownership is defined in `.github/CODEOWNERS`.
|
|
333
334
|
- Pull request expectations are defined in `.github/pull_request_template.md`.
|
|
334
335
|
|
|
@@ -267,6 +267,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
|
|
|
267
267
|
## Review Flow
|
|
268
268
|
|
|
269
269
|
- Pull requests should target `develop`; maintainers promote `develop` to `main` with a fast-forward release update.
|
|
270
|
+
- PyPI publishing is triggered by creating a GitHub Release targeting an annotated `v*` tag on `main`.
|
|
270
271
|
- Review ownership is defined in `.github/CODEOWNERS`.
|
|
271
272
|
- Pull request expectations are defined in `.github/pull_request_template.md`.
|
|
272
273
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: aws-test-engineer
|
|
3
|
-
|
|
3
|
+
description: >
|
|
4
4
|
Generate, run, and fix comprehensive tests for AWS Python projects.
|
|
5
5
|
Analyzes actual handler code to produce E2E, integration, contract,
|
|
6
6
|
performance, and load tests. Works with Lambda, API Gateway,
|
|
@@ -12,29 +12,6 @@ skills:
|
|
|
12
12
|
- aws-integration-testing
|
|
13
13
|
- aws-contract-testing
|
|
14
14
|
- aws-perf-load-testing
|
|
15
|
-
definition_of_done:
|
|
16
|
-
- All discovered AWS components have corresponding test files
|
|
17
|
-
- Unit tests cover every branch, boundary value, and edge case in business logic
|
|
18
|
-
- Every code path (happy path, error handling, edge cases) has a test
|
|
19
|
-
- Tests pass locally with moto/testcontainers (no real AWS calls)
|
|
20
|
-
- Test coverage for handler logic is >= 80% (branch coverage)
|
|
21
|
-
- Performance benchmarks have defined thresholds
|
|
22
|
-
- Load test locustfiles match API spec endpoints
|
|
23
|
-
- Test data uses prefixes for easy cleanup (TEST-, E2E-TEST-, LOAD-TEST-)
|
|
24
|
-
- conftest.py provides shared fixtures for all test types
|
|
25
|
-
- pytest.ini configures markers and test paths
|
|
26
|
-
- No secrets, API keys, or tokens hardcoded in test files
|
|
27
|
-
- .env.example documents required configuration variables
|
|
28
|
-
- All offline tests can run in 1 click via `python scripts/run_tests.py all`
|
|
29
|
-
- Installation guidance lists the required test dependency groups
|
|
30
|
-
safety:
|
|
31
|
-
- Never run tests against production without explicit user confirmation
|
|
32
|
-
- Never make real AWS API calls — use moto or testcontainers
|
|
33
|
-
- Never store credentials, API keys, or tokens in test files
|
|
34
|
-
- Never delete production data
|
|
35
|
-
- Load tests must have --run-time set (no unbounded runs)
|
|
36
|
-
- All test data is prefixed and self-cleaning
|
|
37
|
-
- Use .env files (gitignored) for secrets, never commit .env
|
|
38
15
|
---
|
|
39
16
|
|
|
40
17
|
# AWS Test Engineer Agent
|
|
@@ -93,3 +70,30 @@ source code, not from generic templates.
|
|
|
93
70
|
| Performance | pytest-benchmark | Yes | No |
|
|
94
71
|
| E2E | requests + pytest | No | Yes |
|
|
95
72
|
| Load | Locust | No | Yes |
|
|
73
|
+
|
|
74
|
+
## Definition of Done
|
|
75
|
+
|
|
76
|
+
- All discovered AWS components have corresponding test files
|
|
77
|
+
- Unit tests cover every branch, boundary value, and edge case in business logic
|
|
78
|
+
- Every code path (happy path, error handling, edge cases) has a test
|
|
79
|
+
- Tests pass locally with moto/testcontainers (no real AWS calls)
|
|
80
|
+
- Test coverage for handler logic is >= 80% (branch coverage)
|
|
81
|
+
- Performance benchmarks have defined thresholds
|
|
82
|
+
- Load test locustfiles match API spec endpoints
|
|
83
|
+
- Test data uses prefixes for easy cleanup (TEST-, E2E-TEST-, LOAD-TEST-)
|
|
84
|
+
- conftest.py provides shared fixtures for all test types
|
|
85
|
+
- pytest.ini configures markers and test paths
|
|
86
|
+
- No secrets, API keys, or tokens hardcoded in test files
|
|
87
|
+
- .env.example documents required configuration variables
|
|
88
|
+
- All offline tests can run in 1 click via `python scripts/run_tests.py all`
|
|
89
|
+
- Installation guidance lists the required test dependency groups
|
|
90
|
+
|
|
91
|
+
## Safety Rules
|
|
92
|
+
|
|
93
|
+
- Never run tests against production without explicit user confirmation
|
|
94
|
+
- Never make real AWS API calls — use moto or testcontainers
|
|
95
|
+
- Never store credentials, API keys, or tokens in test files
|
|
96
|
+
- Never delete production data
|
|
97
|
+
- Load tests must have --run-time set (no unbounded runs)
|
|
98
|
+
- All test data is prefixed and self-cleaning
|
|
99
|
+
- Use .env files (gitignored) for secrets, never commit .env
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: aws-contract-testing
|
|
3
|
-
license: Apache-2.0
|
|
4
|
-
metadata:
|
|
5
|
-
author: whitewhiteqq
|
|
6
|
-
version: "0.1.0"
|
|
7
3
|
description: >
|
|
8
4
|
Generate contract tests that validate API schemas, request/response shapes,
|
|
9
5
|
required fields, security definitions, and step function input/output
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: aws-e2e-testing
|
|
3
|
-
license: Apache-2.0
|
|
4
|
-
metadata:
|
|
5
|
-
author: whitewhiteqq
|
|
6
|
-
version: "0.1.0"
|
|
7
3
|
description: >
|
|
8
4
|
Generate comprehensive end-to-end tests for AWS Python services by reading
|
|
9
5
|
the actual handler code logic. Covers API Gateway Lambda proxies,
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: aws-integration-testing
|
|
3
|
-
license: Apache-2.0
|
|
4
|
-
metadata:
|
|
5
|
-
author: whitewhiteqq
|
|
6
|
-
version: "0.1.0"
|
|
7
3
|
description: >
|
|
8
4
|
Generate comprehensive integration tests for AWS Python Lambda functions,
|
|
9
5
|
Batch jobs, and services that interact with S3, DynamoDB, RDS/PostgreSQL,
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: aws-perf-load-testing
|
|
3
|
-
license: Apache-2.0
|
|
4
|
-
metadata:
|
|
5
|
-
author: whitewhiteqq
|
|
6
|
-
version: "0.1.0"
|
|
7
3
|
description: >
|
|
8
4
|
Generate performance benchmarks and load tests for AWS Python services.
|
|
9
5
|
Performance tests measure Lambda latency, memory usage, cold start time,
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: aws-test-orchestrator
|
|
3
|
-
license: Apache-2.0
|
|
4
|
-
metadata:
|
|
5
|
-
author: whitewhiteqq
|
|
6
|
-
version: "0.1.0"
|
|
7
3
|
description: >
|
|
8
4
|
Master skill for testing AWS Python projects. Discovers project components
|
|
9
5
|
(Lambda, API Gateway, Step Functions, Batch), reads handler code logic,
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: aws-unit-testing
|
|
3
|
-
license: Apache-2.0
|
|
4
|
-
metadata:
|
|
5
|
-
author: whitewhiteqq
|
|
6
|
-
version: "0.1.0"
|
|
7
3
|
description: >
|
|
8
4
|
Generate thorough unit tests for AWS Python business logic with full branch
|
|
9
5
|
coverage, boundary value analysis, and edge case testing. Isolates pure
|
|
@@ -102,22 +102,6 @@ def test_skill_description_under_1024_chars():
|
|
|
102
102
|
assert len(desc) <= 1024, f"{skill.name}: description is {len(desc)} chars (max 1024)"
|
|
103
103
|
|
|
104
104
|
|
|
105
|
-
def test_skill_has_license():
|
|
106
|
-
"""Every SKILL.md should have a license field."""
|
|
107
|
-
skills_dir = _get_data_dir() / "skills"
|
|
108
|
-
for skill in skills_dir.iterdir():
|
|
109
|
-
if not skill.is_dir():
|
|
110
|
-
continue
|
|
111
|
-
skill_md = skill / "SKILL.md"
|
|
112
|
-
if not skill_md.exists():
|
|
113
|
-
continue
|
|
114
|
-
|
|
115
|
-
content = skill_md.read_text(encoding="utf-8")
|
|
116
|
-
parts = content.split("---", 2)
|
|
117
|
-
if len(parts) >= 3:
|
|
118
|
-
assert "license:" in parts[1], f"{skill.name}/SKILL.md missing license"
|
|
119
|
-
|
|
120
|
-
|
|
121
105
|
def test_skill_reference_links_resolve():
|
|
122
106
|
"""Reference file links in SKILL.md must point to existing files."""
|
|
123
107
|
skills_dir = _get_data_dir() / "skills"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
version = 1
|
|
2
|
-
revision =
|
|
2
|
+
revision = 3
|
|
3
3
|
requires-python = ">=3.10"
|
|
4
4
|
resolution-markers = [
|
|
5
5
|
"python_full_version >= '3.11'",
|
|
@@ -76,7 +76,7 @@ wheels = [
|
|
|
76
76
|
|
|
77
77
|
[[package]]
|
|
78
78
|
name = "aws-test-plugin"
|
|
79
|
-
version = "0.1.
|
|
79
|
+
version = "0.1.1"
|
|
80
80
|
source = { editable = "." }
|
|
81
81
|
dependencies = [
|
|
82
82
|
{ name = "defusedxml" },
|
|
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
|
{aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/skills/aws-e2e-testing/references/batch-patterns.md
RENAMED
|
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
|
{aws_test_plugin-0.1.0 → aws_test_plugin-0.1.2}/src/aws_test_plugin/scripts/analyze_results.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|