added compiler to test all example files. (CityOfZion/neo-storm#9)

Imported from CityOfZion/neo-storm (e756a91b292f525f2cd7e6d6c05b46df582c8ece).
This commit is contained in:
Anthony De Meulemeester 2018-08-21 14:51:16 +02:00 committed by Roman Khimov
parent d804b517fc
commit 2fbb269c0d

View file

@ -0,0 +1,50 @@
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) > 1 {
t.Fatal("detected smart contract folder with more then 1 contract file")
}
if len(infos) == 0 {
t.Fatal("detected smart contract folder with no contract in it")
}
filename := infos[0].Name()
targetPath := path.Join(examplePath, info.Name(), filename)
if err := compileFile(targetPath); err != nil {
t.Fatal(err)
}
}
}
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
}