1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-08-06 22:33:07 +02:00

41 Commits

Author SHA1 Message Date
f4afeed9ff Improve .gitignoring debug executables 2025-08-01 10:30:28 +02:00
c8a1e894e0 Remove unused script lint.sh 2025-07-18 15:33:23 +02:00
59b68f9794 Clean up .gitignore
Globally ignoring all dot files and then making exceptions as needed to pull
files back in again is very error prone. It's better to explicitly exclude
everything we want to hide.

This can be seen in the vendor directory, where we omitted a lot of files
accidentally (we'll fix that in the next commit). None of these were important,
so no harm done, but still.

The reason why this came up is that I tried to look at the git history of one of
the files in .github/workflows/ using lazygit's path filtering feature, but it
didn't show up in the list of suggestions. It took me a while to realize that
that's because this list doesn't show git-ignored files. Now, .github/workflows/
wasn't really git-ignored because it was brought back by an exclamation mark
entry in the Exceptions section; but maybe the library we are using to get the
files doesn't handle these properly or something (I didn't further research
this).
2025-07-06 16:13:17 +02:00
1e8eb72b2f Do not git ignore .codespellrc
Signed-off-by: Yaroslav Halchenko <debian@onerussian.com>
2024-08-27 18:03:00 +02:00
stk
61313e5dfa Add .gitattributes file
This tells git to checkout all .md and .json files with Unix line feeds,
even on Windows. This shouldn't be a problem for working with these
files on Windows, as all modern text editors and IDEs should be capable
of editing Unix files transparently; but it makes it possible to run
`go generate ./...` on Windows, which assumes Unix line feeds in a few
places.
2024-07-01 08:36:57 +02:00
69153acfdb Remove TODO.* from .gitignore
It was added in 2018 (700f8c7e79), but I don't know for what purpose. It just
took me 15 minutes to figure out why my new file todo.go wasn't added, so I'm
removing this entry as I find it more harmful than helpful.
2024-04-22 20:55:03 +02:00
aaecd6cc40 Add coverage arg for integration tests
This PR captures the code coverage from our unit and integration tests. At the
moment it simply pushes the result to Codacy, a platform that assists with
improving code health. Right now the focus is just getting visibility but I want
to experiment with alerts on PRs when a PR causes a drop in code coverage.

To be clear: I'm not a dogmatist about this: I have no aspirations to get to
100% code coverage, and I don't consider lines-of-code-covered to be a perfect
metric, but it is a pretty good heuristic for how extensive your tests are.

The good news is that our coverage is actually pretty good which was a surprise
to me!

As a conflict of interest statement: I'm in Codacy's 'Pioneers' program which
provides funding and mentorship, and part of the arrangement is to use Codacy's
tooling on lazygit. This is something I'd have been happy to explore even
without being part of the program, and just like with any other static analysis
tool, we can tweak it to fit our use case and values.

## How we're capturing code coverage

This deserves its own section. Basically when you build the lazygit binary you
can specify that you want the binary to capture coverage information when it
runs. Then, if you run the binary with a GOCOVERDIR env var, it will write
coverage information to that directory before exiting.

It's a similar story with unit tests except with those you just specify the
directory inline via `-test.gocoverdir`.

We run both unit tests and integration tests separately in CI, _and_ we run them
parallel with different OS's and git versions. So I've got each step uploading
the coverage files as an artefact, and then in a separate step we combine all
the artefacts together and generate a combined coverage file, which we then
upload to codacy (but in future we can do other things with it like warn in a PR
if code coverage decreases too much).

Another caveat is that when running integration tests, not only do we want to
obtain code coverage from code executed by the test binary, we also want to
obtain code coverage from code executed by the test runner. Otherwise, for each
integration test you add, the setup code (which is run by the test runner, not
the test binary) will be considered un-covered and for a large setup step it may
appear that your PR _decreases_ coverage on net. Go doesn't easily let you
exclude directories from coverage reports so it's better to just track the
coverage from both the runner and the binary.

The binary expects a GOCOVERDIR env var but the test runner expects a
test.gocoverdir positional arg and if you pass the positional arg it will
internally overwrite GOCOVERDIR to some random temp directory and if you then
pass that to the test binary, it doesn't seem to actually write to it by the
time the test finishes. So to get around that we're using LAZYGIT_GOCOVERDIR and
then within the test runner we're mapping that to GOCOVERDIR before running the
test binary. So they both end up writing to the same directory. Coverage data
files are named to avoid conflicts, including something unique to the process,
so we don't need to worry about name collisions between the test runner and the
test binary's coverage files. We then merge the files together purely for the
sake of having fewer artefacts to upload.

## Misc

Initially I was able to have all the instances of '/tmp/code_coverage' confined
to the ci.yml which was good because it was all in one place but now it's spread
across ci.yml and scripts/run_integration_tests.sh and I don't feel great about
that but can't think of a way to make it cleaner.

I believe there's a use case for running scripts/run_integration_tests.sh
outside of CI (so that you can run tests against older git versions locally) so
I've made it that unless you pass the LAZYGIT_GOCOVERDIR env var to that script,
it skips all the code coverage stuff.

On a separate note: it seems that Go's coverage report is based on percentage of
statements executed, whereas codacy cares more about lines of code executed, so
codacy reports a higher percentage (e.g. 82%) than Go's own coverage report
(74%).
2023-11-30 12:58:41 +11:00
c465b0f2ff Rename test/results to test/_results
This prevents commands like "go test ./..." from looking into it, and it
prevents VS Code's Problems panel from showing errors about the go files in that
folder.
2023-09-15 18:04:20 +02:00
9cc1d65280 Add demo test variant
We're piggybacking on our existing integration test framework to record  demos that we can include in our docs
2023-07-31 22:33:04 +10:00
f8ba899b87 Initial addition of support for worktrees 2023-07-30 18:35:21 +10:00
f7e8b2dd71 cleanup integration test code 2023-02-26 12:54:13 +11:00
8b5d59c238 remove legacy integration tests 2023-02-26 11:34:18 +11:00
186b7197e4 clean up some integration test stuff 2022-12-20 22:54:00 +11:00
903e65ae8d add devcontainer folder 2022-11-13 10:56:22 +11:00
77881a9c7d add new integration test pattern 2022-08-11 21:24:15 +10:00
6e29830f63 ignore some codespaces stuff 2022-05-17 11:55:31 +00:00
2fe286f395 add launch.json 2022-05-17 21:38:37 +10:00
20ec6d98ad refactor integration tests 2022-03-27 14:58:20 +11:00
a34bdf1a04 update linters 2022-03-19 12:12:57 +11:00
1d90e1b565 add submodule integration tests 2022-01-29 00:17:32 +11:00
2008c39516 add tests for dealing with remotes 2021-10-22 21:33:17 +11:00
26d5444919 implement quick commit when no files staged, if configured to do so 2020-11-28 10:27:28 +11:00
CI
a9049b4a82 stop using snapshots 2020-10-10 00:23:01 +11:00
485f6d5386 support configurable config 2020-10-10 00:23:01 +11:00
f76196937a support integration testing
WIP
2020-10-10 00:23:01 +11:00
9489a94473 Make merge panel its own panel 2018-12-11 22:02:12 +11:00
700f8c7e79 REPO: Added TODO entries to the gitignore for jesse 2018-09-09 13:37:38 +02:00
a8866b158b REPO: Added and modified some ignore statements 2018-09-08 14:25:33 +02:00
fbfa48f0fc update circleci
* define release worflow when a tag is created
* add dep install
* run tests with coverage
* add goreleaser
2018-08-19 20:21:14 +02:00
2dbd5be24e Removed duplicates 2018-08-18 13:04:44 +02:00
c091401571 Cleaned the gitignore and added the linux binary 2018-08-18 11:49:37 +02:00
95d2b02664 update gitignore 2018-08-13 23:36:06 +10:00
3bd0246e4d add test repo contents to gitignore 2018-08-13 21:42:31 +10:00
98c22a36fd rearrange test repo generators 2018-08-12 15:54:59 +10:00
5c8f0d4c9d gitignore test repo 2018-08-11 15:23:57 +10:00
dea751280e better handling of branches and untracked files 2018-07-21 15:51:18 +10:00
d413d4319f update gitignore 2018-06-09 19:06:52 +10:00
5ccea4f5d9 ignore notes 2018-06-02 09:03:39 +10:00
103a6fd219 logging durations and more stuff 2018-06-02 08:35:49 +10:00
bb12309c7c Breaking into different files 2018-05-26 13:23:39 +10:00
4b511863f9 improved UI 2018-05-19 17:04:33 +10:00