fixing tests

This commit is contained in:
2026-08-17 19:33:06 -04:00
parent 3d14359832
commit b4f8eab489
4 changed files with 93 additions and 40 deletions
-1
View File
@@ -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)
+1
View File
@@ -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") {
+92
View File
@@ -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")
}
}
-39
View File
@@ -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)
}
}