Skip to content

Commit f17be9f

Browse files
ahumenbergerbauersimon
authored andcommitted
fix, Make sure that the test template is not on disk after generating
If the test file is not removed, then a test file exists that is not coming from the model.
1 parent 09ace2d commit f17be9f

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

evaluate/task/write-test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ func (t *WriteTests) Run(ctx evaltask.Context) (repositoryAssessment map[string]
144144
return repositoryAssessment, problems, nil
145145
}
146146

147+
// symflowerTemplateAsString generates a test template for the given file and makes sure that the repository is in the same state as before.
147148
func symflowerTemplateAsString(ctx evaltask.Context, taskLogger *taskLogger, dataPath string, filePath string) (testTemplate string, err error) {
148149
_, err = symflowerTemplate(taskLogger.Logger, dataPath, ctx.Language, filePath) // TODO Incorporate template processing time. https://github.com/symflower/eval-dev-quality/issues/350
149150
if err != nil {
@@ -155,6 +156,10 @@ func symflowerTemplateAsString(ctx evaltask.Context, taskLogger *taskLogger, dat
155156
return "", pkgerrors.WithMessagef(err, "reading Symflower template from %q", testTemplateFilePath)
156157
}
157158

159+
if err := ctx.Repository.Reset(ctx.Logger); err != nil {
160+
ctx.Logger.Panicf("ERROR: unable to reset temporary repository path: %s", err)
161+
}
162+
158163
return string(testTemplateData), nil
159164
}
160165

evaluate/task/write-test_test.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"testing"
99

1010
"github.com/stretchr/testify/assert"
11+
"github.com/stretchr/testify/mock"
1112
"github.com/stretchr/testify/require"
1213
"github.com/symflower/eval-dev-quality/evaluate/metrics"
1314
metricstesting "github.com/symflower/eval-dev-quality/evaluate/metrics/testing"
@@ -123,6 +124,52 @@ func TestWriteTestsRun(t *testing.T) {
123124
})
124125
})
125126

127+
{
128+
temporaryDirectoryPath := t.TempDir()
129+
repositoryPath := filepath.Join(temporaryDirectoryPath, "golang", "plain")
130+
require.NoError(t, osutil.CopyTree(filepath.Join("..", "..", "testdata", "golang", "plain"), repositoryPath))
131+
132+
modelMock := modeltesting.NewMockCapabilityWriteTestsNamed(t, "mocked-model")
133+
// Simulate that a model does not generate anything.
134+
modelMock.MockCapabilityWriteTests.On("WriteTests", mock.Anything).Return(metricstesting.AssessmentsWithProcessingTime, nil)
135+
136+
validate(t, &tasktesting.TestCaseTask{
137+
Name: "Reset symflower template so it's not mistaken for model solution",
138+
139+
Model: modelMock,
140+
Language: &golang.Language{},
141+
TestDataPath: temporaryDirectoryPath,
142+
RepositoryPath: filepath.Join("golang", "plain"),
143+
144+
ExpectedRepositoryAssessment: map[string]map[evaltask.Identifier]metrics.Assessments{
145+
"plain.go": map[evaltask.Identifier]metrics.Assessments{
146+
IdentifierWriteTests: metrics.Assessments{
147+
metrics.AssessmentKeyFilesExecutedMaximumReachable: 1,
148+
metrics.AssessmentKeyResponseNoError: 1,
149+
},
150+
IdentifierWriteTestsSymflowerFix: metrics.Assessments{
151+
metrics.AssessmentKeyFilesExecutedMaximumReachable: 1,
152+
metrics.AssessmentKeyResponseNoError: 1,
153+
},
154+
IdentifierWriteTestsSymflowerTemplate: metrics.Assessments{
155+
metrics.AssessmentKeyFilesExecutedMaximumReachable: 1,
156+
metrics.AssessmentKeyResponseNoError: 1,
157+
},
158+
IdentifierWriteTestsSymflowerTemplateSymflowerFix: metrics.Assessments{
159+
metrics.AssessmentKeyFilesExecutedMaximumReachable: 1,
160+
metrics.AssessmentKeyResponseNoError: 1,
161+
},
162+
},
163+
},
164+
ExpectedProblemContains: []string{
165+
"ERROR: no test files found",
166+
"ERROR: no test files found",
167+
"ERROR: no test files found",
168+
"ERROR: no test files found",
169+
},
170+
})
171+
}
172+
126173
t.Run("Symflower Fix", func(t *testing.T) {
127174
t.Run("Go", func(t *testing.T) {
128175
validateGo := func(t *testing.T, testName string, language language.Language, testFileContent string, expectedAssessments map[string]map[evaltask.Identifier]metrics.Assessments, expectedProblems []string, assertTestsPass bool) {

0 commit comments

Comments
 (0)