mirror of
https://github.com/hanzoai/act.git
synced 2026-10-30 18:48:56 +00:00
The forge needs to PARSE and EVALUATE workflows: model, exprparser, and the two small helper packages they use. It does not need to run them — that is the runner process, and a container runtime is 12000 of the 15754 lines in the upstream act subtree. So this is the 3619 lines that a forge actually calls, not a fork of the whole engine. gitea.com/gitea/runner was the last gitea.com dependency in hanzoai/git. Pins match upstream (actionlint v1.7.12 with go.yaml.in/yaml/v4 v4.0.0-rc.3 — the two are version-coupled and a free resolution of actionlint does not build) and go 1.26, which exprparser needs for reflect.Fields. Upstream MIT notices retained; ours added above them. All four packages green. Co-authored-by: Hanzo Dev <[email protected]>
45 lines
887 B
Go
45 lines
887 B
Go
// Copyright 2026 Hanzo AI, Inc. All rights reserved.
|
|
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// Copyright 2020 The nektos/act Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package common
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestCartesianProduct(t *testing.T) {
|
|
assert := assert.New(t)
|
|
input := map[string][]any{
|
|
"foo": {1, 2, 3, 4},
|
|
"bar": {"a", "b", "c"},
|
|
"baz": {false, true},
|
|
}
|
|
|
|
output := CartesianProduct(input)
|
|
assert.Len(output, 24)
|
|
|
|
for _, v := range output {
|
|
assert.Len(v, 3)
|
|
|
|
assert.Contains(v, "foo")
|
|
assert.Contains(v, "bar")
|
|
assert.Contains(v, "baz")
|
|
}
|
|
|
|
input = map[string][]any{
|
|
"foo": {1, 2, 3, 4},
|
|
"bar": {},
|
|
"baz": {false, true},
|
|
}
|
|
output = CartesianProduct(input)
|
|
assert.Empty(output)
|
|
|
|
input = map[string][]any{}
|
|
output = CartesianProduct(input)
|
|
assert.Empty(output)
|
|
}
|