Skip to content

Commit

Permalink
Merge pull request #14 from mx-psi/mx-psi/fix-err-msg
Browse files Browse the repository at this point in the history
Fix error message on incorrect regexp
  • Loading branch information
jcchavezs authored Oct 20, 2021
2 parents 752edbc + c375f4b commit c81805b
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 11 deletions.
14 changes: 3 additions & 11 deletions cmd/porto/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import (
"log"
"os"
"path/filepath"
"regexp"
"strings"

"github.com/jcchavezs/porto"
)
Expand Down Expand Up @@ -48,15 +46,9 @@ Add import path to a folder
log.Fatalf("failed to resolve base absolute path for current working dir: %v", err)
}

var skipFilesRegex []*regexp.Regexp
if len(*flagSkipFiles) > 0 {
for _, sfrp := range strings.Split(*flagSkipFiles, ",") {
sfr, err := regexp.Compile(sfrp)
if err != nil {
log.Fatalf("failed to resolve base absolute path for %q: %v", baseDir, err)
}
skipFilesRegex = append(skipFilesRegex, sfr)
}
skipFilesRegex, err := porto.GetRegexpList(*flagSkipFiles)
if err != nil {
log.Fatalf("failed to build files regexes: %v", err)
}

diffCount, err := porto.FindAndAddVanityImportForDir(workingDir, baseAbsDir, porto.Options{
Expand Down
22 changes: 22 additions & 0 deletions regexes.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package porto

import (
"fmt"
"regexp"
"strings"
)

func GetRegexpList(regexps string) ([]*regexp.Regexp, error) {
var regexes []*regexp.Regexp
if len(regexps) > 0 {
for _, sfrp := range strings.Split(regexps, ",") {
sfr, err := regexp.Compile(sfrp)
if err != nil {
return nil, fmt.Errorf("failed to compile regex %q: %w", sfrp, err)
}
regexes = append(regexes, sfr)
}
}

return regexes, nil
}
44 changes: 44 additions & 0 deletions regexes_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package porto

import (
"regexp"
"testing"

"github.com/stretchr/testify/assert"
)

func TestGetRegexpList(t *testing.T) {
tests := []struct {
name string
regexps string
expected []*regexp.Regexp
err string
}{
{
name: "single regex",
regexps: "^.*pb.go$",
expected: []*regexp.Regexp{regexp.MustCompile("^.*pb.go$")},
},
{
name: "failing regex",
regexps: "^.*pb.go$,*$$",
err: "failed to compile regex \"*$$\": error parsing regexp: missing argument to repetition operator: `*`",
},
{
name: "multiple regexes",
regexps: "^.*pb.go$,^tools.go$",
expected: []*regexp.Regexp{regexp.MustCompile("^.*pb.go$"), regexp.MustCompile("^tools.go$")},
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
actual, err := GetRegexpList(tt.regexps)
if err != nil || tt.err != "" {
assert.EqualError(t, err, tt.err)
} else {
assert.Equal(t, tt.expected, actual)
}
})
}
}

0 comments on commit c81805b

Please sign in to comment.