Require Dart 2.19, use new team lints (dart-lang/watcher#138)
Enable some tests that now seem to be passing on mac
diff --git a/pkgs/watcher/.github/workflows/test-package.yml b/pkgs/watcher/.github/workflows/test-package.yml
index 6016675..0c0ce49 100644
--- a/pkgs/watcher/.github/workflows/test-package.yml
+++ b/pkgs/watcher/.github/workflows/test-package.yml
@@ -46,7 +46,7 @@
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
- sdk: [2.14.0, dev]
+ sdk: [2.19.0, dev]
steps:
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
- uses: dart-lang/setup-dart@a57a6c04cf7d4840e88432aad6281d1e125f0d46
diff --git a/pkgs/watcher/CHANGELOG.md b/pkgs/watcher/CHANGELOG.md
index 9104504..1271b63 100644
--- a/pkgs/watcher/CHANGELOG.md
+++ b/pkgs/watcher/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 1.0.3-dev
+
+- Require Dart SDK >= 2.19
+
# 1.0.2
- Require Dart SDK >= 2.14
diff --git a/pkgs/watcher/analysis_options.yaml b/pkgs/watcher/analysis_options.yaml
index 4320162..a1fc20f 100644
--- a/pkgs/watcher/analysis_options.yaml
+++ b/pkgs/watcher/analysis_options.yaml
@@ -1,20 +1,10 @@
-include: package:lints/recommended.yaml
+include: package:dart_flutter_team_lints/analysis_options.yaml
analyzer:
language:
strict-casts: true
- errors:
- todo: ignore
- unused_import: error
- unused_element: error
- unused_local_variable: error
- dead_code: error
linter:
rules:
- # comment_references # https://github.com/dart-lang/sdk/issues/39467
- - depend_on_referenced_packages
- - prefer_generic_function_type_aliases
- - prefer_typing_uninitialized_variables
- - unnecessary_const
- - unnecessary_new
+ - comment_references # https://github.com/dart-lang/sdk/issues/39467
+
diff --git a/pkgs/watcher/benchmark/path_set.dart b/pkgs/watcher/benchmark/path_set.dart
index 858df3c..82109b0 100644
--- a/pkgs/watcher/benchmark/path_set.dart
+++ b/pkgs/watcher/benchmark/path_set.dart
@@ -10,7 +10,6 @@
import 'package:benchmark_harness/benchmark_harness.dart';
import 'package:path/path.dart' as p;
-
import 'package:watcher/src/path_set.dart';
final String root = Platform.isWindows ? r'C:\root' : '/root';
@@ -31,7 +30,7 @@
/// Each virtual directory contains ten entries: either subdirectories or
/// files.
void walkTree(int depth, void Function(String) callback) {
- void recurse(String path, remainingDepth) {
+ void recurse(String path, int remainingDepth) {
for (var i = 0; i < 10; i++) {
var padded = i.toString().padLeft(2, '0');
if (remainingDepth == 0) {
@@ -100,7 +99,7 @@
if (pathSet.contains(path)) contained++;
}
- if (contained != 10000) throw 'Wrong result: $contained';
+ if (contained != 10000) throw StateError('Wrong result: $contained');
}
}
@@ -119,7 +118,7 @@
count++;
}
- if (count != 10000) throw 'Wrong result: $count';
+ if (count != 10000) throw StateError('Wrong result: $count');
}
}
diff --git a/pkgs/watcher/example/watch.dart b/pkgs/watcher/example/watch.dart
index 650a4b8..0a0b357 100644
--- a/pkgs/watcher/example/watch.dart
+++ b/pkgs/watcher/example/watch.dart
@@ -15,7 +15,5 @@
}
var watcher = DirectoryWatcher(p.absolute(arguments[0]));
- watcher.events.listen((event) {
- print(event);
- });
+ watcher.events.listen(print);
}
diff --git a/pkgs/watcher/lib/src/directory_watcher/mac_os.dart b/pkgs/watcher/lib/src/directory_watcher/mac_os.dart
index 12648c8..415d17a 100644
--- a/pkgs/watcher/lib/src/directory_watcher/mac_os.dart
+++ b/pkgs/watcher/lib/src/directory_watcher/mac_os.dart
@@ -160,9 +160,7 @@
subscription.onDone(() {
_listSubscriptions.remove(subscription);
});
- subscription.onError((Object e, StackTrace stackTrace) {
- _emitError(e, stackTrace);
- });
+ subscription.onError(_emitError);
_listSubscriptions.add(subscription);
} else if (event is FileSystemModifyEvent) {
assert(!event.isDirectory);
@@ -294,7 +292,7 @@
return ConstructableFileSystemModifyEvent(
batch.first.path, isDir, false);
default:
- throw 'unreachable';
+ throw StateError('unreachable');
}
}
diff --git a/pkgs/watcher/lib/src/directory_watcher/windows.dart b/pkgs/watcher/lib/src/directory_watcher/windows.dart
index 710caf5..141545b 100644
--- a/pkgs/watcher/lib/src/directory_watcher/windows.dart
+++ b/pkgs/watcher/lib/src/directory_watcher/windows.dart
@@ -155,8 +155,7 @@
void _onEvent(FileSystemEvent event) {
assert(isReady);
- final batcher =
- _eventBatchers.putIfAbsent(event.path, () => _EventBatcher());
+ final batcher = _eventBatchers.putIfAbsent(event.path, _EventBatcher.new);
batcher.addEvent(event, () {
_eventBatchers.remove(event.path);
_onBatch(batcher.events);
@@ -316,7 +315,7 @@
case FileSystemEvent.move:
return null;
default:
- throw 'unreachable';
+ throw StateError('unreachable');
}
}
@@ -397,6 +396,7 @@
_eventsController.addError(error, stackTrace);
_startWatch();
} else {
+ // ignore: only_throw_errors
throw error;
}
});
diff --git a/pkgs/watcher/lib/src/path_set.dart b/pkgs/watcher/lib/src/path_set.dart
index 090090e..4f41cf9 100644
--- a/pkgs/watcher/lib/src/path_set.dart
+++ b/pkgs/watcher/lib/src/path_set.dart
@@ -33,7 +33,7 @@
var parts = p.split(path);
var entry = _entries;
for (var part in parts) {
- entry = entry.contents.putIfAbsent(part, () => _Entry());
+ entry = entry.contents.putIfAbsent(part, _Entry.new);
}
entry.isExplicit = true;
diff --git a/pkgs/watcher/pubspec.yaml b/pkgs/watcher/pubspec.yaml
index 9472374..e64e79d 100644
--- a/pkgs/watcher/pubspec.yaml
+++ b/pkgs/watcher/pubspec.yaml
@@ -1,20 +1,20 @@
name: watcher
-version: 1.0.2
+version: 1.0.3-dev
description: >-
A file system watcher. It monitors changes to contents of directories and
sends notifications when files have been added, removed, or modified.
repository: https://github.com/dart-lang/watcher
environment:
- sdk: '>=2.14.0 <3.0.0'
+ sdk: '>=2.19.0 <3.0.0'
dependencies:
async: ^2.5.0
path: ^1.8.0
dev_dependencies:
- lints: ^1.0.0
benchmark_harness: ^2.0.0
+ dart_flutter_team_lints: ^1.0.0
test: ^1.16.0
test_descriptor: ^2.0.0
diff --git a/pkgs/watcher/test/custom_watcher_factory_test.dart b/pkgs/watcher/test/custom_watcher_factory_test.dart
index 331d243..e9d65bb 100644
--- a/pkgs/watcher/test/custom_watcher_factory_test.dart
+++ b/pkgs/watcher/test/custom_watcher_factory_test.dart
@@ -50,9 +50,12 @@
test('registering twice throws', () async {
expect(
- () => registerCustomWatcher(memFsFactoryId,
- (_, {pollingDelay}) => throw 0, (_, {pollingDelay}) => throw 0),
- throwsA(isA<ArgumentError>()));
+ () => registerCustomWatcher(
+ memFsFactoryId,
+ (_, {pollingDelay}) => throw UnimplementedError(),
+ (_, {pollingDelay}) => throw UnimplementedError()),
+ throwsA(isA<ArgumentError>()),
+ );
});
test('finding two applicable factories throws', () async {
diff --git a/pkgs/watcher/test/directory_watcher/linux_test.dart b/pkgs/watcher/test/directory_watcher/linux_test.dart
index b4745a3..7b638a8 100644
--- a/pkgs/watcher/test/directory_watcher/linux_test.dart
+++ b/pkgs/watcher/test/directory_watcher/linux_test.dart
@@ -3,16 +3,17 @@
// BSD-style license that can be found in the LICENSE file.
@TestOn('linux')
+library;
import 'package:test/test.dart';
import 'package:watcher/src/directory_watcher/linux.dart';
import 'package:watcher/watcher.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
- watcherFactory = (dir) => LinuxDirectoryWatcher(dir);
+ watcherFactory = LinuxDirectoryWatcher.new;
sharedTests();
diff --git a/pkgs/watcher/test/directory_watcher/mac_os_test.dart b/pkgs/watcher/test/directory_watcher/mac_os_test.dart
index 58ba31a..347c5e7 100644
--- a/pkgs/watcher/test/directory_watcher/mac_os_test.dart
+++ b/pkgs/watcher/test/directory_watcher/mac_os_test.dart
@@ -3,16 +3,17 @@
// BSD-style license that can be found in the LICENSE file.
@TestOn('mac-os')
+library;
import 'package:test/test.dart';
import 'package:watcher/src/directory_watcher/mac_os.dart';
import 'package:watcher/watcher.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
- watcherFactory = (dir) => MacOSDirectoryWatcher(dir);
+ watcherFactory = MacOSDirectoryWatcher.new;
sharedTests();
diff --git a/pkgs/watcher/test/directory_watcher/polling_test.dart b/pkgs/watcher/test/directory_watcher/polling_test.dart
index 261d0e9..0cfe738 100644
--- a/pkgs/watcher/test/directory_watcher/polling_test.dart
+++ b/pkgs/watcher/test/directory_watcher/polling_test.dart
@@ -5,8 +5,8 @@
import 'package:test/test.dart';
import 'package:watcher/watcher.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
// Use a short delay to make the tests run quickly.
diff --git a/pkgs/watcher/test/directory_watcher/shared.dart b/pkgs/watcher/test/directory_watcher/shared.dart
index 07fbf9c..8fd842a 100644
--- a/pkgs/watcher/test/directory_watcher/shared.dart
+++ b/pkgs/watcher/test/directory_watcher/shared.dart
@@ -278,7 +278,6 @@
isAddEvent('new')
]);
}, onPlatform: {
- 'mac-os': Skip('https://github.com/dart-lang/watcher/issues/21'),
'windows': Skip('https://github.com/dart-lang/watcher/issues/21')
});
diff --git a/pkgs/watcher/test/directory_watcher/windows_test.dart b/pkgs/watcher/test/directory_watcher/windows_test.dart
index 3ddb47e..a0bdda7 100644
--- a/pkgs/watcher/test/directory_watcher/windows_test.dart
+++ b/pkgs/watcher/test/directory_watcher/windows_test.dart
@@ -3,20 +3,19 @@
// BSD-style license that can be found in the LICENSE file.
@TestOn('windows')
+library;
import 'package:test/test.dart';
import 'package:watcher/src/directory_watcher/windows.dart';
import 'package:watcher/watcher.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
- watcherFactory = (dir) => WindowsDirectoryWatcher(dir);
+ watcherFactory = WindowsDirectoryWatcher.new;
- group('Shared Tests:', () {
- sharedTests();
- });
+ group('Shared Tests:', sharedTests);
test('DirectoryWatcher creates a WindowsDirectoryWatcher on Windows', () {
expect(DirectoryWatcher('.'), TypeMatcher<WindowsDirectoryWatcher>());
diff --git a/pkgs/watcher/test/file_watcher/native_test.dart b/pkgs/watcher/test/file_watcher/native_test.dart
index b59d4ed..0d4ad63 100644
--- a/pkgs/watcher/test/file_watcher/native_test.dart
+++ b/pkgs/watcher/test/file_watcher/native_test.dart
@@ -3,15 +3,16 @@
// BSD-style license that can be found in the LICENSE file.
@TestOn('linux || mac-os')
+library;
import 'package:test/test.dart';
import 'package:watcher/src/file_watcher/native.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
- watcherFactory = (file) => NativeFileWatcher(file);
+ watcherFactory = NativeFileWatcher.new;
setUp(() {
writeFile('file.txt');
diff --git a/pkgs/watcher/test/file_watcher/polling_test.dart b/pkgs/watcher/test/file_watcher/polling_test.dart
index b83d44f..1bf9269 100644
--- a/pkgs/watcher/test/file_watcher/polling_test.dart
+++ b/pkgs/watcher/test/file_watcher/polling_test.dart
@@ -3,12 +3,13 @@
// BSD-style license that can be found in the LICENSE file.
@TestOn('linux || mac-os')
+library;
import 'package:test/test.dart';
import 'package:watcher/watcher.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
watcherFactory = (file) =>
diff --git a/pkgs/watcher/test/no_subscription/linux_test.dart b/pkgs/watcher/test/no_subscription/linux_test.dart
index aa57637..aac0810 100644
--- a/pkgs/watcher/test/no_subscription/linux_test.dart
+++ b/pkgs/watcher/test/no_subscription/linux_test.dart
@@ -3,15 +3,16 @@
// BSD-style license that can be found in the LICENSE file.
@TestOn('linux')
+library;
import 'package:test/test.dart';
import 'package:watcher/src/directory_watcher/linux.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
- watcherFactory = (dir) => LinuxDirectoryWatcher(dir);
+ watcherFactory = LinuxDirectoryWatcher.new;
sharedTests();
}
diff --git a/pkgs/watcher/test/no_subscription/mac_os_test.dart b/pkgs/watcher/test/no_subscription/mac_os_test.dart
index f227077..55a8308 100644
--- a/pkgs/watcher/test/no_subscription/mac_os_test.dart
+++ b/pkgs/watcher/test/no_subscription/mac_os_test.dart
@@ -3,16 +3,16 @@
// BSD-style license that can be found in the LICENSE file.
@TestOn('mac-os')
-@Skip('Flaky due to sdk#23877')
+library;
import 'package:test/test.dart';
import 'package:watcher/src/directory_watcher/mac_os.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
- watcherFactory = (dir) => MacOSDirectoryWatcher(dir);
+ watcherFactory = MacOSDirectoryWatcher.new;
sharedTests();
}
diff --git a/pkgs/watcher/test/no_subscription/polling_test.dart b/pkgs/watcher/test/no_subscription/polling_test.dart
index 633ca2e..bfd2958 100644
--- a/pkgs/watcher/test/no_subscription/polling_test.dart
+++ b/pkgs/watcher/test/no_subscription/polling_test.dart
@@ -4,11 +4,11 @@
import 'package:watcher/watcher.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
- watcherFactory = (dir) => PollingDirectoryWatcher(dir);
+ watcherFactory = PollingDirectoryWatcher.new;
sharedTests();
}
diff --git a/pkgs/watcher/test/no_subscription/windows_test.dart b/pkgs/watcher/test/no_subscription/windows_test.dart
index eb381d0..9f9e5a9 100644
--- a/pkgs/watcher/test/no_subscription/windows_test.dart
+++ b/pkgs/watcher/test/no_subscription/windows_test.dart
@@ -3,15 +3,16 @@
// BSD-style license that can be found in the LICENSE file.
@TestOn('windows')
+library;
import 'package:test/test.dart';
import 'package:watcher/src/directory_watcher/windows.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
- watcherFactory = (dir) => WindowsDirectoryWatcher(dir);
+ watcherFactory = WindowsDirectoryWatcher.new;
sharedTests();
}
diff --git a/pkgs/watcher/test/ready/linux_test.dart b/pkgs/watcher/test/ready/linux_test.dart
index aa57637..aac0810 100644
--- a/pkgs/watcher/test/ready/linux_test.dart
+++ b/pkgs/watcher/test/ready/linux_test.dart
@@ -3,15 +3,16 @@
// BSD-style license that can be found in the LICENSE file.
@TestOn('linux')
+library;
import 'package:test/test.dart';
import 'package:watcher/src/directory_watcher/linux.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
- watcherFactory = (dir) => LinuxDirectoryWatcher(dir);
+ watcherFactory = LinuxDirectoryWatcher.new;
sharedTests();
}
diff --git a/pkgs/watcher/test/ready/mac_os_test.dart b/pkgs/watcher/test/ready/mac_os_test.dart
index 4bfdc8d..55a8308 100644
--- a/pkgs/watcher/test/ready/mac_os_test.dart
+++ b/pkgs/watcher/test/ready/mac_os_test.dart
@@ -3,15 +3,16 @@
// BSD-style license that can be found in the LICENSE file.
@TestOn('mac-os')
+library;
import 'package:test/test.dart';
import 'package:watcher/src/directory_watcher/mac_os.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
- watcherFactory = (dir) => MacOSDirectoryWatcher(dir);
+ watcherFactory = MacOSDirectoryWatcher.new;
sharedTests();
}
diff --git a/pkgs/watcher/test/ready/polling_test.dart b/pkgs/watcher/test/ready/polling_test.dart
index 633ca2e..bfd2958 100644
--- a/pkgs/watcher/test/ready/polling_test.dart
+++ b/pkgs/watcher/test/ready/polling_test.dart
@@ -4,11 +4,11 @@
import 'package:watcher/watcher.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
- watcherFactory = (dir) => PollingDirectoryWatcher(dir);
+ watcherFactory = PollingDirectoryWatcher.new;
sharedTests();
}
diff --git a/pkgs/watcher/test/ready/shared.dart b/pkgs/watcher/test/ready/shared.dart
index d9bb5ae..1b4dbaa 100644
--- a/pkgs/watcher/test/ready/shared.dart
+++ b/pkgs/watcher/test/ready/shared.dart
@@ -42,9 +42,12 @@
// Ensure ready completes immediately
expect(
- watcher.ready.timeout(Duration(milliseconds: 0),
- onTimeout: () => throw 'Does not complete immedately'),
- completes);
+ watcher.ready.timeout(
+ Duration(milliseconds: 0),
+ onTimeout: () => throw StateError('Does not complete immedately'),
+ ),
+ completes,
+ );
await subscription.cancel();
});
diff --git a/pkgs/watcher/test/ready/windows_test.dart b/pkgs/watcher/test/ready/windows_test.dart
index eb381d0..9f9e5a9 100644
--- a/pkgs/watcher/test/ready/windows_test.dart
+++ b/pkgs/watcher/test/ready/windows_test.dart
@@ -3,15 +3,16 @@
// BSD-style license that can be found in the LICENSE file.
@TestOn('windows')
+library;
import 'package:test/test.dart';
import 'package:watcher/src/directory_watcher/windows.dart';
-import 'shared.dart';
import '../utils.dart';
+import 'shared.dart';
void main() {
- watcherFactory = (dir) => WindowsDirectoryWatcher(dir);
+ watcherFactory = WindowsDirectoryWatcher.new;
sharedTests();
}