Skip to content

Commit 68191ff

Browse files
Use file named .talismanrc on in-memory fs for tests
Because it's an in-memory filesystem, we can just use a file named .talismanrc instead of creating and using a temp file. Authored-by: Owen Nelson <owen.nelson@thoughtworks.com>
1 parent 0a218e1 commit 68191ff

File tree

6 files changed

+34
-54
lines changed

6 files changed

+34
-54
lines changed

detector/filecontent/filecontent_detector.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ func (fc *FileContentDetector) Test(comparator helpers.IgnoreEvaluator, currentA
114114
return
115115
}
116116

117-
if string(addition.Name) == talismanrc.DefaultRCFileName {
117+
if string(addition.Name) == talismanrc.RCFileName {
118118
content := re.ReplaceAllString(string(addition.Data), "")
119119
data := []byte(content)
120120
addition.Data = data
@@ -169,7 +169,7 @@ func processContent(c content, threshold severity.Severity, result *helpers.Dete
169169
log.WithFields(log.Fields{
170170
"filePath": c.path,
171171
}).Info(c.contentType.getInfo())
172-
if string(c.name) == talismanrc.DefaultRCFileName || !c.severity.ExceedsThreshold(threshold) {
172+
if string(c.name) == talismanrc.RCFileName || !c.severity.ExceedsThreshold(threshold) {
173173
result.Warn(c.path, "filecontent", fmt.Sprintf(c.contentType.getMessageFormat(), formatForReporting(res)), []string{}, c.severity)
174174
} else {
175175
result.Fail(c.path, "filecontent", fmt.Sprintf(c.contentType.getMessageFormat(), formatForReporting(res)), []string{}, c.severity)

detector/helpers/detection_results_test.go

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -116,18 +116,13 @@ func TestTalismanRCSuggestionWhenThereAreFailures(t *testing.T) {
116116

117117
// Creating temp file with some content
118118
fs := afero.NewMemMapFs()
119-
file, err := afero.TempFile(fs, "", "talismanrc")
120-
assert.NoError(t, err)
121-
ignoreFile := file.Name()
122-
123119
talismanrc.SetFs__(fs)
124-
talismanrc.SetRcFilename__(ignoreFile)
125120

126121
existingContent := `fileignoreconfig:
127122
- filename: existing.pem
128123
checksum: 123444ddssa75333b25b6275f97680604add51b84eb8f4a3b9dcbbc652e6f27ac
129124
`
130-
err = afero.WriteFile(fs, ignoreFile, []byte(existingContent), 0666)
125+
err := afero.WriteFile(fs, talismanrc.RCFileName, []byte(existingContent), 0666)
131126
assert.NoError(t, err)
132127

133128
// The tests below depend on the upper configuration which is shared across all three of them. Hence the order in
@@ -137,39 +132,39 @@ func TestTalismanRCSuggestionWhenThereAreFailures(t *testing.T) {
137132
prompter.EXPECT().Confirm(gomock.Any()).Return(false).Times(0)
138133

139134
results.Report(promptContext, "default")
140-
bytesFromFile, err := afero.ReadFile(fs, ignoreFile)
135+
bytesFromFile, err := afero.ReadFile(fs, talismanrc.RCFileName)
141136

142137
assert.NoError(t, err)
143138
assert.Equal(t, existingContent, string(bytesFromFile))
144139
})
145140

146-
_ = afero.WriteFile(fs, ignoreFile, []byte(existingContent), 0666)
141+
_ = afero.WriteFile(fs, talismanrc.RCFileName, []byte(existingContent), 0666)
147142
t.Run("when user declines, entry should not be added to talismanrc", func(t *testing.T) {
148143
promptContext := prompt.NewPromptContext(true, prompter)
149144
prompter.EXPECT().Confirm("Do you want to add some_file.pem with above checksum in talismanrc ?").Return(false)
150145
results.Fail("some_file.pem", "filecontent", "Bomb", []string{}, severity.Low)
151146

152147
results.Report(promptContext, "default")
153-
bytesFromFile, err := afero.ReadFile(fs, ignoreFile)
148+
bytesFromFile, err := afero.ReadFile(fs, talismanrc.RCFileName)
154149

155150
assert.NoError(t, err)
156151
assert.Equal(t, existingContent, string(bytesFromFile))
157152
})
158153

159-
_ = afero.WriteFile(fs, ignoreFile, []byte(existingContent), 0666)
154+
_ = afero.WriteFile(fs, talismanrc.RCFileName, []byte(existingContent), 0666)
160155
t.Run("when interactive flag is set to false, it should not ask user", func(t *testing.T) {
161156
promptContext := prompt.NewPromptContext(false, prompter)
162157
prompter.EXPECT().Confirm(gomock.Any()).Return(false).Times(0)
163158
results.Fail("some_file.pem", "filecontent", "Bomb", []string{}, severity.Low)
164159

165160
results.Report(promptContext, "default")
166-
bytesFromFile, err := afero.ReadFile(fs, ignoreFile)
161+
bytesFromFile, err := afero.ReadFile(fs, talismanrc.RCFileName)
167162

168163
assert.NoError(t, err)
169164
assert.Equal(t, existingContent, string(bytesFromFile))
170165
})
171166

172-
_ = afero.WriteFile(fs, ignoreFile, []byte(existingContent), 0666)
167+
_ = afero.WriteFile(fs, talismanrc.RCFileName, []byte(existingContent), 0666)
173168
t.Run("when user confirms, entry should be appended to given ignore file", func(t *testing.T) {
174169
promptContext := prompt.NewPromptContext(true, prompter)
175170
prompter.EXPECT().Confirm("Do you want to add some_file.pem with above checksum in talismanrc ?").Return(true)
@@ -184,13 +179,13 @@ func TestTalismanRCSuggestionWhenThereAreFailures(t *testing.T) {
184179
version: "1.0"
185180
`
186181
results.Report(promptContext, "default")
187-
bytesFromFile, err := afero.ReadFile(fs, ignoreFile)
182+
bytesFromFile, err := afero.ReadFile(fs, talismanrc.RCFileName)
188183

189184
assert.NoError(t, err)
190185
assert.Equal(t, expectedFileContent, string(bytesFromFile))
191186
})
192187

193-
_ = afero.WriteFile(fs, ignoreFile, []byte(existingContent), 0666)
188+
_ = afero.WriteFile(fs, talismanrc.RCFileName, []byte(existingContent), 0666)
194189
t.Run("when user confirms, entry for existing file should updated", func(t *testing.T) {
195190
promptContext := prompt.NewPromptContext(true, prompter)
196191
prompter.EXPECT().Confirm("Do you want to add existing.pem with above checksum in talismanrc ?").Return(true)
@@ -203,13 +198,13 @@ version: "1.0"
203198
version: "1.0"
204199
`
205200
results.Report(promptContext, "default")
206-
bytesFromFile, err := afero.ReadFile(fs, ignoreFile)
201+
bytesFromFile, err := afero.ReadFile(fs, talismanrc.RCFileName)
207202

208203
assert.NoError(t, err)
209204
assert.Equal(t, expectedFileContent, string(bytesFromFile))
210205
})
211206

212-
_ = afero.WriteFile(fs, ignoreFile, []byte(existingContent), 0666)
207+
_ = afero.WriteFile(fs, talismanrc.RCFileName, []byte(existingContent), 0666)
213208
t.Run("when user confirms for multiple entries, they should be appended to given ignore file", func(t *testing.T) {
214209
promptContext := prompt.NewPromptContext(true, prompter)
215210
prompter.EXPECT().Confirm("Do you want to add some_file.pem with above checksum in talismanrc ?").Return(true)
@@ -228,12 +223,12 @@ version: "1.0"
228223
version: "1.0"
229224
`
230225
results.Report(promptContext, "default")
231-
bytesFromFile, err := afero.ReadFile(fs, ignoreFile)
226+
bytesFromFile, err := afero.ReadFile(fs, talismanrc.RCFileName)
232227

233228
assert.NoError(t, err)
234229
assert.Equal(t, expectedFileContent, string(bytesFromFile))
235230
})
236231

237-
err = fs.Remove(ignoreFile)
232+
err = fs.Remove(talismanrc.RCFileName)
238233
assert.NoError(t, err)
239234
}

detector/pattern/pattern_detector.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func (detector PatternDetector) processMatch(match match, result *helpers.Detect
8888
for _, detectionWithSeverity := range match.detections {
8989
for _, detection := range detectionWithSeverity.detections {
9090
if detection != "" {
91-
if string(match.name) == talismanrc.DefaultRCFileName || !detectionWithSeverity.severity.ExceedsThreshold(threshold) {
91+
if string(match.name) == talismanrc.RCFileName || !detectionWithSeverity.severity.ExceedsThreshold(threshold) {
9292
log.WithFields(log.Fields{
9393
"filePath": match.path,
9494
"pattern": detection,

talismanrc/rc_file.go

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,18 @@ import (
1010
)
1111

1212
const (
13-
//DefaultRCFileName represents the name of default file in which all the ignore patterns are configured in new version
14-
DefaultRCVersion = "1.0"
15-
DefaultRCFileName string = ".talismanrc"
13+
// RCFileName represents the name of default file in which all the ignore patterns are configured in new version
14+
RCFileName = ".talismanrc"
15+
DefaultRCVersion = "1.0"
1616
)
1717

1818
var (
19-
fs = afero.NewOsFs()
20-
currentRCFileName = DefaultRCFileName
19+
fs = afero.NewOsFs()
2120
)
2221

2322
// Load creates a TalismanRC struct based on a .talismanrc file, if present
2423
func Load() (*TalismanRC, error) {
25-
fileContents, err := afero.ReadFile(fs, currentRCFileName)
24+
fileContents, err := afero.ReadFile(fs, RCFileName)
2625
if err != nil {
2726
// File does not exist or is not readable, proceed as if there is no .talismanrc
2827
fileContents = []byte{}
@@ -46,16 +45,12 @@ func talismanRCFromYaml(fileContents []byte) (*TalismanRC, error) {
4645

4746
func (tRC *TalismanRC) saveToFile() {
4847
ignoreEntries, _ := yaml.Marshal(&tRC)
49-
err := afero.WriteFile(fs, currentRCFileName, ignoreEntries, 0644)
48+
err := afero.WriteFile(fs, RCFileName, ignoreEntries, 0644)
5049
if err != nil {
51-
logr.Errorf("error writing to %s: %s", currentRCFileName, err)
50+
logr.Errorf("error writing to %s: %s", RCFileName, err)
5251
}
5352
}
5453

5554
func SetFs__(_fs afero.Fs) {
5655
fs = _fs
5756
}
58-
59-
func SetRcFilename__(rcFileName string) {
60-
currentRCFileName = rcFileName
61-
}

talismanrc/rc_file_test.go

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,18 @@ import (
1111

1212
func TestLoadingFromFile(t *testing.T) {
1313
fs := afero.NewMemMapFs()
14-
file, err := afero.TempFile(fs, "", DefaultRCFileName)
15-
assert.NoError(t, err, "Problem setting up test .talismanrc?")
16-
talismanRCFile := file.Name()
1714
SetFs__(fs)
1815

1916
t.Run("Creates an empty TalismanRC if .talismanrc file doesn't exist", func(t *testing.T) {
20-
SetRcFilename__("not-a-file")
17+
talismanRCFileExists, _ := afero.Exists(fs, RCFileName)
18+
assert.False(t, talismanRCFileExists, ".talismanrc file should NOT exist for this test!")
2119
emptyRC, err := Load()
2220
assert.NoError(t, err, "Should not error if there is a problem reading the file")
2321
assert.Equal(t, &TalismanRC{Version: DefaultRCVersion}, emptyRC)
2422
})
2523

2624
t.Run("Loads all valid TalismanRC fields", func(t *testing.T) {
27-
SetRcFilename__(talismanRCFile)
28-
err = afero.WriteFile(fs, talismanRCFile, []byte(fullyConfiguredTalismanRC), 0666)
25+
err := afero.WriteFile(fs, RCFileName, []byte(fullyConfiguredTalismanRC), 0666)
2926
assert.NoError(t, err, "Problem setting up test .talismanrc?")
3027

3128
talismanRCFromFile, _ := Load()
@@ -45,8 +42,6 @@ func TestLoadingFromFile(t *testing.T) {
4542
}
4643
assert.Equal(t, expectedTalismanRC, talismanRCFromFile)
4744
})
48-
49-
SetRcFilename__(DefaultRCFileName)
5045
}
5146

5247
func TestWritingToFile(t *testing.T) {
@@ -55,22 +50,22 @@ func TestWritingToFile(t *testing.T) {
5550
SetFs__(fs)
5651

5752
t.Run("When there is no .talismanrc file", func(t *testing.T) {
58-
talismanRCFileExists, _ := afero.Exists(fs, DefaultRCFileName)
53+
talismanRCFileExists, _ := afero.Exists(fs, RCFileName)
5954
assert.False(t, talismanRCFileExists, "Problem setting up tests")
6055
tRC.saveToFile()
61-
talismanRCFileExists, _ = afero.Exists(fs, DefaultRCFileName)
56+
talismanRCFileExists, _ = afero.Exists(fs, RCFileName)
6257
assert.True(t, talismanRCFileExists, "Should have created a new .talismanrc file")
63-
fileContents, _ := afero.ReadFile(fs, DefaultRCFileName)
58+
fileContents, _ := afero.ReadFile(fs, RCFileName)
6459
assert.Equal(t, "version: \"1.0\"\n", string(fileContents))
6560
})
6661

6762
t.Run("When there already is a .talismanrc file", func(t *testing.T) {
68-
err := afero.WriteFile(fs, DefaultRCFileName, []byte("Some existing content to overwrite"), 0666)
63+
err := afero.WriteFile(fs, RCFileName, []byte("Some existing content to overwrite"), 0666)
6964
assert.NoError(t, err, "Problem setting up tests")
7065
tRC.saveToFile()
71-
talismanRCFileExists, _ := afero.Exists(fs, DefaultRCFileName)
66+
talismanRCFileExists, _ := afero.Exists(fs, RCFileName)
7267
assert.True(t, talismanRCFileExists, "Should have created a new .talismanrc file")
73-
fileContents, _ := afero.ReadFile(fs, DefaultRCFileName)
68+
fileContents, _ := afero.ReadFile(fs, RCFileName)
7469
assert.Equal(t, "version: \"1.0\"\n", string(fileContents))
7570
})
7671
}

talismanrc/talismanrc_test.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,7 @@ func TestIgnoringDetectors(t *testing.T) {
126126

127127
func TestAddingFileIgnores(t *testing.T) {
128128
fs := afero.NewMemMapFs()
129-
file, err := afero.TempFile(fs, "", DefaultRCFileName)
130-
assert.NoError(t, err)
131-
ignoreFile := file.Name()
132-
133129
SetFs__(fs)
134-
SetRcFilename__(ignoreFile)
135130

136131
ignoreConfig := FileIgnoreConfig{
137132
FileName: "Foo",
@@ -141,11 +136,11 @@ func TestAddingFileIgnores(t *testing.T) {
141136
initialRCConfig.AddIgnores([]FileIgnoreConfig{ignoreConfig})
142137
newRCConfig, _ := Load()
143138
assert.Equal(t, 1, len(newRCConfig.FileIgnoreConfig))
144-
_ = fs.Remove(ignoreFile)
139+
_ = fs.Remove(RCFileName)
145140
})
146141

147142
t.Run("When .talismanrc has lots of configurations", func(t *testing.T) {
148-
err = afero.WriteFile(fs, ignoreFile, []byte(fullyConfiguredTalismanRC), 0666)
143+
err := afero.WriteFile(fs, RCFileName, []byte(fullyConfiguredTalismanRC), 0666)
149144
assert.NoError(t, err)
150145

151146
initialRCConfig, _ := Load()

0 commit comments

Comments
 (0)