mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
72 lines
3.9 KiB
Dart
72 lines
3.9 KiB
Dart
// Copyright 2014 The Flutter 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 'common.dart';
|
|
|
|
void main() {
|
|
// These tests don't run on Windows because the sample analyzer doesn't
|
|
// support Windows as a platform, since it is only run on Linux in the
|
|
// continuous integration tests.
|
|
if (Platform.isWindows) {
|
|
return;
|
|
}
|
|
|
|
test('analyze_sample_code smoke test', () {
|
|
final ProcessResult process = Process.runSync(
|
|
'../../bin/cache/dart-sdk/bin/dart',
|
|
<String>['analyze_sample_code.dart', '--no-include-dart-ui', 'test/analyze-sample-code-test-input'],
|
|
);
|
|
final List<String> stdoutLines = process.stdout.toString().split('\n');
|
|
final List<String> stderrLines = process.stderr.toString().split('\n');
|
|
expect(process.exitCode, isNot(equals(0)));
|
|
expect(stderrLines, containsAll(<Object>[
|
|
'In sample starting at dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:125: child: Text(title),',
|
|
matches(RegExp(r">>> error: The final variable 'title' can't be read because (it is|it's) potentially unassigned at this point \(read_potentially_unassigned_final\)")),
|
|
'dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:30:9: new Opacity(',
|
|
'>>> info: Unnecessary new keyword (unnecessary_new)',
|
|
'dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:62:9: new Opacity(',
|
|
'>>> info: Unnecessary new keyword (unnecessary_new)',
|
|
"dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:111:9: final String? bar = 'Hello';",
|
|
'>>> info: Prefer const over final for declarations (prefer_const_declarations)',
|
|
'dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:112:9: final int foo = null;',
|
|
'>>> info: Prefer const over final for declarations (prefer_const_declarations)',
|
|
'dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:112:25: final int foo = null;',
|
|
">>> error: A value of type 'Null' can't be assigned to a variable of type 'int' (invalid_assignment)",
|
|
'dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:120:24: const SizedBox(),',
|
|
'>>> error: Unexpected comma at end of sample code. (missing_identifier)',
|
|
'Found 2 sample code errors.',
|
|
]));
|
|
expect(stdoutLines, containsAll(<String>[
|
|
'Found 9 snippet code blocks, 0 sample code sections, and 2 dartpad sections.',
|
|
'Starting analysis of code samples.',
|
|
]));
|
|
});
|
|
test('Analyzes dart:ui code', () {
|
|
final ProcessResult process = Process.runSync(
|
|
'../../bin/cache/dart-sdk/bin/dart',
|
|
<String>[
|
|
'analyze_sample_code.dart',
|
|
'--dart-ui-location=test/analyze-sample-code-test-dart-ui',
|
|
'test/analyze-sample-code-test-input',
|
|
],
|
|
);
|
|
final List<String> stdoutLines = process.stdout.toString().split('\n');
|
|
final List<String> stderrLines = process.stderr.toString().split('\n');
|
|
expect(process.exitCode, isNot(equals(0)));
|
|
expect(stderrLines, containsAll(<String>[
|
|
'In sample starting at dev/bots/test/analyze-sample-code-test-dart-ui/ui.dart:15:class MyStatelessWidget extends StatelessWidget {',
|
|
">>> error: Missing concrete implementation of 'StatelessWidget.build' (non_abstract_class_inherits_abstract_member)",
|
|
'In sample starting at dev/bots/test/analyze-sample-code-test-dart-ui/ui.dart:15:class MyStringBuffer {',
|
|
">>> error: Classes can't be declared inside other classes (class_in_class)",
|
|
]));
|
|
expect(stdoutLines, containsAll(<String>[
|
|
// There is one sample code section in the test's dummy dart:ui code.
|
|
'Found 9 snippet code blocks, 1 sample code sections, and 2 dartpad sections.',
|
|
'Starting analysis of code samples.',
|
|
]));
|
|
});
|
|
}
|