// Copyright 2016 The Chromium Authors. 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:io'; import 'package:args/command_runner.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/create.dart'; import 'package:flutter_tools/src/commands/config.dart'; import 'package:flutter_tools/src/commands/doctor.dart'; import 'package:flutter_tools/src/globals.dart'; import 'package:flutter_tools/src/usage.dart'; import 'package:test/test.dart'; import 'src/common.dart'; import 'src/context.dart'; void main() { group('analytics', () { Directory temp; bool wasEnabled; setUp(() { Cache.flutterRoot = '../..'; wasEnabled = flutterUsage.enabled; temp = Directory.systemTemp.createTempSync('flutter_tools'); }); tearDown(() { flutterUsage.enabled = wasEnabled; temp.deleteSync(recursive: true); }); // Ensure we don't send anything when analytics is disabled. testUsingContext('doesn\'t send when disabled', () async { int count = 0; flutterUsage.onSend.listen((Map<String, dynamic> data) => count++); flutterUsage.enabled = false; CreateCommand command = new CreateCommand(); CommandRunner runner = createTestCommandRunner(command); int code = await runner.run(<String>['create', '--no-pub', temp.path]); expect(code, 0); expect(count, 0); flutterUsage.enabled = true; code = await runner.run(<String>['create', '--no-pub', temp.path]); expect(code, 0); expect(count, flutterUsage.isFirstRun ? 0 : 2); count = 0; flutterUsage.enabled = false; DoctorCommand doctorCommand = new DoctorCommand(); runner = createTestCommandRunner(doctorCommand); code = await runner.run(<String>['doctor']); expect(code, 0); expect(count, 0); }, overrides: <Type, dynamic>{ Usage: new Usage() }); // Ensure we con't send for the 'flutter config' command. testUsingContext('config doesn\'t send', () async { int count = 0; flutterUsage.onSend.listen((Map<String, dynamic> data) => count++); flutterUsage.enabled = false; ConfigCommand command = new ConfigCommand(); CommandRunner runner = createTestCommandRunner(command); await runner.run(<String>['config']); expect(count, 0); flutterUsage.enabled = true; await runner.run(<String>['config']); expect(count, 0); }, overrides: <Type, dynamic>{ Usage: new Usage() }); }); group('analytics bots', () { testUsingContext('don\'t send on bots', () async { int count = 0; flutterUsage.onSend.listen((Map<String, dynamic> data) => count++); await createTestCommandRunner().run(<String>['--version']); expect(count, 0); }, overrides: <Type, dynamic>{ Usage: new Usage(settingsName: 'flutter_bot_test', versionOverride: 'dev/unknown') }); }); }