diff --git a/internal/tempfile/tempfile_linux.go b/internal/tempfile/tempfile_linux.go index 5481b1274..a0694f92f 100644 --- a/internal/tempfile/tempfile_linux.go +++ b/internal/tempfile/tempfile_linux.go @@ -10,6 +10,8 @@ // Create creates a temporary file that will be automatically deleted on close. func Create(dir string) (*os.File, error) { + dir = tempDirOr(dir) + // on reasonably modern Linux (3.11 and above) O_TMPFILE is supported, // which creates invisible, unlinked file in a given directory. fd, err := unix.Open(dir, unix.O_RDWR|unix.O_TMPFILE|unix.O_CLOEXEC, permissions) diff --git a/internal/tempfile/tempfile_test.go b/internal/tempfile/tempfile_test.go index c2a2f6453..8c2dd08fc 100644 --- a/internal/tempfile/tempfile_test.go +++ b/internal/tempfile/tempfile_test.go @@ -36,3 +36,12 @@ func TestTempFile(t *testing.T) { require.NoError(t, err) require.Empty(t, files) } + +func TestCreateSucceedsWhenDirIsNotSpecified(t *testing.T) { + f, err := tempfile.Create("") + + require.NoError(t, err) + + err = f.Close() + require.NoError(t, err) +}