@@ -4,6 +4,11 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
44
55const mocks = vi . hoisted ( ( ) => ( {
66 hasBinary : vi . fn ( ( ) => true ) ,
7+ logger : {
8+ error : vi . fn ( ) ,
9+ info : vi . fn ( ) ,
10+ warn : vi . fn ( ) ,
11+ } ,
712 resolveExecutable : vi . fn ( ( name : string ) => name ) ,
813 runCommandWithTimeout : vi . fn ( ) ,
914 spawn : vi . fn ( ) ,
@@ -29,6 +34,10 @@ vi.mock("../process/exec.js", () => ({
2934 runCommandWithTimeout : mocks . runCommandWithTimeout ,
3035} ) ) ;
3136
37+ vi . mock ( "../logging/subsystem.js" , ( ) => ( {
38+ createSubsystemLogger : ( ) => mocks . logger ,
39+ } ) ) ;
40+
3241const { startGmailWatcher, stopGmailWatcher } = await import ( "./gmail-watcher.js" ) ;
3342
3443function createGmailConfig ( account = "[email protected] " ) { @@ -74,6 +83,9 @@ describe("startGmailWatcher", () => {
7483 beforeEach ( async ( ) => {
7584 await stopGmailWatcher ( ) ;
7685 mocks . hasBinary . mockReturnValue ( true ) ;
86+ mocks . logger . error . mockClear ( ) ;
87+ mocks . logger . info . mockClear ( ) ;
88+ mocks . logger . warn . mockClear ( ) ;
7789 mocks . resolveExecutable . mockImplementation ( ( name : string ) => name ) ;
7890 mocks . runCommandWithTimeout . mockReset ( ) ;
7991 mocks . spawn . mockReset ( ) ;
@@ -123,6 +135,21 @@ describe("startGmailWatcher", () => {
123135 ) ;
124136 } ) ;
125137
138+ it ( "uses pull wording when watch registration fails before pull runner start" , async ( ) => {
139+ mocks . runCommandWithTimeout
140+ . mockResolvedValueOnce ( { code : 0 , stdout : "" , stderr : "" } )
141+ . mockResolvedValueOnce ( { code : 1 , stdout : "" , stderr : "watch failed" } ) ;
142+
143+ await expect ( startGmailWatcher ( createGmailPullConfig ( ) ) ) . resolves . toEqual ( {
144+ started : true ,
145+ } ) ;
146+
147+ expect ( mocks . spawn ) . toHaveBeenCalledTimes ( 1 ) ;
148+ expect ( mocks . logger . warn ) . toHaveBeenCalledWith (
149+ "gmail watch start failed, but continuing with pull delivery runner" ,
150+ ) ;
151+ } ) ;
152+
126153 it ( "does not spawn pull delivery when installed gog lacks pull support" , async ( ) => {
127154 mocks . runCommandWithTimeout . mockResolvedValue ( {
128155 code : 1 ,
0 commit comments