-
Notifications
You must be signed in to change notification settings - Fork 45
137 lines (128 loc) · 3.79 KB
/
ci.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
name: CI
on:
push:
pull_request:
jobs:
test:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
rust: ["1.64.0", "stable"]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout source
uses: actions/checkout@v3
- name: Setup rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: Run unit tests
run: rustc --version && cargo --version && cargo test --features online_tests
- name: Run script tests
if: runner.os != 'Windows'
run: |
# Run twice to test problem with expression caching
./tests/scripts/test-runner.sh
./tests/scripts/test-runner.sh
test-examples:
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust: ["1.64.0", "stable"]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout source
uses: actions/checkout@v3
- name: Setup rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: Setup homebrew
uses: Homebrew/actions/setup-homebrew@master
- name: Install hyperfine and just
run: brew install hyperfine just
- name: Install rust-script
run: cargo install --locked --path .
- name: Test examples
run: ./test-examples.sh
working-directory: examples
check-format:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v3
- name: Setup rust
uses: dtolnay/rust-toolchain@stable
- name: Install rustfmt
run: rustup component add rustfmt
- name: Check formatting with rustfmt
run: cargo fmt -- --check
check-clippy:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout source
uses: actions/checkout@v3
- name: Setup rust
uses: dtolnay/rust-toolchain@stable
- name: Install rustfmt
run: rustup component add clippy
- name: Check for clippy warnings
run: cargo clippy --all-targets --all-features -- -D warnings -W clippy::cargo
upload-debug-builds:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout source
uses: actions/checkout@v3
- name: Setup rust
uses: dtolnay/rust-toolchain@stable
- name: Build debug
run: cargo build
- name: Upload Windows debug build
if: runner.os == 'Windows'
uses: actions/upload-artifact@v3
with:
path: ./target/debug/rust-script.exe
name: windows-binary
- name: Upload macOS debug build
if: runner.os == 'macOS'
uses: actions/upload-artifact@v3
with:
path: ./target/debug/rust-script
name: mac-binary
- name: Upload Linux debug build
if: runner.os == 'Linux'
uses: actions/upload-artifact@v3
with:
path: ./target/debug/rust-script
name: linux-binary
test-install-file-association:
runs-on: windows-latest
steps:
- name: Checkout source
uses: actions/checkout@v3
- name: Setup rust
uses: dtolnay/rust-toolchain@stable
- name: Build debug
run: cargo build
- name: Install file association
run: ./target/debug/rust-script.exe --install-file-association
- name: Run example script
run: cmd.exe /C .\examples\hello.ers
- name: Uninstall file association
run: ./target/debug/rust-script.exe --uninstall-file-association
- name: Run example script
run: cmd.exe /C .\examples\hello.ers
continue-on-error: true
security-audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/audit-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}