Files
sdk/pkg/analyzer_fe_comparison/tool/compare_packages.dart
T
Paul Berry a48120aabd Wire up placeholder executable in pkg/analyzer_fe_comparison.
The placeholder executable is replaced by a shell script that invokes
pkg/analyzer_fe_comparison (in a similar way to how
sdk/bin/dartanalyzer invokes pkg/analyzer_cli).  This required some
rewriting of pkg/analyzer_fe_comparison to support analysis of a
single test case (as opposed to analysis of a package, which is what
it did before).

It's now possible to run the comparison tool over the test suite in
language_2.  There are many failures, which I'll begin addressing in
follow-up CLs.

Change-Id: I52d8f3b53064e8e29028571d416f2573c6cba35d
Reviewed-on: https://dart-review.googlesource.com/74820
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-09-13 16:41:20 +00:00

34 lines
1.3 KiB
Dart

// Copyright (c) 2018, 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:analyzer_fe_comparison/comparison.dart';
import 'package:path/path.dart' as path;
/// Compares the analyzer and front_end behavior when compiling a package.
///
/// Currently hardcoded to use the package "analyzer".
main() async {
var scriptPath = Platform.script.toFilePath();
var sdkRepoPath =
path.normalize(path.join(path.dirname(scriptPath), '..', '..', '..'));
var buildPath = await _findBuildDir(sdkRepoPath, 'ReleaseX64');
var dillPath = path.join(buildPath, 'vm_platform_strong.dill');
var analyzerLibPath = path.join(sdkRepoPath, 'pkg', 'analyzer', 'lib');
var packagesFilePath = path.join(sdkRepoPath, '.packages');
comparePackages(dillPath, analyzerLibPath, packagesFilePath);
}
Future<String> _findBuildDir(String sdkRepoPath, String targetName) async {
for (var subdirName in ['out', 'xcodebuild']) {
var candidatePath = path.join(sdkRepoPath, subdirName, targetName);
if (await new Directory(candidatePath).exists()) {
return candidatePath;
}
}
throw new StateError('Cannot find build directory');
}