64 lines
1.9 KiB
Go
64 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
// module writes modules/<name> with a TypeScript artifact, the package.json given ("" for none) and, when lock, a lock.
|
|
func module(t *testing.T, root, name, language, pkg string, lock bool) {
|
|
t.Helper()
|
|
dir := filepath.Join(root, "modules", name)
|
|
if err := os.MkdirAll(dir, 0o755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
write := func(file, body string) {
|
|
if err := os.WriteFile(filepath.Join(dir, file), []byte(body), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
write("module.json", `{"module":"`+name+`","build":{"artifacts":[{"name":"tools","kind":"bundle","language":"`+language+`","from":"index.ts"}]}}`)
|
|
if pkg != "" {
|
|
write("package.json", pkg)
|
|
}
|
|
if lock {
|
|
write("package-lock.json", "{}")
|
|
}
|
|
}
|
|
|
|
const sdkOnly = `{"dependencies":{"@novox/mesh-sdk":"^0.1.1"},"devDependencies":{"typescript":"^5","@types/node":"^22"}}`
|
|
const withPg = `{"dependencies":{"@novox/mesh-sdk":"^0.1.1","pg":"^8","@types/pg":"^8"}}`
|
|
|
|
func TestAModuleNamingOnlyTheSDKNeedsNoLock(t *testing.T) {
|
|
root := t.TempDir()
|
|
module(t, root, "plain", "typescript", sdkOnly, false)
|
|
module(t, root, "none", "typescript", "", false)
|
|
got, err := Check(root)
|
|
if err != nil || len(got) != 0 {
|
|
t.Fatalf("%v %v", got, err)
|
|
}
|
|
}
|
|
|
|
func TestAModuleNamingMorePackagesWithoutALockIsRefusedNamingThem(t *testing.T) {
|
|
root := t.TempDir()
|
|
module(t, root, "db", "typescript", withPg, false)
|
|
module(t, root, "db-locked", "typescript", withPg, true)
|
|
got, err := Check(root)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if want := []Finding{{Module: "db", Packages: []string{"pg"}}}; !reflect.DeepEqual(got, want) {
|
|
t.Fatalf("got %v, want %v", got, want)
|
|
}
|
|
}
|
|
|
|
func TestAModuleThatIsNotTypeScriptIsNotJudged(t *testing.T) {
|
|
root := t.TempDir()
|
|
module(t, root, "go", "go", withPg, false)
|
|
if got, err := Check(root); err != nil || len(got) != 0 {
|
|
t.Fatalf("%v %v", got, err)
|
|
}
|
|
}
|