env_file: fix broken test cases
TestWriteEnvFileDos2Unix had a copy/paste bug, it shouldn't have asserted that mtime doesn't change because the file is actually being modified in this test. This didn't come up earlier because the actual comparison wasn't using Time.Equal as it should have. Instead switch to comparing inode numbers which is the actual thing I wanted to test for in the first place, just accessing them is much more awkard. Now all tests where it is relevant check the inode in addition to the contents.
This commit is contained in:
parent
f356a8a690
commit
a270c4c737
@ -5,6 +5,7 @@ import (
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
"syscall"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@ -41,6 +42,11 @@ func TestWriteEnvFileUpdate(t *testing.T) {
|
||||
fullPath := path.Join(dir, name)
|
||||
ioutil.WriteFile(fullPath, []byte(base), 0644)
|
||||
|
||||
oldStat, err := os.Stat(fullPath)
|
||||
if err != nil {
|
||||
t.Fatal("Unable to stat file: %v", err)
|
||||
}
|
||||
|
||||
ef := EnvFile{
|
||||
File: &File{
|
||||
Path: name,
|
||||
@ -61,6 +67,15 @@ func TestWriteEnvFileUpdate(t *testing.T) {
|
||||
if string(contents) != expectUpdate {
|
||||
t.Fatalf("File has incorrect contents: %q", contents)
|
||||
}
|
||||
|
||||
newStat, err := os.Stat(fullPath)
|
||||
if err != nil {
|
||||
t.Fatal("Unable to stat file: %v", err)
|
||||
}
|
||||
|
||||
if oldStat.Sys().(*syscall.Stat_t).Ino == newStat.Sys().(*syscall.Stat_t).Ino {
|
||||
t.Fatal("File was not replaced: %s", fullPath)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWriteEnvFileUpdateNoNewline(t *testing.T) {
|
||||
@ -74,6 +89,11 @@ func TestWriteEnvFileUpdateNoNewline(t *testing.T) {
|
||||
fullPath := path.Join(dir, name)
|
||||
ioutil.WriteFile(fullPath, []byte(baseNoNewline), 0644)
|
||||
|
||||
oldStat, err := os.Stat(fullPath)
|
||||
if err != nil {
|
||||
t.Fatal("Unable to stat file: %v", err)
|
||||
}
|
||||
|
||||
ef := EnvFile{
|
||||
File: &File{
|
||||
Path: name,
|
||||
@ -94,6 +114,15 @@ func TestWriteEnvFileUpdateNoNewline(t *testing.T) {
|
||||
if string(contents) != expectUpdate {
|
||||
t.Fatalf("File has incorrect contents: %q", contents)
|
||||
}
|
||||
|
||||
newStat, err := os.Stat(fullPath)
|
||||
if err != nil {
|
||||
t.Fatal("Unable to stat file: %v", err)
|
||||
}
|
||||
|
||||
if oldStat.Sys().(*syscall.Stat_t).Ino == newStat.Sys().(*syscall.Stat_t).Ino {
|
||||
t.Fatal("File was not replaced: %s", fullPath)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWriteEnvFileCreate(t *testing.T) {
|
||||
@ -170,8 +199,8 @@ func TestWriteEnvFileNoop(t *testing.T) {
|
||||
t.Fatal("Unable to stat file: %v", err)
|
||||
}
|
||||
|
||||
if oldStat.ModTime() != newStat.ModTime() {
|
||||
t.Fatal("File mtime changed.")
|
||||
if oldStat.Sys().(*syscall.Stat_t).Ino != newStat.Sys().(*syscall.Stat_t).Ino {
|
||||
t.Fatal("File was replaced: %s", fullPath)
|
||||
}
|
||||
}
|
||||
|
||||
@ -186,6 +215,11 @@ func TestWriteEnvFileUpdateDos(t *testing.T) {
|
||||
fullPath := path.Join(dir, name)
|
||||
ioutil.WriteFile(fullPath, []byte(baseDos), 0644)
|
||||
|
||||
oldStat, err := os.Stat(fullPath)
|
||||
if err != nil {
|
||||
t.Fatal("Unable to stat file: %v", err)
|
||||
}
|
||||
|
||||
ef := EnvFile{
|
||||
File: &File{
|
||||
Path: name,
|
||||
@ -206,6 +240,15 @@ func TestWriteEnvFileUpdateDos(t *testing.T) {
|
||||
if string(contents) != expectUpdate {
|
||||
t.Fatalf("File has incorrect contents: %q", contents)
|
||||
}
|
||||
|
||||
newStat, err := os.Stat(fullPath)
|
||||
if err != nil {
|
||||
t.Fatal("Unable to stat file: %v", err)
|
||||
}
|
||||
|
||||
if oldStat.Sys().(*syscall.Stat_t).Ino == newStat.Sys().(*syscall.Stat_t).Ino {
|
||||
t.Fatal("File was not replaced: %s", fullPath)
|
||||
}
|
||||
}
|
||||
|
||||
// A middle ground noop, values are unchanged but we did have a value.
|
||||
@ -252,8 +295,8 @@ func TestWriteEnvFileDos2Unix(t *testing.T) {
|
||||
t.Fatal("Unable to stat file: %v", err)
|
||||
}
|
||||
|
||||
if oldStat.ModTime() != newStat.ModTime() {
|
||||
t.Fatal("File mtime changed.")
|
||||
if oldStat.Sys().(*syscall.Stat_t).Ino == newStat.Sys().(*syscall.Stat_t).Ino {
|
||||
t.Fatal("File was not replaced: %s", fullPath)
|
||||
}
|
||||
}
|
||||
|
||||
@ -300,8 +343,8 @@ func TestWriteEnvFileEmpty(t *testing.T) {
|
||||
t.Fatal("Unable to stat file: %v", err)
|
||||
}
|
||||
|
||||
if oldStat.ModTime() != newStat.ModTime() {
|
||||
t.Fatal("File mtime changed.")
|
||||
if oldStat.Sys().(*syscall.Stat_t).Ino != newStat.Sys().(*syscall.Stat_t).Ino {
|
||||
t.Fatal("File was replaced: %s", fullPath)
|
||||
}
|
||||
}
|
||||
|
||||
@ -368,8 +411,6 @@ func TestWriteEnvFileNameFailure(t *testing.T) {
|
||||
defer os.RemoveAll(dir)
|
||||
|
||||
name := "foo.conf"
|
||||
fullPath := path.Join(dir, name)
|
||||
ioutil.WriteFile(fullPath, []byte(base), 0000)
|
||||
|
||||
ef := EnvFile{
|
||||
File: &File{
|
||||
|
Loading…
Reference in New Issue
Block a user