// Copyright 2018 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:convert'; import 'dart:io'; import 'common.dart'; void main() { test('analyze-sample-code', () async { final Process process = await Process.start( '../../bin/cache/dart-sdk/bin/dart', <String>['analyze-sample-code.dart', 'test/analyze-sample-code-test-input'], ); final List<String> stdout = await process.stdout.transform<String>(utf8.decoder).transform<String>(const LineSplitter()).toList(); final List<String> stderr = await process.stderr.transform<String>(utf8.decoder).transform<String>(const LineSplitter()).toList(); final Match line = RegExp(r'^(.+)/main\.dart:[0-9]+:[0-9]+: .+$').matchAsPrefix(stdout[1]); expect(line, isNot(isNull)); final String directory = line.group(1); Directory(directory).deleteSync(recursive: true); expect(await process.exitCode, 1); expect(stderr, isEmpty); expect(stdout, <String>[ 'Found 2 sample code sections.', "$directory/main.dart:1:8: Unused import: 'dart:async'", "$directory/main.dart:2:8: Unused import: 'dart:convert'", "$directory/main.dart:3:8: Unused import: 'dart:math'", "$directory/main.dart:4:8: Unused import: 'dart:typed_data'", "$directory/main.dart:5:8: Unused import: 'dart:ui'", "$directory/main.dart:6:8: Unused import: 'package:flutter_test/flutter_test.dart'", "$directory/main.dart:9:8: Target of URI doesn't exist: 'package:flutter/known_broken_documentation.dart'", 'test/analyze-sample-code-test-input/known_broken_documentation.dart:27:5: Unnecessary new keyword (unnecessary_new)', "test/analyze-sample-code-test-input/known_broken_documentation.dart:27:9: Undefined class 'Opacity' (undefined_class)", "test/analyze-sample-code-test-input/known_broken_documentation.dart:29:20: Undefined class 'Text' (undefined_class)", 'test/analyze-sample-code-test-input/known_broken_documentation.dart:39:5: Unnecessary new keyword (unnecessary_new)', "test/analyze-sample-code-test-input/known_broken_documentation.dart:39:9: Undefined class 'Opacity' (undefined_class)", "test/analyze-sample-code-test-input/known_broken_documentation.dart:41:20: Undefined class 'Text' (undefined_class)", 'test/analyze-sample-code-test-input/known_broken_documentation.dart:42:5: unexpected comma at end of sample code', 'Kept $directory because it had errors (see above).', '-------8<-------', ' 1: // generated code', " 2: import 'dart:async';", " 3: import 'dart:convert';", " 4: import 'dart:math' as math;", " 5: import 'dart:typed_data';", " 6: import 'dart:ui' as ui;", " 7: import 'package:flutter_test/flutter_test.dart';", ' 8: ', ' 9: // test/analyze-sample-code-test-input/known_broken_documentation.dart', " 10: import 'package:flutter/known_broken_documentation.dart';", ' 11: ', ' 12: bool _visible = true;', ' 13: dynamic expression1 = ', ' 14: new Opacity(', ' 15: opacity: _visible ? 1.0 : 0.0,', " 16: child: const Text('Poor wandering ones!'),", ' 17: )', ' 18: ;', ' 19: dynamic expression2 = ', ' 20: new Opacity(', ' 21: opacity: _visible ? 1.0 : 0.0,', " 22: child: const Text('Poor wandering ones!'),", ' 23: ),', ' 24: ;', '-------8<-------', ]); }, skip: !Platform.isLinux); }