기여 목록 / 8031240
base: Test no event when creating directory chain
BasetestMerged
존재하지 않는 감시 파일의 상위 디렉터리들을 연속으로 생성해도 파일 감시 이벤트가 발생하지 않는지 검증하도록 테스트를 보완했습니다.
문제 설명
FilePathWatcherTest.DirectoryChain은 존재하지 않는 파일의 감시를 시작한 뒤,
파일 경로를 구성하는 중첩 디렉터리 20개를 순서대로 생성하는 테스트입니다.
기존에는 디렉터리 생성만으로 이벤트가 발생하지 않는지 확인하라는 TODO가
남아 있었습니다.
해결 내용
루프 안의 TODO를 제거하고, 모든 디렉터리를 생성한 뒤
SpinAndExpectNoEvents()로 수신 이벤트 목록이 비어 있는지 확인했습니다.
검증을 루프 밖에 두어 디렉터리를 연속으로 생성하는 기존 동작을 유지했습니다.
전체 코드 diff는 다음과 같습니다.
--- a/base/files/file_path_watcher_unittest.cc
+++ b/base/files/file_path_watcher_unittest.cc
@@ -821,8 +821,8 @@
for (const auto& dir_name : dir_names) {
sub_path = sub_path.AppendASCII(dir_name);
ASSERT_TRUE(CreateDirectory(sub_path));
- // TODO(crbug.com/40263777): Expect that no events are fired.
- }
+ }
+ delegate.SpinAndExpectNoEvents();
// It may take some time for `watcher` to re-construct its watch list, so it's
// possible an event is missed. _At least_ one event should be fired, though.테스트 방법
CL에 기록한 테스트는 다음과 같습니다.
base_unittests --gtest_filter=FilePathWatcherTest.DirectoryChainCQ를 거쳐 2026년 7월 2일(한국 시간) Chromium main에 병합되었습니다.
배운 점
- 비동기 알림은 나중에 도착할 수 있으므로, 이벤트 루프를 잠시 실행한 뒤 수신 목록이 비어 있는지 확인해야 합니다.
- 검증 코드를 추가할 때는 위치도 중요합니다. 루프가 끝난 뒤 검사하면 디렉터리를 연속 생성하는 테스트 조건을 유지할 수 있습니다.