MCPcopy Index your code
hub / github.com/coder/coder / TestFSNotifyWatcher

Function TestFSNotifyWatcher

agent/agentcontainers/watcher/watcher_test.go:18–125  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

16)
17
18func TestFSNotifyWatcher(t *testing.T) {
19 t.Parallel()
20
21 // Create test files.
22 dir := t.TempDir()
23 testFile := filepath.Join(dir, "test.json")
24 err := os.WriteFile(testFile, []byte(`{"test": "initial"}`), 0o600)
25 require.NoError(t, err, "create test file failed")
26
27 // Create the watcher under test.
28 wut, err := watcher.NewFSNotify()
29 require.NoError(t, err, "create FSNotify watcher failed")
30 defer wut.Close()
31
32 // Add the test file to the watch list.
33 err = wut.Add(testFile)
34 require.NoError(t, err, "add file to watcher failed")
35
36 ctx := testutil.Context(t, testutil.WaitShort)
37
38 // Modify the test file to trigger an event.
39 err = os.WriteFile(testFile, []byte(`{"test": "modified"}`), 0o600)
40 require.NoError(t, err, "modify test file failed")
41
42 // Verify that we receive the event we want.
43 for {
44 event, err := wut.Next(ctx)
45 require.NoError(t, err, "next event failed")
46
47 require.NotNil(t, event, "want non-nil event")
48 if !event.Has(fsnotify.Write) {
49 t.Logf("Ignoring event: %s", event)
50 continue
51 }
52 require.Truef(t, event.Has(fsnotify.Write), "want write event: %s", event.String())
53 require.Equal(t, event.Name, testFile, "want event for test file")
54 break
55 }
56
57 // Rename the test file to trigger a rename event.
58 err = os.Rename(testFile, testFile+".bak")
59 require.NoError(t, err, "rename test file failed")
60
61 // Verify that we receive the event we want.
62 for {
63 event, err := wut.Next(ctx)
64 require.NoError(t, err, "next event failed")
65 require.NotNil(t, event, "want non-nil event")
66 if !event.Has(fsnotify.Rename) {
67 t.Logf("Ignoring event: %s", event)
68 continue
69 }
70 require.Truef(t, event.Has(fsnotify.Rename), "want rename event: %s", event.String())
71 require.Equal(t, event.Name, testFile, "want event for test file")
72 break
73 }
74
75 err = os.WriteFile(testFile, []byte(`{"test": "new"}`), 0o600)

Callers

nothing calls this directly

Calls 13

NewFSNotifyFunction · 0.92
ContextFunction · 0.92
TempDirMethod · 0.65
WriteFileMethod · 0.65
CloseMethod · 0.65
AddMethod · 0.65
NextMethod · 0.65
LogfMethod · 0.65
RemoveMethod · 0.65
HasMethod · 0.45
StringMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected