github.com/kilpkonn/gtm-enhanced@v1.3.5/metric/manager_test.go (about) 1 // Copyright 2016 Michael Schenk. All rights reserved. 2 // Use of this source code is governed by a MIT-style 3 // license that can be found in the LICENSE file. 4 5 package metric 6 7 import ( 8 "os" 9 "path/filepath" 10 "regexp" 11 "testing" 12 13 "github.com/git-time-metric/gtm/project" 14 "github.com/git-time-metric/gtm/scm" 15 "github.com/git-time-metric/gtm/util" 16 ) 17 18 func TestFullCommit(t *testing.T) { 19 repo := util.NewTestRepo(t, false) 20 defer repo.Remove() 21 22 curDir, err := os.Getwd() 23 util.CheckFatal(t, err) 24 defer os.Chdir(curDir) 25 26 os.Chdir(repo.Workdir()) 27 28 repo.SaveFile("event.go", "event", "") 29 repo.SaveFile("event_test.go", "event", "") 30 repo.SaveFile("1458496803.event", project.GTMDir, filepath.Join("event", "event.go")) 31 repo.SaveFile("1458496811.event", project.GTMDir, filepath.Join("event", "event_test.go")) 32 repo.SaveFile("1458496818.event", project.GTMDir, filepath.Join("event", "event.go")) 33 repo.SaveFile("1458496943.event", project.GTMDir, filepath.Join("event", "event.go")) 34 35 treeID := repo.Stage(filepath.Join("event", "event.go"), filepath.Join("event", "event_test.go")) 36 commitID := repo.Commit(treeID) 37 38 _, err = Process(false) 39 if err != nil { 40 t.Fatalf("Process(false) - test full commit, want error nil, got %s", err) 41 } 42 43 n, err := scm.ReadNote(commitID.String(), "gtm-data", true) 44 util.CheckFatal(t, err) 45 46 want := []string{`total:180.*`, `event.go:160.*,m`, `event_test.go:20.*,m`} 47 for _, s := range want { 48 matched, err := regexp.MatchString(s, n.Note) 49 util.CheckFatal(t, err) 50 if !matched { 51 t.Errorf("Process(false) - test full commit, \nwant:\n%s,\ngot:\n%s", s, n.Note) 52 } 53 54 } 55 } 56 57 func TestPartialCommit(t *testing.T) { 58 repo := util.NewTestRepo(t, false) 59 defer repo.Remove() 60 61 curDir, err := os.Getwd() 62 util.CheckFatal(t, err) 63 defer os.Chdir(curDir) 64 65 os.Chdir(repo.Workdir()) 66 67 repo.SaveFile("event.go", "event", "") 68 repo.SaveFile("event_test.go", "event", "") 69 treeID := repo.Stage(filepath.Join("event", "event.go"), filepath.Join("event", "event_test.go")) 70 commitID := repo.Commit(treeID) 71 72 repo.SaveFile("event_test.go", "event", "update") 73 repo.SaveFile("1458496803.event", project.GTMDir, filepath.Join("event", "event.go")) 74 repo.SaveFile("1458496811.event", project.GTMDir, filepath.Join("event", "event_test.go")) 75 repo.SaveFile("1458496818.event", project.GTMDir, filepath.Join("event", "event.go")) 76 repo.SaveFile("1458496943.event", project.GTMDir, filepath.Join("event", "event.go")) 77 78 treeID = repo.Stage(filepath.Join("event", "event_test.go")) 79 commitID = repo.Commit(treeID) 80 81 _, err = Process(false) 82 if err != nil { 83 t.Fatalf("Process(false) - test full commit, want error nil, got %s", err) 84 } 85 86 n, err := scm.ReadNote(commitID.String(), "gtm-data", true) 87 util.CheckFatal(t, err) 88 89 want := []string{`total:180`, `event_test.go:20.*,m`, `event.go:160.*,r`} 90 for _, s := range want { 91 matched, err := regexp.MatchString(s, n.Note) 92 util.CheckFatal(t, err) 93 if !matched { 94 t.Errorf("Process(false) - test partial commit, \nwant:\n%s,\ngot:\n%s", s, n.Note) 95 } 96 } 97 } 98 99 func TestInterim(t *testing.T) { 100 repo := util.NewTestRepo(t, false) 101 defer repo.Remove() 102 103 curDir, err := os.Getwd() 104 util.CheckFatal(t, err) 105 defer os.Chdir(curDir) 106 107 os.Chdir(repo.Workdir()) 108 109 repo.SaveFile("event.go", "event", "") 110 repo.SaveFile("event_test.go", "event", "") 111 repo.SaveFile("1458496803.event", project.GTMDir, filepath.Join("event", "event.go")) 112 repo.SaveFile("1458496811.event", project.GTMDir, filepath.Join("event", "event_test.go")) 113 repo.SaveFile("1458496818.event", project.GTMDir, filepath.Join("event", "event.go")) 114 repo.SaveFile("1458496943.event", project.GTMDir, filepath.Join("event", "event.go")) 115 116 treeID := repo.Stage(filepath.Join("event", "event.go"), filepath.Join("event", "event_test.go")) 117 commitID := repo.Commit(treeID) 118 119 commitNote, err := Process(true) 120 if err != nil { 121 t.Fatalf("Process(false) - test full commit, want error nil, got %s", err) 122 } 123 124 n, err := scm.ReadNote(commitID.String(), "gtm-data", true) 125 util.CheckFatal(t, err) 126 127 if n.Note != "" { 128 t.Errorf("Process(true) - test interim, notes is note blank, \n%s\n", n.Note) 129 } 130 131 if commitNote.Total() != 180 { 132 t.Errorf("Process(true) - test interim, want total 300, got %d", commitNote.Total()) 133 } 134 }