| Index: pkg/analysis_server/bin/fuzz.dart
|
| diff --git a/pkg/analysis_server/bin/fuzz.dart b/pkg/analysis_server/bin/fuzz.dart
|
| deleted file mode 100644
|
| index 49bdd1d6ad8c9b03afa56f4eaae0ab8731102d85..0000000000000000000000000000000000000000
|
| --- a/pkg/analysis_server/bin/fuzz.dart
|
| +++ /dev/null
|
| @@ -1,171 +0,0 @@
|
| -// Copyright (c) 2014, 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:async';
|
| -import 'dart:io';
|
| -
|
| -import 'package:args/args.dart';
|
| -import 'package:matcher/matcher.dart';
|
| -import 'package:path/path.dart' as path;
|
| -
|
| -import 'fuzz/server_manager.dart';
|
| -
|
| -/**
|
| - * Start analysis server as a separate process and use the stdio to communicate
|
| - * with the server.
|
| - */
|
| -void main(List<String> args) {
|
| - new _FuzzTest().run(args);
|
| -}
|
| -
|
| -/**
|
| - * Instances of [_FuzzTest] launch and test an analysis server.
|
| - * You must specify the location of the Dart SDK and the directory
|
| - * containing sources to be analyzed.
|
| - */
|
| -class _FuzzTest {
|
| - /**
|
| - * The name of the application that is used to start the fuzz tester.
|
| - */
|
| - static const BINARY_NAME = 'fuzz';
|
| -
|
| - //TODO (danrubel) extract common behavior for use in multiple test scenarios
|
| - //TODO (danrubel) cleanup test to use async/await for better readability
|
| - // VM flag --enable_async
|
| -
|
| - static const String DART_SDK_OPTION = 'dart-sdk';
|
| - static const String HELP_OPTION = 'help';
|
| -
|
| - File serverSnapshot;
|
| - Directory appDir;
|
| -
|
| - /// Parse the arguments and initialize the receiver
|
| - /// Return `true` if proper arguments were provided
|
| - bool parseArgs(List<String> args) {
|
| - ArgParser parser = new ArgParser();
|
| -
|
| - void error(String errMsg) {
|
| - stderr.writeln(errMsg);
|
| - print('');
|
| - _printUsage(parser);
|
| - exitCode = 11;
|
| - }
|
| -
|
| - parser.addOption(DART_SDK_OPTION, help: '[sdkPath] path to Dart SDK');
|
| - parser.addFlag(
|
| - HELP_OPTION,
|
| - help: 'print this help message without starting analysis',
|
| - defaultsTo: false,
|
| - negatable: false);
|
| -
|
| - ArgResults results;
|
| - try {
|
| - results = parser.parse(args);
|
| - } on FormatException catch (e) {
|
| - error(e.message);
|
| - return false;
|
| - }
|
| - if (results[HELP_OPTION]) {
|
| - _printUsage(parser);
|
| - return false;
|
| - }
|
| - String sdkPath = results[DART_SDK_OPTION];
|
| - if (sdkPath is! String) {
|
| - error('Missing path to Dart SDK');
|
| - return false;
|
| - }
|
| - Directory sdkDir = new Directory(sdkPath);
|
| - if (!sdkDir.existsSync()) {
|
| - error('Specified Dart SDK does not exist: $sdkPath');
|
| - return false;
|
| - }
|
| - if (results.rest.length == 0) {
|
| - error('Expected directory to analyze');
|
| - return false;
|
| - }
|
| - appDir = new Directory(results.rest[0]);
|
| - if (!appDir.existsSync()) {
|
| - error('Specified application directory does not exist: $appDir');
|
| - return false;
|
| - }
|
| - if (results.rest.length > 1) {
|
| - error('Unexpected arguments after $appDir');
|
| - return false;
|
| - }
|
| - serverSnapshot = new File(
|
| - path.join(sdkDir.path, 'bin', 'snapshots', 'analysis_server.dart.snapshot'));
|
| - if (!serverSnapshot.existsSync()) {
|
| - error('Analysis Server snapshot not found: $serverSnapshot');
|
| - return false;
|
| - }
|
| - return true;
|
| - }
|
| -
|
| - /// Main entry point for launching, testing, and shutting down the server
|
| - void run(List<String> args) {
|
| - if (!parseArgs(args)) return;
|
| - ServerManager.start(serverSnapshot.path).then((ServerManager manager) {
|
| - runZoned(() {
|
| - test(manager).then(manager.stop).then((_) {
|
| - expect(manager.errorOccurred, isFalse);
|
| - print('Test completed successfully');
|
| - });
|
| - }, onError: (error, stack) {
|
| - stderr.writeln(error);
|
| - print(stack);
|
| - exitCode = 12;
|
| - manager.stop();
|
| - });
|
| - });
|
| - }
|
| -
|
| - /// Use manager to exercise the analysis server
|
| - Future test(ServerManager manager) {
|
| -
|
| - // perform initial analysis
|
| - return manager.analyze(appDir).then((AnalysisResults analysisResults) {
|
| - print(
|
| - 'Found ${analysisResults.errorCount} errors,'
|
| - ' ${analysisResults.warningCount} warnings,'
|
| - ' and ${analysisResults.hintCount} hints in ${analysisResults.elapsed}');
|
| -
|
| - // edit a method body
|
| - return manager.openFileNamed(
|
| - 'domain_completion.dart').then((Editor editor) {
|
| - return editor.moveAfter('Response processRequest(Request request) {');
|
| - }).then((Editor editor) {
|
| - return editor.replace(0, '\nOb');
|
| - }).then((Editor editor) {
|
| -
|
| - // request code completion and assert results
|
| - return editor.getSuggestions().then((List<CompletionResults> list) {
|
| - expect(list, isNotNull);
|
| - expect(list.length, equals(0));
|
| - list.forEach((CompletionResults results) {
|
| - print(
|
| - '${results.elapsed} received ${results.suggestionCount} suggestions');
|
| - });
|
| - return editor;
|
| - });
|
| -
|
| - }).then((Editor editor) {
|
| - print('tests complete');
|
| - });
|
| - });
|
| - }
|
| -
|
| -// void _printAnalysisSummary(AnalysisResults results) {
|
| -// print(
|
| -// 'Found ${results.errorCount} errors, ${results.warningCount} warnings,'
|
| -// ' and ${results.hintCount} hints in $results.elapsed');
|
| -// }
|
| -
|
| - /// Print information about how to use the server.
|
| - void _printUsage(ArgParser parser) {
|
| - print('Usage: $BINARY_NAME [flags] <application_directory>');
|
| - print('');
|
| - print('Supported flags are:');
|
| - print(parser.usage);
|
| - }
|
| -}
|
|
|