parser_test.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package parser
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "path/filepath"
  6. "testing"
  7. )
  8. const testDir = "testfiles"
  9. func TestTestData(t *testing.T) {
  10. f, err := os.Open(testDir)
  11. if err != nil {
  12. t.Fatal(err)
  13. }
  14. defer f.Close()
  15. dirs, err := f.Readdir(0)
  16. if err != nil {
  17. t.Fatal(err)
  18. }
  19. for _, dir := range dirs {
  20. dockerfile := filepath.Join(testDir, dir.Name(), "Dockerfile")
  21. resultfile := filepath.Join(testDir, dir.Name(), "result")
  22. df, err := os.Open(dockerfile)
  23. if err != nil {
  24. t.Fatalf("Dockerfile missing for %s: %s", dir.Name(), err.Error())
  25. }
  26. rf, err := os.Open(resultfile)
  27. if err != nil {
  28. t.Fatalf("Result file missing for %s: %s", dir.Name(), err.Error())
  29. }
  30. ast, err := Parse(df)
  31. if err != nil {
  32. t.Fatalf("Error parsing %s's dockerfile: %s", dir.Name(), err.Error())
  33. }
  34. content, err := ioutil.ReadAll(rf)
  35. if err != nil {
  36. t.Fatalf("Error reading %s's result file: %s", dir.Name(), err.Error())
  37. }
  38. if ast.Dump() != string(content) {
  39. t.Fatalf("%s: AST dump of dockerfile does not match result", dir.Name())
  40. }
  41. df.Close()
  42. rf.Close()
  43. }
  44. }