rust-audit 0.2.3__tar.gz → 0.2.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.
- {rust_audit-0.2.3/scripts/rust_audit.egg-info → rust_audit-0.2.4}/PKG-INFO +7 -5
- {rust_audit-0.2.3 → rust_audit-0.2.4}/README.md +6 -4
- {rust_audit-0.2.3 → rust_audit-0.2.4}/pyproject.toml +3 -3
- {rust_audit-0.2.3 → rust_audit-0.2.4/scripts/rust_audit.egg-info}/PKG-INFO +7 -5
- {rust_audit-0.2.3 → rust_audit-0.2.4}/scripts/rust_audit.py +1 -1
- {rust_audit-0.2.3 → rust_audit-0.2.4}/tests/test_packaging.py +17 -11
- {rust_audit-0.2.3 → rust_audit-0.2.4}/tests/test_verify_release.py +0 -11
- {rust_audit-0.2.3 → rust_audit-0.2.4}/LICENSE +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/resources/popular_crates.txt +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/resources/suspicious_names.txt +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/scripts/rust_audit.egg-info/SOURCES.txt +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/scripts/rust_audit.egg-info/dependency_links.txt +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/scripts/rust_audit.egg-info/entry_points.txt +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/scripts/rust_audit.egg-info/requires.txt +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/scripts/rust_audit.egg-info/top_level.txt +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/setup.cfg +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/templates/deny.toml +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/tests/test_check_skill_sync.py +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/tests/test_interpreter_guard.py +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/tests/test_production_e2e.py +0 -0
- {rust_audit-0.2.3 → rust_audit-0.2.4}/tests/test_skill_wrapper_cli.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rust-audit
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Static auditor and auto-fixer for AI-generated Rust traps — stubs, fake tests, swallowed errors, panic/unsafe misuse, hallucinated or typosquatted crates
|
|
5
5
|
Author-email: Antonio Cantallops Alba <contact@exyonq.org>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -44,9 +44,11 @@ pipx install rust-audit # or: pip install rust-audit
|
|
|
44
44
|
rust-audit selftest # prints `selftest PASS`
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
From PyPI as **`rust-audit
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
From PyPI as **`rust-audit`**, whose wheel installs both commands: `rust-audit`
|
|
48
|
+
and `rustaudit` run the same module. There is no separate one-word project on
|
|
49
|
+
PyPI — it answers "This project name is too similar to an existing project" —
|
|
50
|
+
so the spelling is served by this package's own entry point.
|
|
51
|
+
Nothing is fetched or executed at install time, and
|
|
50
52
|
the wheel carries the same `rust_audit.py` as the signed release asset — so the
|
|
51
53
|
verify-before-use chain below still applies to the script you download.
|
|
52
54
|
|
|
@@ -56,7 +58,7 @@ verify-before-use chain below still applies to the script you download.
|
|
|
56
58
|
# 0) verify before use — check the exact audited bytes before executing them
|
|
57
59
|
# (key pin -> SSH signature -> checksum -> tag identity) and proceed only
|
|
58
60
|
# on VERIFIED (exit 0); see SECURITY.md for the pinned key and the chain
|
|
59
|
-
scripts/verify_release.sh v0.2.
|
|
61
|
+
scripts/verify_release.sh v0.2.4 ./rust_audit.py
|
|
60
62
|
|
|
61
63
|
python3 scripts/rust_audit.py selftest
|
|
62
64
|
python3 scripts/rust_audit.py scan <rust-project> --format terminal,md,json,sarif --fail-on high
|
|
@@ -14,9 +14,11 @@ pipx install rust-audit # or: pip install rust-audit
|
|
|
14
14
|
rust-audit selftest # prints `selftest PASS`
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
From PyPI as **`rust-audit
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
From PyPI as **`rust-audit`**, whose wheel installs both commands: `rust-audit`
|
|
18
|
+
and `rustaudit` run the same module. There is no separate one-word project on
|
|
19
|
+
PyPI — it answers "This project name is too similar to an existing project" —
|
|
20
|
+
so the spelling is served by this package's own entry point.
|
|
21
|
+
Nothing is fetched or executed at install time, and
|
|
20
22
|
the wheel carries the same `rust_audit.py` as the signed release asset — so the
|
|
21
23
|
verify-before-use chain below still applies to the script you download.
|
|
22
24
|
|
|
@@ -26,7 +28,7 @@ verify-before-use chain below still applies to the script you download.
|
|
|
26
28
|
# 0) verify before use — check the exact audited bytes before executing them
|
|
27
29
|
# (key pin -> SSH signature -> checksum -> tag identity) and proceed only
|
|
28
30
|
# on VERIFIED (exit 0); see SECURITY.md for the pinned key and the chain
|
|
29
|
-
scripts/verify_release.sh v0.2.
|
|
31
|
+
scripts/verify_release.sh v0.2.4 ./rust_audit.py
|
|
30
32
|
|
|
31
33
|
python3 scripts/rust_audit.py selftest
|
|
32
34
|
python3 scripts/rust_audit.py scan <rust-project> --format terminal,md,json,sarif --fail-on high
|
|
@@ -42,9 +42,9 @@ dev = ["pytest>=7.4.0"]
|
|
|
42
42
|
|
|
43
43
|
[project.scripts]
|
|
44
44
|
rust-audit = "rust_audit:main"
|
|
45
|
-
# Same entry point under the one-word spelling
|
|
46
|
-
#
|
|
47
|
-
#
|
|
45
|
+
# Same entry point under the one-word spelling. There is no `rustaudit`
|
|
46
|
+
# distribution on PyPI: it is refused as "too similar to an existing project"
|
|
47
|
+
# next to `rust-audit`, so this wheel is the only place that name comes from.
|
|
48
48
|
rustaudit = "rust_audit:main"
|
|
49
49
|
|
|
50
50
|
[project.urls]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rust-audit
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Static auditor and auto-fixer for AI-generated Rust traps — stubs, fake tests, swallowed errors, panic/unsafe misuse, hallucinated or typosquatted crates
|
|
5
5
|
Author-email: Antonio Cantallops Alba <contact@exyonq.org>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -44,9 +44,11 @@ pipx install rust-audit # or: pip install rust-audit
|
|
|
44
44
|
rust-audit selftest # prints `selftest PASS`
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
From PyPI as **`rust-audit
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
From PyPI as **`rust-audit`**, whose wheel installs both commands: `rust-audit`
|
|
48
|
+
and `rustaudit` run the same module. There is no separate one-word project on
|
|
49
|
+
PyPI — it answers "This project name is too similar to an existing project" —
|
|
50
|
+
so the spelling is served by this package's own entry point.
|
|
51
|
+
Nothing is fetched or executed at install time, and
|
|
50
52
|
the wheel carries the same `rust_audit.py` as the signed release asset — so the
|
|
51
53
|
verify-before-use chain below still applies to the script you download.
|
|
52
54
|
|
|
@@ -56,7 +58,7 @@ verify-before-use chain below still applies to the script you download.
|
|
|
56
58
|
# 0) verify before use — check the exact audited bytes before executing them
|
|
57
59
|
# (key pin -> SSH signature -> checksum -> tag identity) and proceed only
|
|
58
60
|
# on VERIFIED (exit 0); see SECURITY.md for the pinned key and the chain
|
|
59
|
-
scripts/verify_release.sh v0.2.
|
|
61
|
+
scripts/verify_release.sh v0.2.4 ./rust_audit.py
|
|
60
62
|
|
|
61
63
|
python3 scripts/rust_audit.py selftest
|
|
62
64
|
python3 scripts/rust_audit.py scan <rust-project> --format terminal,md,json,sarif --fail-on high
|
|
@@ -16,7 +16,7 @@ from pathlib import Path
|
|
|
16
16
|
REPO = Path(__file__).resolve().parent.parent
|
|
17
17
|
TOOL = REPO / "scripts" / "rust_audit.py"
|
|
18
18
|
PYPROJECT = REPO / "pyproject.toml"
|
|
19
|
-
|
|
19
|
+
PUBLISH_WORKFLOW = REPO / ".github" / "workflows" / "publish.yml"
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
def load_module(path=TOOL, name="rust_audit_probe"):
|
|
@@ -54,16 +54,22 @@ def test_both_commands_run_the_same_entry_point():
|
|
|
54
54
|
"the entry point names a function the module does not define")
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
def
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
57
|
+
def test_only_one_distribution_is_published():
|
|
58
|
+
"""`rustaudit` cannot be a PyPI project next to `rust-audit`.
|
|
59
|
+
|
|
60
|
+
PyPI answers a pending publisher for the one-word name with "This project
|
|
61
|
+
name is too similar to an existing project" (checked against the live API
|
|
62
|
+
on 2026-10-20), so a second distribution would fail on every release. The
|
|
63
|
+
one-word command ships from this wheel's own entry points instead; the
|
|
64
|
+
workflow must not build or upload a second project.
|
|
65
|
+
"""
|
|
66
|
+
workflow = PUBLISH_WORKFLOW.read_text()
|
|
67
|
+
assert "python -m build --outdir dist/main" in workflow
|
|
68
|
+
assert "packaging/" not in workflow, (
|
|
69
|
+
"the workflow builds a second distribution, which PyPI refuses as "
|
|
70
|
+
"too similar to rust-audit")
|
|
71
|
+
assert not (REPO / "packaging").exists(), (
|
|
72
|
+
"an alias distribution reappeared under packaging/")
|
|
67
73
|
|
|
68
74
|
|
|
69
75
|
def test_declared_data_files_exist():
|
|
@@ -515,12 +515,6 @@ def make_cut_repo(path, keytype, keydata):
|
|
|
515
515
|
"```bash\nscripts/verify_release.sh v0.2.0 ./rust_audit.py\n```\n")
|
|
516
516
|
(path / "SKILL.md").write_text(
|
|
517
517
|
"scripts/verify_release.sh v0.2.0 ./rust_audit.py\n")
|
|
518
|
-
# --cut cuts both PyPI distributions, so the alias metadata is part of its
|
|
519
|
-
# surface: without it here the version bump has nothing to edit.
|
|
520
|
-
(path / "packaging" / "rustaudit-alias").mkdir(parents=True)
|
|
521
|
-
(path / "packaging" / "rustaudit-alias" / "pyproject.toml").write_text(
|
|
522
|
-
'[project]\nname = "rustaudit"\nversion = "0.2.0"\n'
|
|
523
|
-
'dependencies = ["rust-audit>=0.2.0"]\n')
|
|
524
518
|
(path / "SECURITY.md").write_text(
|
|
525
519
|
f'release@rust-audit namespaces="file" {keytype} {keydata}\n')
|
|
526
520
|
cmd("git", "init", "-q", path)
|
|
@@ -547,11 +541,6 @@ def test_cut_releases_in_one_command(release, tmp_path):
|
|
|
547
541
|
RA_REPO_ROOT=str(repo))
|
|
548
542
|
assert r.returncode == 0, r.stdout + r.stderr
|
|
549
543
|
assert 'VERSION = "9.9.9"' in (repo / "scripts" / "rust_audit.py").read_text()
|
|
550
|
-
alias = (repo / "packaging" / "rustaudit-alias" / "pyproject.toml").read_text()
|
|
551
|
-
assert 'version = "9.9.9"' in alias
|
|
552
|
-
assert 'rust-audit>=9.9.9' in alias, (
|
|
553
|
-
"the alias dependency floor must follow the tag, or pip installs an "
|
|
554
|
-
"older rust-audit behind the alias")
|
|
555
544
|
for doc in ("README.md", "SKILL.md"):
|
|
556
545
|
assert "verify_release.sh v9.9.9" in (repo / doc).read_text()
|
|
557
546
|
assert cmd("git", "-C", origin, "rev-parse", "v9.9.9").returncode == 0
|
|
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
|