package test import ( "fmt" "os" "strings" "testing" ) var ( TestPassword = getStringVar("RESTIC_TEST_PASSWORD", "geheim") TestCleanupTempDirs = getBoolVar("RESTIC_TEST_CLEANUP", true) TestTempDir = getStringVar("RESTIC_TEST_TMPDIR", "") RunIntegrationTest = getBoolVar("RESTIC_TEST_INTEGRATION", true) RunFuseTest = getBoolVar("RESTIC_TEST_FUSE", true) TestSFTPPath = getStringVar("RESTIC_TEST_SFTPPATH", "/usr/lib/ssh:/usr/lib/openssh:/usr/libexec") TestWalkerPath = getStringVar("RESTIC_TEST_PATH", ".") BenchArchiveDirectory = getStringVar("RESTIC_BENCH_DIR", ".") TestS3Server = getStringVar("RESTIC_TEST_S3_SERVER", "") TestRESTServer = getStringVar("RESTIC_TEST_REST_SERVER", "") TestIntegrationDisallowSkip = getStringVar("RESTIC_TEST_DISALLOW_SKIP", "") ) func getStringVar(name, defaultValue string) string { if e := os.Getenv(name); e != "" { return e } return defaultValue } func getBoolVar(name string, defaultValue bool) bool { if e := os.Getenv(name); e != "" { switch e { case "1", "true": return true case "0", "false": return false default: fmt.Fprintf(os.Stderr, "invalid value for variable %q, using default\n", name) } } return defaultValue } // SkipDisallowed fails the test if it needs to run. The environment // variable RESTIC_TEST_DISALLOW_SKIP contains a comma-separated list of test // names that must be run. If name is in this list, the test is marked as // failed. func SkipDisallowed(t testing.TB, name string) { for _, s := range strings.Split(TestIntegrationDisallowSkip, ",") { if s == name { t.Fatalf("test %v is in list of tests that need to run ($RESTIC_TEST_DISALLOW_SKIP)", name) } } }