Add lock tests (#209)
* Add lock tests * Refactor setLock to accept key value pairs This allows SetCron and Lock to use the same function setLockValue. It also removes the need to call getLock explicitly in tests by returning the lock object.pull/211/head
parent
37a043afff
commit
465bc037c2
@ -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) {
|
||||||
|
lock, err := setLockValue(RUNNING, true)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
result := lock.GetBool(RUNNING)
|
||||||
|
if !result {
|
||||||
|
t.Errorf("got %v, want %v", result, true)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("unlock", func(t *testing.T) {
|
||||||
|
lock, err := setLockValue(RUNNING, false)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
result := lock.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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
Loading…
Reference in new issue