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