b034e25b26
Fix #771, filter skips comment lines starting with '#'. Handle exclamation inline comments. Refactor for correct logic flow. Split out hashtag comment logic from exclamation. Remove trailing whitespace.
66 lines
1.2 KiB
Go
66 lines
1.2 KiB
Go
package home
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"net/http"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func testStartFilterListener() net.Listener {
|
|
http.HandleFunc("/filters/1.txt", func(w http.ResponseWriter, r *http.Request) {
|
|
content := `||example.org^$third-party
|
|
# Inline comment example
|
|
||example.com^$third-party
|
|
0.0.0.0 example.com
|
|
`
|
|
_, _ = w.Write([]byte(content))
|
|
})
|
|
|
|
listener, err := net.Listen("tcp", ":0")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
go func() { _ = http.Serve(listener, nil) }()
|
|
return listener
|
|
}
|
|
|
|
func TestFilters(t *testing.T) {
|
|
l := testStartFilterListener()
|
|
defer func() { _ = l.Close() }()
|
|
|
|
dir := prepareTestDir()
|
|
defer func() { _ = os.RemoveAll(dir) }()
|
|
Context = homeContext{}
|
|
Context.workDir = dir
|
|
Context.client = &http.Client{
|
|
Timeout: 5 * time.Second,
|
|
}
|
|
Context.filters.Init()
|
|
|
|
f := filter{
|
|
URL: fmt.Sprintf("http://127.0.0.1:%d/filters/1.txt", l.Addr().(*net.TCPAddr).Port),
|
|
}
|
|
|
|
// download
|
|
ok, err := Context.filters.update(&f)
|
|
assert.Equal(t, nil, err)
|
|
assert.True(t, ok)
|
|
assert.Equal(t, 3, f.RulesCount)
|
|
|
|
// refresh
|
|
ok, err = Context.filters.update(&f)
|
|
assert.True(t, !ok && err == nil)
|
|
|
|
err = Context.filters.load(&f)
|
|
assert.True(t, err == nil)
|
|
|
|
f.unload()
|
|
_ = os.Remove(f.Path())
|
|
}
|