Skip to content

Commit 3a6e195

Browse files
committed
osfs: Create dir for BoundOS Tempfiles
Previously if the dir didn't already exist an error would be returned, which meant that some go-git features would break when changing ChrootOS with BoundOS. Signed-off-by: Paulo Gomes <pjbgf@linux.com>
1 parent 37866f8 commit 3a6e195

2 files changed

Lines changed: 20 additions & 8 deletions

File tree

osfs/os_bound.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,14 @@ func (fs *BoundOS) TempFile(dir, prefix string) (billy.File, error) {
153153
if err != nil {
154154
return nil, err
155155
}
156+
157+
_, err = os.Stat(dir)
158+
if err != nil && os.IsNotExist(err) {
159+
err = os.MkdirAll(dir, defaultDirectoryMode)
160+
if err != nil {
161+
return nil, err
162+
}
163+
}
156164
}
157165

158166
return tempFile(dir, prefix)

osfs/os_bound_test.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -279,18 +279,22 @@ func TestTempFile(t *testing.T) {
279279
require.NoError(t, f.Close())
280280

281281
f, err = fs.TempFile("/above/cwd", "prefix")
282-
require.ErrorContains(t, err, fmt.Sprint(dir, filepath.FromSlash("/above/cwd/prefix")))
283-
assert.Nil(f)
282+
require.NoError(t, err)
283+
assert.NotNil(f)
284+
assert.Contains(f.Name(), filepath.Join(dir, "/above/cwd", "prefix"))
285+
require.NoError(t, f.Close())
284286

285-
tempDir := os.TempDir()
287+
dir = os.TempDir()
286288
// For windows, volume name must be removed.
287-
if v := filepath.VolumeName(tempDir); v != "" {
288-
tempDir = strings.TrimPrefix(tempDir, v)
289+
if v := filepath.VolumeName(dir); v != "" {
290+
dir = strings.TrimPrefix(dir, v)
289291
}
290292

291-
f, err = fs.TempFile(tempDir, "prefix")
292-
require.ErrorContains(t, err, filepath.Join(dir, tempDir, "prefix"))
293-
assert.Nil(f)
293+
f, err = fs.TempFile(dir, "prefix")
294+
require.NoError(t, err)
295+
assert.NotNil(f)
296+
assert.Contains(f.Name(), filepath.Join(dir, "prefix"))
297+
require.NoError(t, f.Close())
294298
}
295299

296300
func TestChroot(t *testing.T) {

0 commit comments

Comments
 (0)