package meshtest import ( "os" "os/exec" "path/filepath" "runtime" "testing" ) // bundlesWhy returns the reason bundles cannot be launched from a checkout rooted at root, or "" when they can: the // TypeScript and Python bundles the runtime and the console launch need node and the package // @novox/mesh-sdk, which comes from the package registry and is installed beside node-tools/package.json // (novox/hq ADR 0529 clause 1: what merge-check.sh said "NOT TESTED HERE" about is a skip with its reason). func bundlesWhy(root string, haveNode bool) string { if !haveNode { return "node is not installed" } if _, err := os.Stat(filepath.Join(root, "node_modules", "@novox", "mesh-sdk")); err != nil { return "@novox/mesh-sdk is not installed in " + filepath.Join(root, "node_modules") } return "" } // NeedBundles skips the test, saying why, where the bundles it launches cannot run here. func NeedBundles(t *testing.T) { t.Helper() _, err := exec.LookPath("node") if why := bundlesWhy(moduleRoot(), err == nil); why != "" { t.Skip("NOT TESTED HERE: this test launches bundles, and " + why) } } // moduleRoot is node-tools/, where package.json and node_modules are. func moduleRoot() string { _, here, _, _ := runtime.Caller(0) return filepath.Join(filepath.Dir(here), "..", "..") }