Version 2.12.0-259.16.beta
* Cherry-pick 410f242ebc1efd81cf800ada54f5311e6f895c58 to beta
diff --git a/pkg/dartdev/lib/dartdev.dart b/pkg/dartdev/lib/dartdev.dart
index b194847..a8f9780 100644
--- a/pkg/dartdev/lib/dartdev.dart
+++ b/pkg/dartdev/lib/dartdev.dart
@@ -10,6 +10,7 @@
import 'package:args/command_runner.dart';
import 'package:cli_util/cli_logging.dart';
import 'package:dart_style/src/cli/format_command.dart';
+import 'package:meta/meta.dart';
import 'package:nnbd_migration/migration_cli.dart';
import 'package:pedantic/pedantic.dart';
import 'package:pub/pub.dart';
@@ -112,22 +113,30 @@
String get invocation =>
'dart [<vm-flags>] <command|dart-file> [<arguments>]';
+ @visibleForTesting
+ Analytics get analytics => _analytics;
+ Analytics _analytics;
+
@override
Future<int> runCommand(ArgResults topLevelResults) async {
final stopwatch = Stopwatch()..start();
// The Analytics instance used to report information back to Google Analytics;
// see lib/src/analytics.dart.
- final analytics = createAnalyticsInstance(!topLevelResults['analytics']);
+ _analytics = createAnalyticsInstance(
+ topLevelResults.wasParsed('analytics')
+ ? !topLevelResults['analytics']
+ : false,
+ );
// If we have not printed the analyticsNoticeOnFirstRunMessage to stdout,
// the user is on a terminal, and the machine is not a bot, then print the
// disclosure and set analytics.disclosureShownOnTerminal to true.
if (analytics is DartdevAnalytics &&
- !analytics.disclosureShownOnTerminal &&
+ !(analytics as DartdevAnalytics).disclosureShownOnTerminal &&
io.stdout.hasTerminal &&
!isBot()) {
print(analyticsNoticeOnFirstRunMessage);
- analytics.disclosureShownOnTerminal = true;
+ (analytics as DartdevAnalytics).disclosureShownOnTerminal = true;
}
// When `--disable-analytics` or `--enable-analytics` are called we perform
diff --git a/pkg/dartdev/test/analytics_test.dart b/pkg/dartdev/test/analytics_test.dart
index 6158b0d..0254384 100644
--- a/pkg/dartdev/test/analytics_test.dart
+++ b/pkg/dartdev/test/analytics_test.dart
@@ -5,6 +5,7 @@
import 'dart:convert';
import 'dart:io';
+import 'package:dartdev/dartdev.dart';
import 'package:dartdev/src/analytics.dart';
import 'package:test/test.dart';
@@ -20,6 +21,24 @@
void main() {
group('DisabledAnalytics', disabledAnalyticsObject);
+ group('VM -> CLI --analytics flag smoke test:', () {
+ final command = DartdevRunner(['--analytics']);
+ test('--analytics', () {
+ command.runCommand(command.parse(['--analytics']));
+ expect(command.analytics is! DisabledAnalytics, true);
+ });
+
+ test('--no-analytics', () {
+ command.runCommand(command.parse(['--no-analytics']));
+ expect(command.analytics is DisabledAnalytics, true);
+ });
+
+ test('No flag', () {
+ command.runCommand(command.parse([]));
+ expect(command.analytics is! DisabledAnalytics, true);
+ });
+ });
+
test('Analytics control smoke test', () {
final p = project(logAnalytics: true);
var result = p.runSync(['--disable-analytics']);
diff --git a/tools/VERSION b/tools/VERSION
index e0c8ab4..b9cbea1 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
MINOR 12
PATCH 0
PRERELEASE 259
-PRERELEASE_PATCH 15
\ No newline at end of file
+PRERELEASE_PATCH 16
\ No newline at end of file