fixing tests
This commit is contained in:
@@ -20,7 +20,6 @@ func TestMain(m *testing.M) {
|
|||||||
defer os.Remove(TheTestFilename)
|
defer os.Remove(TheTestFilename)
|
||||||
|
|
||||||
TheSettings = NewSettings(TheTestFilename, false)
|
TheSettings = NewSettings(TheTestFilename, false)
|
||||||
|
|
||||||
return m.Run()
|
return m.Run()
|
||||||
}()
|
}()
|
||||||
os.Exit(exitCode)
|
os.Exit(exitCode)
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ func TestSettings(t *testing.T) {
|
|||||||
if updated := settings.SetFilename("fakefilename.txt"); !updated {
|
if updated := settings.SetFilename("fakefilename.txt"); !updated {
|
||||||
t.Fatalf("failed to update filename to fake filename...\n")
|
t.Fatalf("failed to update filename to fake filename...\n")
|
||||||
}
|
}
|
||||||
|
defer settings.SetFilename(TheTestFilename)
|
||||||
log.SetOutput(defaultLogWriter)
|
log.SetOutput(defaultLogWriter)
|
||||||
WarnIfFileNotFound = false
|
WarnIfFileNotFound = false
|
||||||
if !strings.Contains(buffer.String(), "no such file or directory") {
|
if !strings.Contains(buffer.String(), "no such file or directory") {
|
||||||
|
|||||||
@@ -0,0 +1,92 @@
|
|||||||
|
package settings
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestStringValueMonitor(t *testing.T) {
|
||||||
|
key, value := "my key to monitor", "first value"
|
||||||
|
monitor, err := NewValueMonitor(TheSettings, key, func(s string) (string, error) { return value, nil })
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("error opening new value monitor: %v\n", err)
|
||||||
|
}
|
||||||
|
if want, got := value, monitor.GetValue(); want != got {
|
||||||
|
t.Fatalf("error: wanted %q; got %q\n", want, got)
|
||||||
|
}
|
||||||
|
value = "second value"
|
||||||
|
TheSettings.SetKeyValue(key, value)
|
||||||
|
loop:
|
||||||
|
for range 5 {
|
||||||
|
select {
|
||||||
|
case <-t.Context().Done():
|
||||||
|
t.Fatalf("error: %v\n", t.Context().Err())
|
||||||
|
case <-time.After(time.Millisecond * 50):
|
||||||
|
if want, got := value, monitor.GetValue(); want == got {
|
||||||
|
break loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if want, got := value, monitor.GetValue(); want != got {
|
||||||
|
t.Fatalf("error: wanted %q; got %q\n", want, got)
|
||||||
|
}
|
||||||
|
value = "third value"
|
||||||
|
f, err := os.OpenFile(TheSettings.GetFilename(), os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0664)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("error opening file writer to append settings: %v\n", err)
|
||||||
|
}
|
||||||
|
_, err = fmt.Fprintf(f, "\n%s=%s\n", key, value)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("error appending to file: %v\n", err)
|
||||||
|
}
|
||||||
|
err = f.Close()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("error closing %s: %v\n", TheSettings.GetFilename(), err)
|
||||||
|
}
|
||||||
|
err = TheSettings.Update()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("error updating the settings: %v\n", err)
|
||||||
|
}
|
||||||
|
for range 5 {
|
||||||
|
select {
|
||||||
|
case <-t.Context().Done():
|
||||||
|
t.Fatalf("error: %v\n", t.Context().Err())
|
||||||
|
case <-time.After(time.Millisecond * 50):
|
||||||
|
if want, got := value, monitor.GetValue(); want != got {
|
||||||
|
t.Fatalf("error: wanted %q; got %q\n", want, got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if want, got := value, monitor.GetValue(); want != got {
|
||||||
|
t.Fatalf("error: wanted %q; got %q\n", want, got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestInsertOrTimeout(t *testing.T) {
|
||||||
|
ctx, cancel := context.WithCancel(t.Context())
|
||||||
|
defer cancel()
|
||||||
|
channel := make(chan string, 1)
|
||||||
|
defer close(channel)
|
||||||
|
err := insertOrTimeout(ctx, channel, "first string")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("error: %v\n", err)
|
||||||
|
}
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
t.Fatalf("error: %v\n", ctx.Err())
|
||||||
|
case _, ok := <-channel:
|
||||||
|
if !ok {
|
||||||
|
t.Fatalf("error: channel closed earlier than expected...\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cancel()
|
||||||
|
<-ctx.Done()
|
||||||
|
err = insertOrTimeout(ctx, channel, "second string")
|
||||||
|
if err == nil {
|
||||||
|
t.Fatalf("error: inserted after ctx.Done\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
package settings
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestStringValueMonitor(t *testing.T) {
|
|
||||||
key, value := "my key to monitor", "first value"
|
|
||||||
monitor, err := NewValueMonitor(TheSettings, key, func(s string) (string, error) { return value, nil })
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error opening new value monitor: %v\n", err)
|
|
||||||
}
|
|
||||||
if want, got := value, monitor.GetValue(); want != got {
|
|
||||||
t.Fatalf("error: wanted %q; got %q\n", want, got)
|
|
||||||
}
|
|
||||||
value = "second value"
|
|
||||||
TheSettings.SetKeyValue(key, value)
|
|
||||||
if want, got := value, monitor.GetValue(); want != got {
|
|
||||||
t.Fatalf("error: wanted %q; got %q\n", want, got)
|
|
||||||
}
|
|
||||||
value = "third value"
|
|
||||||
f, err := os.OpenFile(TheSettings.GetFilename(), os.O_APPEND|os.O_WRONLY, 0664)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error opening file writer to append settings: %v\n", err)
|
|
||||||
}
|
|
||||||
_, err = f.WriteString(fmt.Sprintf("\n%s=%s\n", key, value))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error appending to file: %v\n", err)
|
|
||||||
}
|
|
||||||
err = TheSettings.Update()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error updating the settings: %v\n", err)
|
|
||||||
}
|
|
||||||
if want, got := value, monitor.GetValue(); want != got {
|
|
||||||
t.Fatalf("error: wanted %q; got %q\n", want, got)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user