mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-18 22:52:11 +01:00
43fc1183b9
This makes test code more clear and reduces the number of code lines by 500.
This also simplifies debugging tests. See https://itnext.io/f-tests-as-a-replacement-for-table-driven-tests-in-go-8814a8b19e9e
While at it, consistently use t.Fatal* instead of t.Error* across tests, since t.Error*
requires more boilerplate code, which can result in additional bugs inside tests.
While t.Error* allows writing logging errors for the same, this doesn't simplify fixing
broken tests most of the time.
This is a follow-up for a9525da8a4
67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
package azremote
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestCleanDirectory(t *testing.T) {
|
|
f := func(dir, exp string) {
|
|
t.Helper()
|
|
|
|
got := cleanDirectory(dir)
|
|
if got != exp {
|
|
t.Fatalf("expected dir %q, got %q", exp, got)
|
|
}
|
|
}
|
|
|
|
f("/foo/", "foo/")
|
|
f("//foo/", "foo/")
|
|
f("foo", "foo/")
|
|
}
|
|
|
|
func TestFSInit(t *testing.T) {
|
|
f := func(expErr string, params ...string) {
|
|
t.Helper()
|
|
|
|
env := make(testEnv)
|
|
for i := 0; i < len(params); i += 2 {
|
|
env[params[i]] = params[i+1]
|
|
}
|
|
|
|
fs := &FS{Dir: "foo"}
|
|
fs.env = env.LookupEnv
|
|
err := fs.Init()
|
|
if err != nil {
|
|
if expErr == "" {
|
|
t.Fatalf("unexpected error %v", err)
|
|
}
|
|
if !strings.Contains(err.Error(), expErr) {
|
|
t.Fatalf("expected error: \n%q, \ngot: \n%v", expErr, err)
|
|
}
|
|
return
|
|
}
|
|
if expErr != "" {
|
|
t.Fatalf("expected to have an error %q, instead got nil", expErr)
|
|
}
|
|
}
|
|
|
|
f("", envStorageAccCs, "BlobEndpoint=https://test.blob.core.windows.net/;SharedAccessSignature=")
|
|
f("", envStorageAcctName, "test", envStorageAccKey, "dGVhcG90Cg==")
|
|
f("", envStorageDefault, "true", envStorageAcctName, "test")
|
|
f("", envStorageAcctName, "test", envStorageAccKey, "dGVhcG90Cg==", envStorageDomain, "foo.bar")
|
|
|
|
f("failed to detect credentials for AZBlob")
|
|
f("failed to detect credentials for AZBlob", envStorageAcctName, "test")
|
|
f("failed to create Shared Key", envStorageAcctName, "", envStorageAccKey, "!")
|
|
f("connection string is either blank or malformed", envStorageAccCs, "")
|
|
f("failed to process credentials: only one of", envStorageAccCs, "teapot", envStorageAcctName, "test", envStorageAccKey, "dGVhcG90Cg==")
|
|
}
|
|
|
|
type testEnv map[string]string
|
|
|
|
func (e testEnv) LookupEnv(key string) (string, bool) {
|
|
val, ok := e[key]
|
|
return val, ok
|
|
}
|