github.com/oalders/ppath@v0.1.1/audit/audit_test.go (about)

     1  package audit
     2  
     3  import (
     4  	"os"
     5  	"path"
     6  	"runtime"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func init() {
    13  	_, filename, _, _ := runtime.Caller(0)
    14  	dir := path.Join(path.Dir(filename), "..")
    15  	if err := os.Chdir(dir); err != nil {
    16  		panic(err)
    17  	}
    18  }
    19  
    20  func TestPaths(t *testing.T) {
    21  	config, err := PreciousConfig("testdata/precious.toml")
    22  	assert.NoError(t, err)
    23  	success, err := Paths(config)
    24  	assert.NoError(t, err)
    25  	assert.True(t, success)
    26  }
    27  
    28  func TestPathsFailure(t *testing.T) {
    29  	config, err := PreciousConfig("testdata/precious-fail.toml")
    30  	assert.NoError(t, err)
    31  	success, err := Paths(config)
    32  	assert.NoError(t, err)
    33  	assert.False(t, success)
    34  }
    35  
    36  func TestPatternsOkFailure(t *testing.T) {
    37  	ignoreConfig, err := PpathConfig(".ppath.toml")
    38  	assert.NoError(t, err)
    39  
    40  	seen := make(matchCache)
    41  	paths := []string{"foo", "bar", "go.mod", "**/*.go"}
    42  	ok, err := patternsOk(seen, ignoreConfig, "golangci-lint", "include", paths)
    43  	assert.NoError(t, err)
    44  	assert.False(t, ok)
    45  	assert.Equal(
    46  		t,
    47  		matchCache{"bar": false, "foo": false, "go.mod": true, "**/*.go": true},
    48  		seen,
    49  	)
    50  }
    51  
    52  func TestPatternsOkSuccess(t *testing.T) {
    53  	ignoreConfig, err := PpathConfig(".ppath.toml")
    54  	assert.NoError(t, err)
    55  
    56  	seen := make(matchCache)
    57  	paths := []string{"go.mod", "**/*.go", "LICENSE-MIT"}
    58  
    59  	// Test matching and caching
    60  	for i := 0; i < 2; i++ {
    61  		ok, err := patternsOk(seen, ignoreConfig, "golangci-lint", "include", paths)
    62  		assert.NoError(t, err)
    63  		assert.True(t, ok)
    64  		assert.Equal(
    65  			t,
    66  			matchCache{"go.mod": true, "**/*.go": true, "LICENSE-MIT": true},
    67  			seen,
    68  		)
    69  	}
    70  }
    71  
    72  func TestPatternIgnored(t *testing.T) {
    73  	ignoreConfig, err := PpathConfig(".ppath.toml")
    74  	assert.NoError(t, err)
    75  
    76  	assert.True(
    77  		t,
    78  		patternIgnored(ignoreConfig, "omegasort-gitignore", "**/node_modules/**/*"),
    79  		"top level ignore",
    80  	)
    81  
    82  	assert.True(
    83  		t,
    84  		patternIgnored(ignoreConfig, "omegasort-gitignore", "this-does-not-exist.txt"),
    85  	)
    86  
    87  	assert.True(
    88  		t,
    89  		patternIgnored(ignoreConfig, "omegasort-gitignore", "nope*"),
    90  	)
    91  
    92  	assert.False(
    93  		t,
    94  		patternIgnored(ignoreConfig, "omegasort-gitignore", "this-does-not-exist"),
    95  	)
    96  }