Skip to content

Commit 9ece535

Browse files
authored
chore: add TestJobUsesSelfHostedRunner (#31)
* ensure job_uses_self_hosted_runner returns false * add TestJobUsesSelfHostedRunner
1 parent f7fed9f commit 9ece535

File tree

3 files changed

+48
-1
lines changed

3 files changed

+48
-1
lines changed

opa/opa.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ func (o *Opa) Eval(ctx context.Context, query string, input map[string]interface
6363
rego.Compiler(o.Compiler),
6464
rego.PrintHook(o),
6565
rego.Input(input),
66+
rego.Imports([]string{"data.poutine.utils"}),
6667
)
6768

6869
rs, err := rego.Eval(ctx)

opa/opa_test.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,49 @@ func TestSemverConstraintCheck(t *testing.T) {
8787
assert.Equal(t, c.expected, result)
8888
}
8989
}
90+
91+
func TestJobUsesSelfHostedRunner(t *testing.T) {
92+
// based on https://github.com/actions/runner-images/
93+
cases := map[string]bool{
94+
"ubuntu-latest": false,
95+
"ubuntu-22.04": false,
96+
"ubuntu-20.04": false,
97+
"macos-latest-large": false,
98+
"macos-14-large": false,
99+
"macos-latest": false,
100+
"macos-14": false,
101+
"macos-latest-xlarge": false,
102+
"macos-14-xlarge": false,
103+
"macos-13": false,
104+
"macos-13-large": false,
105+
"macos-13-xlarge": false,
106+
"macos-12": false,
107+
"macos-12-large": false,
108+
"macos-11": false,
109+
"windows-latest": false,
110+
"windows-2022": false,
111+
"windows-2019": false,
112+
"self-hosted": true,
113+
"random-name": true,
114+
}
115+
116+
opa, err := NewOpa()
117+
noOpaErrors(t, err)
118+
119+
for runner, expected := range cases {
120+
var result bool
121+
input := map[string]interface{}{
122+
"runs_on": []string{runner},
123+
}
124+
125+
err = opa.Eval(
126+
context.TODO(),
127+
`utils.job_uses_self_hosted_runner(input)`,
128+
input,
129+
&result,
130+
)
131+
132+
noOpaErrors(t, err)
133+
assert.Equal(t, expected, result, "runner: "+runner)
134+
}
135+
}

opa/rego/poutine/utils.rego

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ job_uses_self_hosted_runner(job) if {
4949
"(?i)^((ubuntu-(([0-9]{2})\\.04|latest)|macos-([0-9]{2}|latest)(-x?large)?|windows-(20[0-9]{2}|latest)|(buildjet|warp)-[a-z0-9-]+))$",
5050
run_on,
5151
)
52-
}
52+
} else := false
5353

5454
empty(xs) if {
5555
xs == null

0 commit comments

Comments
 (0)