Passed
Push — main ( f3935e...19af13 )
by Rafael
01:35
created

files/utils_test.go   A

Size/Duplication

Total Lines 95
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 19
eloc 62
dl 0
loc 95
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A files.TestFileExists 0 19 5
A files.TestDirectoryExists 0 18 5
A files.TestGetOrCreateFile 0 10 1
A files.removeFile 0 4 2
A files.validateContent 0 10 3
A files.validateEmptyFile 0 10 3
1
package files
2
3
import (
4
	"io/ioutil"
5
	"os"
6
	"testing"
7
)
8
9
func TestDirectoryExists(t *testing.T) {
10
	dir, _ := ioutil.TempDir("", "*")
11
12
	if exists, err := FileExists(dir); err != nil {
13
		t.Errorf("Should not be an error: %v", err.Error())
14
	} else {
15
		if !exists {
16
			t.Errorf("Directory should exist: %v", dir)
17
		}
18
	}
19
20
	os.RemoveAll(dir)
21
22
	if exists, err := FileExists(dir); err != nil {
23
		t.Errorf("Should not be an error: %v", err.Error())
24
	} else {
25
		if exists {
26
			t.Errorf("Directory should not exist: %v", dir)
27
		}
28
	}
29
}
30
31
func TestFileExists(t *testing.T) {
32
	file, _ := ioutil.TempFile("", "test*")
33
	file.Close()
34
35
	if exists, err := FileExists(file.Name()); err != nil {
36
		t.Errorf("Should not be an error: %v", err.Error())
37
	} else {
38
		if !exists {
39
			t.Errorf("File should exist: %v", file.Name())
40
		}
41
	}
42
43
	os.Remove(file.Name())
44
45
	if exists, err := FileExists(file.Name()); err != nil {
46
		t.Errorf("Should not be an error: %v", err.Error())
47
	} else {
48
		if exists {
49
			t.Errorf("File should not exist: %v", file.Name())
50
		}
51
	}
52
}
53
54
func TestGetOrCreateFile(t *testing.T) {
55
	file, _ := ioutil.TempFile("", "test*")
56
	file.WriteString("This is a line of text")
57
	file.Close()
58
59
	validateContent(t, file.Name(), "This is a line of text")
60
61
	removeFile(t, file.Name())
62
	validateEmptyFile(t, file.Name())
63
	os.Remove(file.Name())
64
}
65
66
func validateContent(t *testing.T, path, content string) {
67
	f, err := GetOrCreateFile(path)
68
	defer f.Close()
69
70
	if err != nil {
71
		t.Error(err)
72
		t.Fail()
73
	} else if data, _ := ioutil.ReadFile(f.Name()); string(data) != content {
74
		t.Errorf("File should have the content %v but was %v", content, string(data))
75
		t.Fail()
76
	}
77
}
78
79
func validateEmptyFile(t *testing.T, path string) {
80
	f, err := GetOrCreateFile(path)
81
	defer f.Close()
82
83
	if err != nil {
84
		t.Error(err)
85
		t.Fail()
86
	} else if data, _ := ioutil.ReadFile(f.Name()); len(data) != 0 {
87
		t.Errorf("File should be empty but was %d bytes", len(data))
88
		t.Fail()
89
	}
90
}
91
92
func removeFile(t *testing.T, path string) {
93
	if err := os.Remove(path); err != nil {
94
		t.Errorf("Unable to remove file: %v", err.Error())
95
		t.Fail()
96
	}
97
}
98