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  }