| // Copyright (c) 2016, 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 'package:analyzer/file_system/file_system.dart'; | |
| import 'package:analyzer/source/file_source.dart'; | |
| import 'package:analyzer/src/generated/utilities_dart.dart'; | |
| import 'package:analyzer/src/utilities/extensions/source.dart'; | |
| import 'package:analyzer_testing/resource_provider_mixin.dart'; | |
| import 'package:path/path.dart' as path; | |
| import 'package:test/test.dart'; | |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; | |
| main() { | |
| defineReflectiveSuite(() { | |
| defineReflectiveTests(FileSourceTest); | |
| }); | |
| } | |
| @reflectiveTest | |
| class FileSourceTest with ResourceProviderMixin { | |
| bool get _isWindowsPathContext => | |
| resourceProvider.pathContext.style == path.windows.style; | |
| void test_contents() { | |
| File file1 = getFile("/foo.txt"); | |
| file1.writeAsStringSync('test'); | |
| FileSource source1 = FileSource(file1); | |
| expect(source1.contents.data, 'test'); | |
| expect(source1.stringContents, 'test'); | |
| } | |
| void test_equals_false_differentFiles() { | |
| File file1 = getFile("/does/not/exist1.dart"); | |
| File file2 = getFile("/does/not/exist2.dart"); | |
| FileSource source1 = FileSource(file1); | |
| FileSource source2 = FileSource(file2); | |
| expect(source1 == source2, isFalse); | |
| } | |
| void test_equals_false_null() { | |
| File file = getFile("/does/not/exist1.dart"); | |
| FileSource source1 = FileSource(file); | |
| expect(source1, isNotNull); | |
| } | |
| void test_equals_true() { | |
| File file1 = getFile("/does/not/exist.dart"); | |
| File file2 = getFile("/does/not/exist.dart"); | |
| FileSource source1 = FileSource(file1); | |
| FileSource source2 = FileSource(file2); | |
| expect(source1 == source2, isTrue); | |
| } | |
| void test_getFullName() { | |
| File file = getFile("/does/not/exist.dart"); | |
| FileSource source = FileSource(file); | |
| expect(source.fullName, file.path); | |
| } | |
| void test_getShortName() { | |
| File file = getFile("/does/not/exist.dart"); | |
| FileSource source = FileSource(file); | |
| expect(source.shortName, "exist.dart"); | |
| } | |
| void test_hashCode() { | |
| File file1 = getFile("/does/not/exist.dart"); | |
| File file2 = getFile("/does/not/exist.dart"); | |
| FileSource source1 = FileSource(file1); | |
| FileSource source2 = FileSource(file2); | |
| expect(source2.hashCode, source1.hashCode); | |
| } | |
| void test_issue14500() { | |
| // see https://code.google.com/p/dart/issues/detail?id=14500 | |
| FileSource source = FileSource(getFile("/some/packages/foo:bar.dart")); | |
| expect(source, isNotNull); | |
| expect(source.exists(), isFalse); | |
| } | |
| void test_resolveRelative_file_fileName() { | |
| if (_isWindowsPathContext) { | |
| // On Windows, the URI that is produced includes a drive letter, | |
| // which I believe is not consistent across all machines that might run | |
| // this test. | |
| return; | |
| } | |
| File file = getFile("/a/b/test.dart"); | |
| FileSource source = FileSource(file); | |
| expect(source, isNotNull); | |
| Uri relative = resolveRelativeUri(source.uri, Uri.parse("lib.dart")); | |
| expect(relative, isNotNull); | |
| expect(relative.toString(), "file:///a/b/lib.dart"); | |
| } | |
| void test_resolveRelative_file_filePath() { | |
| if (_isWindowsPathContext) { | |
| // On Windows, the URI that is produced includes a drive letter, | |
| // which I believe is not consistent across all machines that might run | |
| // this test. | |
| return; | |
| } | |
| File file = getFile("/a/b/test.dart"); | |
| FileSource source = FileSource(file); | |
| expect(source, isNotNull); | |
| Uri relative = resolveRelativeUri(source.uri, Uri.parse("c/lib.dart")); | |
| expect(relative, isNotNull); | |
| expect(relative.toString(), "file:///a/b/c/lib.dart"); | |
| } | |
| void test_resolveRelative_file_filePathWithParent() { | |
| if (_isWindowsPathContext) { | |
| // On Windows, the URI that is produced includes a drive letter, which I | |
| // believe is not consistent across all machines that might run this test. | |
| return; | |
| } | |
| File file = getFile("/a/b/test.dart"); | |
| FileSource source = FileSource(file); | |
| expect(source, isNotNull); | |
| Uri relative = resolveRelativeUri(source.uri, Uri.parse("../c/lib.dart")); | |
| expect(relative, isNotNull); | |
| expect(relative.toString(), "file:///a/c/lib.dart"); | |
| } | |
| void test_system() { | |
| File file = getFile("/does/not/exist.dart"); | |
| FileSource source = FileSource(file, Uri.parse("dart:core")); | |
| expect(source, isNotNull); | |
| expect(source.fullName, file.path); | |
| expect(source.uri.toString(), 'dart:core'); | |
| } | |
| } |