-
Notifications
You must be signed in to change notification settings - Fork 0
153 lines (130 loc) · 4.17 KB
/
ci.yml
File metadata and controls
153 lines (130 loc) · 4.17 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
name: CI
on:
push:
branches:
- main
pull_request:
jobs:
spec-kit-conformance:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Validate spec-kit artifact set
run: |
test -f testkit/.specify/memory/constitution.md
test -f testkit/.specify/specs/001-polyglot-testkit/spec.md
test -f testkit/.specify/specs/001-polyglot-testkit/plan.md
test -f testkit/.specify/specs/001-polyglot-testkit/tasks.md
test -f testkit/.specify/specs/001-polyglot-testkit/contracts/cli-protocol.json
test -f testkit/.specify/specs/001-polyglot-testkit/checklists/quality.md
- name: Validate spec-kit scaffold and status
run: ./testkit/.specify/scripts/validate_specify.sh
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "stable"
- name: Build git-testkit CLI binary once
run: go build ./cmd/git-testkit-cli
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
cache: maven
- name: Run Python spec conformance smoke tests
env:
GIT_TESTKIT_CLI: ./git-testkit-cli
run: |
cd testkit/python
python -m pip install -e ".[dev]"
python -m pytest tests/ -v
- name: Run Python sample smoke implementations
env:
GIT_TESTKIT_CLI: ./git-testkit-cli
run: |
cd testkit/python
python -m samples.smoke_repo_flow
python -m samples.smoke_snapshot_flow
- name: Run Java spec conformance smoke tests
env:
GIT_TESTKIT_CLI: ./git-testkit-cli
run: |
cd testkit/java
mvn test
- name: Run Java sample smoke implementations
env:
GIT_TESTKIT_CLI: ./git-testkit-cli
run: |
cd testkit/java
mvn -Dtest=SampleRepoFlowSmoke,SampleSnapshotFlowSmoke test
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
go-version: ["1.22.x", "stable"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
- name: Run vet
run: go vet ./...
- name: Check gofmt
run: test -z "$(gofmt -l .)"
- name: Run tests
run: go test ./...
wrapper-cross-platform:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "stable"
- name: Build git-testkit CLI binary once
shell: bash
run: |
mkdir -p bin
if [[ "${{ matrix.os }}" == "windows-latest" ]]; then
go build -o ./bin/git-testkit-cli.exe ./cmd/git-testkit-cli
else
go build -o ./bin/git-testkit-cli ./cmd/git-testkit-cli
fi
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
cache: maven
- name: Run Python wrapper smoke tests
shell: bash
env:
GIT_TESTKIT_CLI: ${{ matrix.os == 'windows-latest' && './bin/git-testkit-cli.exe' || './bin/git-testkit-cli' }}
run: |
cd testkit/python
python -m pip install -e ".[dev]"
python -m pytest tests/test_fixtures.py tests/test_snapshots.py -v
- name: Run Java wrapper smoke tests
shell: bash
env:
GIT_TESTKIT_CLI: ${{ matrix.os == 'windows-latest' && './bin/git-testkit-cli.exe' || './bin/git-testkit-cli' }}
run: |
cd testkit/java
mvn -Dtest=CliBridgeTest,SampleRepoFlowSmoke,SampleSnapshotFlowSmoke test