| // 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. | |
| import 'package:flutter_tools/src/dart/dependencies.dart'; | |
| import 'package:flutter_tools/src/base/file_system.dart'; | |
| import 'src/common.dart'; | |
| import 'src/context.dart'; | |
| void main() { | |
| group('DartDependencySetBuilder', () { | |
| final String dataPath = fs.path.join( | |
| getFlutterRoot(), | |
| 'packages', | |
| 'flutter_tools', | |
| 'test', | |
| 'data', | |
| 'dart_dependencies_test', | |
| ); | |
| testUsingContext('good', () { | |
| final String testPath = fs.path.join(dataPath, 'good'); | |
| final String mainPath = fs.path.join(testPath, 'main.dart'); | |
| final String packagesPath = fs.path.join(testPath, '.packages'); | |
| final DartDependencySetBuilder builder = | |
| DartDependencySetBuilder(mainPath, packagesPath); | |
| final Set<String> dependencies = builder.build(); | |
| expect(dependencies.contains(canonicalizePath(mainPath)), isTrue); | |
| expect(dependencies.contains(canonicalizePath(fs.path.join(testPath, 'foo.dart'))), isTrue); | |
| }); | |
| testUsingContext('syntax_error', () { | |
| final String testPath = fs.path.join(dataPath, 'syntax_error'); | |
| final String mainPath = fs.path.join(testPath, 'main.dart'); | |
| final String packagesPath = fs.path.join(testPath, '.packages'); | |
| final DartDependencySetBuilder builder = | |
| DartDependencySetBuilder(mainPath, packagesPath); | |
| try { | |
| builder.build(); | |
| fail('expect an exception to be thrown.'); | |
| } on DartDependencyException catch (error) { | |
| expect(error.toString(), contains('foo.dart: Expected a string literal')); | |
| } | |
| }); | |
| testUsingContext('bad_path', () { | |
| final String testPath = fs.path.join(dataPath, 'bad_path'); | |
| final String mainPath = fs.path.join(testPath, 'main.dart'); | |
| final String packagesPath = fs.path.join(testPath, '.packages'); | |
| final DartDependencySetBuilder builder = | |
| DartDependencySetBuilder(mainPath, packagesPath); | |
| try { | |
| builder.build(); | |
| fail('expect an exception to be thrown.'); | |
| } on DartDependencyException catch (error) { | |
| expect(error.toString(), contains('amaze${fs.path.separator}and${fs.path.separator}astonish.dart')); | |
| } | |
| }); | |
| testUsingContext('bad_package', () { | |
| final String testPath = fs.path.join(dataPath, 'bad_package'); | |
| final String mainPath = fs.path.join(testPath, 'main.dart'); | |
| final String packagesPath = fs.path.join(testPath, '.packages'); | |
| final DartDependencySetBuilder builder = | |
| DartDependencySetBuilder(mainPath, packagesPath); | |
| try { | |
| builder.build(); | |
| fail('expect an exception to be thrown.'); | |
| } on DartDependencyException catch (error) { | |
| expect(error.toString(), contains('rochambeau')); | |
| expect(error.toString(), contains('pubspec.yaml')); | |
| } | |
| }); | |
| testUsingContext('does not change ASCII casing of path', () { | |
| final String testPath = fs.path.join(dataPath, 'asci_casing'); | |
| final String mainPath = fs.path.join(testPath, 'main.dart'); | |
| final String packagesPath = fs.path.join(testPath, '.packages'); | |
| final DartDependencySetBuilder builder = DartDependencySetBuilder(mainPath, packagesPath); | |
| final Set<String> deps = builder.build(); | |
| expect(deps, contains(endsWith('This_Import_Has_fuNNy_casING.dart'))); | |
| }); | |
| testUsingContext('bad_import', () { | |
| final String testPath = fs.path.join(dataPath, 'bad_import'); | |
| final String mainPath = fs.path.join(testPath, 'main.dart'); | |
| final String packagesPath = fs.path.join(testPath, '.packages'); | |
| final DartDependencySetBuilder builder = | |
| DartDependencySetBuilder(mainPath, packagesPath); | |
| try { | |
| builder.build(); | |
| fail('expect an exception to be thrown.'); | |
| } on DartDependencyException catch (error) { | |
| expect(error.toString(), contains('Unable to parse URI')); | |
| } | |
| }); | |
| }); | |
| } |