blob: 585f37ec4d24b4c6e34af44785725cbb4f46cb49 [file] [log] [blame]
// Package filter implements Accept/Reject filtering of file.Names.
package filter
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.skia.org/infra/go/testutils/unittest"
)
func TestReject_BothRegexpEmpty_AcceptsAllFiles(t *testing.T) {
unittest.SmallTest(t)
f, err := New(``, ``)
require.NoError(t, err)
assert.False(t, f.Reject("foo"))
}
func TestReject_JustAnAcceptRegex_AcceptsOnlyMatchingFiles(t *testing.T) {
unittest.SmallTest(t)
f, err := New(`/foo/`, ``)
require.NoError(t, err)
assert.True(t, f.Reject("foo"))
assert.False(t, f.Reject("/foo/bar/"))
}
func TestReject_JustARejectRegex_AcceptsOnlyFilesThatDontMatch(t *testing.T) {
unittest.SmallTest(t)
f, err := New(``, `/tx_log/`)
require.NoError(t, err)
assert.False(t, f.Reject("foo"))
assert.True(t, f.Reject("gs://bucket/tx_log/foo"))
}
func TestReject_BothAcceptAndRejectRegex_BothFiltersAreApplied(t *testing.T) {
unittest.SmallTest(t)
f, err := New(`foo`, `/tx_log/`)
require.NoError(t, err)
assert.False(t, f.Reject("/foo"), "Passes both filters.")
assert.True(t, f.Reject("/tx_log/foo"), "Rejected by reject filter.")
assert.True(t, f.Reject("bar"), "Rejected by not matching accept filter.")
}
func TestReject_ErrorOnInvalidRegex(t *testing.T) {
unittest.SmallTest(t)
_, err := New(`\K`, ``)
require.Error(t, err)
_, err = New(``, `\K`)
require.Error(t, err)
}