기여 목록 / 8015022
base: Test no event for directory attribute changes on Apple
BasetestMerged
Apple에서 상위 디렉터리의 권한 변경 시 파일 감시 이벤트가 발생하지 않아야 하는 경우를 검증하도록 테스트를 보완했습니다.
문제 설명
FilePathWatcherTest.DirAttributesChanged는 Apple에서 상위 디렉터리의
권한 변경에 따른 파일 감시 이벤트를 확인하는 테스트입니다.
기존에는 이벤트가 발생해야 하는 경우만 검증하고, 발생하지 않아야 하는
두 지점은 TODO로 남겨 두었습니다.
해결 내용
두 TODO를 검증 코드로 교체해, 권한 변경 후 새 이벤트가 발생하지 않아야 하는 경우도 확인하도록 했습니다.
- 읽기 권한을 제거했다가 복원한 뒤에는
SpinAndExpectNoEvents()로 이벤트가 없는지 확인합니다. - 실행 권한을 다시 부여한 뒤에는
RunUntilEventsMatch(event_expecter)로 기존 이벤트 목록에 새 이벤트가 추가되지 않았는지 확인합니다.
두 호출 모두 이벤트 루프를 잠시 실행한 뒤 검사하여, 비동기로 전달되는 예상 밖의 이벤트가 있는지 확인합니다. 전체 코드 diff는 다음과 같습니다.
--- a/base/files/file_path_watcher_unittest.cc
+++ b/base/files/file_path_watcher_unittest.cc
@@ -1930,7 +1930,7 @@
// to access the file.
ASSERT_TRUE(ChangeFilePermissions(test_dir1, Read, false));
ASSERT_TRUE(ChangeFilePermissions(test_dir1, Read, true));
- // TODO(crbug.com/40263777): Expect that no events are fired.
+ delegate.SpinAndExpectNoEvents();
// We should get notified in this case because filepathwatcher can no
// longer access the file.
@@ -1939,7 +1939,7 @@
delegate.RunUntilEventsMatch(event_expecter);
ASSERT_TRUE(ChangeFilePermissions(test_dir1, Execute, true));
- // TODO(crbug.com/40263777): Expect that no events are fired.
+ delegate.RunUntilEventsMatch(event_expecter);
}
#endif // BUILDFLAG(IS_APPLE)테스트 방법
CL에 기록한 테스트는 다음과 같습니다.
base_unittests --gtest_filter=FilePathWatcherTest.DirAttributesChangedCQ를 거쳐 2026년 6월 30일 Chromium main에 병합되었습니다.
배운 점
- 이벤트가 없어야 하는 단계도 명시적으로 검증하면 테스트를 보완할 수 있습니다.
- 이전 단계의 이벤트가 누적되어 있다면, 빈 목록 대신 기존 기대 목록과 비교해 새 이벤트가 추가되지 않았는지 확인해야 합니다.