github.com/kilpkonn/gtm-enhanced@v1.3.5/event/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 event 6 7 import ( 8 "io/ioutil" 9 "os" 10 "path/filepath" 11 "reflect" 12 "strings" 13 "testing" 14 15 "github.com/git-time-metric/gtm/project" 16 "github.com/git-time-metric/gtm/util" 17 ) 18 19 func TestRecord(t *testing.T) { 20 repo := util.NewTestRepo(t, false) 21 defer repo.Remove() 22 23 curDir, err := os.Getwd() 24 util.CheckFatal(t, err) 25 defer os.Chdir(curDir) 26 27 os.Chdir(repo.Workdir()) 28 29 repo.SaveFile("event.go", "event", "") 30 sourceFile := filepath.Join(repo.Workdir(), "event", "event.go") 31 if err = Record(sourceFile); err != project.ErrNotInitialized { 32 t.Errorf("Record(%s), want error %s, got error %s", sourceFile, project.ErrNotInitialized, err) 33 } 34 35 project.Initialize(false, []string{}, false) 36 37 sourceFile = filepath.Join(repo.Workdir(), "doesnotexist.go") 38 if err = Record(sourceFile); err != project.ErrFileNotFound { 39 t.Errorf("Record(%s), want error %s, got %s", sourceFile, project.ErrFileNotFound, err) 40 } 41 42 sourceFile = filepath.Join(repo.Workdir(), "event", "event.go") 43 if err = Record(sourceFile); err != nil { 44 t.Errorf("Record(%s), want error nil, got %s", sourceFile, err) 45 } 46 47 gtmPath := filepath.Join(repo.Workdir(), project.GTMDir) 48 49 files, err := ioutil.ReadDir(gtmPath) 50 if err != nil { 51 t.Errorf("Record(%s) returns error %s when reading .gtm directory", sourceFile, err) 52 } 53 if len(files) != 1 { 54 t.Errorf("Record(%s), want file count 1, got %d", sourceFile, len(files)) 55 } 56 57 b, err := ioutil.ReadFile(filepath.Join(gtmPath, files[0].Name())) 58 if err != nil { 59 t.Fatalf("Record(%s), unable to read event file %s, %s", sourceFile, files[0].Name(), err) 60 } 61 62 if !strings.Contains(string(b), filepath.Join("event", "event.go")) { 63 t.Errorf("Record(%s), want file contents %s, got %s", sourceFile, filepath.Join("event", "event.go"), string(b)) 64 } 65 } 66 67 func TestProcess(t *testing.T) { 68 repo := util.NewTestRepo(t, false) 69 defer repo.Remove() 70 71 curDir, err := os.Getwd() 72 util.CheckFatal(t, err) 73 defer os.Chdir(curDir) 74 75 os.Chdir(repo.Workdir()) 76 77 repo.SaveFile("event.go", "event", "") 78 repo.SaveFile("event_test.go", "event", "") 79 repo.SaveFile("1458496803.event", project.GTMDir, filepath.Join("event", "event.go")) 80 repo.SaveFile("1458496811.event", project.GTMDir, filepath.Join("event", "event_test.go")) 81 repo.SaveFile("1458496818.event", project.GTMDir, filepath.Join("event", "event.go")) 82 repo.SaveFile("1458496943.event", project.GTMDir, filepath.Join("event", "event.go")) 83 84 expected := map[int64]map[string]int{ 85 int64(1458496800): {filepath.Join("event", "event.go"): 2, filepath.Join("event", "event_test.go"): 1}, 86 int64(1458496860): {filepath.Join("event", "event.go"): 1}, 87 int64(1458496920): {filepath.Join("event", "event.go"): 1}, 88 } 89 90 workdir := repo.Workdir() 91 gtmPath := filepath.Join(workdir, project.GTMDir) 92 93 got, err := Process(gtmPath, true) 94 if err != nil { 95 t.Fatalf("Process(%s, %s, true), want error nil, got %s", workdir, gtmPath, err) 96 } 97 if !reflect.DeepEqual(expected, got) { 98 t.Errorf("Process(%s, %s, true)\nwant:\n%+v\ngot:\n%+v\n", workdir, gtmPath, expected, got) 99 } 100 101 got, err = Process(gtmPath, false) 102 if err != nil { 103 t.Fatalf("Process(%s, %s, true), want error nil, got %s", workdir, gtmPath, err) 104 } 105 if !reflect.DeepEqual(expected, got) { 106 t.Errorf("Process(%s, %s, true)\nwant:\n%+v\ngot:\n%+v", workdir, gtmPath, expected, got) 107 } 108 files, err := ioutil.ReadDir(gtmPath) 109 if err != nil { 110 t.Fatalf("Process(%s, %s, true), want error nil, got %s", workdir, gtmPath, err) 111 } 112 if len(files) != 0 { 113 t.Fatalf("Process(%s, %s, true), want file count 0, got %d", workdir, gtmPath, len(files)) 114 } 115 }