Skip to content

Conversation

davidmorgan
Copy link
Contributor

@davidmorgan davidmorgan commented Sep 29, 2025

On MacOS File.watch can report events from slightly before the watch is created.

The startup race is annoying for testing, since tests very often create a file then immediately create a watcher.

It also doesn't seem useful to users, and it's inconsistent with other platforms.

So, fix it :)

Copy link

github-actions bot commented Sep 29, 2025

PR Health

Breaking changes ✔️
Package Change Current Version New Version Needed Version Looking good?
watcher None 1.1.3 1.1.5-wip 1.1.3 ✔️

This check can be disabled by tagging the PR with skip-breaking-check.

Changelog Entry ✔️
Package Changed Files

Changes to files need to be accounted for in their respective changelogs.

This check can be disabled by tagging the PR with skip-changelog-check.

Coverage ⚠️
File Coverage
pkgs/watcher/lib/src/file_watcher/native.dart 💔 81 % ⬇️ 13 %

This check for test coverage is informational (issues shown here will not fail the PR).

This check can be disabled by tagging the PR with skip-coverage-check.

API leaks ✔️

The following packages contain symbols visible in the public API, but not exported by the library. Export these symbols or remove them from your publicly visible API.

Package Leaked API symbol Leaking sources

This check can be disabled by tagging the PR with skip-leaking-check.

License Headers ✔️
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
Files
no missing headers

All source files should start with a license header.

Unrelated files missing license headers
Files
pkgs/bazel_worker/benchmark/benchmark.dart
pkgs/bazel_worker/example/client.dart
pkgs/bazel_worker/example/worker.dart
pkgs/benchmark_harness/integration_test/perf_benchmark_test.dart
pkgs/boolean_selector/example/example.dart
pkgs/clock/lib/clock.dart
pkgs/clock/lib/src/clock.dart
pkgs/clock/lib/src/default.dart
pkgs/clock/lib/src/stopwatch.dart
pkgs/clock/lib/src/utils.dart
pkgs/clock/test/clock_test.dart
pkgs/clock/test/default_test.dart
pkgs/clock/test/stopwatch_test.dart
pkgs/clock/test/utils.dart
pkgs/coverage/lib/src/coverage_options.dart
pkgs/html/example/main.dart
pkgs/html/lib/dom.dart
pkgs/html/lib/dom_parsing.dart
pkgs/html/lib/html_escape.dart
pkgs/html/lib/parser.dart
pkgs/html/lib/src/constants.dart
pkgs/html/lib/src/encoding_parser.dart
pkgs/html/lib/src/html_input_stream.dart
pkgs/html/lib/src/list_proxy.dart
pkgs/html/lib/src/query_selector.dart
pkgs/html/lib/src/token.dart
pkgs/html/lib/src/tokenizer.dart
pkgs/html/lib/src/treebuilder.dart
pkgs/html/lib/src/utils.dart
pkgs/html/test/dom_test.dart
pkgs/html/test/parser_feature_test.dart
pkgs/html/test/parser_test.dart
pkgs/html/test/query_selector_test.dart
pkgs/html/test/selectors/level1_baseline_test.dart
pkgs/html/test/selectors/level1_lib.dart
pkgs/html/test/selectors/selectors.dart
pkgs/html/test/support.dart
pkgs/html/test/tokenizer_test.dart
pkgs/html/test/trie_test.dart
pkgs/html/tool/generate_trie.dart
pkgs/pubspec_parse/test/git_uri_test.dart
pkgs/stack_trace/example/example.dart
pkgs/watcher/test/custom_watcher_factory_test.dart
pkgs/yaml_edit/example/example.dart

This check can be disabled by tagging the PR with skip-license-check.

@davidmorgan davidmorgan force-pushed the watcher-fix-startup-race branch 3 times, most recently from 84130f0 to 533fb87 Compare September 30, 2025 12:22
@davidmorgan davidmorgan force-pushed the watcher-fix-startup-race branch from 533fb87 to 3e3a73a Compare September 30, 2025 14:20
Copy link

Package publishing

Package Version Status Publish tag (post-merge)
package:bazel_worker 1.1.3 already published at pub.dev
package:benchmark_harness 2.4.0-wip WIP (no publish necessary)
package:boolean_selector 2.1.2 already published at pub.dev
package:browser_launcher 1.1.3 already published at pub.dev
package:cli_config 0.2.1-wip WIP (no publish necessary)
package:cli_util 0.5.0-wip WIP (no publish necessary)
package:clock 1.1.3-wip WIP (no publish necessary)
package:code_builder 4.11.0 already published at pub.dev
package:coverage 1.15.0 already published at pub.dev
package:csslib 1.0.2 already published at pub.dev
package:extension_discovery 2.1.0 already published at pub.dev
package:file 7.0.2-wip WIP (no publish necessary)
package:file_testing 3.1.0-wip WIP (no publish necessary)
package:glob 2.1.3 already published at pub.dev
package:graphs 2.3.3-wip WIP (no publish necessary)
package:html 0.15.6 already published at pub.dev
package:io 1.1.0-wip WIP (no publish necessary)
package:json_rpc_2 4.0.0 already published at pub.dev
package:markdown 7.3.1-wip WIP (no publish necessary)
package:mime 2.0.0 already published at pub.dev
package:oauth2 2.0.4-wip WIP (no publish necessary)
package:package_config 2.3.0-wip WIP (no publish necessary)
package:pool 1.5.2 already published at pub.dev
package:process 5.0.5 already published at pub.dev
package:pub_semver 2.2.0 already published at pub.dev
package:pubspec_parse 1.5.0 already published at pub.dev
package:source_map_stack_trace 2.1.3-wip WIP (no publish necessary)
package:source_maps 0.10.14-wip WIP (no publish necessary)
package:source_span 1.10.1 already published at pub.dev
package:sse 4.1.8 already published at pub.dev
package:stack_trace 1.12.1 already published at pub.dev
package:stream_channel 2.1.4 already published at pub.dev
package:stream_transform 2.1.2-wip WIP (no publish necessary)
package:string_scanner 1.4.1 already published at pub.dev
package:term_glyph 1.2.3-wip WIP (no publish necessary)
package:test_reflective_loader 0.4.0 already published at pub.dev
package:timing 1.0.2 already published at pub.dev
package:unified_analytics 8.0.5 already published at pub.dev
package:watcher 1.1.4 ready to publish watcher-v1.1.4
package:yaml 3.1.3 already published at pub.dev
package:yaml_edit 2.2.2 already published at pub.dev

Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

@davidmorgan davidmorgan force-pushed the watcher-fix-startup-race branch from 3e3a73a to b92d4ac Compare September 30, 2025 14:26
@davidmorgan davidmorgan force-pushed the watcher-fix-startup-race branch from b92d4ac to c69889e Compare September 30, 2025 14:33
@davidmorgan davidmorgan marked this pull request as ready for review September 30, 2025 14:44
@davidmorgan davidmorgan requested a review from a team as a code owner September 30, 2025 14:44
@davidmorgan davidmorgan merged commit d0e3edd into dart-lang:main Oct 1, 2025
24 of 25 checks passed
copybara-service bot pushed a commit to dart-lang/sdk that referenced this pull request Oct 1, 2025
…it_inspection_protocol

Revisions updated by `dart tools/rev_sdk_deps.dart`.

ai (https://github.com/dart-lang/ai/compare/901e2ce..ec5d6aa):
  ec5d6aa  2025-10-01  dependabot[bot]  Bump the github-actions group with 2 updates (dart-lang/ai#288)

http (https://github.com/dart-lang/http/compare/e0dadd1..2c53fa3):
  2c53fa3  2025-10-01  dependabot[bot]  Bump the github-actions group with 3 updates (dart-lang/http#1828)
  1b5103f  2025-10-01  Alex Li  [cronet_http] Upgrade `cronet-embedded` dependency version to support 16 KB page sizes (dart-lang/http#1824)
  f701e93  2025-09-29  Brian Quinlan  Remove obsolete TODO comment (dart-lang/http#1816)

i18n (https://github.com/dart-lang/i18n/compare/09627d2..34d1832):
  34d1832b  2025-10-01  Moritz  Fix casemapping on web (dart-lang/i18n#1013)
  914b0178  2025-10-01  dependabot[bot]  Bump actions/labeler from 5.0.0 to 6.0.1 in the github-actions group (dart-lang/i18n#1014)
  f171926e  2025-09-19  Moritz  Upgrade SDK in package:intl_translation (dart-lang/i18n#983)

shelf (https://github.com/dart-lang/shelf/compare/de91a5b..f30d650):
  f30d650  2025-10-01  dependabot[bot]  Bump the github-actions group with 3 updates (dart-lang/shelf#483)

test (https://github.com/dart-lang/test/compare/b99d556..a16f149):
  a16f1497  2025-10-01  dependabot[bot]  Bump the github-actions group with 5 updates (dart-lang/test#2547)

tools (https://github.com/dart-lang/tools/compare/2ef298e..19f91a0):
  19f91a03  2025-10-01  Morgan :)  Run file watcher symlink tests. (dart-lang/tools#2189)
  7929379b  2025-10-01  Morgan :)  Add test coverage for file watcher and symlinks. (dart-lang/tools#2178)
  d0e3edd1  2025-09-30  Morgan :)  Fix file watcher startup race on MacOS (dart-lang/tools#2176)
  36cefcee  2025-10-01  dependabot[bot]  Bump the github-actions group with 5 updates (dart-lang/tools#2188)
  08db1688  2025-10-01  Aleksey Garbarev  Fixing structure issue of nested lists indented by tabs (`#2172`) (dart-lang/tools#2173)
  16276f53  2025-09-30  Parker Lougheed  [markdown] Simplify deindentation logic for fenced code block lines (dart-lang/tools#2187)

vector_math (https://github.com/google/vector_math.dart/compare/3939545..a7b7e9c):
  a7b7e9c  2025-10-01  dependabot[bot]  Bump the github-actions group with 2 updates (google/vector_math.dart#352)

web (https://github.com/dart-lang/web/compare/0baaea4..816abcc):
  816abcc  2025-10-01  dependabot[bot]  Bump the github-actions group with 2 updates (dart-lang/web#473)

webkit_inspection_protocol (https://github.com/google/webkit_inspection_protocol.dart/compare/effa752..0f76858):
  0f76858  2025-10-01  dependabot[bot]  Bump the github-actions group across 1 directory with 3 updates (google/webkit_inspection_protocol.dart#135)

Change-Id: Id2cf6c1142aece53d531ca46122bb36a0fa2a34b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/452902
Commit-Queue: Devon Carew <devoncarew@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants