aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordundargoc <gocdundar@gmail.com>2024-03-03 12:01:37 +0100
committerdundargoc <33953936+dundargoc@users.noreply.github.com>2024-03-23 23:19:29 +0100
commitd3e51603bc94fac68cd2c92ae7ebc90baa8471fe (patch)
tree0e9885c67aa38e46e64c158e98f376b5a8c5c304
parentca6dbf3558cec83f1d42a1e5f670c40c5893554e (diff)
downloadrneovim-d3e51603bc94fac68cd2c92ae7ebc90baa8471fe.tar.gz
rneovim-d3e51603bc94fac68cd2c92ae7ebc90baa8471fe.tar.bz2
rneovim-d3e51603bc94fac68cd2c92ae7ebc90baa8471fe.zip
ci(windows): optionally test windows with ASAN
Add the label `ci:windows-asan` to enable it.
-rw-r--r--.github/workflows/optional.yml7
-rw-r--r--.github/workflows/test.yml60
-rw-r--r--.github/workflows/test_windows.yml71
-rw-r--r--MAINTAIN.md1
-rw-r--r--src/nvim/main.c4
5 files changed, 83 insertions, 60 deletions
diff --git a/.github/workflows/optional.yml b/.github/workflows/optional.yml
index 84d71821c5..742d51377f 100644
--- a/.github/workflows/optional.yml
+++ b/.github/workflows/optional.yml
@@ -46,3 +46,10 @@ jobs:
runuser -u qemuci -- cmake -B build -G Ninja -D CI_BUILD=ON -D PREFER_LUA=ON &&
runuser -u qemuci -- make ${{ matrix.test }}
"
+
+ windows-asan:
+ if: contains(github.event.pull_request.labels.*.name, 'ci:windows-asan') || github.event_name == 'workflow_dispatch'
+ uses: ./.github/workflows/test_windows.yml
+ with:
+ build_flags: "-D ENABLE_ASAN_UBSAN=ON"
+ functionaltest_timeout: 40
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index cf1ea48506..d383d96de2 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -193,65 +193,7 @@ jobs:
run: cat $(find "$LOG_DIR" -type f)
windows:
- runs-on: windows-2022
- timeout-minutes: 45
- strategy:
- fail-fast: false
- matrix:
- test: [functional, old]
- steps:
- - uses: actions/checkout@v4
- - uses: ./.github/actions/setup
-
- - name: Build deps
- run: |
- cmake -S cmake.deps -B .deps -G Ninja -D CMAKE_BUILD_TYPE='RelWithDebInfo'
- cmake --build .deps
-
- - name: Build
- run: |
- cmake --preset ci -D CMAKE_BUILD_TYPE='RelWithDebInfo'
- cmake --build build
-
- - name: Install test deps
- run: |
- $PSNativeCommandArgumentPassing = 'Legacy'
-
- & build\bin\nvim.exe "--version"
-
- # Ensure that the "win32" feature is set.
- & build\bin\nvim -u NONE --headless -c 'exe !has(\"win32\").\"cq\"'
-
- python -m pip install pynvim
- # Sanity check
- python -c "import pynvim; print(str(pynvim))"
-
- node --version
- npm.cmd --version
-
- npm.cmd install -g neovim
- Get-Command -CommandType Application neovim-node-host.cmd
- npm.cmd link neovim
-
- - if: ${{ matrix.test == 'functional' }}
- name: functionaltest
- timeout-minutes: 20
- run: cmake --build build --target functionaltest
-
- - if: ${{ matrix.test == 'old' }}
- uses: msys2/setup-msys2@v2
- with:
- update: true
- pacboy: >-
- make:p gcc:p diffutils:p
- release: false
-
- - if: ${{ matrix.test == 'old' }}
- name: oldtest
- shell: msys2 {0}
- run: |
- cd test/old/testdir
- mingw32-make VERBOSE=1
+ uses: ./.github/workflows/test_windows.yml
# This job tests the following things:
# - Check if Release, MinSizeRel and RelWithDebInfo compiles correctly.
diff --git a/.github/workflows/test_windows.yml b/.github/workflows/test_windows.yml
new file mode 100644
index 0000000000..fec2275cbd
--- /dev/null
+++ b/.github/workflows/test_windows.yml
@@ -0,0 +1,71 @@
+name: windows
+on:
+ workflow_call:
+ inputs:
+ build_flags:
+ type: string
+ functionaltest_timeout:
+ default: 20
+ type: number
+
+jobs:
+ windows:
+ runs-on: windows-2022
+ timeout-minutes: 45
+ strategy:
+ fail-fast: false
+ matrix:
+ test: [functional, old]
+ steps:
+ - uses: actions/checkout@v4
+ - uses: ./.github/actions/setup
+
+ - name: Build deps
+ run: |
+ cmake -S cmake.deps -B .deps -G Ninja -D CMAKE_BUILD_TYPE='RelWithDebInfo'
+ cmake --build .deps
+
+ - name: Build
+ run: |
+ cmake --preset ci -D CMAKE_BUILD_TYPE='RelWithDebInfo' ${{ inputs.build_flags }}
+ cmake --build build
+
+ - name: Install test deps
+ run: |
+ $PSNativeCommandArgumentPassing = 'Legacy'
+
+ & build\bin\nvim.exe "--version"
+
+ # Ensure that the "win32" feature is set.
+ & build\bin\nvim -u NONE --headless -c 'exe !has(\"win32\").\"cq\"'
+
+ python -m pip install pynvim
+ # Sanity check
+ python -c "import pynvim; print(str(pynvim))"
+
+ node --version
+ npm.cmd --version
+
+ npm.cmd install -g neovim
+ Get-Command -CommandType Application neovim-node-host.cmd
+ npm.cmd link neovim
+
+ - if: ${{ matrix.test == 'functional' }}
+ name: functionaltest
+ timeout-minutes: ${{ inputs.functionaltest_timeout }}
+ run: cmake --build build --target functionaltest
+
+ - if: ${{ matrix.test == 'old' }}
+ uses: msys2/setup-msys2@v2
+ with:
+ update: true
+ pacboy: >-
+ make:p gcc:p diffutils:p
+ release: false
+
+ - if: ${{ matrix.test == 'old' }}
+ name: oldtest
+ shell: msys2 {0}
+ run: |
+ cd test/old/testdir
+ mingw32-make VERBOSE=1
diff --git a/MAINTAIN.md b/MAINTAIN.md
index b2434d6259..09f3efbed2 100644
--- a/MAINTAIN.md
+++ b/MAINTAIN.md
@@ -232,6 +232,7 @@ Some github labels are used to trigger certain jobs:
* `backport release-x.y` - backport to release branch
* `ci:s390x` - enable s390x CI
* `ci:skip-news` - skip news.yml workflows
+* `ci:windows-asan` - test windows with ASAN enabled
* `needs:response` - close PR after a certain amount of time if author doesn't
respond
diff --git a/src/nvim/main.c b/src/nvim/main.c
index 361d43393b..50d1a5a735 100644
--- a/src/nvim/main.c
+++ b/src/nvim/main.c
@@ -14,7 +14,9 @@
#include <string.h>
#ifdef ENABLE_ASAN_UBSAN
# include <sanitizer/asan_interface.h>
-# include <sanitizer/ubsan_interface.h>
+# ifndef MSWIN
+# include <sanitizer/ubsan_interface.h>
+# endif
#endif
#include "auto/config.h" // IWYU pragma: keep