24a7ac636f
Changes: ``` > git log --format="%C(auto) %h %s" 26c6985..7440821 https://dart.googlesource.com/pub.git/+/74408212b Bump actions/stale from 10.1.1 to 10.2.0 in the github-actions group (4788) https://dart.googlesource.com/pub.git/+/ac14a82d0 Finish override logic (4780) https://dart.googlesource.com/pub.git/+/26d41b4f6 Handle both tagged and lightweight tags in tag patterns (4781) https://dart.googlesource.com/pub.git/+/701d535d3 Make applicationConfigHome conditional, avoid it when dart:io is unavailable (4779) https://dart.googlesource.com/pub.git/+/526635f32 IOOverrides using package:file for testing (4774) https://dart.googlesource.com/pub.git/+/970c4f7c9 Wrap platform (4778) https://dart.googlesource.com/pub.git/+/3b6317778 Test for gzipDecoder (4772) https://dart.googlesource.com/pub.git/+/d60133739 Wrap path (4775) https://dart.googlesource.com/pub.git/+/eac9e600d 'Add @TestOn('vm') to all tests (4769) https://dart.googlesource.com/pub.git/+/e1d6f0679 Remove skipped feature test (4773) https://dart.googlesource.com/pub.git/+/27a584dcd Stop sending X-Pub headers (4764) https://dart.googlesource.com/pub.git/+/143730e76 Introduce platform-agnostic gzipDecoder abstraction (4768) https://dart.googlesource.com/pub.git/+/0062dc9b9 Support Git LFS for git dependencies (4761) https://dart.googlesource.com/pub.git/+/2ec22ec97 Allow (and prefer) using @ instead of : in `pub add` and `pub unpack` (4759) https://dart.googlesource.com/pub.git/+/d3d0824ab Fix path-activated packages not picking up source changes (4748) https://dart.googlesource.com/pub.git/+/54a30dd79 Bump analyzer from 10.0.1 to 10.0.2 (4750) https://dart.googlesource.com/pub.git/+/1d9b56e2f Bump meta from 1.17.0 to 1.18.1 (4751) ``` Diff: https://dart.googlesource.com/pub.git/+/26c6985c742593d081f8b58450f463a584a4203a..74408212b5348003381bc63f3b59274aaa23cfa3/ Change-Id: I53e9723c511561e9e7c4b10fdb41db00cc157e56 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/484580 Reviewed-by: Jonas Jensen <jonasfj@google.com> Auto-Submit: Sigurd Meldgaard <sigurdm@google.com> Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>
193 lines
5.8 KiB
Dart
193 lines
5.8 KiB
Dart
// Copyright (c) 2020, 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:convert';
|
|
import 'dart:io' as io;
|
|
|
|
import 'package:dartdev/dartdev.dart';
|
|
import 'package:http/http.dart' as http;
|
|
import 'package:path/path.dart' as path;
|
|
// Needed to reset the global HTTP client after a test.
|
|
import 'package:pub/src/http.dart' as pub show withHttpClient;
|
|
import 'package:test/test.dart';
|
|
import 'package:unified_analytics/unified_analytics.dart';
|
|
|
|
import 'experiment_util.dart';
|
|
import 'utils.dart';
|
|
|
|
List<Map<String, Object?>> extractAnalytics(io.ProcessResult result) {
|
|
return LineSplitter.split(
|
|
result.stderr,
|
|
).where((line) => line.startsWith('[analytics]: ')).map((line) {
|
|
return (json.decode(line.substring('[analytics]: '.length)) as Map)
|
|
.cast<String, Object?>();
|
|
}).toList();
|
|
}
|
|
|
|
void main() {
|
|
final experiments = experimentsWithValidation();
|
|
|
|
group('VM -> CLI flag smoke test:', () {
|
|
late DartdevRunner command;
|
|
setUp(() {
|
|
command = DartdevRunner([], isAnalyticsTest: true);
|
|
});
|
|
|
|
test('--no-analytics', () async {
|
|
final result = await command.runCommand(
|
|
command.parse(['--no-analytics']),
|
|
);
|
|
expect(result, 0);
|
|
expect(command.unifiedAnalytics.telemetryEnabled, false);
|
|
});
|
|
|
|
test('--suppress-analytics', () async {
|
|
final result = await command.runCommand(
|
|
command.parse(['--suppress-analytics']),
|
|
);
|
|
expect(result, 0);
|
|
expect(command.unifiedAnalytics.telemetryEnabled, false);
|
|
});
|
|
|
|
test('--suppress-analytics and --disable-analytics', () async {
|
|
final result = await command.runCommand(
|
|
command.parse(['--suppress-analytics', '--disable-analytics']),
|
|
);
|
|
// --suppress-analytics and --disable-analytics can't be provided
|
|
// together to ensure analytics state properly sticks.
|
|
expect(result, 254);
|
|
});
|
|
|
|
test('--suppress-analytics and --enable-analytics', () async {
|
|
final result = await command.runCommand(
|
|
command.parse(['--suppress-analytics', '--enable-analytics']),
|
|
);
|
|
// --suppress-analytics and --enable-analytics can't be provided
|
|
// together to ensure analytics state properly sticks.
|
|
expect(result, 254);
|
|
});
|
|
});
|
|
|
|
group('Sending analytics', () {
|
|
test('help', () async {
|
|
final p = project();
|
|
final analytics = await p.runLocalWithFakeAnalytics(['help']);
|
|
expect(analytics.sentEvents, [
|
|
Event.dartCliCommandExecuted(name: 'help', enabledExperiments: ''),
|
|
]);
|
|
});
|
|
|
|
test('create', () async {
|
|
final p = project();
|
|
final analytics = await p.runLocalWithFakeAnalytics([
|
|
'create',
|
|
'--no-pub',
|
|
'-tpackage-simple',
|
|
path.join(io.Directory.systemTemp.createTempSync().path, 'name'),
|
|
]);
|
|
expect(analytics.sentEvents, [
|
|
Event.dartCliCommandExecuted(name: 'create', enabledExperiments: ''),
|
|
]);
|
|
});
|
|
|
|
group('pub', () {
|
|
test(
|
|
'get',
|
|
() async {
|
|
final p = project(
|
|
pubspecExtras: {
|
|
'dependencies': {'lints': '2.0.1'},
|
|
},
|
|
);
|
|
final analytics = await p.runLocalWithFakeAnalytics(['pub', 'get']);
|
|
|
|
// Pub no longer sends custom analytics,
|
|
// so only the command should be sent.
|
|
expect(analytics.sentEvents, [
|
|
Event.dartCliCommandExecuted(
|
|
name: 'pub/get',
|
|
enabledExperiments: '',
|
|
),
|
|
]);
|
|
},
|
|
// This test does a pub get, so it might run slow. Consider adding
|
|
// retries if necessary.
|
|
timeout: Timeout.factor(5),
|
|
);
|
|
});
|
|
|
|
test('format', () async {
|
|
final p = project();
|
|
final analytics = await p.runLocalWithFakeAnalytics([
|
|
'format',
|
|
'-l80',
|
|
'.',
|
|
]);
|
|
expect(analytics.sentEvents, [
|
|
Event.dartCliCommandExecuted(name: 'format', enabledExperiments: ''),
|
|
]);
|
|
});
|
|
|
|
test('run', () async {
|
|
final p = project(mainSrc: 'void main(List<String> args) => print(args)');
|
|
await pub.withHttpClient(client: http.Client(), () async {
|
|
final analytics = await p.runLocalWithFakeAnalytics([
|
|
'run',
|
|
'--no-pause-isolates-on-exit',
|
|
'--enable-asserts',
|
|
'lib/main.dart',
|
|
'--argument',
|
|
]);
|
|
expect(analytics.sentEvents, [
|
|
Event.dartCliCommandExecuted(name: 'run', enabledExperiments: ''),
|
|
]);
|
|
});
|
|
});
|
|
|
|
group('run --enable-experiments', () {
|
|
for (final experiment in experiments) {
|
|
test(experiment.name, () async {
|
|
final p = project(mainSrc: experiment.validation);
|
|
{
|
|
for (final no in ['', 'no-']) {
|
|
await pub.withHttpClient(client: http.Client(), () async {
|
|
final analytics = await p.runLocalWithFakeAnalytics([
|
|
'run',
|
|
'--enable-experiment=$no${experiment.name}',
|
|
'lib/main.dart',
|
|
]);
|
|
expect(analytics.sentEvents, [
|
|
Event.dartCliCommandExecuted(
|
|
name: 'run',
|
|
enabledExperiments: '$no${experiment.name}',
|
|
),
|
|
]);
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
test('compile', () async {
|
|
final p = project(
|
|
mainSrc: 'void main(List<String> args) => print(args);',
|
|
);
|
|
final analytics = await p.runLocalWithFakeAnalytics([
|
|
'compile',
|
|
'kernel',
|
|
'lib/main.dart',
|
|
'-o',
|
|
'main.kernel',
|
|
]);
|
|
expect(analytics.sentEvents, [
|
|
Event.dartCliCommandExecuted(
|
|
name: 'compile/kernel',
|
|
enabledExperiments: '',
|
|
),
|
|
]);
|
|
});
|
|
});
|
|
}
|