test(ci): skip chmod-dependent tests when running as root
ci / vet, staticcheck, test, build (push) Failing after 2m54s
ci / vet, staticcheck, test, build (push) Failing after 2m54s
Docker CI containers run as root by default (golang:1.26-alpine), where os.Chmod has no effect and permission restrictions don't apply. Four tests were failing because they relied on chmod to force error paths: - gradle: TestWriteVersionReadOnly - cmd: TestInitConfigWriteFails, TestRunLatestTagFails - gitutil: TestLatestTagTagsIterFails (had broken skip logic that only fired if Chmod itself errored, which never happens as root) Replace all four with an upfront os.Getuid() == 0 check so they are skipped cleanly in root environments and still run (and must pass) on non-root local development. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -752,20 +752,19 @@ func TestLatestTagTagsIterFails(t *testing.T) {
|
||||
repo, dir := newTestRepo(t)
|
||||
addCommit(t, repo, dir, "fix: c1", "v1")
|
||||
|
||||
if os.Getuid() == 0 {
|
||||
t.Skip("skipping: chmod restrictions do not apply when running as root")
|
||||
}
|
||||
|
||||
// Make .git/refs/tags/ unreadable so that go-git's walkReferencesTree
|
||||
// returns EPERM when it tries to list the directory, triggering the
|
||||
// Tags() error path. Skip when running as root (chmod has no effect).
|
||||
// Tags() error path.
|
||||
tagsDir := filepath.Join(dir, ".git", "refs", "tags")
|
||||
if err := os.Chmod(tagsDir, 0000); err != nil {
|
||||
t.Skipf("cannot chmod %s: %v", tagsDir, err)
|
||||
}
|
||||
os.Chmod(tagsDir, 0000)
|
||||
t.Cleanup(func() { os.Chmod(tagsDir, 0755) })
|
||||
|
||||
// Reopen so the filesystem storer holds no cached state.
|
||||
repo2, err := gogit.PlainOpen(dir)
|
||||
if err != nil {
|
||||
t.Skipf("PlainOpen failed (likely running as root): %v", err)
|
||||
}
|
||||
|
||||
_, _, err = LatestTag(repo2, branch.Info{Major: 1, Minor: 2, TagPrefix: "v"})
|
||||
if err == nil {
|
||||
|
||||
@@ -124,6 +124,9 @@ func TestWriteVersionNotFound(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestWriteVersionReadOnly(t *testing.T) {
|
||||
if os.Getuid() == 0 {
|
||||
t.Skip("skipping: chmod restrictions do not apply when running as root")
|
||||
}
|
||||
path := writeGradle(t, gradleKotlin)
|
||||
os.Chmod(path, 0444)
|
||||
defer os.Chmod(path, 0644)
|
||||
|
||||
Reference in New Issue
Block a user