summaryrefslogtreecommitdiffstats
path: root/.gitignore
AgeCommit message (Collapse)Author
2024-04-22Remove TODO.* from .gitignoreStefan Haller
It was added in 2018 (700f8c7e796), 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.
2023-11-30Add coverage arg for integration testsJesse Duffield
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-09-15Rename test/results to test/_resultsStefan Haller
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-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-30Initial addition of support for worktreesJoel Baranick
2023-02-26cleanup integration test codeJesse Duffield
2023-02-26remove legacy integration testsJesse Duffield
2022-12-20clean up some integration test stuffJesse Duffield
2022-11-13add devcontainer folderJesse Duffield
2022-08-11add new integration test patternJesse Duffield
2022-05-17ignore some codespaces stuffJesse Duffield
2022-05-17add launch.jsonJesse Duffield
2022-03-27refactor integration testsJesse Duffield
2022-03-19update lintersJesse Duffield
2022-01-29add submodule integration testsJesse Duffield
2021-10-22add tests for dealing with remotesJesse Duffield
2020-11-28:sparkles: implement quick commit when no files staged, if configured to do soDavyd McColl
2020-10-10stop using snapshotsCI
2020-10-10support configurable configJesse Duffield
2020-10-10support integration testingJesse Duffield
WIP
2018-12-11Make merge panel its own panelJesse Duffield
2018-09-09REPO: Added TODO entries to the gitignore for jesseGlenn Vriesman
2018-09-08REPO: Added and modified some ignore statementsGlenn Vriesman
2018-08-19update circleciAnthony HAMON
* define release worflow when a tag is created * add dep install * run tests with coverage * add goreleaser
2018-08-18Removed duplicatesGlenn Vriesman
2018-08-18Cleaned the gitignore and added the linux binaryGlenn Vriesman
2018-08-13update gitignoreJesse Duffield
2018-08-13add test repo contents to gitignoreJesse Duffield
2018-08-12rearrange test repo generatorsJesse Duffield
2018-08-11gitignore test repoJesse Duffield
2018-07-21better handling of branches and untracked filesJesse Duffield
2018-06-09update gitignoreJesse Duffield
2018-06-02ignore notesJesse Duffield
2018-06-02logging durations and more stuffJesse Duffield
2018-05-26Breaking into different filesJesse Duffield
2018-05-19improved UIJesse Duffield