OSSCA Chromium

기여 목록 / 7906916

base: Test no event when creating parent dir

BasetestMerged

존재하지 않는 파일을 감시할 때, 부모 디렉터리만 생성하면 FilePathWatcher 이벤트가 발생하지 않는 동작을 테스트로 검증했습니다.

문제 설명

base/files/file_path_watcher_unittest.cc의 FilePathWatcherTest.NonExistentDirectory는 부모 디렉터리와 파일이 모두 없는 상태에서 파일 감시를 시작한 뒤, 디렉터리와 파일을 순서대로 생성하는 테스트입니다.

감시 대상은 파일이므로 부모 디렉터리만 생성하는 단계에서는 이벤트가 발생하지 않아야 합니다. 기존 테스트에는 이 동작을 확인하라는 TODO만 남아 있어, 부모 디렉터리 생성 직후 이벤트가 없는지 명시적으로 검증하지 않았습니다.

해결 내용

부모 디렉터리를 생성한 직후의 TODO를 delegate.SpinAndExpectNoEvents() 호출로 교체했습니다.

 ASSERT_TRUE(CreateDirectory(dir));
-// TODO(crbug.com/40263777): Expect that no events are fired.
+delegate.SpinAndExpectNoEvents();

이 helper는 이벤트 루프를 잠시 실행하여 비동기 알림이 처리될 시간을 준 뒤, 수신한 이벤트 목록이 비어 있는지 확인합니다. 이어지는 파일 생성, 수정, 삭제 이벤트 검증은 유지했습니다.

리뷰에서는 TODO가 추가될 당시에는 SpinAndExpectNoEvents()가 없었다는 배경을 확인했습니다. 또한 리뷰 의견에 따라 커밋 메시지에 기존 TODO를 해결하고 이 helper로 기대 동작을 검증한다는 설명을 추가했습니다.

테스트 방법

CL의 커밋 메시지에 기록된 검증 대상은 다음과 같습니다.

base_unittests --gtest_filter=FilePathWatcherTest.NonExistentDirectory

Gerrit에서 CQ dry run 통과와 최종 제출을 확인했으며, 2026년 6월 9일(한국 시간) Chromium main에 병합되었습니다.

배운 점

  • 파일 감시 알림은 비동기로 전달되므로, 디렉터리 생성 직후에는 잘못된 이벤트도 아직 도착하지 않았을 수 있습니다. 이벤트 루프를 잠시 실행한 뒤 수신 목록이 비어 있는지 확인해야 이를 놓치지 않을 수 있습니다.
  • 오래된 TODO를 해결할 때는 이후에 추가된 테스트 도구도 살펴볼 필요가 있습니다. 당시에는 없던 helper로 간결하게 검증을 보완할 수 있었습니다.
  • 커밋 메시지에는 추가한 코드뿐 아니라, 어떤 TODO와 기대 동작을 검증하는지도 설명하면 리뷰어가 변경 목적을 이해하는 데 도움이 됩니다.

참고 자료