diff --git a/go-carpet.go b/go-carpet.go index 82cdb78..da0ba5f 100644 --- a/go-carpet.go +++ b/go-carpet.go @@ -113,16 +113,12 @@ func getCoverForDir(path string, coverFileName string, filesFilter []string, col for _, fileProfile := range coverProfile { fileName := "" if strings.HasPrefix(fileProfile.FileName, "_") { - // absolute path + // absolute path (or relative in tests) fileName = strings.TrimLeft(fileProfile.FileName, "_") } else { // file in GOPATH fileName = os.Getenv("GOPATH") + "/src/" + fileProfile.FileName } - if _, err := os.Stat(fileName); os.IsNotExist(err) { - fmt.Printf("File '%s' is not exists\n", fileName) - continue - } if len(filesFilter) > 0 && !isSliceInString(fileName, filesFilter) { continue @@ -235,6 +231,7 @@ func main() { coverInBytes, err := getCoverForDir(path, coverFileName, strings.Split(filesFilter, ","), colors256) if err != nil { log.Print(err) + continue } stdOut.Write(coverInBytes) } diff --git a/go-carpet_test.go b/go-carpet_test.go index 7ffc663..2eac22d 100644 --- a/go-carpet_test.go +++ b/go-carpet_test.go @@ -2,6 +2,7 @@ package main import ( "os" + "reflect" "testing" "github.com/mgutz/ansi" @@ -164,6 +165,71 @@ func Test_getColorHeader(t *testing.T) { } } +func Test_getCoverForDir(t *testing.T) { + bytes, err := getCoverForDir("./test_data", "./test_data/not_exists.out", []string{}, false) + if err == nil { + t.Errorf("1. getCoverForDir() error failed") + } + + // --- + bytes, err = getCoverForDir("./test_data", "./test_data/cover_00.out", []string{}, false) + if err != nil { + t.Errorf("2. getCoverForDir() failed") + } + expect, err := readFile("./test_data/colored_00.txt") + if err != nil { + t.Errorf("3. getCoverForDir() failed") + } + if !reflect.DeepEqual(bytes, expect) { + t.Errorf("4. getCoverForDir() not equal") + } + + // --- + bytes, err = getCoverForDir("./test_data", "./test_data/cover_00.out", []string{}, true) + if err != nil { + t.Errorf("5. getCoverForDir() failed") + } + expect, err = readFile("./test_data/colored_01.txt") + if err != nil { + t.Errorf("6. getCoverForDir() failed") + } + if !reflect.DeepEqual(bytes, expect) { + t.Errorf("7. getCoverForDir() not equal") + } + + // --- + bytes, err = getCoverForDir("./test_data", "./test_data/cover_01.out", []string{}, true) + if err == nil { + t.Errorf("8. getCoverForDir() not exists go file") + } + + // --- + bytes, err = getCoverForDir("./test_data", "./test_data/cover_00.out", []string{"file_01.go"}, false) + if err != nil { + t.Errorf("9. getCoverForDir() failed") + } + expect, err = readFile("./test_data/colored_02.txt") + if err != nil { + t.Errorf("10. getCoverForDir() failed") + } + if !reflect.DeepEqual(bytes, expect) { + t.Errorf("11. getCoverForDir() not equal") + } + + // --- + bytes, err = getCoverForDir("./test_data", "./test_data/cover_02.out", []string{}, false) + if err != nil { + t.Errorf("12. getCoverForDir() failed") + } + expect, err = readFile("./test_data/colored_03.txt") + if err != nil { + t.Errorf("13. getCoverForDir() failed") + } + if !reflect.DeepEqual(bytes, expect) { + t.Errorf("14. getCoverForDir() not equal") + } +} + func Test_getCoverForFile(t *testing.T) { fileProfile := &cover.Profile{ FileName: "filename.go", diff --git a/test_data/colored_00.txt b/test_data/colored_00.txt new file mode 100644 index 0000000..305c89a --- /dev/null +++ b/test_data/colored_00.txt @@ -0,0 +1,29 @@ +./test_data/file_00.golang +~~~~~~~~~~~~~~~~~~~~~~~~~~ +package main + +func readFile(fileName string) (result []byte, err error) { + fileReader, err := os.Open(fileName) + if err != nil { + return result, err + } + defer fileReader.Close() + + result, err = ioutil.ReadAll(fileReader) + return result, err +} + +./test_data/file_01.golang +~~~~~~~~~~~~~~~~~~~~~~~~~~ +package main + +// isStringInSlice - one of the elements of the array contained in the string +func isSliceInString(src string, slice []string) bool { + for _, dst := range slice { + if strings.Contains(src, dst) { + return true + } + } + return false +} + diff --git a/test_data/colored_01.txt b/test_data/colored_01.txt new file mode 100644 index 0000000..c8aec5b --- /dev/null +++ b/test_data/colored_01.txt @@ -0,0 +1,29 @@ +./test_data/file_00.golang +~~~~~~~~~~~~~~~~~~~~~~~~~~ +package main + +func readFile(fileName string) (result []byte, err error) { + fileReader, err := os.Open(fileName) + if err != nil { + return result, err + } + defer fileReader.Close() + + result, err = ioutil.ReadAll(fileReader) + return result, err +} + +./test_data/file_01.golang +~~~~~~~~~~~~~~~~~~~~~~~~~~ +package main + +// isStringInSlice - one of the elements of the array contained in the string +func isSliceInString(src string, slice []string) bool { + for _, dst := range slice { + if strings.Contains(src, dst) { + return true + } + } + return false +} + diff --git a/test_data/colored_02.txt b/test_data/colored_02.txt new file mode 100644 index 0000000..7fb5701 --- /dev/null +++ b/test_data/colored_02.txt @@ -0,0 +1,14 @@ +./test_data/file_01.golang +~~~~~~~~~~~~~~~~~~~~~~~~~~ +package main + +// isStringInSlice - one of the elements of the array contained in the string +func isSliceInString(src string, slice []string) bool { + for _, dst := range slice { + if strings.Contains(src, dst) { + return true + } + } + return false +} + diff --git a/test_data/colored_03.txt b/test_data/colored_03.txt new file mode 100644 index 0000000..9b69f1d --- /dev/null +++ b/test_data/colored_03.txt @@ -0,0 +1,15 @@ +github.com/msoap/go-carpet/terminal_unix.go +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +build !windows + +package main + +import ( + "io" + "os" +) + +func getColorWriter() io.Writer { + return (io.Writer)(os.Stdout) +} + diff --git a/test_data/cover_00.out b/test_data/cover_00.out new file mode 100644 index 0000000..22802c8 --- /dev/null +++ b/test_data/cover_00.out @@ -0,0 +1,5 @@ +mode: count +_./test_data/file_00.golang:4.2,4.38 1 2 +_./test_data/file_00.golang:5.2,5.17 0 0 +_./test_data/file_01.golang:5.28,9.3 1 1 +_./test_data/file_01.golang:10.2,10.14 0 0 diff --git a/test_data/cover_01.out b/test_data/cover_01.out new file mode 100644 index 0000000..e164451 --- /dev/null +++ b/test_data/cover_01.out @@ -0,0 +1,2 @@ +mode: count +_./test_data/file_not_exists.golang:4.2,4.38 1 2 diff --git a/test_data/cover_02.out b/test_data/cover_02.out new file mode 100644 index 0000000..876ce97 --- /dev/null +++ b/test_data/cover_02.out @@ -0,0 +1,2 @@ +mode: count +github.com/msoap/go-carpet/terminal_unix.go:11.2,11.31 1 1 diff --git a/test_data/file_00.golang b/test_data/file_00.golang new file mode 100644 index 0000000..a49fd67 --- /dev/null +++ b/test_data/file_00.golang @@ -0,0 +1,12 @@ +package main + +func readFile(fileName string) (result []byte, err error) { + fileReader, err := os.Open(fileName) + if err != nil { + return result, err + } + defer fileReader.Close() + + result, err = ioutil.ReadAll(fileReader) + return result, err +} diff --git a/test_data/file_01.golang b/test_data/file_01.golang new file mode 100644 index 0000000..ff6642a --- /dev/null +++ b/test_data/file_01.golang @@ -0,0 +1,11 @@ +package main + +// isStringInSlice - one of the elements of the array contained in the string +func isSliceInString(src string, slice []string) bool { + for _, dst := range slice { + if strings.Contains(src, dst) { + return true + } + } + return false +}