docs/builder/parser/parser_test.go

57 lines
1.1 KiB
Go

package parser
import (
"io/ioutil"
"os"
"path/filepath"
"testing"
)
const testDir = "testfiles"
func TestTestData(t *testing.T) {
f, err := os.Open(testDir)
if err != nil {
t.Fatal(err)
}
defer f.Close()
dirs, err := f.Readdir(0)
if err != nil {
t.Fatal(err)
}
for _, dir := range dirs {
dockerfile := filepath.Join(testDir, dir.Name(), "Dockerfile")
resultfile := filepath.Join(testDir, dir.Name(), "result")
df, err := os.Open(dockerfile)
if err != nil {
t.Fatalf("Dockerfile missing for %s: %s", dir.Name(), err.Error())
}
rf, err := os.Open(resultfile)
if err != nil {
t.Fatalf("Result file missing for %s: %s", dir.Name(), err.Error())
}
ast, err := Parse(df)
if err != nil {
t.Fatalf("Error parsing %s's dockerfile: %s", dir.Name(), err.Error())
}
content, err := ioutil.ReadAll(rf)
if err != nil {
t.Fatalf("Error reading %s's result file: %s", dir.Name(), err.Error())
}
if ast.Dump() != string(content) {
t.Fatalf("%s: AST dump of dockerfile does not match result", dir.Name())
}
df.Close()
rf.Close()
}
}