mirror of
https://github.com/veggiemonk/awesome-docker.git
synced 2026-06-30 18:40:32 +02:00
29222bfcb5
* feat: add prune subcommand, drop archived/stale entries, add container-explorer Add a new `awesome-docker prune` subcommand that removes README entries whose repository health status matches a configurable set (default: archived,stale). URLs are read from the local health cache, or from a markdown report file via --from-report when the cache is outdated. Apply it against the issue #1439 health report to remove 5 entries that survived the recent reorg: stitchocker, docker-consul, blockbridge-docker-volume, docker-explorer, dockdash. Add google/container-explorer in the Security section as the actively maintained successor to the now-archived google/docker-explorer. Co-Authored-By: Claude <noreply@anthropic.com> * golangci-lint config * fix: address golangci-lint findings Fixes errcheck on bufio.Writer.WriteString, gocritic rangeValCopy via indexed loops with pointer locals, gosec G703 on user-supplied CLI output path, noctx by switching to exec.CommandContext with a timeout in the TUI url opener, prealloc in the scorer test, plus fieldalignment struct reorders and golines line breaks from --fix. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
86 lines
2.2 KiB
Markdown
86 lines
2.2 KiB
Markdown
package checker
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
func TestExtractGitHubRepo(t *testing.T) {
|
|
tests := []struct {
|
|
url string
|
|
owner string
|
|
name string
|
|
ok bool
|
|
}{
|
|
{"https://github.com/docker/compose", "docker", "compose", true},
|
|
{"https://github.com/moby/moby", "moby", "moby", true},
|
|
{"https://github.com/user/repo/", "user", "repo", true},
|
|
{"https://github.com/user/repo?tab=readme-ov-file", "user", "repo", true},
|
|
{"https://github.com/user/repo#readme", "user", "repo", true},
|
|
{"https://github.com/user/repo.git", "user", "repo", true},
|
|
{"https://www.github.com/user/repo", "user", "repo", true},
|
|
{"https://github.com/user/repo/issues", "", "", false},
|
|
{"https://github.com/user/repo/wiki", "", "", false},
|
|
{"https://github.com/apps/dependabot", "", "", false},
|
|
{"https://example.com/not-github", "", "", false},
|
|
{"https://github.com/user", "", "", false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
owner, name, ok := ExtractGitHubRepo(tt.url)
|
|
if ok != tt.ok {
|
|
t.Errorf("ExtractGitHubRepo(%q): ok = %v, want %v", tt.url, ok, tt.ok)
|
|
continue
|
|
}
|
|
if ok {
|
|
if owner != tt.owner || name != tt.name {
|
|
t.Errorf(
|
|
"ExtractGitHubRepo(%q) = (%q, %q), want (%q, %q)",
|
|
tt.url,
|
|
owner,
|
|
name,
|
|
tt.owner,
|
|
tt.name,
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestPartitionLinks(t *testing.T) {
|
|
urls := []string{
|
|
"https://github.com/docker/compose",
|
|
"https://example.com/tool",
|
|
"https://github.com/moby/moby",
|
|
"https://github.com/user/repo/issues",
|
|
"dozzle",
|
|
"#projects",
|
|
}
|
|
gh, ext := PartitionLinks(urls)
|
|
if len(gh) != 2 {
|
|
t.Errorf("github links = %d, want 2", len(gh))
|
|
}
|
|
if len(ext) != 2 {
|
|
t.Errorf("external links = %d, want 2", len(ext))
|
|
}
|
|
}
|
|
|
|
func TestIsGitHubAuthError(t *testing.T) {
|
|
tests := []struct {
|
|
err error
|
|
want bool
|
|
}{
|
|
{errors.New("non-200 OK status code: 401 Unauthorized body: \"Bad credentials\""), true},
|
|
{errors.New("Resource not accessible by integration"), true},
|
|
{errors.New("dial tcp: lookup api.github.com: no such host"), false},
|
|
{errors.New("context deadline exceeded"), false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
got := isGitHubAuthError(tt.err)
|
|
if got != tt.want {
|
|
t.Errorf("isGitHubAuthError(%q) = %v, want %v", tt.err, got, tt.want)
|
|
}
|
|
}
|
|
}
|