mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
77 lines
2.3 KiB
Dart
77 lines
2.3 KiB
Dart
// 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;
|
|
}
|