Generator tests: Always provide task and file for a step

This commit is contained in:
Simon Binder 2019-12-07 17:53:53 +01:00
parent 4ee228d5a6
commit 40eaf17a7d
No known key found for this signature in database
GPG Key ID: 7891917E4147B8C0
4 changed files with 27 additions and 4 deletions

View File

@ -33,7 +33,9 @@ abstract class Step {
String get path => file.uri.path;
Step(this.task, this.file);
Step(this.task, this.file)
: assert(task != null),
assert(file != null);
void reportError(MoorError error) =>
errors.report(error..wasDuringParsing = isParsing);

View File

@ -5,6 +5,7 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:build/build.dart';
import 'package:moor_generator/src/analyzer/dart/parser.dart';
import 'package:moor_generator/src/analyzer/runner/steps.dart';
import 'package:moor_generator/src/analyzer/session.dart';
import 'package:test/test.dart';
import '../../utils/test_backend.dart';
@ -24,10 +25,13 @@ void main() {
});
final input = Uri.parse('package:test_lib/main.dart');
final session = MoorSession(backend);
final backendTask = backend.startTask(input);
final task = session.startTask(backendTask);
final library = await backendTask.resolveDart(input);
final parser = MoorDartParser(ParseDartStep(null, null, library));
final parser = MoorDartParser(
ParseDartStep(task, session.registerFile(input), library));
Future<MethodDeclaration> _loadDeclaration(Element element) async {
final declaration = await parser.loadElementDeclaration(element);

View File

@ -4,6 +4,7 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:build/build.dart';
import 'package:moor_generator/src/analyzer/dart/parser.dart';
import 'package:moor_generator/src/analyzer/runner/steps.dart';
import 'package:moor_generator/src/analyzer/session.dart';
import 'package:moor_generator/src/model/specified_column.dart';
import 'package:moor_generator/src/model/specified_table.dart';
import 'package:test/test.dart';
@ -75,8 +76,12 @@ void main() {
setUp(() async {
final uri = Uri.parse('package:test_lib/main.dart');
final task = backend.startTask(uri);
final session = MoorSession(backend);
dartStep = ParseDartStep(null, null, await task.resolveDart(uri));
final moorTask = session.startTask(task);
final file = session.registerFile(uri);
dartStep = ParseDartStep(moorTask, file, await task.resolveDart(uri));
parser = MoorDartParser(dartStep);
});

View File

@ -1,6 +1,10 @@
import 'package:build/build.dart';
import 'package:moor_generator/src/analyzer/runner/steps.dart';
import 'package:moor_generator/src/analyzer/session.dart';
import 'package:test/test.dart';
import '../../utils/test_backend.dart';
void main() {
const content = '''
import 'package:my_package/some_file.dart';
@ -18,7 +22,13 @@ usersWithLongName: SELECT * FROM users WHERE LENGTH(name) > 25
''';
test('parses standalone .moor files', () async {
final parseStep = ParseMoorStep(null, null, content);
final asset = AssetId.parse('foo|bar.moor');
final backend = TestBackend({asset: content});
final session = MoorSession(backend);
final task = session.startTask(backend.startTask(asset.uri));
final file = session.registerFile(asset.uri);
final parseStep = ParseMoorStep(task, file, content);
final result = await parseStep.parseFile();
expect(parseStep.errors.errors, isEmpty);
@ -33,5 +43,7 @@ usersWithLongName: SELECT * FROM users WHERE LENGTH(name) > 25
['int', 'String', 'bool', 'DateTime', 'int']);
expect(table.columns.map((c) => c.getJsonKey()),
['id', 'name', 'field', 'another', 'myJsonKey']);
backend.finish();
});
}