This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
dagger/dagger/script_test.go
Solomon Hykes 91654ba786 Unit tests to reproduce issue and narrow down root cause.
Signed-off-by: Solomon Hykes <sh.github.6811@hykes.org>
2021-01-21 15:24:00 -08:00

163 lines
2.4 KiB
Go

package dagger
import (
"context"
"strings"
"testing"
)
// Test that default values in spec are applied
func TestScriptDefaults(t *testing.T) {
cc := &Compiler{}
v, err := cc.Compile("", `
{
do: "exec"
args: ["sh", "-c", """
echo hello > /tmp/out
"""]
// dir: "/"
}
`)
if err != nil {
t.Fatal(err)
}
op, err := v.Op()
if err != nil {
t.Fatal(err)
}
if err := op.Validate(); err != nil {
t.Fatal(err)
}
dir, err := op.Get("dir").String()
if err != nil {
t.Fatal(err)
}
if dir != "/" {
t.Fatal(dir)
}
t.Skip("FIXME: issue #19")
// Walk triggers issue #19 UNLESS optional fields removed from spec.cue
if err := op.Walk(context.TODO(), func(op *Op) error {
return nil
}); err != nil {
t.Fatal(err)
}
}
func TestValidateEmptyValue(t *testing.T) {
cc := &Compiler{}
v, err := cc.Compile("", "#dagger: compute: _")
if err != nil {
t.Fatal(err)
}
if err := v.Get("#dagger.compute").Validate("#Script"); err != nil {
t.Fatal(err)
}
}
func TestLocalScript(t *testing.T) {
ctx := context.TODO()
cc := &Compiler{}
src := `[{do: "local", dir: "foo"}]`
v, err := cc.Compile("", src)
if err != nil {
t.Fatal(err)
}
s, err := v.Script()
if err != nil {
t.Fatal(err)
}
n := 0
err = s.Walk(ctx, func(op *Op) error {
n++
return nil
})
if err != nil {
t.Fatal(err)
}
if n != 1 {
t.Fatal(n)
}
}
func TestWalkBootScript(t *testing.T) {
ctx := context.TODO()
cc := &Compiler{}
cfg, err := cc.Compile("clientconfig.cue", defaultBootScript)
if err != nil {
t.Fatal(err)
}
script, err := cfg.Get("bootscript").Script()
if err != nil {
t.Fatal(err)
}
dirs, err := script.LocalDirs(ctx)
if err != nil {
t.Fatal(err)
}
if len(dirs) != 1 {
t.Fatal(dirs)
}
if dirs[0] != "." {
t.Fatal(dirs)
}
}
func TestWalkBiggerScript(t *testing.T) {
t.Skip("FIXME")
ctx := context.TODO()
cc := &Compiler{}
script, err := cc.CompileScript("boot.cue", `
[
// {
// do: "load"
// from: {
// do: "local"
// dir: "ga"
// }
// },
{
do: "local"
dir: "bu"
},
{
do: "copy"
from: [
{
do: "local"
dir: "zo"
}
]
},
{
do: "exec"
args: ["ls"]
mount: "/mnt": input: [
{
do: "local"
dir: "meu"
}
]
}
]
`)
if err != nil {
t.Fatal(err)
}
dirs, err := script.LocalDirs(ctx)
if err != nil {
t.Fatal(err)
}
if len(dirs) != 4 {
t.Fatal(dirs)
}
wanted := "ga bu zo meu"
got := strings.Join(dirs, " ")
if wanted != got {
t.Fatal(got)
}
}