mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
a5f237c2b5
This fixes issues where one goroutine tries to delete or rename a file while another goroutine has the file open (e.g. a log reader). Signed-off-by: Brian Goff <cpuguy83@gmail.com>
34 lines
745 B
Go
34 lines
745 B
Go
package loggerutils
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"gotest.tools/assert"
|
|
)
|
|
|
|
func TestOpenFileDelete(t *testing.T) {
|
|
tmpDir, err := ioutil.TempDir("", t.Name())
|
|
assert.NilError(t, err)
|
|
defer os.RemoveAll(tmpDir)
|
|
|
|
f, err := openFile(filepath.Join(tmpDir, "test.txt"), os.O_CREATE|os.O_RDWR, 644)
|
|
assert.NilError(t, err)
|
|
defer f.Close()
|
|
|
|
assert.NilError(t, os.RemoveAll(f.Name()))
|
|
}
|
|
|
|
func TestOpenFileRename(t *testing.T) {
|
|
tmpDir, err := ioutil.TempDir("", t.Name())
|
|
assert.NilError(t, err)
|
|
defer os.RemoveAll(tmpDir)
|
|
|
|
f, err := openFile(filepath.Join(tmpDir, "test.txt"), os.O_CREATE|os.O_RDWR, 0644)
|
|
assert.NilError(t, err)
|
|
defer f.Close()
|
|
|
|
assert.NilError(t, os.Rename(f.Name(), f.Name()+"renamed"))
|
|
}
|