Skip to content

Commit 3ee8b2b

Browse files
ycombinatorclaude
andcommitted
fix(e2e): restore MkdirAll in extractTar for archives missing directory entries
The Linux elastic-agent snapshot tar omits explicit directory entries for some paths (e.g. components/certs/), unlike the macOS archive. Restore MkdirAll for regular files and symlinks in extractTar only; extractZip intentionally omits it per PR elastic#4985 review feedback to catch missing directory entries in zip archives we produce ourselves. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 46a32af commit 3ee8b2b

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

testing/e2e/agent_download.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,11 @@ func extractTar(t *testing.T, r io.Reader, destDir string) extractedPaths {
229229
t.Fatalf("failed to create directory %s: %v", path, err)
230230
}
231231
case mode.IsRegular():
232+
// Ensure parent directories exist — some upstream tar archives (e.g. the
233+
// Linux elastic-agent snapshot) omit explicit directory entries.
234+
if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {
235+
t.Fatalf("failed to create parent directory for %s: %v", path, err)
236+
}
232237
w, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, mode.Perm())
233238
if err != nil {
234239
t.Fatalf("failed to create file %s: %v", path, err)
@@ -245,6 +250,9 @@ func extractTar(t *testing.T, r io.Reader, destDir string) extractedPaths {
245250
paths.fleetServerBinary = path
246251
}
247252
case mode.Type()&os.ModeSymlink == os.ModeSymlink:
253+
if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {
254+
t.Fatalf("failed to create parent directory for symlink %s: %v", path, err)
255+
}
248256
if err := os.Symlink(header.Linkname, path); err != nil {
249257
t.Fatalf("failed to create symlink %s: %v", path, err)
250258
}

0 commit comments

Comments
 (0)