From 95f91c198463973198fe4552b64255afdb5f6e19 Mon Sep 17 00:00:00 2001 From: kencx Date: Mon, 6 Jun 2022 12:35:32 +0800 Subject: [PATCH] Add lock tests --- internal/lock/lock_test.go | 86 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 internal/lock/lock_test.go diff --git a/internal/lock/lock_test.go b/internal/lock/lock_test.go new file mode 100644 index 0000000..3d7feb7 --- /dev/null +++ b/internal/lock/lock_test.go @@ -0,0 +1,86 @@ +package lock + +import ( + "log" + "os" + "strconv" + "testing" + + "github.com/spf13/viper" +) + +var testDirectory = "autorestic_test_tmp" + +// All tests must share the same lock file as it is only initialized once +func setup(t *testing.T) { + d, err := os.MkdirTemp("", testDirectory) + if err != nil { + log.Fatalf("error creating temp dir: %v", err) + return + } + // set config file location + viper.SetConfigFile(d + "/.autorestic.yml") + + t.Cleanup(func() { + os.RemoveAll(d) + viper.Reset() + }) +} + +func TestLock(t *testing.T) { + setup(t) + + t.Run("getLock", func(t *testing.T) { + result := getLock().GetBool("running") + + if result { + t.Errorf("got %v, want %v", result, false) + } + }) + + t.Run("lock", func(t *testing.T) { + err := Lock() + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + result := getLock().GetBool("running") + if !result { + t.Errorf("got %v, want %v", result, true) + } + }) + + t.Run("unlock", func(t *testing.T) { + err := Unlock() + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + result := getLock().GetBool("running") + if result { + t.Errorf("got %v, want %v", result, false) + } + }) + + t.Run("set cron", func(t *testing.T) { + expected := int64(5) + SetCron("foo", expected) + + result, err := strconv.ParseInt(getLock().GetString("cron.foo"), 10, 64) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if result != expected { + t.Errorf("got %d, want %d", result, expected) + } + }) + + t.Run("get cron", func(t *testing.T) { + expected := int64(5) + result := GetCron("foo") + + if result != expected { + t.Errorf("got %d, want %d", result, expected) + } + }) +}