neoneo-go/pkg/vm/compiler/compiler_test.go
Anthony De Meulemeester b997eeb051 fixed token example and fixed compiler test with multiple dirs (CityOfZion/neo-storm#20)
Imported from CityOfZion/neo-storm (2d0814a04c34f320dee41674066ccd766a7a8ea1).
2019-08-14 19:14:05 +03:00

57 lines
1 KiB
Go

package compiler_test
import (
"io/ioutil"
"os"
"path"
"testing"
"github.com/CityOfZion/neo-go/pkg/vm/compiler"
)
const examplePath = "../../../examples"
func TestExamplesFolder(t *testing.T) {
infos, err := ioutil.ReadDir(examplePath)
if err != nil {
t.Fatal(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)
}
}
}
func filterFilename(infos []os.FileInfo) string {
for _, info := range infos {
if !info.IsDir() {
return info.Name()
}
}
return ""
}
func compileFile(src string) error {
o := compiler.Options{
Outfile: "tmp/contract.avm",
}
file, err := os.Open(src)
if err != nil {
return err
}
_, err = compiler.Compile(file, &o)
return err
}