-
Notifications
You must be signed in to change notification settings - Fork 33
143 lines (135 loc) · 4.89 KB
/
tests.yaml
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
name: Tests
on:
workflow_dispatch:
inputs:
prNr:
description: A PR number to build
required: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Checkout
id: checkout
env:
GH_TOKEN: ${{ github.token }}
run: |
gh pr checkout "${{ github.event.inputs.prNr }}"
- name: Add dependencies
run: |
sudo apt-get install --no-install-recommends libudev-dev
- name: Set up cargo cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target_ci/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- name: CI
run: |
./ci.sh
- name: Upload test binaries
uses: actions/upload-artifact@v4
with:
name: example-tests
path: tests
integration-tests:
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- name: Checkout
id: checkout
env:
GH_TOKEN: ${{ github.token }}
run: |
gh pr checkout "${{ github.event.inputs.prNr }}"
echo "commit=$(git rev-parse --verify HEAD)" >> "$GITHUB_OUTPUT"
- name: Set pending
env:
COMMIT: ${{ steps.checkout.outputs.commit }}
GH_TOKEN: ${{ github.token }}
run: |
gh api --method POST -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" /repos/embassy-rs/trouble/statuses/${COMMIT} \
-f "state=pending" -f "description=Running integration tests" -f "context=integration-tests"
- name: Test
env:
RUST_LOG: trace
RUST_TEST_THREADS: 1
run: |
cd host
cargo test --features log --test '*' -- --nocapture
- name: Update failed status
if: failure()
env:
COMMIT: ${{ steps.checkout.outputs.commit }}
GH_TOKEN: ${{ github.token }}
run: |
gh api --method POST -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" /repos/embassy-rs/trouble/statuses/${COMMIT} \
-f "state=failure" -f "description=The integration tests failed" -f "context=integration-tests"
- name: Update success status
if: success()
env:
COMMIT: ${{ steps.checkout.outputs.commit }}
GH_TOKEN: ${{ github.token }}
run: |
gh api --method POST -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" /repos/embassy-rs/trouble/statuses/${COMMIT} \
-f "state=success" -f "description=The integration tests succeeded!" -f "context=integration-tests"
example-tests:
runs-on: self-hosted
needs: [build, integration-tests]
steps:
- uses: actions/checkout@v4
- name: Checkout
id: checkout
env:
GH_TOKEN: ${{ github.token }}
run: |
gh pr checkout "${{ github.event.inputs.prNr }}"
echo "commit=$(git rev-parse --verify HEAD)" >> "$GITHUB_OUTPUT"
- name: Set pending
env:
COMMIT: ${{ steps.checkout.outputs.commit }}
GH_TOKEN: ${{ github.token }}
run: |
gh api --method POST -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" /repos/embassy-rs/trouble/statuses/${COMMIT} \
-f "state=pending" -f "description=Running example tests" -f "context=example-tests"
- uses: actions/download-artifact@v4
with:
name: example-tests
path: examples/tests/bins
- name: Test
env:
RUST_LOG: info
RUST_TEST_THREADS: 1
run: |
cd examples/tests
find .
PROBE_CONFIG=$(cat ../../.ci/config.json) cargo test -- --nocapture
- name: Update failed status
if: failure()
env:
COMMIT: ${{ steps.checkout.outputs.commit }}
GH_TOKEN: ${{ github.token }}
run: |
gh api --method POST -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" /repos/embassy-rs/trouble/statuses/${COMMIT} \
-f "state=failure" -f "description=The example tests failed" -f "context=example-tests"
- name: Update success status
if: success()
env:
COMMIT: ${{ steps.checkout.outputs.commit }}
GH_TOKEN: ${{ github.token }}
run: |
gh api --method POST -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" /repos/embassy-rs/trouble/statuses/${COMMIT} \
-f "state=success" -f "description=The example tests succeeded!" -f "context=example-tests"