mirror of
https://github.com/therootcompany/golib.git
synced 2026-11-04 06:55:00 +00:00
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package iplist
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestSourceKeepsLastGoodEntriesAfterFailedRefresh(t *testing.T) {
|
|
path := filepath.Join(t.TempDir(), "list.tsv")
|
|
if err := os.WriteFile(path, []byte("192.0.2.1\n"), 0o600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
source, err := NewSource(t.Context(), SourceConfig{Source: path})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer func() { _ = source.Close() }()
|
|
|
|
if got := source.Entries(); len(got) != 1 || got[0] != "192.0.2.1" {
|
|
t.Fatalf("initial entries = %#v", got)
|
|
}
|
|
if err := os.Remove(path); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := source.Refresh(); err == nil {
|
|
t.Fatal("invalid refresh unexpectedly succeeded")
|
|
}
|
|
if got := source.Entries(); len(got) != 1 || got[0] != "192.0.2.1" {
|
|
t.Fatalf("entries after failed refresh = %#v", got)
|
|
}
|
|
}
|
|
|
|
func TestSourceOptionalMissingFileIsEmpty(t *testing.T) {
|
|
source, err := NewSource(t.Context(), SourceConfig{
|
|
Source: filepath.Join(t.TempDir(), "missing.tsv"),
|
|
Optional: true,
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer func() { _ = source.Close() }()
|
|
if got := source.Entries(); len(got) != 0 {
|
|
t.Fatalf("entries = %#v", got)
|
|
}
|
|
}
|