2016-12-15 23:05:15 +00:00
|
|
|
// Copyright 2016 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.
|
|
|
|
|
2017-01-09 16:37:00 +00:00
|
|
|
import 'package:flutter_tools/src/base/io.dart';
|
2016-12-15 23:05:15 +00:00
|
|
|
import 'package:flutter_tools/src/dart/dependencies.dart';
|
|
|
|
import 'package:flutter_tools/src/dependency_checker.dart';
|
|
|
|
import 'package:path/path.dart' as path;
|
|
|
|
import 'package:test/test.dart';
|
|
|
|
import 'src/common.dart';
|
|
|
|
import 'src/context.dart';
|
|
|
|
|
|
|
|
void main() {
|
|
|
|
group('DependencyChecker', () {
|
|
|
|
final String basePath = path.dirname(Platform.script.path);
|
|
|
|
final String dataPath = path.join(basePath, 'data', 'dart_dependencies_test');
|
|
|
|
testUsingContext('good', () {
|
|
|
|
final String testPath = path.join(dataPath, 'good');
|
|
|
|
final String mainPath = path.join(testPath, 'main.dart');
|
|
|
|
final String fooPath = path.join(testPath, 'foo.dart');
|
|
|
|
final String barPath = path.join(testPath, 'lib', 'bar.dart');
|
|
|
|
final String packagesPath = path.join(testPath, '.packages');
|
|
|
|
DartDependencySetBuilder builder =
|
|
|
|
new DartDependencySetBuilder(mainPath, testPath, packagesPath);
|
|
|
|
DependencyChecker dependencyChecker =
|
|
|
|
new DependencyChecker(builder, null);
|
|
|
|
|
|
|
|
// Set file modification time on all dependencies to be in the past.
|
|
|
|
DateTime baseTime = new DateTime.now();
|
|
|
|
updateFileModificationTime(packagesPath, baseTime, -10);
|
|
|
|
updateFileModificationTime(mainPath, baseTime, -10);
|
|
|
|
updateFileModificationTime(fooPath, baseTime, -10);
|
|
|
|
updateFileModificationTime(barPath, baseTime, -10);
|
|
|
|
expect(dependencyChecker.check(baseTime), isFalse);
|
|
|
|
|
|
|
|
// Set .packages file modification time to be in the future.
|
|
|
|
updateFileModificationTime(packagesPath, baseTime, 20);
|
|
|
|
expect(dependencyChecker.check(baseTime), isTrue);
|
|
|
|
|
|
|
|
// Reset .packages file modification time.
|
|
|
|
updateFileModificationTime(packagesPath, baseTime, 0);
|
|
|
|
expect(dependencyChecker.check(baseTime), isFalse);
|
|
|
|
|
|
|
|
// Set 'package:self/bar.dart' file modification time to be in the future.
|
|
|
|
updateFileModificationTime(barPath, baseTime, 10);
|
|
|
|
expect(dependencyChecker.check(baseTime), isTrue);
|
|
|
|
});
|
|
|
|
testUsingContext('syntax error', () {
|
|
|
|
final String testPath = path.join(dataPath, 'syntax_error');
|
|
|
|
final String mainPath = path.join(testPath, 'main.dart');
|
|
|
|
final String fooPath = path.join(testPath, 'foo.dart');
|
|
|
|
final String packagesPath = path.join(testPath, '.packages');
|
|
|
|
|
|
|
|
DartDependencySetBuilder builder =
|
|
|
|
new DartDependencySetBuilder(mainPath, testPath, packagesPath);
|
|
|
|
DependencyChecker dependencyChecker =
|
|
|
|
new DependencyChecker(builder, null);
|
|
|
|
|
|
|
|
DateTime baseTime = new DateTime.now();
|
|
|
|
|
|
|
|
// Set file modification time on all dependencies to be in the past.
|
|
|
|
updateFileModificationTime(packagesPath, baseTime, -10);
|
|
|
|
updateFileModificationTime(mainPath, baseTime, -10);
|
|
|
|
updateFileModificationTime(fooPath, baseTime, -10);
|
|
|
|
|
|
|
|
// Dependencies are considered dirty because there is a syntax error in
|
|
|
|
// the .dart file.
|
|
|
|
expect(dependencyChecker.check(baseTime), isTrue);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|