forked from Chrisland58/SorobanPay
-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (107 loc) · 3.41 KB
/
Copy pathci.yml
File metadata and controls
132 lines (107 loc) · 3.41 KB
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
name: CI
on:
push:
pull_request:
jobs:
contract:
name: Rust contract
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust stable + wasm32 target
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2
with:
workspaces: contracts/subscription
- name: Build (wasm32 release)
run: cargo build --manifest-path contracts/subscription/Cargo.toml --target wasm32-unknown-unknown --release
- name: Test & summary
run: |
set -o pipefail
cargo test --manifest-path contracts/subscription/Cargo.toml 2>&1 \
| tee /tmp/contract-test-output.txt
echo "--- Test summary ---"
grep -E "^test result|FAILED|ok$" /tmp/contract-test-output.txt || true
contract-coverage:
name: Rust contract coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
components: llvm-tools-preview
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2
with:
workspaces: contracts/subscription
- name: Install cargo-llvm-cov
run: cargo install cargo-llvm-cov --locked
- name: Generate coverage report
run: make test-coverage
- name: Upload LCOV report
uses: actions/upload-artifact@v4
with:
name: contract-coverage-lcov
path: contracts/target/lcov.info
- name: Upload HTML report
uses: actions/upload-artifact@v4
with:
name: contract-coverage-html
path: contracts/target/coverage-html/
backend-integration:
name: Backend integration tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: backend/package-lock.json
- name: Install dependencies
run: npm ci
working-directory: backend
- name: Run integration tests
run: npm run test:integration
working-directory: backend
# #191: Frontend type check + unit tests on every push/PR
frontend:
name: Frontend type check and unit tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: frontend/package-lock.json
- name: Install dependencies
run: npm ci
working-directory: frontend
# #191: TypeScript type checking — catches type errors before merge
- name: Type check
run: npm run type-check
working-directory: frontend
frontend-typecheck:
name: Frontend strict type check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: frontend/package-lock.json
- name: Install dependencies
run: npm ci
working-directory: frontend
- name: Type check (fail on errors)
run: npm run type-check
working-directory: frontend