mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 15:47:08 +00:00
Fix for getFilesForPath() for a generated file.
This causes exceptions for internal users. Not fatal, other files analysis is fine. R=brianwilkerson@google.com BUG= Review-Url: https://codereview.chromium.org/2655373002 .
This commit is contained in:
parent
9761ff14d4
commit
2d318065b0
|
@ -74,7 +74,7 @@ class AnalysisDriver {
|
|||
/**
|
||||
* The version of data format, should be incremented on every format change.
|
||||
*/
|
||||
static const int DATA_VERSION = 12;
|
||||
static const int DATA_VERSION = 13;
|
||||
|
||||
/**
|
||||
* The name of the driver, e.g. the name of the folder.
|
||||
|
|
|
@ -592,7 +592,7 @@ class FileSystemState {
|
|||
// Try to get the existing instance.
|
||||
file = _uriToFile[uri];
|
||||
// If we have a file, call it the canonical one and return it.
|
||||
if (file != null) {
|
||||
if (file != null && file.path == path) {
|
||||
_pathToCanonicalFile[path] = file;
|
||||
return file;
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ import 'package:convert/convert.dart';
|
|||
import 'package:crypto/crypto.dart';
|
||||
import 'package:test/test.dart';
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
import 'package:typed_mock/typed_mock.dart';
|
||||
|
||||
import '../../context/mock_sdk.dart';
|
||||
|
||||
|
@ -38,6 +39,7 @@ class FileSystemStateTest {
|
|||
final FileContentOverlay contentOverlay = new FileContentOverlay();
|
||||
|
||||
final StringBuffer logBuffer = new StringBuffer();
|
||||
final UriResolver generatedUriResolver = new _GeneratedUriResolverMock();
|
||||
SourceFactory sourceFactory;
|
||||
PerformanceLog logger;
|
||||
|
||||
|
@ -48,6 +50,7 @@ class FileSystemStateTest {
|
|||
sdk = new MockSdk(resourceProvider: provider);
|
||||
sourceFactory = new SourceFactory([
|
||||
new DartUriResolver(sdk),
|
||||
generatedUriResolver,
|
||||
new PackageMapUriResolver(provider, <String, List<Folder>>{
|
||||
'aaa': [provider.getFolder(_p('/aaa/lib'))],
|
||||
'bbb': [provider.getFolder(_p('/bbb/lib'))],
|
||||
|
@ -272,6 +275,29 @@ class A2 {}
|
|||
expect(file.unlinked.classes, isEmpty);
|
||||
}
|
||||
|
||||
test_getFileForPath_generatedFile() {
|
||||
Uri uri = Uri.parse('package:aaa/foo.dart');
|
||||
String templatePath = _p('/aaa/lib/foo.dart');
|
||||
String generatedPath = _p('/generated/aaa/lib/foo.dart');
|
||||
|
||||
Source generatedSource = new _SourceMock();
|
||||
when(generatedSource.fullName).thenReturn(generatedPath);
|
||||
when(generatedSource.uri).thenReturn(uri);
|
||||
|
||||
when(generatedUriResolver.resolveAbsolute(uri, uri))
|
||||
.thenReturn(generatedSource);
|
||||
|
||||
FileState generatedFile = fileSystemState.getFileForUri(uri);
|
||||
expect(generatedFile.path, generatedPath);
|
||||
expect(generatedFile.uri, uri);
|
||||
|
||||
FileState templateFile = fileSystemState.getFileForPath(templatePath);
|
||||
expect(templateFile.path, templatePath);
|
||||
expect(templateFile.uri, uri);
|
||||
|
||||
expect(fileSystemState.getFilesForPath(templatePath), [templateFile]);
|
||||
}
|
||||
|
||||
test_getFileForPath_library() {
|
||||
String a1 = _p('/aaa/lib/a1.dart');
|
||||
String a2 = _p('/aaa/lib/a2.dart');
|
||||
|
@ -704,3 +730,7 @@ set _V3(_) {}
|
|||
return hex.encode(md5.convert(UTF8.encode(content)).bytes);
|
||||
}
|
||||
}
|
||||
|
||||
class _GeneratedUriResolverMock extends TypedMock implements UriResolver {}
|
||||
|
||||
class _SourceMock extends TypedMock implements Source {}
|
||||
|
|
Loading…
Reference in a new issue