mirror of
https://github.com/securego/gosec.git
synced 2024-12-26 12:35:52 +00:00
251 lines
5.5 KiB
Go
251 lines
5.5 KiB
Go
package main
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func Test_newFileList(t *testing.T) {
|
|
type args struct {
|
|
paths []string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want *fileList
|
|
}{
|
|
{
|
|
name: "nil paths",
|
|
args: args{paths: nil},
|
|
want: &fileList{patterns: map[string]struct{}{}},
|
|
},
|
|
{
|
|
name: "empty paths",
|
|
args: args{paths: []string{}},
|
|
want: &fileList{patterns: map[string]struct{}{}},
|
|
},
|
|
{
|
|
name: "have paths",
|
|
args: args{paths: []string{"*_test.go"}},
|
|
want: &fileList{patterns: map[string]struct{}{
|
|
"*_test.go": struct{}{},
|
|
}},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
if got := newFileList(tt.args.paths...); !reflect.DeepEqual(got, tt.want) {
|
|
t.Errorf("%q. newFileList() = %v, want %v", tt.name, got, tt.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func Test_fileList_String(t *testing.T) {
|
|
type fields struct {
|
|
patterns []string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
fields fields
|
|
want string
|
|
}{
|
|
{
|
|
name: "nil patterns",
|
|
fields: fields{patterns: nil},
|
|
want: "",
|
|
},
|
|
{
|
|
name: "empty patterns",
|
|
fields: fields{patterns: []string{}},
|
|
want: "",
|
|
},
|
|
{
|
|
name: "one pattern",
|
|
fields: fields{patterns: []string{"foo"}},
|
|
want: "foo",
|
|
},
|
|
{
|
|
name: "two patterns",
|
|
fields: fields{patterns: []string{"bar", "foo"}},
|
|
want: "bar, foo",
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
f := newFileList(tt.fields.patterns...)
|
|
if got := f.String(); got != tt.want {
|
|
t.Errorf("%q. fileList.String() = %v, want %v", tt.name, got, tt.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func Test_fileList_Set(t *testing.T) {
|
|
type fields struct {
|
|
patterns []string
|
|
}
|
|
type args struct {
|
|
path string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
fields fields
|
|
args args
|
|
want map[string]struct{}
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "add empty path",
|
|
fields: fields{patterns: nil},
|
|
args: args{path: ""},
|
|
want: map[string]struct{}{},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "add path to nil patterns",
|
|
fields: fields{patterns: nil},
|
|
args: args{path: "foo"},
|
|
want: map[string]struct{}{
|
|
"foo": struct{}{},
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "add path to empty patterns",
|
|
fields: fields{patterns: []string{}},
|
|
args: args{path: "foo"},
|
|
want: map[string]struct{}{
|
|
"foo": struct{}{},
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "add path to populated patterns",
|
|
fields: fields{patterns: []string{"foo"}},
|
|
args: args{path: "bar"},
|
|
want: map[string]struct{}{
|
|
"foo": struct{}{},
|
|
"bar": struct{}{},
|
|
},
|
|
wantErr: false,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
f := newFileList(tt.fields.patterns...)
|
|
if err := f.Set(tt.args.path); (err != nil) != tt.wantErr {
|
|
t.Errorf("%q. fileList.Set() error = %v, wantErr %v", tt.name, err, tt.wantErr)
|
|
}
|
|
if !reflect.DeepEqual(f.patterns, tt.want) {
|
|
t.Errorf("%q. got state fileList.patterns = %v, want state %v", tt.name, f.patterns, tt.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func Test_fileList_Contains(t *testing.T) {
|
|
type fields struct {
|
|
patterns []string
|
|
}
|
|
type args struct {
|
|
path string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
fields fields
|
|
args args
|
|
want bool
|
|
}{
|
|
{
|
|
name: "nil patterns",
|
|
fields: fields{patterns: nil},
|
|
args: args{path: "foo"},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "empty patterns",
|
|
fields: fields{patterns: nil},
|
|
args: args{path: "foo"},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "one pattern, no wildcard, no match",
|
|
fields: fields{patterns: []string{"foo"}},
|
|
args: args{path: "bar"},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "one pattern, no wildcard, match",
|
|
fields: fields{patterns: []string{"foo"}},
|
|
args: args{path: "foo"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "one pattern, wildcard prefix, match",
|
|
fields: fields{patterns: []string{"*foo"}},
|
|
args: args{path: "foo"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "one pattern, wildcard suffix, match",
|
|
fields: fields{patterns: []string{"foo*"}},
|
|
args: args{path: "foo"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "one pattern, wildcard both ends, match",
|
|
fields: fields{patterns: []string{"*foo*"}},
|
|
args: args{path: "foo"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "default test match 1",
|
|
fields: fields{patterns: []string{"*_test.go"}},
|
|
args: args{path: "foo_test.go"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "default test match 2",
|
|
fields: fields{patterns: []string{"*_test.go"}},
|
|
args: args{path: "bar/foo_test.go"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "default test match 3",
|
|
fields: fields{patterns: []string{"*_test.go"}},
|
|
args: args{path: "/bar/foo_test.go"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "default test match 4",
|
|
fields: fields{patterns: []string{"*_test.go"}},
|
|
args: args{path: "baz/bar/foo_test.go"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "default test match 5",
|
|
fields: fields{patterns: []string{"*_test.go"}},
|
|
args: args{path: "/baz/bar/foo_test.go"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "many patterns, no match",
|
|
fields: fields{patterns: []string{"*_one.go", "*_two.go"}},
|
|
args: args{path: "/baz/bar/foo_test.go"},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "many patterns, match",
|
|
fields: fields{patterns: []string{"*_one.go", "*_two.go", "*_test.go"}},
|
|
args: args{path: "/baz/bar/foo_test.go"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "sub-folder, match",
|
|
fields: fields{patterns: []string{"vendor"}},
|
|
args: args{path: "/baz/vendor/bar/foo_test.go"},
|
|
want: true,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
f := newFileList(tt.fields.patterns...)
|
|
if got := f.Contains(tt.args.path); got != tt.want {
|
|
t.Errorf("%q. fileList.Contains() = %v, want %v", tt.name, got, tt.want)
|
|
}
|
|
}
|
|
}
|