forked from hswaw/hscloud
Serge Bazanski
54183ba222
Also skip nix tests on systems without nix. Change-Id: I4c0069a429df10a496b2651c2506b2d4625d5f43 Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1585 Reviewed-by: q3k <q3k@hackerspace.pl>
94 lines
2 KiB
Go
94 lines
2 KiB
Go
package workspace
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
)
|
|
|
|
func TestCheckNixPath(t *testing.T) {
|
|
for _, te := range []struct {
|
|
in string
|
|
okay bool
|
|
}{
|
|
{"foo", true},
|
|
{"foo.bar.baz", true},
|
|
{"foo.bar.baz.", false},
|
|
{"foo.bar.baz..", false},
|
|
{".foo.bar.baz", false},
|
|
{"..foo.bar.baz", false},
|
|
{"foo..bar.baz", false},
|
|
{".", false},
|
|
{"", false},
|
|
|
|
{"ops.machines.\"test.example.com\".config", true},
|
|
{"ops.machines.\"test.example.com.config", false},
|
|
{"ops.machines.\"test.example.com\"bar.config", false},
|
|
{"ops.machines.bar\"test.example.com\".config", false},
|
|
{"\"test.example.com\"bar", false},
|
|
{"test.example.com\"", false},
|
|
|
|
{"foo--.__bar.b-a-z---", true},
|
|
{"foo.0bar", false},
|
|
{"foo.-bar", false},
|
|
|
|
{"test\\.test", false},
|
|
{"test test", false},
|
|
} {
|
|
err := checkNixPath(te.in)
|
|
if te.okay && err != nil {
|
|
t.Errorf("%q: expected okay, got %v", te.in, err)
|
|
}
|
|
if !te.okay && err == nil {
|
|
t.Errorf("%q: expected error", te.in)
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestEvalHscloud nix exercises EvalHscloudNix against
|
|
// //go/workspace/exports.nix.
|
|
func TestEvalHscloudNix(t *testing.T) {
|
|
if _, err := os.Stat("/nix/store"); err != nil {
|
|
t.Skip("no /nix/store")
|
|
}
|
|
ctx, ctxC := context.WithCancel(context.Background())
|
|
defer ctxC()
|
|
|
|
{
|
|
var got []string
|
|
if err := EvalHscloudNix(ctx, &got, "go.workspace.exports.someArray"); err != nil {
|
|
t.Errorf("Accessing someArray failed: %v", err)
|
|
} else {
|
|
want := []string{"hello", "there"}
|
|
if diff := cmp.Diff(want, got); diff != "" {
|
|
t.Errorf("someArray diff:\n%s", diff)
|
|
}
|
|
}
|
|
}
|
|
|
|
{
|
|
type barS struct {
|
|
Baz int64 `json:"baz"`
|
|
}
|
|
type gotS struct {
|
|
Foo string `json:"foo"`
|
|
Bar barS `json:"bar"`
|
|
}
|
|
var got gotS
|
|
if err := EvalHscloudNix(ctx, &got, "go.workspace.exports.someAttrset"); err != nil {
|
|
t.Errorf("Accessing someAttrset failed: %v", err)
|
|
} else {
|
|
want := gotS{
|
|
Foo: "foo",
|
|
Bar: barS{
|
|
Baz: 42,
|
|
},
|
|
}
|
|
if diff := cmp.Diff(want, got); diff != "" {
|
|
t.Errorf("someAttrset diff:\n%s", diff)
|
|
}
|
|
}
|
|
}
|
|
}
|