summaryrefslogtreecommitdiffstats
path: root/pkg/integration
AgeCommit message (Collapse)Author
2023-08-02Add demo for amending old commitJesse Duffield
2023-08-02Add demo for filtering branchesJesse Duffield
2023-08-02Appease linterJesse Duffield
2023-08-01Wait in demo after setting captionJesse Duffield
This looks nicer than waiting a second and then showing the caption as the action begins
2023-08-01Add explosion animation when nuking working treeJesse Duffield
I've been thinking about this for a while: I think it looks really cool if nuking your working tree actually results in a nuke animation. So I've added an opt-out config for it
2023-08-01Start in fullscreen when passing a git argJesse Duffield
Often we just want to see the desired view in fullscreen so I'm making that the default
2023-07-31Add automated demo recordings (#2853)Jesse Duffield
2023-07-31Add demo test variantJesse Duffield
We're piggybacking on our existing integration test framework to record demos that we can include in our docs
2023-07-31Show correct keybindings in force-push promptStefan Haller
2023-07-31Allow force-tagging if tag existsStefan Haller
2023-07-31Add a "Mark commit as base commit for rebase" commandStefan Haller
This allows to do the equivalent of "git rebase --onto <target> <base>", by first marking the <base> commit with the new command, and then selecting the target branch and invoking the usual rebase command there.
2023-07-31Don't show branch heads in reflog subcommitsStefan Haller
It's tricky to get this right for reflog commits wrt what's the current branch for each one; so just disable it entirely here, it's probably not something anybody needs here.
2023-07-31Visualize local branch heads in commits panelStefan Haller
We want to mark all local branch heads with a "*" in the local commits panel, to make it easier to see how branches are stacked onto each other. In order to not confuse users with "*" markers that they don't understand, do this only for the case where users actually use stacked branches; those users are likely not going to be confused by the display. This means we want to filter out a few branch heads that shouldn't get the marker: the current branch, any main branch, and any old branch that has been merged to master already.
2023-07-31Make bisect/basic.go test more concreteStefan Haller
- check out a non-main branch before we start - add authors to expected commits so that we can see whether the commits show an asterisk - explicitly check what the top line displays after bisecting has started This shows that the detached head shows an asterisk, which we don't want. We'll fix that in the next commit.
2023-07-31Add author short names to commits in testStefan Haller
This allow us to check not only whether a given commit has the branch head marker, but also that other commits _don't_ have it, which is important.
2023-07-31Improve updateRef testStefan Haller
This test not only tests the correct handling and display of the updateRef command, but also the visualization of branch heads in the commits panel. Since we are about to change the behavior here, extend the test so that a master commit is added (we don't want this to be visualized as a branch head), and then a stack of two non-main branches. At the end of this branch we only want to visualize the head commit of the first.
2023-07-31Remove the old experimentalShowBranchHeads mechanism and configStefan Haller
We are going to replace it with a better one later in this branch.
2023-07-30Remove secureexec packageJesse Duffield
From the go 1.19 release notes: Command and LookPath no longer allow results from a PATH search to be found relative to the current directory. This removes a common source of security problems but may also break existing programs that depend on using, say, exec.Command("prog") to run a binary named prog (or, on Windows, prog.exe) in the current directory. See the os/exec package documentation for information about how best to update such programs.
2023-07-30Standardise on using lo for slice functionsJesse Duffield
We've been sometimes using lo and sometimes using my slices package, and we need to pick one for consistency. Lo is more extensive and better maintained so we're going with that. My slices package was a superset of go's own slices package so in some places I've just used the official one (the methods were just wrappers anyway). I've also moved the remaining methods into the utils package.
2023-07-30Fix flakey worktree testsJesse Duffield
In the presentation layer, when showing branches, we'll show worktrees against branches if they're associated. But there was a race condition: if the worktree model was refreshed after the branches model, it wouldn't be used in the presentation layer when it came time to render the branches. A better solution would be to have some way of signalling that a particular context needs to be refreshed and after all the models are done being refreshed, we then refresh the contexts. This will prevent double-renders
2023-07-30Fix bug where worktree view would take over window upon switching branchesJesse Duffield
When switching worktrees (which we can now do via the branch view) we re-layout the windows and their views. We had the worktree view ahead of the file view based on the Flatten() method in context.go, because it used to be associated with the branches panel.
2023-07-30Add section in integration readme about testing against old git versionsJesse Duffield
2023-07-30Use fields rather than methods on worktreesJesse Duffield
I would prefer to use methods to keep things immutable but I'd rather be consistent with the other models and update them all at once
2023-07-30Centralise logic for obtaining repo pathsJesse Duffield
There are quite a few paths you might want to get e.g. the repo's path, the worktree's path, the repo's git dir path, the worktree's git dir path. I want these all obtained once and then used when needed rather than having to have IO whenever we need them. This is not so much about reducing time spent on IO as it is about not having to care about errors every time we want a path.
2023-07-30Add test for opening lazygit in the worktree of a bare repoJesse Duffield
2023-07-30Update repo switch logicJesse Duffield
We now always re-use the state of the repo if we're returning to it, and we always reset the windows to their default tabs. We reset to default tabs because it's easy to implement. If people want to: * have tab states be retained when switching * have tab states specific to the current repo retained when switching back Then we'll need to revisit this
2023-07-30Add test for retained context focus when switching worktreesJesse Duffield
2023-07-30Support fastforwarding worktreeJesse Duffield
2023-07-30Add more worktree testsJesse Duffield
2023-07-30Add worktree tests for removing/detachingJesse Duffield
2023-07-30Add worktree integration testsJesse Duffield
2023-07-30Fix testsJesse Duffield
Going and fixing up some submodule tests which were broken by bad assumptions with worktree code
2023-07-30Fix testsJesse Duffield
We now change directories to the repo on startup so we don't need to determine the test path in some special way
2023-07-29When bisecting, always mark the current commit as good/bad, not the selectedStefan Haller
For marking as good or bad, the current commit is pretty much always the one you want to mark, not the selected. It's different for skipping; sometimes you know already that a certain commit doesn't compile, for example, so you might navigate there and mark it as skipped. So in the case that the current commit is not the selected one, we now offer two separate menu entries for skipping, one for the current commit and one for the selected.
2023-07-29Add bisect menu entry that lets you choose bisect termsStefan Haller
This can be useful if you want to find the commit that fixed a bug (you'd use "broken/fixed" instead of "good/bad" in this case), or if you want to find the commit that brought a big performance improvement (use "slow/fast"). It's pretty mind-bending to have to use "good/bad" in these cases, and swap their meanings in your head. Thankfully, lazygit already had support for using custom terms during the bisect (for the case that a bisect was started on the command-line, I suppose), so all that's needed is adding a way to specify them in lazygit.
2023-07-29feat: add os.copyToClipboardCmd to allow for a custom command #1055 (#2784)Jesse Duffield
2023-07-29feat: add os.copyToClipboardCmd to allow for a custom commandRed S
Issue #1055 test: CopyPatchToClipboard (temporary commit for review)
2023-07-23Prompt for commit message when moving a custom patch to a new commitStefan Haller
2023-07-22Better tag creation UXJesse Duffield
Previously we used a single-line prompt for a tag annotation. Now we're using the commit message prompt. I've had to update other uses of that prompt to allow the summary and description labels to be passed in
2023-07-22Use fuzzy search when filtering a viewJesse Duffield
This adds fuzzy filtering instead of exact match filtering, which is more forgiving of typos and allows more efficiency.
2023-07-22Keep track of authors across local commits and branch commits for suggestionsJesse Duffield
Previously, we would only show the authors based on local commits, but sometimes you want to set a commit author to that of a commit on another branch. Now, so long as you've viewed the branch's commits, the author will appear as a suggestion.
2023-07-20Add test for crashing on empty menuJesse Duffield
2023-07-19Add integration test for accordion modeJesse Duffield
2023-07-13Allow checking for merge conflicts after running a custom commandJesse Duffield
We have a use-case to rebind 'm' to the merge action in the branches panel. There's three ways to handle this: 1) For all global keybindings, define a per-panel key that invokes it 2) Give a name to all controller actions and allow them to be invoked in custom commands 3) Allow checking for merge conflicts after running a custom command so that users can add their own 'git merge' custom command that matches the in-built action Option 1 is hairy, Option 2 though good for users introduces new backwards compatibility issues that I don't want to do right now, and option 3 is trivially easy to implement so that's what I'm doing. I've put this under an 'after' key so that we can add more things later. I'm imagining other things like being able to move the cursor to a newly added item etc. I considered always running this hook by default but I'd rather not: it's matching on the output text and I'd rather something like that be explicitly opted-into to avoid cases where we erroneously believe that there are conflicts.
2023-07-10Fix pull rebase testsStefan Haller
It seems that older git versions would drop empty commits when rebasing. Since this aspect is not relevant to what we're testing here, fix this by simply avoiding empty commits in these tests.
2023-07-10Fix conflict testRyooooooga
The test apply_in_reverse_with_conflict.go fails in git versions 2.30.8 and earlier. Apparently the output "Applied patch to 'file2' cleanly" was only added more recently. It's not essential that we check this output.
2023-07-10Fix Shell.Stash() for older versions of gitStefan Haller
Older versions need an explicit "push" subcommand for the -m option to be recognized.
2023-07-10Remove StashWithMessage functionStefan Haller
It's identical to Stash(), so use that.
2023-07-10Use -c init.defaultBranch=master to pass the desired main branch to git initStefan Haller
Older versions of git don't support the -b option yet. However, no version of git complains about the -c option, even when the init.defaultBranch config is not supported.
2023-07-10Remove mainBranch parameter from Shell.Init()Stefan Haller
For older git versions we won't be able to support any other main branch than "master", so hard-code that in Init. This doesn't fix anything for older versions yet; see the next commit for that.