-
Notifications
You must be signed in to change notification settings - Fork 3
202 lines (186 loc) · 5.73 KB
/
test-copilot.yml
File metadata and controls
202 lines (186 loc) · 5.73 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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
on:
push:
workflow_dispatch:
permissions:
copilot-requests: write
jobs:
# Basic smoke test — defaults only
basic:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
id: copilot
with:
prompt: "Say 'hello world' and nothing else."
max-turns: 1
- name: Verify exit code output
run: |
echo "Exit code: ${{ steps.copilot.outputs.exit-code }}"
test "${{ steps.copilot.outputs.exit-code }}" = "0"
# Test autopilot + max-turns limit with tool use
autopilot:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
with:
prompt: "Create a file called test.txt with the content 'autopilot works'. Then read it back to confirm."
max-turns: 3
- name: Verify file was created
run: |
test -f test.txt
grep -q "autopilot works" test.txt
# Test silent mode — no usage stats in output
silent:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
with:
prompt: "Say 'silent mode works' and nothing else."
silent: true
max-turns: 1
# Test model selection + reasoning effort
model:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
with:
prompt: "What model are you? Reply with just your model name."
model: claude-sonnet-4
reasoning-effort: low
max-turns: 1
# Test JSON output format
json-output:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
with:
prompt: "Say 'json works'."
output-format: json
max-turns: 1
# Test tool deny list — shell should be blocked
denied-tools:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
with:
prompt: "Try to run 'echo hello' in a shell. If you can't, just say 'shell denied'."
denied-tools: "shell"
max-turns: 2
# Test GitHub MCP toolsets
github-mcp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
with:
prompt: "Use the GitHub MCP to get info about the repo austenstone/copilot-cli. Tell me the description and star count."
add-github-mcp-toolsets: "repos"
max-turns: 3
# Test disable builtin MCPs
no-builtin-mcps:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
with:
prompt: "List your available MCP servers. If none, say 'no MCP servers available'."
disable-builtin-mcps: true
max-turns: 1
# Test URL allow/deny
url-controls:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
with:
prompt: "Fetch https://api.github.com/zen and tell me what it says."
allowed-urls: "api.github.com"
denied-urls: "evil.com"
max-turns: 2
# Test share session to file + verify output
share:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
id: copilot
with:
prompt: "Say 'session sharing works'."
share: true
max-turns: 1
- name: Verify session file exists
run: |
echo "Session path: ${{ steps.copilot.outputs.session-path }}"
test -f "${{ steps.copilot.outputs.session-path }}"
cat "${{ steps.copilot.outputs.session-path }}"
# Test experimental flag
experimental:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
with:
prompt: "Say 'experimental mode active'."
experimental: true
max-turns: 1
# Test additional directories
additional-dirs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- run: |
mkdir -p /tmp/copilot-test
echo "found me" > /tmp/copilot-test/secret.txt
- uses: austenstone/copilot-cli@notoken
with:
prompt: "Read the file /tmp/copilot-test/secret.txt and tell me its contents."
additional-directories: "/tmp/copilot-test"
max-turns: 2
# Test custom agent
agent:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
with:
prompt: "What files are in this repo?"
agent: explore
max-turns: 2
# Test fail-on-error catches non-zero exit
fail-on-error:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
id: copilot
continue-on-error: true
with:
prompt: "Exit with error code 1 by running: exit 1"
fail-on-error: true
max-turns: 2
- name: Verify exit code was captured
run: |
echo "Exit code: ${{ steps.copilot.outputs.exit-code }}"
echo "Step outcome: ${{ steps.copilot.outcome }}"
# Test copilot-config is applied
config:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: austenstone/copilot-cli@notoken
with:
prompt: "Say 'config test passed'."
copilot-config: |
{
"banner": "never",
"render_markdown": false,
"theme": "dark",
"trusted_folders": []
}
max-turns: 1