-
Notifications
You must be signed in to change notification settings - Fork 123
163 lines (137 loc) · 4.44 KB
/
test.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
name: Test
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
WASM_PACK_VERSION: "v0.10.3"
jobs:
test:
name: Test
runs-on: ${{matrix.os}}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
include:
- build: linux
os: ubuntu-latest
rust: beta
target: x86_64-unknown-linux-musl
cross: false
- build: macos
os: macos-latest
rust: beta
target: x86_64-apple-darwin
cross: false
- build: windows
os: windows-latest
rust: beta
target: x86_64-pc-windows-msvc
cross: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Cache
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
~/.rustup
target
key: ${{ runner.os }}-${{ matrix.rust }}-min165
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
override: true
default: true
components: rustfmt, clippy
- name: Set up python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
# NOTE: ^this strategy leaves older python versions intentionally
# without test coverage to keep CI fast.
- name: Check versions
run: |
cargo --version
rustc --version
- name: Install wasm-pack
uses: jetli/[email protected]
with:
version: ${{env.WASM_PACK_VERSION}}
- name: Build Coupled JS
working-directory: ./pagefind_web_js
run: npm i && npm run build-coupled
- name: Build WASM
working-directory: ./pagefind_web
run: ./local_build.sh
- name: Build UI
working-directory: ./pagefind_ui/default
run: npm i && npm run build
- name: Build Modular UI
working-directory: ./pagefind_ui/modular
run: npm i && npm run build
- name: Test Web
working-directory: ./pagefind_web
run: cargo test --release
- name: Build Testing Binary
working-directory: ./pagefind
run: cargo build --release --features extended
- name: Upload Testing Binary
uses: actions/upload-artifact@v4
with:
name: pagefind-${{ matrix.target }}
path: target/release/pagefind${{ matrix.build == 'windows' && '.exe' || '' }}
- name: Test Lib
working-directory: ./pagefind
run: cargo test --release --lib --features extended
- name: Test CLI
run: npx -y toolproof@latest -s -c 1 --timeout 45
- name: Set up poetry
run: ./wrappers/python/scripts/ci/github/setup_poetry.sh
- name: cache venv
uses: actions/cache@v4
with:
path: wrappers/python/.venv
key: ${{ runner.os }}-poetry-3.12-${{ hashFiles('**/poetry.lock') }}
- name: Install dev dependencies
run: ./wrappers/python/scripts/ci/github/install_dev_dependencies.sh
- name: activate venv
run: ./wrappers/python/scripts/ci/github/activate_venv.sh
- name: debug python paths
run: ./wrappers/python/scripts/ci/github/debug_python_paths.sh
- name: Lint python
# avoid duplicating linting work on different OSes
if: runner.os == 'Linux'
working-directory: ./wrappers/python
run: ./scripts/ci/python_lints.sh
- name: ensure cog up-to-date
# avoid duplicating linting work on different OSes
if: runner.os == 'Linux'
working-directory: ./wrappers/python
run: ./scripts/ci/cog/check.sh
- name: set PYTHONPATH
shell: bash
working-directory: ./wrappers/python
run: python ./scripts/ci/github/add_src_to_pythonpath.py
- name: add target/release to windows PATH
shell: bash
run: echo $PWD/target/release >> "$GITHUB_PATH"
- name: Test python API
timeout-minutes: 1
# ^ guard against the tests getting deadlock if the subprocess pipe
# gets clogged
run: ./wrappers/python/scripts/ci/github/integration_tests.sh