-
Notifications
You must be signed in to change notification settings - Fork 203
/
fake_test_builder.dart
51 lines (40 loc) · 1.56 KB
/
fake_test_builder.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Copyright (c) 2021, 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.
import 'dart:async';
import 'package:build_daemon/daemon_builder.dart';
import 'package:build_daemon/data/build_status.dart';
import 'package:build_daemon/data/build_target.dart';
import 'package:build_daemon/data/server_log.dart';
import 'package:watcher/watcher.dart' show WatchEvent;
class FakeTestDaemonBuilder implements DaemonBuilder {
static final loggerName = 'FakeTestDaemonBuilder';
static final buildCompletedMessage = 'Build Completed';
final _outputStreamController = StreamController<ServerLog>();
final _buildsController = StreamController<BuildResults>.broadcast();
late final Stream<ServerLog> _logs;
FakeTestDaemonBuilder() {
_logs = _outputStreamController.stream.asBroadcastStream();
}
@override
Stream<BuildResults> get builds => _buildsController.stream;
@override
Stream<ServerLog> get logs => _logs;
@override
Future<void> build(
Set<BuildTarget> targets, Iterable<WatchEvent> changes) async {
_outputStreamController.add(ServerLog((b) => b
..loggerName = loggerName
..level = Level.INFO
..message = buildCompletedMessage));
_buildsController.add(BuildResults(
(b) => b.changedAssets.add(Uri.parse('package:foo/bar.dart'))));
}
@override
Future<void> stop() {
return Future.wait([
_outputStreamController.close(),
_buildsController.close(),
]);
}
}