aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/test.yml
Commit message (Collapse)AuthorAge
* ci: cache Perl and Ruby provider dependenciesLewis Russell2026-09-25
| | | | | | | | | | | Provider setup downloads packages on every run, leaving CI exposed to transient registry failures. Install Perl modules and Ruby gems under .deps so the existing cache preserves them. Reuse installed versions without registry lookups and include the Ruby host executable in the cache. AI-assisted
* ci: preserve the runtime file list for install checks #41843Volodymyr Chernetskyi2026-09-11
| | | | | | | | | | | Problem: Linux jobs remove .git before the install check calls git ls-files. The command fails and the loop silently skips all runtime files. Solution: Save the tracked file list before removing .git and read it during the install check. Use NUL delimiters to preserve filenames. AI-assisted
* build: replace LuaLS with EmmyLuaLewis Russell2026-09-07
| | | | | | | | | | | | | | | Problem: LuaLS struggles with the generics used in Nvim's runtime, requiring broad diagnostic suppressions. Indexing is also slow. Solution: Use EmmyLua for type checks in the build and CI. It offers more sophisticated type checking, substantially better support for generics, and much better flow analysis. Correct the affected annotations. Use `@internal`, supported directly by EmmyLua, instead of `@nodoc` for shared internal declarations, and support it in the help parser. AI-assisted
* ci: bump actions/checkout in the github-actions group across 1 directorydependabot[bot]2026-07-24
| | | | | | | | | | | | | | | | | | | Bumps the github-actions group with 1 update in the / directory: [actions/checkout](https://github.com/actions/checkout). Updates `actions/checkout` from 7.0.0 to 7.0.1 - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v7...v7.0.1) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 7.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com>
* ci: bump the github-actions group across 1 directory with 2 updatesdependabot[bot]2026-07-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bumps the github-actions group with 2 updates in the / directory: [actions/checkout](https://github.com/actions/checkout) and [github/codeql-action](https://github.com/github/codeql-action). Updates `actions/checkout` from 6 to 7 - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v6...v7) Updates `github/codeql-action` from 4.36.2 to 4.36.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v4.36.2...v4.36.3) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: github/codeql-action dependency-version: 4.36.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com>
* Merge pull request #38546 from dchinmay2/push-pozrrzptmvnvbfredl2026-07-10
|\ | | | | build(zig): add formatc and lintc steps
| * build(zig): add formatc and lintc stepsChinmay Dalal2026-06-17
| | | | | | | | | | problem: build.zig does not have formatc and lintc steps solution: add formatc and lintc step to build.zig
* | ci: bump actions/checkout from 6.0.3 to 7.0.0 #40392dependabot[bot]2026-06-24
|/ | | | | | | | | | | | | | | | | | | | | | ci: bump actions/checkout in the github-actions group across 1 directory Bumps the github-actions group with 1 update in the / directory: [actions/checkout](https://github.com/actions/checkout). Updates `actions/checkout` from 6.0.3 to 7.0.0 - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v6.0.3...v7) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* ci: bump the github-actions group across 1 directory with 2 updatesdependabot[bot]2026-06-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bumps the github-actions group with 2 updates in the / directory: [actions/checkout](https://github.com/actions/checkout) and [github/codeql-action](https://github.com/github/codeql-action). Updates `actions/checkout` from 6.0.2 to 6.0.3 - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v6.0.2...v6.0.3) Updates `github/codeql-action` from 4.36.0 to 4.36.1 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v4.36.0...v4.36.1) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: github/codeql-action dependency-version: 4.36.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com>
* build(ci): check zig fmtbfredl2026-06-04
|
* fix(build.zig): do not depend on b.install_path on configure timebfredl2026-06-04
| | | | | | | | | | | | | | This is in preparation of zig 0.17 where b.install_path is no longer known inside `pub fn build()`. Builds which should hardcode a runtime path into the binary has to specify it. We could use a nlua0 helper to encode the install path at build time but I think this is cleaner anyway. (like currently the appimage still encodes a temporary build path which is nonsensical, it is better to just include none) Similarily b.args will not be available anymore (there will just be an opaque pass-through)
* ci: bump the github-actions group across 1 directory with 2 updatesdependabot[bot]2026-06-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bumps the github-actions group with 2 updates in the / directory: [actions/checkout](https://github.com/actions/checkout) and [github/codeql-action](https://github.com/github/codeql-action). Updates `actions/checkout` from 6 to 6.0.2 - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v6...v6.0.2) Updates `github/codeql-action` from 4.35.5 to 4.36.0 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v4.35.5...v4.36.0) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: github/codeql-action dependency-version: 4.36.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com>
* build(zig): run oldtests in zig builds with new lua runnerbfredl2026-06-02
| | | | | | | | | | | | | | | | | The new lua based runner replaces Makefile, runnvim.sh and runnvim.vim As it happens, we run a `--headless` nvim inside a `:terminal` layer, this is pointless. Also there is still a lot remnants for oldesttests, but we don't have any except for test1.in which just checks the environment for following, nonexistant oldesttests. so just skip that. For now, the actual vimscript code which runs in vim-under-test is completely unchanged. On macos, luajit is finally working with the latest ziglua master. Also fix some minor bugs regarding locales, such as incorrect HAVE_WORKING_LIBINTL checks
* ci(external): no need for neovim-ppa/stable #39557Christian Clason2026-05-02
| | | | | | | Problem: The `with-external-deps` workflow keeps failing because adding the neovim-ppa/stable times out. Solution: Don't add the PPA; it doesn't look to be necessary for installing current dependencies.
* fix(build): more changes to make zig 0.16.0 workbfredl2026-04-21
|
* feat(build.zig): update to zig 0.16Chinmay Dalal2026-04-21
|
* test: replace busted with local harnessLewis Russell2026-04-15
| | | | | | | | | | | | | | | | | | | Replace the busted-based Lua test runner with a repo-local harness. The new harness runs spec files directly under `nvim -ll`, ships its own reporter and lightweight `luassert` shim, and keeps the helper/preload flow used by the functional and unit test suites. Keep the file boundary model shallow and busted-like by restoring `_G`, `package.loaded`, `package.preload`, `arg`, and the process environment between files, without carrying extra reset APIs or custom assertion machinery. Update the build and test entrypoints to use the new runner, add black-box coverage for the harness itself, and drop the bundled busted/luacheck dependency path. AI-assisted: Codex
* ci: eliminate template expansion in code contextsDaniel Hast2026-03-09
| | | | | | | Replace all template expansions in code contexts with environment variable substitutions. Template expansion in code contexts can be a source of code injection vulnerabilities; for more info, see: https://docs.zizmor.sh/audits/#template-injection
* ci: set default permissions for workflowsDaniel Hast2026-03-09
| | | | | | | The default workflow permissions are overly broad; setting permissions explicitly at the workflow level ensures excessive permissions are not unintentionally granted to jobs. For details, see: https://docs.zizmor.sh/audits/#excessive-permissions
* ci: don't persist git credentials on diskDaniel Hast2026-03-09
| | | | | | | Set `persist-credentials: false` for all uses of `actions/checkout`. This prevents git credentials from being stored on disk, and fixes the following Zizmor audit: https://docs.zizmor.sh/audits/#artipacked
* ci: pin third-party action dependencies to commit hashesDaniel Hast2026-03-09
| | | | | | | | | | | | | | | | | This improves CI security by ensuring that action dependencies cannot be changed by upstream repositories without updating the use of the dependency in this repo. Official GitHub-maintained actions are excluded from this requirement and are left pinned by a tag instead of a commit hash. This action dependency pinning policy is codified in `.github/zizmor.yml` so that Zizmor (a static analysis tool for GitHub Actions) doesn't flag these as unpinned dependencies. Also add cooldown timer for Dependabot. This fixes these two Zizmor audits: * https://docs.zizmor.sh/audits/#dependabot-cooldown * https://docs.zizmor.sh/audits/#unpinned-uses
* build: adjust parallel functionaltest target names (#38144)zeertzjq2026-03-04
| | | | | | | - Use double underscores for the group targets as these targets usually shouldn't be used directly. - Use dash instead of underscore in the two targets that need to be used directly. I'm not entirely sure about this, as both chars are used in many targets, but a dash is easier to type than an underscore.
* ci: lint and format treesitter queriesRiley Bruins2026-02-21
| | | | | This also adds a `formatquery` rule to write the new format to the query files.
* feat(logging): rename ".nvimlog" => "nvim.log" #37935Justin M. Keyes2026-02-18
| | | | | | - Rename ".nvimlog" to "nvim.log" - doesn't need to be "hidden"/dotfile - ".log" extension helps with filetype detection - Also rename "nvim/log" => "nvim/nvim.log"
* test: support running functionaltests in parallel by directory (#37918)zeertzjq2026-02-18
| | | | | | | | | Define a CMake target for every subdirectory of test/functional that contains functional tests, and a functionaltest_parallel target that depends on all those targets, allowing multiple test runners to run in parallel. On CI, use at most 2 parallel test runners, as using more may increase system load and make tests unstable.
* ci(test): bump Windows runners to windows-2025 and unskip tests (#37666)zeertzjq2026-02-03
| | | | Bumping to windows-2025 seems to fix at least one case of spaces having wrong attributes in TUI tests, which allow unskipping dozens of tests.
* build(ci): test zig build -Doptimize=ReleaseSafebfredl2026-01-15
| | | | | the ReleaseSafe build mode activates UBSAN rules which was previously untested, most notably `-fsanitize=object-size`
* Merge pull request #36819 from bfredl/zigrtbfredl2025-12-12
|\ | | | | feat(build): make build.zig useful for full runtime install
| * feat(build): support full runtime distribution workbfredl2025-12-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Working towards making the build.zig build actually useful for users.. For building a full runtime distribution in /usr or /opt/nvim or whatever, use sudo zig build install -p /usr by default "zig build" will now work like "make" e.g. just build the binary and the generated parts of the runtime. This will work for development, but you need to use both parts of the runtime, just like with an "uninstalled" cmake build: zig build VIM=. ./zig-out/bin/nvim --clean --cmd "set rtp+=./zig-out/runtime" As a wrapper, `zig build run_dev` can be used
* | refactor: clint.py => clint.luaJustin M. Keyes2025-12-08
|/ | | | | | | | | | | | | | | | | | | | | | | | Problem: `clint.py` is the last python in our codebase, and beyond that it needs some cleanup. And it lacks tests, so modifying it can be painful. Also, we need a way to add ad-hoc lint rules for *Lua*, so it will help to have our ad-hoc rules for C in the same language (the scripts may share functions/techniques): https://github.com/neovim/neovim/issues/28372 Solution: - convert to `clint.lua` (mostly AI-generated, but it now has test coverage, unlike `clint.py`) - drop rules that are no longer needed: - "readability/multiline_string" - technially still relevant, but very uncommon so doesn't really matter. - "--line-length" - Not used in the old clint.py, nor the new clint.lua. - "comment whitespace" check - It is enforced by uncrustify. - "TODO" check - The `-google-readability-function-size` clang-tidy rule enforces "TODO(user)" format. (It was already enabled long ago.)
* feat: has('terminfo')Justin M. Keyes2025-11-22
| | | | | | | | | Problem: No way to detect at runtime if the build includes unibilium (or whatever terminfo layer we swap it with later). Solution: Support `has('terminfo')`.
* ci: bump actions/checkout from 5 to 6dependabot[bot]2025-11-21
| | | | | | | | | | | | | | | | Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
* build(test): unknown 'ipc_info_object_type_t' type on macOS #36523Koichi Shiraishi2025-11-18
| | | | | | | | | | | | | | | | | Problem: On macOS Tahoe, `make unittest` started failing with the following error. ```` test/unit/testutil.lua:784: test/unit/testutil.lua:768: (string) ' test/unit/testutil.lua:295: declaration specifier expected near 'ipc_info_object_type_t' at line 2297' exit code: 256 stack traceback: test/unit/testutil.lua:784: in function 'itp_parent' test/unit/testutil.lua:822: in function <test/unit/testutil.lua:812> ```` Solution: Update filter_complex_blocks.
* fix(build): remove .tar.gz workaround for bug fixed in zig 0.15.2bfredl2025-11-09
| | | | | | The issue affecting this particular archive was fixed in https://github.com/ziglang/zig/pull/25512, and this was included in zig 0.15.2
* build(deps): bump zig to v0.15.2bfredl2025-10-30
|
* ci: stop using macos-13 runner (#35996)zeertzjq2025-10-02
| | | | | | | | | > The macOS 13 runner image will be retired by December 4th, 2025. Update to the macos-15-intel runner. It seems that runners ending with "large" require an enterprise plan, so macos-15-intel is the only other available macOS Intel runner.
* ci: bump actions/checkout from 4 to 5dependabot[bot]2025-09-16
| | | | | | | | | | | | | | | | Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
* build(ci): bump zig to 0.15.1 and add more platformsbfredl2025-09-15
| | | | | | - Bump zig version to 0.15.1 and workaround zig fetch hang (ziglang/zig#24916) - add mac os zig build (currently without luajit, linker failure) - Add windows zig build, currently with very limited testing
* ci: enable unittests on arm runnerJames McCoy2025-09-06
|
* build: make build.zig generate helptags without running "nvim" binarybfredl2025-08-19
| | | | | | | | | This is matters for cross-compiling where we might not be able to run the "nvim" binary on the host. Instead reimplement the helptags extractor as a small lua script, which we can run on the host using the nlua0 helper already used for other generator scripts.
* Merge pull request #34969 from bfredl/winbuildbfredl2025-08-13
|\ | | | | feat(build): build.zig windows support.
| * feat(build): build.zig windows supportbfredl2025-08-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tested using cross-compiling from linux: zig build -Dcross=true -Dtarget=x86_64-windows nvim_bin Note: not fully functional without a runtime, which still has to be fuddled with manually Macos and windows builds require a recent zig 0.15+dev version As this zig master branch is currently too much in flux, we can't make our CI depend on zig master. Revisit CI after zig 0.15 release or at least feature freeze.
* | ci: bump actions/checkout from 4 to 5 #35305dependabot[bot]2025-08-11
|/ | | | | | | | | | | | | | | | | Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* ci: enable integration tests on Release buildsEvgeni Chasnovski2025-08-02
|
* ci(test): use ARM ubuntu linux for more CI jobs #34908Justin M. Keyes2025-07-12
| | | | | | | | | | | | | | | | | | | Problem: We temporarily disabled linux arm ci because of stability issues with the runner. #32339 Since then, the hardware was changed, so we can try re-enabling ARM linux CI. https://github.com/actions/partner-runner-images/issues/47#issuecomment-2678170225 Solution: - re-enable arm linux ci. reverts 8e4b77134a1cbc08b7372b6834eafc7cecdbc33e - also use arm image for these jobs, where arm seems to run much faster: - `lint` (step: `clang-tidy`) - master: 1m5s - this pr (linux ARM): 37s - `clang-analyzer` (step: `cmake --build ...`) - master: 10m - this pr (linux ARM) 5m 55s - `with-external-deps` (step: `Build`) - master: 26s - this pr (linux ARM): 21s
* ci: bump zig to 0.14.1bfredl2025-05-24
|
* feat(build): make build.zig run unittestsbfredl2025-05-24
|
* ci: bump mlugg/setup-zig from 1 to 2dependabot[bot]2025-05-07
| | | | | | | | | | | | | | | Bumps [mlugg/setup-zig](https://github.com/mlugg/setup-zig) from 1 to 2. - [Release notes](https://github.com/mlugg/setup-zig/releases) - [Commits](https://github.com/mlugg/setup-zig/compare/v1...v2) --- updated-dependencies: - dependency-name: mlugg/setup-zig dependency-version: '2' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
* feat(build): build.zig MVP: build and run functionaltests on linuxbfredl2025-05-02
| | | | | | | | | | | | | | | | | | | | | NEW BUILD SYSTEM! This is a MVP implementation which supports building the "nvim" binary, including cross-compilation for some targets. As an example, you can build a aarch64-macos binary from an x86-64-linux-gnu host, or vice versa Add CI target for build.zig currently for functionaltests on linux x86_64 only Follow up items: - praxis for version and dependency bumping - windows 💀 - full integration of libintl and gettext (or a desicion not to) - update help and API metadata files - installation into a $PREFIX - more tests and linters
* ci(test): enable translations in at least one job (#32833)zeertzjq2025-03-11
| | | | | Enable translations in the GCC release job, as it's the fastest. Although there aren't many tests for translation behavior, this still allows ensuring that Nvim isn't broken when translations are enabled.