diff --git a/packages/flutter_tools/lib/src/usage.dart b/packages/flutter_tools/lib/src/usage.dart index 4575e0867da..b4a50d92135 100644 --- a/packages/flutter_tools/lib/src/usage.dart +++ b/packages/flutter_tools/lib/src/usage.dart @@ -12,22 +12,20 @@ import 'base/utils.dart'; import 'globals.dart'; import 'version.dart'; -// TODO(devoncarew): We'll need to do some work on the user agent in order to -// correctly track usage by operating system (dart-lang/usage/issues/70). - // TODO(devoncarew): We'll want to find a way to send (sanitized) command parameters. const String _kFlutterUA = 'UA-67589403-5'; class Usage { - Usage() { - String version = FlutterVersion.getVersionString(whitelistBranchName: true); - _analytics = new AnalyticsIO(_kFlutterUA, 'flutter', version); + /// Create a new Usage instance; [versionOverride] is used for testing. + Usage({ String settingsName: 'flutter', String versionOverride }) { + String version = versionOverride ?? FlutterVersion.getVersionString(whitelistBranchName: true); + _analytics = new AnalyticsIO(_kFlutterUA, settingsName, version); bool runningOnCI = false; // Many CI systems don't do a full git checkout. - if (version.startsWith('unknown/')) + if (version.endsWith('/unknown')) runningOnCI = true; // Check for common CI systems. diff --git a/packages/flutter_tools/test/analytics_test.dart b/packages/flutter_tools/test/analytics_test.dart index e3c888fe1e4..06536a33701 100644 --- a/packages/flutter_tools/test/analytics_test.dart +++ b/packages/flutter_tools/test/analytics_test.dart @@ -78,4 +78,16 @@ void main() { Usage: new Usage() }); }); + + group('analytics bots', () { + testUsingContext('don\'t send on bots', () async { + int count = 0; + flutterUsage.onSend.listen((Map data) => count++); + + await createTestCommandRunner().run(['--version']); + expect(count, 0); + }, overrides: { + Usage: new Usage(settingsName: 'flutter_bot_test', versionOverride: 'dev/unknown') + }); + }); } diff --git a/packages/flutter_tools/test/src/common.dart b/packages/flutter_tools/test/src/common.dart index 5183515d976..021d5980aea 100644 --- a/packages/flutter_tools/test/src/common.dart +++ b/packages/flutter_tools/test/src/common.dart @@ -6,6 +6,9 @@ import 'package:args/command_runner.dart'; import 'package:flutter_tools/src/runner/flutter_command.dart'; import 'package:flutter_tools/src/runner/flutter_command_runner.dart'; -CommandRunner createTestCommandRunner(FlutterCommand command) { - return new FlutterCommandRunner()..addCommand(command); +CommandRunner createTestCommandRunner([FlutterCommand command]) { + FlutterCommandRunner runner = new FlutterCommandRunner(); + if (command != null) + runner.addCommand(command); + return runner; }