237 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			237 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package config
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestLintersSettings_Validate(t *testing.T) {
 | |
| 	testCases := []struct {
 | |
| 		desc     string
 | |
| 		settings *LintersSettings
 | |
| 	}{
 | |
| 		{
 | |
| 			desc: "custom linter",
 | |
| 			settings: &LintersSettings{
 | |
| 				Custom: map[string]CustomLinterSettings{
 | |
| 					"example": {
 | |
| 						Type: "module",
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "govet",
 | |
| 			settings: &LintersSettings{
 | |
| 				Govet: GovetSettings{
 | |
| 					Enable:     []string{"a"},
 | |
| 					DisableAll: true,
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, test := range testCases {
 | |
| 		test := test
 | |
| 		t.Run(test.desc, func(t *testing.T) {
 | |
| 			t.Parallel()
 | |
| 
 | |
| 			err := test.settings.Validate()
 | |
| 			assert.NoError(t, err)
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestLintersSettings_Validate_error(t *testing.T) {
 | |
| 	testCases := []struct {
 | |
| 		desc     string
 | |
| 		settings *LintersSettings
 | |
| 		expected string
 | |
| 	}{
 | |
| 		{
 | |
| 			desc: "custom linter error",
 | |
| 			settings: &LintersSettings{
 | |
| 				Custom: map[string]CustomLinterSettings{
 | |
| 					"example": {
 | |
| 						Type: "module",
 | |
| 						Path: "example",
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			expected: `custom linter "example": path not supported with module type`,
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "govet error",
 | |
| 			settings: &LintersSettings{
 | |
| 				Govet: GovetSettings{
 | |
| 					EnableAll:  true,
 | |
| 					DisableAll: true,
 | |
| 				},
 | |
| 			},
 | |
| 			expected: "govet: enable-all and disable-all can't be combined",
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, test := range testCases {
 | |
| 		test := test
 | |
| 		t.Run(test.desc, func(t *testing.T) {
 | |
| 			t.Parallel()
 | |
| 
 | |
| 			err := test.settings.Validate()
 | |
| 
 | |
| 			assert.EqualError(t, err, test.expected)
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestCustomLinterSettings_Validate(t *testing.T) {
 | |
| 	testCases := []struct {
 | |
| 		desc     string
 | |
| 		settings *CustomLinterSettings
 | |
| 	}{
 | |
| 		{
 | |
| 			desc: "only path",
 | |
| 			settings: &CustomLinterSettings{
 | |
| 				Path: "example",
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "path and type goplugin",
 | |
| 			settings: &CustomLinterSettings{
 | |
| 				Type: "goplugin",
 | |
| 				Path: "example",
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "type module",
 | |
| 			settings: &CustomLinterSettings{
 | |
| 				Type: "module",
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, test := range testCases {
 | |
| 		test := test
 | |
| 		t.Run(test.desc, func(t *testing.T) {
 | |
| 			t.Parallel()
 | |
| 
 | |
| 			err := test.settings.Validate()
 | |
| 			assert.NoError(t, err)
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestCustomLinterSettings_Validate_error(t *testing.T) {
 | |
| 	testCases := []struct {
 | |
| 		desc     string
 | |
| 		settings *CustomLinterSettings
 | |
| 		expected string
 | |
| 	}{
 | |
| 		{
 | |
| 			desc:     "missing path",
 | |
| 			settings: &CustomLinterSettings{},
 | |
| 			expected: "path is required",
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "module and path",
 | |
| 			settings: &CustomLinterSettings{
 | |
| 				Type: "module",
 | |
| 				Path: "example",
 | |
| 			},
 | |
| 			expected: "path not supported with module type",
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, test := range testCases {
 | |
| 		test := test
 | |
| 		t.Run(test.desc, func(t *testing.T) {
 | |
| 			t.Parallel()
 | |
| 
 | |
| 			err := test.settings.Validate()
 | |
| 
 | |
| 			assert.EqualError(t, err, test.expected)
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestGovetSettings_Validate(t *testing.T) {
 | |
| 	testCases := []struct {
 | |
| 		desc     string
 | |
| 		settings *GovetSettings
 | |
| 	}{
 | |
| 		{
 | |
| 			desc:     "empty",
 | |
| 			settings: &GovetSettings{},
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "disable-all and enable",
 | |
| 			settings: &GovetSettings{
 | |
| 				Enable:     []string{"a"},
 | |
| 				DisableAll: true,
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "enable-all and disable",
 | |
| 			settings: &GovetSettings{
 | |
| 				Disable:   []string{"a"},
 | |
| 				EnableAll: true,
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, test := range testCases {
 | |
| 		test := test
 | |
| 		t.Run(test.desc, func(t *testing.T) {
 | |
| 			t.Parallel()
 | |
| 
 | |
| 			err := test.settings.Validate()
 | |
| 			assert.NoError(t, err)
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestGovetSettings_Validate_error(t *testing.T) {
 | |
| 	testCases := []struct {
 | |
| 		desc     string
 | |
| 		settings *GovetSettings
 | |
| 		expected string
 | |
| 	}{
 | |
| 		{
 | |
| 			desc: "enable-all and disable-all",
 | |
| 			settings: &GovetSettings{
 | |
| 				EnableAll:  true,
 | |
| 				DisableAll: true,
 | |
| 			},
 | |
| 			expected: "govet: enable-all and disable-all can't be combined",
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "enable-all and enable",
 | |
| 			settings: &GovetSettings{
 | |
| 				EnableAll: true,
 | |
| 				Enable:    []string{"a"},
 | |
| 			},
 | |
| 			expected: "govet: enable-all and enable can't be combined",
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "disable-all and disable",
 | |
| 			settings: &GovetSettings{
 | |
| 				DisableAll: true,
 | |
| 				Disable:    []string{"a"},
 | |
| 			},
 | |
| 			expected: "govet: disable-all and disable can't be combined",
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, test := range testCases {
 | |
| 		test := test
 | |
| 		t.Run(test.desc, func(t *testing.T) {
 | |
| 			t.Parallel()
 | |
| 
 | |
| 			err := test.settings.Validate()
 | |
| 
 | |
| 			assert.EqualError(t, err, test.expected)
 | |
| 		})
 | |
| 	}
 | |
| }
 | 
