annotate zs_build_test.go @ 24:d052f3a44195 draft

fixed output file names in html pages, fixed amber function bindings, replaced print command with build, fixed plugin functions, implemented zs and exec functions
author zaitsev.serge
date Sun, 30 Aug 2015 12:22:00 +0000
parents be58ace6edae
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
1 package main
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
2
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
3 import (
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
4 "crypto/md5"
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
5 "encoding/hex"
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
6 "io"
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
7 "io/ioutil"
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
8 "os"
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
9 "path/filepath"
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
10 "strings"
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
11 "testing"
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
12 )
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
13
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
14 const TESTDIR = ".test"
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
15
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
16 func TestBuild(t *testing.T) {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
17 files, _ := ioutil.ReadDir("testdata")
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
18 for _, f := range files {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
19 if f.IsDir() {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
20 testBuild(filepath.Join("testdata", f.Name()), t)
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
21 }
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
22 }
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
23 }
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
24
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
25 func testBuild(path string, t *testing.T) {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
26 wd, _ := os.Getwd()
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
27 os.Chdir(path)
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
28 args := os.Args[:]
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
29 os.Args = []string{"zs", "build"}
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
30 t.Log("--- BUILD", path)
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
31 main()
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
32
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
33 compare(PUBDIR, TESTDIR, t)
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
34
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
35 os.Chdir(wd)
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
36 os.Args = args
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
37 }
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
38
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
39 func compare(pub, test string, t *testing.T) {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
40 a := md5dir(pub)
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
41 b := md5dir(test)
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
42 for k, v := range a {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
43 if s, ok := b[k]; !ok {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
44 t.Error("Unexpected file:", k, v)
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
45 } else if s != v {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
46 t.Error("Different file:", k, v, s)
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
47 } else {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
48 t.Log("Matching file", k, v)
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
49 }
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
50 }
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
51 for k, v := range b {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
52 if _, ok := a[k]; !ok {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
53 t.Error("Missing file:", k, v)
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
54 }
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
55 }
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
56 }
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
57
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
58 func md5dir(path string) map[string]string {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
59 files := map[string]string{}
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
60 filepath.Walk(path, func(s string, info os.FileInfo, err error) error {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
61 if err == nil && !info.IsDir() {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
62 if f, err := os.Open(s); err == nil {
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
63 defer f.Close()
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
64 hash := md5.New()
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
65 io.Copy(hash, f)
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
66 files[strings.TrimPrefix(s, path)] = hex.EncodeToString(hash.Sum(nil))
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
67 }
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
68 }
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
69 return nil
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
70 })
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
71 return files
be58ace6edae added integration test for build procedure
zaitsev.serge
parents:
diff changeset
72 }