From eb919067e63720eacdbbc6418fc8c307e2e32faf Mon Sep 17 00:00:00 2001 From: Amy Boyd Date: Mon, 4 Jul 2016 15:14:42 +0100 Subject: [PATCH] Add utils MustGetFileAsString and GetNumberOfLeftSpaces. --- editorconfig/utils.go | 15 +++++++++++++++ editorconfig/utils_test.go | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/editorconfig/utils.go b/editorconfig/utils.go index 33e9619..64b5a70 100644 --- a/editorconfig/utils.go +++ b/editorconfig/utils.go @@ -2,9 +2,11 @@ package editorconfig import ( "fmt" + "io/ioutil" "os" "path/filepath" "regexp" + "strings" ) var filePathSeparatorRegex = regexp.QuoteMeta(string(filepath.Separator)) @@ -54,3 +56,16 @@ func GetErrorWithLineBreaksVisible(s string) string { s = crlfRegexp.ReplaceAllString(s, `\r\n`) return s } + +func MustGetFileAsString(path string) string { + inBytes, err := ioutil.ReadFile(path) + if err != nil { + ExitBecauseOfInternalError("Could not read file: " + path) + } + + return string(inBytes) +} + +func GetNumberOfLeftSpaces(s string) int { + return len(s) - len(strings.TrimLeft(s, " ")) +} diff --git a/editorconfig/utils_test.go b/editorconfig/utils_test.go index c33cfca..ef32507 100644 --- a/editorconfig/utils_test.go +++ b/editorconfig/utils_test.go @@ -2,6 +2,7 @@ package editorconfig import ( "reflect" + "strconv" "strings" "testing" ) @@ -25,3 +26,18 @@ func TestSplitIntoLines(t *testing.T) { t.Error("Did not split string into lines correctly, got lines: " + strings.Join(result, ", ")) } } + +func TestMustGetFileAsString(t *testing.T) { + license := MustGetFileAsString("../LICENSE") + if !strings.Contains(license, "MIT License") || !strings.Contains(license, "THE SOFTWARE IS PROVIDED \"AS IS\"") { + t.Error("Could not read file") + } +} + +func TestGetNumberOfLeftSpaces(t *testing.T) { + for i := 0; i < 20; i++ { + if GetNumberOfLeftSpaces(strings.Repeat(" ", i)) != i { + t.Error("Wrong number of spaces returned when string starts with " + strconv.Itoa(i) + " spaces") + } + } +}