46 lines
1.6 KiB
Go
46 lines
1.6 KiB
Go
package planhands
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// A line that takes a plan existing for its module handed is refused and named; one that asks Hands, one marked "not
|
|
// handing" and any test file pass; and the real catalogue is clean.
|
|
func TestNoModuleTakesAPlanExistingForItsModuleHanded(t *testing.T) {
|
|
root := t.TempDir()
|
|
for f, body := range map[string]string{
|
|
"modules/vault/own.go": "if a.Provisioning != nil {\n",
|
|
"modules/client/plan.go": "if len(a.Provisioning) == 0 {\n",
|
|
"modules/vault/rule.go": "return a.Provisioning != nil && a.Provisioning.Hands(), nil\n",
|
|
"modules/client/binds.go": "if a.Provisioning != nil { // binds, not handing\n",
|
|
"modules/vault/own_test.go": "if a.Provisioning == nil {\n",
|
|
"modules/client/notgo/plan.md": "if a.Provisioning == nil {\n",
|
|
} {
|
|
p := filepath.Join(root, f)
|
|
if err := os.MkdirAll(filepath.Dir(p), 0o755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.WriteFile(p, []byte(body), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
got, err := Problems(root)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(got) != 2 || !strings.HasPrefix(got[0], "modules/client/plan.go:1:") || !strings.HasPrefix(got[1], "modules/vault/own.go:1:") {
|
|
t.Fatalf("refused %v, wanted the client's and the vault's existence tests alone", got)
|
|
}
|
|
real, err := Problems(filepath.Join("..", ".."))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(real) > 0 {
|
|
t.Errorf("a module takes a plan existing for its module handed; ask catalogue.Plan.Hands, or mark a line that reads "+
|
|
"only who binds whom \"not handing\":\n%s", strings.Join(real, "\n"))
|
|
}
|
|
}
|