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  }