Skip to content

Commit 12c6562

Browse files
Merge pull request #28430 from Honny1/fix-containerignore
Fix .containerignore patterns with leading/trailing slashes
2 parents 8c483b4 + c57f9f4 commit 12c6562

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

pkg/util/utils.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@ func ParseDockerignore(containerfiles []string, root string) ([]string, string,
112112
if len(e) == 0 || e[0] == '#' {
113113
continue
114114
}
115+
e = strings.Trim(e, "/")
116+
if len(e) == 0 {
117+
continue
118+
}
115119
excludes = append(excludes, e)
116120
}
117121
return excludes, ignoreFile, nil

pkg/util/utils_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package util
33
import (
44
"fmt"
55
"math"
6+
"os"
7+
"path/filepath"
68
"runtime"
79
"sort"
810
"testing"
@@ -864,3 +866,31 @@ func TestGetRootlessStateDir(t *testing.T) {
864866
assert.NoError(t, err)
865867
assert.NotEqual(t, dir, "libpod/tmp")
866868
}
869+
870+
// https://github.com/containers/podman/issues/25458
871+
func TestParseDockerignoreLeadingTrailingSlashes(t *testing.T) {
872+
contextDir := t.TempDir()
873+
874+
for _, tt := range []struct {
875+
name string
876+
ignore string
877+
expected []string
878+
}{
879+
{"leading slash", "/.git/\n", []string{".git"}},
880+
{"trailing slash", "target/\n", []string{"target"}},
881+
{"both slashes", "/build/\n", []string{"build"}},
882+
{"no slashes", "vendor\n", []string{"vendor"}},
883+
{"slash only line", "/\n", []string{}},
884+
{"multiple patterns", "/.git/\n/target/\nvendor\n", []string{".git", "target", "vendor"}},
885+
} {
886+
t.Run(tt.name, func(t *testing.T) {
887+
ignorePath := filepath.Join(contextDir, ".containerignore")
888+
err := os.WriteFile(ignorePath, []byte(tt.ignore), 0o644)
889+
assert.NoError(t, err)
890+
891+
excludes, _, err := ParseDockerignore(nil, contextDir)
892+
assert.NoError(t, err)
893+
assert.Equal(t, tt.expected, excludes)
894+
})
895+
}
896+
}

0 commit comments

Comments
 (0)