Files
packages.dart/deprecated/flutter_cli/test/ast_cache_test.dart
T
2026-01-15 14:38:46 -08:00

113 lines
2.8 KiB
Dart

// Copyright 2017 Google Inc.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd
import 'dart:convert';
import 'package:ngflutter/src/file_reader.dart';
import 'package:ngflutter/src/package_uri_resolver.dart';
import 'package:ngflutter/src/visitors/ast_cache.dart';
import 'package:path/path.dart' as path;
import 'package:test/test.dart';
void main() {
group('AstCache', () {
FileReader.reader = new FileReaderMock();
AstCache asts;
setUp(() {
asts =
new AstCache('package:a/a.dart', new PackageUriResolver('.packages'));
asts.build();
});
test('should only collect correct URIs', () {
var allUris = <String>[];
for (var file in _files) {
allUris.add(file['uri']);
}
expect(asts.allUris, equals(allUris));
});
test('should report correct public URIs', () {
for (var file in _files) {
expect(asts.publicUris[file['uri']], equals(file['public_uri']),
reason: "${file['uri']} does not have correct public URI");
}
});
});
}
var _files = [
{
'uri': 'package:a/a.dart',
'public_uri': 'package:a/a.dart',
'path': path.join('a', 'lib', 'a.dart'),
'content': '''
import 'package:b/b.dart';
import 'a1.dart';
export 'src/a2.dart';
'''
},
{
'uri': 'package:b/b.dart',
'public_uri': 'package:b/b.dart',
'path': path.join('b', 'lib', 'b.dart'),
'content': '''
import 'package:flutter/flutter.dart';
'''
},
{
'uri': 'package:a/a1.dart',
'public_uri': 'package:a/a1.dart',
'path': path.join('a', 'lib', 'a1.dart'),
'content': '''
import 'dart:io';
'''
},
{
'uri': 'package:a/src/a2.dart',
'public_uri': 'package:a/a.dart',
'path': path.join('a', 'lib', 'src', 'a2.dart'),
'content': '''
import 'a3.dart';
export 'a4.dart';
'''
},
{
'uri': 'package:a/src/a3.dart',
'public_uri': 'package:a/src/a3.dart',
'path': path.join('a', 'lib', 'src', 'a3.dart'),
'content': '''
import 'package:flutter/flutter.dart';
'''
},
{
'uri': 'package:a/src/a4.dart',
'public_uri': 'package:a/a.dart',
'path': path.join('a', 'lib', 'src', 'a4.dart'),
'content': '''
import 'package:flutter/flutter.dart';
'''
}
];
var _dotPackages = ['a:a/lib/', 'b:b/lib/'];
class FileReaderMock implements FileReader {
@override
List<String> readAsLines(String filePath, {Encoding encoding: utf8}) {
if (filePath == '.packages') return _dotPackages;
return null;
}
@override
String readAsString(String filePath, {Encoding encoding: utf8}) {
for (var file in _files) {
if (file['path'] == filePath) return file['content'];
}
return null;
}
}