// SetupExecutionEnvironment initializes the REPL session and set of tmp files. func SetupExecutionEnvironment() { var err error REPLSession, err = repl.NewSession() if err != nil { panic(err) } fset = token.NewFileSet() }
// TestRun_Const tests a constant within the replpkg func TestRun_Const(t *testing.T) { s, err := repl.NewSession() noError(t, err) codes := []string{ `const ( a = iota; b )`, `a`, `b`, } for _, code := range codes { _, _, err := s.Eval(code) noError(t, err) } }
// TestRun_QuickFix_used_as_value tests assignment of values to variables // and subsequent use func TestRun_QuickFix_used_as_value(t *testing.T) { s, err := repl.NewSession() noError(t, err) codes := []string{ `:import log`, `a := 1`, `log.SetPrefix("")`, } for _, code := range codes { _, _, err := s.Eval(code) noError(t, err) } }
// TestRun_import tests importing and use of a package func TestRun_import(t *testing.T) { s, err := repl.NewSession() noError(t, err) codes := []string{ ":import encoding/json", "b, err := json.Marshal(nil)", "string(b)", } for _, code := range codes { _, _, err := s.Eval(code) noError(t, err) } }
// TestRun_Copy tests a copy within the replpkg func TestRun_Copy(t *testing.T) { s, err := repl.NewSession() noError(t, err) codes := []string{ `a := []string{"hello", "world"}`, `b := []string{"goodbye", "world"}`, `copy(a, b)`, `if (a[0] != "goodbye") { panic("should be copied") }`, } for _, code := range codes { _, _, err := s.Eval(code) noError(t, err) } }
// TestRun_QuickFix_evaluated_but_not_used makes sure errors are not thrown for // evaluations of variables that aren't used func TestRun_QuickFix_evaluated_but_not_used(t *testing.T) { s, err := repl.NewSession() noError(t, err) codes := []string{ `[]byte("")`, `make([]int, 0)`, `1+1`, `func() {}`, `(4 & (1 << 1))`, `1`, } for _, code := range codes { _, _, err := s.Eval(code) noError(t, err) } }