diff --git a/pkg/compiler/compiler.go b/pkg/compiler/compiler.go index 6875409fe..91fc072c6 100644 --- a/pkg/compiler/compiler.go +++ b/pkg/compiler/compiler.go @@ -3,10 +3,7 @@ package compiler import ( "bytes" "fmt" - "go/ast" - "go/build" "go/parser" - "go/types" "io" "io/ioutil" "os" @@ -61,11 +58,6 @@ func Compile(r io.Reader) ([]byte, error) { return buf, nil } -type archive struct { - f *ast.File - typeInfo *types.Info -} - // CompileAndSave will compile and save the file to disk. func CompileAndSave(src string, o *Options) ([]byte, error) { if !strings.HasSuffix(src, ".go") { @@ -90,11 +82,3 @@ func CompileAndSave(src string, o *Options) ([]byte, error) { out := fmt.Sprintf("%s.%s", o.Outfile, o.Ext) return b, ioutil.WriteFile(out, b, os.ModePerm) } - -func gopath() string { - gopath := os.Getenv("GOPATH") - if len(gopath) == 0 { - gopath = build.Default.GOPATH - } - return gopath -} diff --git a/pkg/compiler/compiler_test.go b/pkg/compiler/compiler_test.go index e49a31f30..0f3903860 100644 --- a/pkg/compiler/compiler_test.go +++ b/pkg/compiler/compiler_test.go @@ -7,30 +7,63 @@ import ( "testing" "github.com/CityOfZion/neo-go/pkg/compiler" + "github.com/stretchr/testify/require" ) const examplePath = "../../examples" +const exampleCompilePath = "testdata/compile" +const exampleSavePath = exampleCompilePath + "/save" -func TestExamplesFolder(t *testing.T) { - infos, err := ioutil.ReadDir(examplePath) - if err != nil { - t.Fatal(err) +type compilerTestCase struct { + name string + function func() +} + +func TestCompiler(t *testing.T) { + testCases := []compilerTestCase{ + { + name: "TestCompile", + function: func() { + infos, err := ioutil.ReadDir(examplePath) + require.NoError(t, err) + for _, info := range infos { + infos, err := ioutil.ReadDir(path.Join(examplePath, info.Name())) + require.NoError(t, err) + if len(infos) == 0 { + t.Fatal("detected smart contract folder with no contract in it") + } + + filename := filterFilename(infos) + targetPath := path.Join(examplePath, info.Name(), filename) + if err := compileFile(targetPath); err != nil { + t.Fatal(err) + } + } + }, + }, + { + name: "TestCompileAndSave", + function: func() { + infos, err := ioutil.ReadDir(exampleCompilePath) + require.NoError(t, err) + err = os.MkdirAll(exampleSavePath, os.ModePerm) + require.NoError(t, err) + outfile := exampleSavePath + "/test.avm" + if _, err := compiler.CompileAndSave(exampleCompilePath+"/"+infos[0].Name(), &compiler.Options{Outfile: outfile}); err != nil { + t.Fatal(err) + } + defer func() { + err := os.RemoveAll(exampleSavePath) + require.NoError(t, err) + }() + }, + }, } - for _, info := range infos { - infos, err := ioutil.ReadDir(path.Join(examplePath, info.Name())) - if err != nil { - t.Fatal(err) - } - if len(infos) == 0 { - t.Fatal("detected smart contract folder with no contract in it") - } - - filename := filterFilename(infos) - targetPath := path.Join(examplePath, info.Name(), filename) - if err := compileFile(targetPath); err != nil { - t.Fatal(err) - } + for _, tcase := range testCases { + t.Run(tcase.name, func(t *testing.T) { + tcase.function() + }) } } diff --git a/pkg/compiler/testdata/compile/test.go b/pkg/compiler/testdata/compile/test.go new file mode 100644 index 000000000..4290d67c4 --- /dev/null +++ b/pkg/compiler/testdata/compile/test.go @@ -0,0 +1,7 @@ +package compile + +import "github.com/CityOfZion/neo-go/pkg/interop/runtime" + +func Main() { + runtime.Notify("Hello world!") +}