mirror of
https://github.com/fluxcd/flux2.git
synced 2026-05-06 01:54:43 +00:00
Merge pull request #5833 from Iam-Karan-Suresh/fix/resolve-symlinks
Some checks are pending
conformance / conform-kubernetes (1.33.0) (push) Waiting to run
conformance / conform-kubernetes (1.34.1) (push) Waiting to run
conformance / conform-kubernetes (1.35.0) (push) Waiting to run
conformance / conform-k3s (1.33.7) (push) Waiting to run
conformance / conform-k3s (1.34.3) (push) Waiting to run
conformance / conform-k3s (1.35.0) (push) Waiting to run
conformance / conform-openshift (4.20.0-okd) (push) Waiting to run
e2e-bootstrap / e2e-boostrap-github (push) Waiting to run
e2e / e2e-amd64-kubernetes (push) Waiting to run
ossf / scorecard (push) Waiting to run
scan / analyze (push) Waiting to run
update / update-components (push) Waiting to run
Some checks are pending
conformance / conform-kubernetes (1.33.0) (push) Waiting to run
conformance / conform-kubernetes (1.34.1) (push) Waiting to run
conformance / conform-kubernetes (1.35.0) (push) Waiting to run
conformance / conform-k3s (1.33.7) (push) Waiting to run
conformance / conform-k3s (1.34.3) (push) Waiting to run
conformance / conform-k3s (1.35.0) (push) Waiting to run
conformance / conform-openshift (4.20.0-okd) (push) Waiting to run
e2e-bootstrap / e2e-boostrap-github (push) Waiting to run
e2e / e2e-amd64-kubernetes (push) Waiting to run
ossf / scorecard (push) Waiting to run
scan / analyze (push) Waiting to run
update / update-components (push) Waiting to run
fix: handle multiple symlinks to same target in build artifact
This commit is contained in:
commit
125464ed72
2 changed files with 37 additions and 1 deletions
|
|
@ -172,7 +172,7 @@ func copyDir(srcDir, dstDir string, visited map[string]bool) error {
|
||||||
return nil // break the cycle
|
return nil // break the cycle
|
||||||
}
|
}
|
||||||
visited[abs] = true
|
visited[abs] = true
|
||||||
|
defer delete(visited, abs)
|
||||||
entries, err := os.ReadDir(srcDir)
|
entries, err := os.ReadDir(srcDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
||||||
|
|
@ -179,3 +179,39 @@ func Test_resolveSymlinks_cycle(t *testing.T) {
|
||||||
_, err = os.Stat(filepath.Join(resolved, "cycle", "cycle", "cycle"))
|
_, err = os.Stat(filepath.Join(resolved, "cycle", "cycle", "cycle"))
|
||||||
g.Expect(os.IsNotExist(err)).To(BeTrue())
|
g.Expect(os.IsNotExist(err)).To(BeTrue())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_resolveSymlinks_multipleLinksSameTarget(t *testing.T) {
|
||||||
|
g := NewWithT(t)
|
||||||
|
|
||||||
|
// Create source directory with a real file inside a dir
|
||||||
|
srcDir := t.TempDir()
|
||||||
|
targetDir := filepath.Join(srcDir, "target")
|
||||||
|
g.Expect(os.MkdirAll(targetDir, 0o755)).To(Succeed())
|
||||||
|
g.Expect(os.WriteFile(filepath.Join(targetDir, "file.yaml"), []byte("data"), 0o644)).To(Succeed())
|
||||||
|
|
||||||
|
// Create a directory with multiple symlinks pointing to targetDir
|
||||||
|
symlinkDir := t.TempDir()
|
||||||
|
|
||||||
|
// Link 1
|
||||||
|
link1 := filepath.Join(symlinkDir, "link1")
|
||||||
|
g.Expect(os.Symlink(targetDir, link1)).To(Succeed())
|
||||||
|
|
||||||
|
// Link 2
|
||||||
|
link2 := filepath.Join(symlinkDir, "link2")
|
||||||
|
g.Expect(os.Symlink(targetDir, link2)).To(Succeed())
|
||||||
|
|
||||||
|
// Resolve symlinks
|
||||||
|
resolved, cleanupDir, err := resolveSymlinks(symlinkDir)
|
||||||
|
g.Expect(err).To(BeNil())
|
||||||
|
t.Cleanup(func() { os.RemoveAll(cleanupDir) })
|
||||||
|
|
||||||
|
// Verify link1 has the file
|
||||||
|
content, err := os.ReadFile(filepath.Join(resolved, "link1", "file.yaml"))
|
||||||
|
g.Expect(err).To(BeNil())
|
||||||
|
g.Expect(string(content)).To(Equal("data"))
|
||||||
|
|
||||||
|
// Verify link2 ALSO has the file
|
||||||
|
content2, err := os.ReadFile(filepath.Join(resolved, "link2", "file.yaml"))
|
||||||
|
g.Expect(err).To(BeNil())
|
||||||
|
g.Expect(string(content2)).To(Equal("data"))
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue