Merge "tools/naming/simulator: port test.sh to go integration tests."
diff --git a/tools/naming/simulator/driver.go b/tools/naming/simulator/driver.go
index 34c6e91..faa02f8 100644
--- a/tools/naming/simulator/driver.go
+++ b/tools/naming/simulator/driver.go
@@ -33,12 +33,14 @@
var (
interactive bool
+ filename string
handles map[string]*cmdState
jsonDict map[string]string
)
func init() {
flag.BoolVar(&interactive, "interactive", true, "set interactive/batch mode")
+ flag.StringVar(&filename, "file", "", "command file")
handles = make(map[string]*cmdState)
jsonDict = make(map[string]string)
flag.Usage = usage
@@ -101,6 +103,17 @@
var shutdown veyron2.Shutdown
ctx, shutdown = veyron2.Init()
+ input := os.Stdin
+ if len(filename) > 0 {
+ f, err := os.Open(filename)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "unexpected error: %s\n", err)
+ os.Exit(1)
+ }
+ input = f
+ interactive = false
+ }
+
// Subprocesses commands are run by fork/execing this binary
// so we must test to see if this instance is a subprocess or the
// the original command line instance.
@@ -122,7 +135,7 @@
}
defer shell.Cleanup(os.Stderr, os.Stderr)
- scanner := bufio.NewScanner(os.Stdin)
+ scanner := bufio.NewScanner(input)
lineno := 1
prompt(lineno)
for scanner.Scan() {
diff --git a/tools/naming/simulator/test.sh b/tools/naming/simulator/test.sh
deleted file mode 100755
index ff515d2..0000000
--- a/tools/naming/simulator/test.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-
-# Test the simulator command-line tool.
-
-source "$(go list -f {{.Dir}} v.io/core/shell/lib)/shell_test.sh"
-
-# Run the test under the security agent.
-shell_test::enable_agent "$@"
-
-readonly WORKDIR="${shell_test_WORK_DIR}"
-
-main() {
- # Build binaries.
- cd "${WORKDIR}"
- PKG="v.io/core/veyron/tools/naming/simulator"
- SIMULATOR_BIN="$(shell_test::build_go_binary ${PKG})"
-
- local -r DIR=$(go list -f {{.Dir}} "${PKG}")
- local file
- for file in "${DIR}"/*.scr; do
- echo "${file}"
- "${VRUN}" "${SIMULATOR_BIN}" --interactive=false < "${file}" &> output || shell_test::fail "line ${LINENO}: failed for ${file}: $(cat output)"
- done
- shell_test::pass
-}
-
-main "$@"
diff --git a/tools/naming/simulator/ambiguity.scr b/tools/naming/simulator/testdata/ambiguity.scr
similarity index 100%
rename from tools/naming/simulator/ambiguity.scr
rename to tools/naming/simulator/testdata/ambiguity.scr
diff --git a/tools/naming/simulator/echo.scr b/tools/naming/simulator/testdata/echo.scr
similarity index 100%
rename from tools/naming/simulator/echo.scr
rename to tools/naming/simulator/testdata/echo.scr
diff --git a/tools/naming/simulator/testdata/integration_test.go b/tools/naming/simulator/testdata/integration_test.go
new file mode 100644
index 0000000..9cee3bf
--- /dev/null
+++ b/tools/naming/simulator/testdata/integration_test.go
@@ -0,0 +1,45 @@
+package testdata
+
+import (
+ "fmt"
+ "io/ioutil"
+ "os"
+ "regexp"
+ "testing"
+
+ "v.io/core/veyron/lib/modules"
+ "v.io/core/veyron/lib/testutil/integration"
+
+ _ "v.io/core/veyron/profiles/static"
+)
+
+func TestHelperProcess(t *testing.T) {
+ modules.DispatchInTest()
+}
+
+func TestSimulator(t *testing.T) {
+ env := integration.NewTestEnvironment(t)
+ defer env.Cleanup()
+ binary := env.BuildGoPkg("v.io/core/veyron/tools/naming/simulator")
+ files, err := ioutil.ReadDir(".")
+ if err != nil {
+ t.Fatal(err)
+ }
+ scripts := []string{}
+ re := regexp.MustCompile(`.*\.scr`)
+ for _, f := range files {
+ if !f.IsDir() && re.MatchString(f.Name()) {
+ scripts = append(scripts, f.Name())
+ }
+ }
+ for _, script := range scripts {
+ invocation := binary.Start("--file", script)
+ output, errorOutput := invocation.Output(), invocation.ErrorOutput()
+ if err := invocation.Wait(nil, nil); err != nil {
+ fmt.Fprintf(os.Stderr, "Script %v failed\n", script)
+ fmt.Fprintln(os.Stderr, output)
+ fmt.Fprintln(os.Stderr, errorOutput)
+ t.Fatal(err)
+ }
+ }
+}
diff --git a/tools/naming/simulator/json_example.scr b/tools/naming/simulator/testdata/json_example.scr
similarity index 100%
rename from tools/naming/simulator/json_example.scr
rename to tools/naming/simulator/testdata/json_example.scr
diff --git a/tools/naming/simulator/mt_complex.scr b/tools/naming/simulator/testdata/mt_complex.scr
similarity index 100%
rename from tools/naming/simulator/mt_complex.scr
rename to tools/naming/simulator/testdata/mt_complex.scr
diff --git a/tools/naming/simulator/mt_simple.scr b/tools/naming/simulator/testdata/mt_simple.scr
similarity index 100%
rename from tools/naming/simulator/mt_simple.scr
rename to tools/naming/simulator/testdata/mt_simple.scr
diff --git a/tools/naming/simulator/proxy.scr b/tools/naming/simulator/testdata/proxy.scr
similarity index 100%
rename from tools/naming/simulator/proxy.scr
rename to tools/naming/simulator/testdata/proxy.scr
diff --git a/tools/naming/simulator/public_echo.scr b/tools/naming/simulator/testdata/public_echo.scr
similarity index 100%
rename from tools/naming/simulator/public_echo.scr
rename to tools/naming/simulator/testdata/public_echo.scr