Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
c54b240
lockfile: bump actions-lockfile, emit ref instead of tag/branch
nodeselector Jun 22, 2026
bc46c92
lockfile: bump parser to v0.0.2 (simplified pin keys)
nodeselector Jun 23, 2026
2ca7307
integration: update fixtures to v0.0.2 lockfile format
nodeselector Jun 23, 2026
779f2ca
integration: harden golden assertions for v0.0.2 schema
nodeselector Jun 23, 2026
6dc25c5
integration: add lockfile coherence assertions for direct and indirec…
nodeselector Jun 23, 2026
c5fd800
integration: fix stale transitive narrowing scenarios
nodeselector Jun 23, 2026
1a69797
pin: respect sticky precision on the verified fast path
nodeselector Jun 23, 2026
0418388
Apply gofmt to the tree
nodeselector Jun 19, 2026
b2c095c
Add go vet, race, and gofmt gates to CI
nodeselector Jun 19, 2026
1d14b2f
Lock UI output surface behind golden characterization tests
nodeselector Jun 19, 2026
88f2770
Split internal/ui/ui.go into cohesive files
nodeselector Jun 19, 2026
e17a3ea
Fix PRimer typo in status icon comment
nodeselector Jun 19, 2026
fef04ab
Flatten the redundant check subcommand into the root command
nodeselector Jun 19, 2026
a75b5cf
Add unit coverage for pure helpers in pipeline and tag
nodeselector Jun 19, 2026
2b501dc
ui: drop the golden characterization tests
nodeselector Jun 19, 2026
1acd1f8
pin: split planWorkflow into named phase helpers
nodeselector Jun 19, 2026
8ded181
pipeline: split diagnoseOneParsed into precheck and sweep helpers
nodeselector Jun 19, 2026
253244d
Trim verbose --help text and overlong doc comments
nodeselector Jun 19, 2026
b8d62ce
integration: add output_contains assertions to error scenarios
nodeselector Jun 23, 2026
cf573bd
integration: add lockfile_deps_cover_direct to all lockfile-producing…
nodeselector Jun 23, 2026
6b3b1b5
lockfile: bump parser to 66dfeda (multi-version parsing)
nodeselector Jun 23, 2026
135d9ba
lockfile: bump parser to 1ee4c25 (cleanup)
nodeselector Jun 23, 2026
4f6181a
drop impostor-commit reachability check entirely
nodeselector Jun 23, 2026
e202275
add --accept-moved flag to re-resolve forgery/ref-moved deps
nodeselector Jun 23, 2026
bd14706
accept-moved: fix exit code and add live integration scenario
nodeselector Jun 23, 2026
8e34474
harness: graceful skip on clone failure in live scenarios
nodeselector Jun 23, 2026
ed340cc
version-ref nudge: only fire for partial semver, show affected workflows
nodeselector Jun 23, 2026
b870752
harness: rescue SkipScenario in run_one_live shell command
nodeselector Jun 23, 2026
ea17600
pin summary: clean up transitive dep display for SHA-pinned refs
nodeselector Jun 23, 2026
1b74b28
pin summary: add section header for transitive dependencies
nodeselector Jun 23, 2026
ddce866
lockfile: bump to 13c755d (relaxed ref validation)
nodeselector Jun 23, 2026
c77ada8
reverse lookup: don't hard-fail on bare SHA pins without a containing…
nodeselector Jun 23, 2026
d8a8c34
pin summary: suppress downgrade nudges, show info for bare SHA pins
nodeselector Jun 23, 2026
b07c06d
resolve: better error for hex-looking refs that don't resolve
nodeselector Jun 23, 2026
878355f
test harness: use real orphaned commit 7b403c9 for impostor scenario
nodeselector Jun 23, 2026
cc11ba6
lockfile: bump to c745c7c (isValidRef in splitUsesRef)
nodeselector Jun 23, 2026
c493bd8
lockfile: bump to 135b604 (skip ref mismatch for SHA-keyed pins)
nodeselector Jun 23, 2026
b157d66
lockfile: bump to 887d8de (expanded SHA-key regression tests)
nodeselector Jun 23, 2026
02be56d
pin summary: show lockfile schema version upgrade
nodeselector Jun 23, 2026
2730c28
lockfile: bump to tagged release go/v0.0.4
nodeselector Jun 23, 2026
a9d49b5
lockfile load before auth, fix CI failures
nodeselector Jun 23, 2026
2f47bc8
gofmt: fix formatting
nodeselector Jun 23, 2026
e2a928b
harness: add push command to send lockfile changes to repo
nodeselector Jun 24, 2026
b5b1b29
reverse lookup: graceful degradation for orphaned commits
nodeselector Jun 24, 2026
25222a4
pin summary: add spacing between skip warnings and result
nodeselector Jun 24, 2026
2844d48
allow-runners: support wildcard '*' to trust all labels
nodeselector Jun 24, 2026
db687b1
allow-all-runners: add -A flag to skip all runner checks
nodeselector Jun 24, 2026
503e5c6
pin summary: surface narrowed refs instead of silent rewrite
nodeselector Jun 24, 2026
8370a8a
test: fix onboarded_full_tag_unchanged to match what it claims
nodeselector Jun 24, 2026
ed72e0f
transitive deps: discover ref only for bare-SHA pins
nodeselector Jun 24, 2026
84a78e1
lockfile: decouple pin key from ref field for bare-SHA transitive deps
nodeselector Jun 24, 2026
d8173e5
scenarios: merge three transitive-ref tests into one
nodeselector Jun 24, 2026
cd7588a
workflowfile: reword expression-in-uses warning as parse error
nodeselector Jun 24, 2026
77de8ad
scenarios: no_fix_mode expects exit 1 (unpinned deps exist)
nodeselector Jun 24, 2026
2ead283
scenarios: json_output_valid expects exit 1
nodeselector Jun 24, 2026
c599c44
run: suppress SSO hint in JSON mode to keep stdout valid JSON
nodeselector Jun 24, 2026
1033ceb
golden: update transitive_closure_cross_repo for new @main commit
nodeselector Jun 24, 2026
3e4c763
scenarios: clarify onboarded_branch_ref_narrows description
nodeselector Jun 24, 2026
203a929
commit: write lockfile when narrowing changes a dep key
nodeselector Jun 24, 2026
5411d97
harness: add lockfile↔workflow coherence assertion
nodeselector Jun 24, 2026
04e7a7b
narrowing: only narrow version-shaped refs, mention -A in runner hints
nodeselector Jun 24, 2026
fac28de
scenarios: dbot_impostor_blocks uses --json=findings like real depend…
nodeselector Jun 24, 2026
8508f01
harness: pre-add sentinel to workflow fixtures
nodeselector Jun 24, 2026
c4ed4fb
scenarios: dbot_impostor_blocks expects reachability-unknown warning
nodeselector Jun 24, 2026
d3cf3af
scenarios: drop fragile golden for transitive_closure_cross_repo
nodeselector Jun 24, 2026
6d03542
run: suppress resolution record path in --json mode
nodeselector Jun 24, 2026
da5e237
help: explain ref narrowing behavior and rationale
nodeselector Jun 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,16 @@ jobs:
- uses: actions/setup-go@v6.4.0
with:
go-version-file: go.mod
- run: go test ./...
- name: gofmt
run: |
unformatted="$(gofmt -l .)"
if [ -n "$unformatted" ]; then
echo "These files are not gofmt-clean:"
echo "$unformatted"
exit 1
fi
- run: go vet ./...
- run: go test -race -count=1 ./...

integration-stub:
runs-on: ubuntu-latest
Expand Down
19 changes: 17 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,28 @@ EXT_DIR := $(XDG_DATA_HOME)/gh/extensions/$(EXT_NAME)

RUBY := $(shell command -v /opt/homebrew/opt/ruby/bin/ruby 2>/dev/null || echo ruby)

.PHONY: build test test-integration test-shell test-live test-smoke test-stub test-real install reinstall uninstall
.PHONY: build test vet fmt fmt-check test-integration test-shell test-live test-smoke test-stub test-real install reinstall uninstall

build:
go build -o $(BIN) ./cmd/gh-actions-lock

test:
go test ./...
go test -race -count=1 ./...

vet:
go vet ./...

fmt:
gofmt -w .

# Mirrors the CI gofmt gate: fails (non-zero) if anything is unformatted.
fmt-check:
@unformatted="$$(gofmt -l .)"; \
if [ -n "$$unformatted" ]; then \
echo "These files are not gofmt-clean:"; \
echo "$$unformatted"; \
exit 1; \
fi

test-integration: build
$(RUBY) test/integration/run.rb
Expand Down
6 changes: 3 additions & 3 deletions cmd/gh-actions-lock/check_json_golden_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package main

// Golden-file snapshot test for the `gh actions-lock check --json` contract.
// Golden-file snapshot test for the `gh actions-lock --json` contract.
//
// We promised Dependabot the JSON shape is additive-only: no field renames,
// no removals, no type shifts. New optional fields are allowed. This test
Expand Down Expand Up @@ -91,10 +91,10 @@ func TestCheckCommand_JSONGolden(t *testing.T) {
copyFixtureTree(t, srcDir, dir)
t.Chdir(dir)

stdout, _, err := runCommandWithHTTPAndReach(t, reg, reachableFunc(),
stdout, _, err := runCommandWithHTTP(t, reg,
// The fixture's lockfile addresses the workflow as
// .github/workflows/ci.yml, so we run check on that exact path.
"check", "--rescan", "--no-fix", "--json=valid,findings,workflows,dependencies",
"--rescan", "--no-fix", "--json=valid,findings,workflows,dependencies",
".github/workflows/ci.yml",
)
// We expect findings (ref-changed + stale), so the command exits
Expand Down
Loading
Loading