Skip to content

Commit

Permalink
Use panic when Watch called before read
Browse files Browse the repository at this point in the history
  • Loading branch information
DenisPalnitsky committed Aug 6, 2023
1 parent 8fd47a5 commit 75c4d54
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
2 changes: 1 addition & 1 deletion config.go
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ func (c *ConfReader) WithPrefix(prefix string) *ConfReader {
// This will ensure that the config is not reloaded while you are accessing it.
func (c *ConfReader) Watch() *sync.RWMutex {
if c.configStruct == nil {
log.Fatalln("ConfReader: config struct is not set. Call Read before Watch")
panic("ConfReader: config struct is not set. Call Read before Watch")
}
rwmutex := &sync.RWMutex{}

Expand Down
29 changes: 23 additions & 6 deletions config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,18 +125,25 @@ func Test_WatchWithFile(t *testing.T) {
resetFlags()
nc := &FullConfig{}

err := os.Mkdir("testdata/tmp", 0755)
if err != nil {
if err := os.Mkdir("testdata/tmp", 0755); err != nil {
t.Fatal(err)
}
err = os.WriteFile("testdata/tmp/changing_file.json", []byte(`{"verbose":"true"}`), 0644)
if err != nil {
defer os.RemoveAll("testdata/tmp")

if err := os.WriteFile("testdata/tmp/changing_file.json", []byte(`{"verbose":"true"}`), 0644); err != nil {
t.Fatal(err)
}
defer os.RemoveAll("testdata/tmp")

confReader := NewConfReader("changing_file")
confReader.configDirs = []string{"testdata/tmp"}
err = confReader.Read(nc)

t.Run("callWatchBeforeRead", func(t *testing.T) {
assert.Panics(t, func() {
confReader.Watch()
})
})

err := confReader.Read(nc)
if assert.NoError(t, err) {
assert.Equal(t, true, nc.Verbose)
}
Expand Down Expand Up @@ -164,6 +171,16 @@ func Test_WatchWithFile(t *testing.T) {
time.Sleep(10 * time.Millisecond)
assert.Equal(t, true, nc.Verbose)
})

t.Run("doesNotFilaIfFileDeleted", func(t *testing.T) {
err = os.Remove("testdata/tmp/changing_file.json")
if err != nil {
t.Fatal(err)
}
time.Sleep(10 * time.Millisecond)
assert.Equal(t, true, nc.Verbose)
})

}

type dmParent struct {
Expand Down

0 comments on commit 75c4d54

Please sign in to comment.