diff --git a/src/engine/tcr_test.go b/src/engine/tcr_test.go index 7d3de7cb..3689e318 100644 --- a/src/engine/tcr_test.go +++ b/src/engine/tcr_test.go @@ -281,6 +281,48 @@ func Test_tcr_revert_end_state_with_commit_on_fail_enabled(t *testing.T) { } } +func Test_relaxed_source_revert(t *testing.T) { + tcr, vcsFake := initTCREngineWithFakes(nil, nil, nil, nil) + tcr.revert(*events.ATcrEvent()) + assert.Equal(t, fake.RestoreCommand, vcsFake.GetLastCommand()) +} + +func Test_relaxed_source_reverts_only_source_files(t *testing.T) { + sniffer := report.NewSniffer( + func(msg report.Message) bool { + return msg.Type.Category == report.Warning && + msg.Payload.ToString() == "1 file(s) reverted" + }, + ) + tcr, vcsFake := initTCREngineWithFakesWithFileDiffs(nil, nil, nil, nil, + vcs.FileDiffs{ + vcs.NewFileDiff("fake-src", 1, 1), + vcs.NewFileDiff("fake-test", 1, 1), + }) + tcr.revert(*events.ATcrEvent()) + sniffer.Stop() + assert.Equal(t, fake.RestoreCommand, vcsFake.GetLastCommand()) + assert.Equal(t, 1, sniffer.GetMatchCount()) +} + +func Test_relaxed_source_reverts_many_source_files(t *testing.T) { + sniffer := report.NewSniffer( + func(msg report.Message) bool { + return msg.Type.Category == report.Warning && + msg.Payload.ToString() == "2 file(s) reverted" + }, + ) + tcr, vcsFake := initTCREngineWithFakesWithFileDiffs(nil, nil, nil, nil, + vcs.FileDiffs{ + vcs.NewFileDiff("fake-src", 1, 1), + vcs.NewFileDiff("fake2-src", 1, 1), + }) + tcr.revert(*events.ATcrEvent()) + sniffer.Stop() + assert.Equal(t, fake.RestoreCommand, vcsFake.GetLastCommand()) + assert.Equal(t, 1, sniffer.GetMatchCount()) +} + func Test_tcr_cycle_end_state(t *testing.T) { testFlags := []struct { desc string @@ -342,11 +384,12 @@ func Test_tcr_cycle_end_state(t *testing.T) { } } -func initTCREngineWithFakes( +func initTCREngineWithFakesWithFileDiffs( p *params.Params, toolchainFailures toolchain.Operations, vcsFailures fake.Commands, logItems vcs.LogItems, + fileDiffs vcs.FileDiffs, ) (*TCREngine, *fake.VCSFake) { tchn := registerFakeToolchain(toolchainFailures) lang := registerFakeLanguage(tchn) @@ -381,7 +424,7 @@ func initTCREngineWithFakes( factory.InitVCS = func(_ string, _ string) (vcs.Interface, error) { fakeSettings := fake.Settings{ FailingCommands: vcsFailures, - ChangedFiles: vcs.FileDiffs{vcs.NewFileDiff("fake-src", 1, 1)}, + ChangedFiles: fileDiffs, Logs: logItems, } vcsFake = fake.NewVCSFake(fakeSettings) @@ -393,6 +436,21 @@ func initTCREngineWithFakes( tcr.fsWatchRearmDelay = 0 tcr.traceReporterWaitingTime = 0 return tcr, vcsFake + +} + +func initTCREngineWithFakes( + p *params.Params, + toolchainFailures toolchain.Operations, + vcsFailures fake.Commands, + logItems vcs.LogItems, +) (*TCREngine, *fake.VCSFake) { + return initTCREngineWithFakesWithFileDiffs( + p, + toolchainFailures, + vcsFailures, + logItems, + vcs.FileDiffs{vcs.NewFileDiff("fake-src", 1, 1)}) } func registerFakeToolchain(failures toolchain.Operations) string { diff --git a/src/language/language_test_fake.go b/src/language/language_test_fake.go index 20dc2252..2d4d6042 100644 --- a/src/language/language_test_fake.go +++ b/src/language/language_test_fake.go @@ -24,7 +24,10 @@ SOFTWARE. package language -import "github.com/murex/tcr/toolchain" +import ( + "github.com/murex/tcr/toolchain" + "strings" +) type allFilesFunc func() ([]string, error) @@ -84,8 +87,8 @@ func (fl *FakeLanguage) AllTestFiles() (result []string, err error) { } // IsSrcFile returns true if the provided filePath is recognized as a source file for this language -func (fl *FakeLanguage) IsSrcFile(_ string) bool { - return true +func (fl *FakeLanguage) IsSrcFile(name string) bool { + return !strings.Contains(name, "test") } // GetName uses real Language behaviour