Mercurial > yakumo_izuru > aya
comparison build_test.go @ 47:0adadd497d23 draft
Forked project
| author | prologic |
|---|---|
| date | Fri, 17 Sep 2021 23:32:14 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 46:afb3280aaf28 | 47:0adadd497d23 |
|---|---|
| 1 package main | |
| 2 | |
| 3 import ( | |
| 4 "crypto/md5" | |
| 5 "encoding/hex" | |
| 6 "io" | |
| 7 "io/ioutil" | |
| 8 "os" | |
| 9 "path/filepath" | |
| 10 "strings" | |
| 11 "testing" | |
| 12 ) | |
| 13 | |
| 14 const TESTDIR = ".test" | |
| 15 | |
| 16 func TestBuild(t *testing.T) { | |
| 17 files, _ := ioutil.ReadDir("testdata") | |
| 18 for _, f := range files { | |
| 19 if f.IsDir() { | |
| 20 testBuild(filepath.Join("testdata", f.Name()), t) | |
| 21 } | |
| 22 } | |
| 23 } | |
| 24 | |
| 25 func testBuild(path string, t *testing.T) { | |
| 26 wd, _ := os.Getwd() | |
| 27 os.Chdir(path) | |
| 28 args := os.Args[:] | |
| 29 os.Args = []string{"zs", "build"} | |
| 30 t.Log("--- BUILD", path) | |
| 31 main() | |
| 32 | |
| 33 compare(PUBDIR, TESTDIR, t) | |
| 34 | |
| 35 os.Chdir(wd) | |
| 36 os.Args = args | |
| 37 } | |
| 38 | |
| 39 func compare(pub, test string, t *testing.T) { | |
| 40 a := md5dir(pub) | |
| 41 b := md5dir(test) | |
| 42 for k, v := range a { | |
| 43 if s, ok := b[k]; !ok { | |
| 44 t.Error("Unexpected file:", k, v) | |
| 45 } else if s != v { | |
| 46 t.Error("Different file:", k, v, s) | |
| 47 } else { | |
| 48 t.Log("Matching file", k, v) | |
| 49 } | |
| 50 } | |
| 51 for k, v := range b { | |
| 52 if _, ok := a[k]; !ok { | |
| 53 t.Error("Missing file:", k, v) | |
| 54 } | |
| 55 } | |
| 56 } | |
| 57 | |
| 58 func md5dir(path string) map[string]string { | |
| 59 files := map[string]string{} | |
| 60 filepath.Walk(path, func(s string, info os.FileInfo, err error) error { | |
| 61 if err == nil && !info.IsDir() { | |
| 62 if f, err := os.Open(s); err == nil { | |
| 63 defer f.Close() | |
| 64 hash := md5.New() | |
| 65 io.Copy(hash, f) | |
| 66 files[strings.TrimPrefix(s, path)] = hex.EncodeToString(hash.Sum(nil)) | |
| 67 } | |
| 68 } | |
| 69 return nil | |
| 70 }) | |
| 71 return files | |
| 72 } |
