1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-30 03:23:08 +03:00

add code generator for creating tests list

This commit is contained in:
Jesse Duffield
2023-02-19 11:44:17 +11:00
parent bff076c70a
commit f999bbce7c
7 changed files with 201 additions and 80 deletions

View File

@ -1,3 +1,5 @@
//go:generate go run tests_generator.go
package tests
import (
@ -10,80 +12,8 @@ import (
"github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/lazycore/pkg/utils"
"github.com/jesseduffield/lazygit/pkg/integration/components"
"github.com/jesseduffield/lazygit/pkg/integration/tests/bisect"
"github.com/jesseduffield/lazygit/pkg/integration/tests/branch"
"github.com/jesseduffield/lazygit/pkg/integration/tests/cherry_pick"
"github.com/jesseduffield/lazygit/pkg/integration/tests/commit"
"github.com/jesseduffield/lazygit/pkg/integration/tests/config"
"github.com/jesseduffield/lazygit/pkg/integration/tests/custom_commands"
"github.com/jesseduffield/lazygit/pkg/integration/tests/diff"
"github.com/jesseduffield/lazygit/pkg/integration/tests/file"
"github.com/jesseduffield/lazygit/pkg/integration/tests/filter_by_path"
"github.com/jesseduffield/lazygit/pkg/integration/tests/interactive_rebase"
"github.com/jesseduffield/lazygit/pkg/integration/tests/misc"
"github.com/jesseduffield/lazygit/pkg/integration/tests/patch_building"
"github.com/jesseduffield/lazygit/pkg/integration/tests/stash"
"github.com/jesseduffield/lazygit/pkg/integration/tests/submodule"
"github.com/jesseduffield/lazygit/pkg/integration/tests/sync"
)
// Here is where we lists the actual tests that will run. When you create a new test,
// be sure to add it to this list.
var tests = []*components.IntegrationTest{
misc.ConfirmOnQuit,
bisect.Basic,
bisect.FromOtherBranch,
branch.CheckoutByName,
branch.Delete,
branch.Rebase,
branch.RebaseAndDrop,
branch.RebaseDoesNotAutosquash,
branch.Suggestions,
branch.Reset,
branch.DetachedHead,
cherry_pick.CherryPick,
cherry_pick.CherryPickConflicts,
commit.Commit,
commit.CommitMultiline,
commit.Revert,
commit.NewBranch,
commit.Staged,
commit.Unstaged,
commit.StagedWithoutHooks,
commit.DiscardOldFileChange,
commit.StageRangeOfLines,
custom_commands.Basic,
custom_commands.FormPrompts,
custom_commands.MenuFromCommand,
custom_commands.MenuFromCommandsOutput,
custom_commands.MultiplePrompts,
file.DirWithUntrackedFile,
file.DiscardChanges,
file.DiscardStagedChanges,
file.GitIgnore,
interactive_rebase.AmendMerge,
interactive_rebase.One,
stash.Rename,
stash.Stash,
stash.StashIncludingUntrackedFiles,
config.RemoteNamedStar,
diff.Diff,
diff.DiffAndApplyPatch,
diff.DiffCommits,
diff.IgnoreWhitespace,
sync.FetchPrune,
sync.RenameBranchAndPull,
filter_by_path.CliArg,
filter_by_path.SelectFile,
filter_by_path.TypeFile,
patch_building.BuildPatchAndCopyToClipboard,
submodule.Add,
submodule.Remove,
submodule.Enter,
submodule.Reset,
}
func GetTests() []*components.IntegrationTest {
// first we ensure that each test in this directory has actually been added to the above list.
testCount := 0
@ -99,8 +29,8 @@ func GetTests() []*components.IntegrationTest {
if err := filepath.Walk(filepath.Join(utils.GetLazyRootDirectory(), "pkg/integration/tests"), func(path string, info os.FileInfo, err error) error {
if !info.IsDir() && strings.HasSuffix(path, ".go") {
// ignoring this current file
if filepath.Base(path) == "tests.go" {
// ignoring non-test files
if filepath.Base(path) == "tests.go" || filepath.Base(path) == "tests_gen.go" || filepath.Base(path) == "tests_generator.go" {
return nil
}
@ -121,13 +51,13 @@ func GetTests() []*components.IntegrationTest {
}
if len(missingTestNames) > 0 {
panic(fmt.Sprintf("The following tests are missing from the list of tests: %s. You need to add them to `pkg/integration/tests/tests.go`.", strings.Join(missingTestNames, ", ")))
panic(fmt.Sprintf("The following tests are missing from the list of tests: %s. You need to add them to `pkg/integration/tests/tests_gen.go`. Use `go generate ./...` to regenerate the tests list.", strings.Join(missingTestNames, ", ")))
}
if testCount > len(tests) {
panic("you have not added all of the tests to the tests list in `pkg/integration/tests/tests.go`")
panic("you have not added all of the tests to the tests list in `pkg/integration/tests/tests_gen.go`. Use `go generate ./...` to regenerate the tests list.")
} else if testCount < len(tests) {
panic("There are more tests in `pkg/integration/tests/tests.go` than there are test files in the tests directory. Ensure that you only have one test per file and you haven't included the same test twice in the tests list.")
panic("There are more tests in `pkg/integration/tests/tests_gen.go` than there are test files in the tests directory. Ensure that you only have one test per file and you haven't included the same test twice in the tests list. Use `go generate ./...` to regenerate the tests list.")
}
return tests