blob: e1dc2a6cac82b202c31ec29f95e955391db5ad77 [file] [log] [blame]
// Copyright 2019 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:async';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/dart/analysis.dart';
import 'package:flutter_tools/src/dart/pub.dart';
import 'package:flutter_tools/src/dart/sdk.dart';
import '../../src/common.dart';
import '../../src/context.dart';
void main() {
testSampleProject('ui', 'Window');
testSampleProject('html', 'HttpStatus');
testSampleProject('js', 'allowInterop');
testSampleProject('js_util', 'jsify');
}
void testSampleProject(String lib, String member) {
testUsingContext('contains dart:$lib', () async {
Cache.disableLocking();
final Directory projectDirectory = fs.systemTempDirectory.createTempSync('flutter_sdk_validation_${lib}_test.').absolute;
try {
final File pubspecFile = fs.file(fs.path.join(projectDirectory.path, 'pubspec.yaml'));
pubspecFile.writeAsStringSync('''
name: ${lib}_project
dependencies:
flutter:
sdk: flutter
''');
final File dartFile = fs.file(fs.path.join(projectDirectory.path, 'lib', 'main.dart'));
dartFile.parent.createSync();
dartFile.writeAsStringSync('''
import 'dart:$lib' as $lib;
void main() {
// ignore: unnecessary_statements
$lib.$member;
}
''');
await pubGet(context: PubContext.flutterTests, directory: projectDirectory.path);
final AnalysisServer server = AnalysisServer(dartSdkPath, <String>[projectDirectory.path]);
try {
final int errorCount = await analyze(server);
expect(errorCount, 0);
} finally {
await server.dispose();
}
} finally {
tryToDelete(projectDirectory);
Cache.enableLocking();
}
}, skip: true);
}
Future<int> analyze(AnalysisServer server) async {
int errorCount = 0;
final Future<bool> onDone = server.onAnalyzing.where((bool analyzing) => analyzing == false).first;
server.onErrors.listen((FileAnalysisErrors result) {
for (AnalysisError error in result.errors) {
print(error.toString().trim());
}
errorCount += result.errors.length;
});
await server.start();
await onDone;
return errorCount;
}