diff --git a/compiler/internal/build/build_test.go b/compiler/internal/build/build_test.go new file mode 100644 index 00000000..6f3d336b --- /dev/null +++ b/compiler/internal/build/build_test.go @@ -0,0 +1,42 @@ +package build + +import ( + "fmt" + "os" + "testing" + + "github.com/goplus/llgo/compiler/internal/mockable" +) + +func mockRun(args []string, cfg *Config) { + mockable.EnableMock() + defer func() { + if r := recover(); r != nil { + if r != "exit" { + panic(r) + } else { + exitCode := mockable.ExitCode() + if (exitCode != 0) != false { + panic(fmt.Errorf("got exit code %d", exitCode)) + } + } + } + }() + file, _ := os.CreateTemp("", "llgo-*") + cfg.OutFile = file.Name() + file.Close() + defer os.Remove(cfg.OutFile) + Do(args, cfg) +} + +func TestRun(t *testing.T) { + mockRun([]string{"../../cl/_testgo/print"}, &Config{Mode: ModeRun}) +} + +func TestTest(t *testing.T) { + mockRun([]string{"../../../_demo/runtest"}, &Config{Mode: ModeTest}) +} + +func TestCmpTest(t *testing.T) { + mockRun([]string{"../../../_demo/runtest"}, &Config{Mode: ModeCmpTest}) +}