Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(232)

Side by Side Diff: pkg/smoke/test/codegen/end_to_end_test.dart

Issue 204143002: Changes in smoke in preparation of polymer's codegen: (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/smoke/pubspec.yaml ('k') | pkg/smoke/test/codegen/recorder_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /// And end-to-end test that generates code and checks that the output matches 5 /// And end-to-end test that generates code and checks that the output matches
6 /// the code in `static_test.dart`. Techincally we could run the result in an 6 /// the code in `static_test.dart`. Techincally we could run the result in an
7 /// isolate, but instead we decided to split that up in two tests. This test 7 /// isolate, but instead we decided to split that up in two tests. This test
8 /// ensures that we generate the code as it was written in static_test, and 8 /// ensures that we generate the code as it was written in static_test, and
9 /// separately static_test ensures that the smoke.static library behaves as 9 /// separately static_test ensures that the smoke.static library behaves as
10 /// expected. 10 /// expected.
(...skipping 15 matching lines...) Expand all
26 test('static_test is up to date', () { 26 test('static_test is up to date', () {
27 var scriptPath = Platform.script.path; 27 var scriptPath = Platform.script.path;
28 var testDir = path.dirname(path.dirname(scriptPath)); 28 var testDir = path.dirname(path.dirname(scriptPath));
29 var commonPath = path.join(testDir, 'common.dart'); 29 var commonPath = path.join(testDir, 'common.dart');
30 var testCode = new File('$commonPath').readAsStringSync(); 30 var testCode = new File('$commonPath').readAsStringSync();
31 var lib = initAnalyzer({'common.dart' : testCode}) 31 var lib = initAnalyzer({'common.dart' : testCode})
32 .libraryFor('common.dart'); 32 .libraryFor('common.dart');
33 var coreLib = lib.visibleLibraries.firstWhere( 33 var coreLib = lib.visibleLibraries.firstWhere(
34 (l) => l.displayName == 'dart.core'); 34 (l) => l.displayName == 'dart.core');
35 var generator = new SmokeCodeGenerator(); 35 var generator = new SmokeCodeGenerator();
36 var recorder = new Recorder(generator, resolveImportUrl); 36 var recorder = new Recorder(generator, _resolveImportUrl);
37
38 lookupMember(String className, String memberName, bool recursive) {
39 recorder.lookupMember(lib.getType(className), memberName,
40 recursive: recursive, includeAccessors: false);
41 }
42
43 runQuery(String className, QueryOptions options) {
44 recorder.runQuery(lib.getType(className), options,
45 includeAccessors: false);
46 }
37 47
38 // Record all getters and setters we use in the tests. 48 // Record all getters and setters we use in the tests.
39 generator.addGetter("i"); 49 ['i', 'j', 'j2', 'inc0', 'inc1', 'inc2'].forEach(generator.addGetter);
40 generator.addGetter("j"); 50 ['i', 'j2'].forEach(generator.addSetter);
41 generator.addGetter("j2");
42 generator.addGetter("inc0");
43 generator.addGetter("inc1");
44 generator.addGetter("inc2");
45 generator.addSetter("i");
46 generator.addSetter("j2");
47 51
48 // Record symbol convertions. 52 // Record symbol convertions.
49 generator.addSymbol('i'); 53 generator.addSymbol('i');
50 54
51 /// Record all parent-class relations that we explicitly request for 55 /// Record all parent-class relations that we explicitly request.
52 recorder.lookupParent(lib.getType('AnnotB')); 56 ['AnnotB', 'A', 'B', 'D', 'H'].forEach(
53 recorder.lookupParent(lib.getType('A')); 57 (className) => recorder.lookupParent(lib.getType(className)));
54 recorder.lookupParent(lib.getType('B'));
55 recorder.lookupParent(lib.getType('D'));
56 recorder.lookupParent(lib.getType('H'));
57 58
58 // Record members for which we implicitly request their declaration in 59 // Record members for which we implicitly request their declaration in
59 // has-getter and has-setter tests. 60 // has-getter and has-setter tests.
60 recorder.lookupMember(lib.getType('A'), "i", recursive: true); 61 lookupMember('A', 'i', true);
61 recorder.lookupMember(lib.getType('A'), "j2", recursive: true); 62 lookupMember('A', 'j2', true);
62 recorder.lookupMember(lib.getType('A'), "inc2", recursive: true); 63 lookupMember('A', 'inc2', true);
63 recorder.lookupMember(lib.getType('B'), "a", recursive: true); 64 lookupMember('B', 'a', true);
64 recorder.lookupMember(lib.getType('B'), "f", recursive: true); 65 lookupMember('B', 'f', true);
65 recorder.lookupMember(lib.getType('D'), "i", recursive: true); 66 lookupMember('D', 'i', true);
66 recorder.lookupMember(lib.getType('E'), "y", recursive: true); 67 lookupMember('E', 'y', true);
67 68
68 // Record also lookups for non-exisiting members. 69 // Record also lookups for non-exisiting members.
69 recorder.lookupMember(lib.getType('B'), "i", recursive: true); 70 lookupMember('B', 'i', true);
70 recorder.lookupMember(lib.getType('E'), "x", recursive: true); 71 lookupMember('E', 'x', true);
71 recorder.lookupMember(lib.getType('E'), "z", recursive: true); 72 lookupMember('E', 'z', true);
72 73
73 // Record members for which we explicitly request their declaration. 74 // Record members for which we explicitly request their declaration.
74 recorder.lookupMember(lib.getType('B'), "a"); 75 lookupMember('B', 'a', false);
75 recorder.lookupMember(lib.getType('B'), "w"); 76 lookupMember('B', 'w', false);
76 recorder.lookupMember(lib.getType('A'), "inc1"); 77 lookupMember('A', 'inc1', false);
77 recorder.lookupMember(lib.getType('F'), "staticMethod"); 78 lookupMember('F', 'staticMethod', false);
78 recorder.lookupMember(lib.getType('G'), "b"); 79 lookupMember('G', 'b', false);
79 recorder.lookupMember(lib.getType('G'), "d"); 80 lookupMember('G', 'd', false);
80 81
81 // Lookups from no-such-method test. 82 // Lookups from no-such-method test.
82 recorder.lookupMember(lib.getType('A'), "noSuchMethod", recursive: true); 83 lookupMember('A', 'noSuchMethod', true);
83 recorder.lookupMember(lib.getType('E'), "noSuchMethod", recursive: true); 84 lookupMember('E', 'noSuchMethod', true);
84 recorder.lookupMember(lib.getType('E2'), "noSuchMethod", recursive: true); 85 lookupMember('E2', 'noSuchMethod', true);
85 86
86 // Lookups from has-instance-method and has-static-method tests. 87 // Lookups from has-instance-method and has-static-method tests.
87 recorder.lookupMember(lib.getType('A'), "inc0", recursive: true); 88 lookupMember('A', 'inc0', true);
88 recorder.lookupMember(lib.getType('A'), "inc3", recursive: true); 89 lookupMember('A', 'inc3', true);
89 recorder.lookupMember(lib.getType('C'), "inc", recursive: true); 90 lookupMember('C', 'inc', true);
90 recorder.lookupMember(lib.getType('D'), "inc", recursive: true); 91 lookupMember('D', 'inc', true);
91 recorder.lookupMember(lib.getType('D'), "inc0", recursive: true); 92 lookupMember('D', 'inc0', true);
92 recorder.lookupMember(lib.getType('F'), "staticMethod", recursive: true); 93 lookupMember('F', 'staticMethod', true);
93 recorder.lookupMember(lib.getType('F2'), "staticMethod", recursive: true); 94 lookupMember('F2', 'staticMethod', true);
94 95
95 // Record all queries done by the test. 96 // Record all queries done by the test.
96 recorder.runQuery(lib.getType('A'), new QueryOptions()); 97 runQuery('A', new QueryOptions());
97 recorder.runQuery(lib.getType('D'), 98 runQuery('D', new QueryOptions(includeInherited: true));
98 new QueryOptions(includeInherited: true));
99 99
100 var vars = lib.definingCompilationUnit.topLevelVariables; 100 var vars = lib.definingCompilationUnit.topLevelVariables;
101 expect(vars[0].name, 'a1'); 101 expect(vars[0].name, 'a1');
102 expect(vars[1].name, 'a2'); 102 expect(vars[1].name, 'a2');
103 var options = new QueryOptions(includeInherited: true, 103
104 withAnnotations: [vars[0], vars[1], lib.getType('Annot')]); 104 runQuery('H', new QueryOptions(includeInherited: true,
105 recorder.runQuery(lib.getType('H'), options); 105 withAnnotations: [vars[0], vars[1], lib.getType('Annot')]));
106 106
107 var code = _createEntrypoint(generator); 107 var code = _createEntrypoint(generator);
108 var staticTestFile = new File(path.join(testDir, 'static_test.dart')); 108 var staticTestFile = new File(path.join(testDir, 'static_test.dart'));
109 var existingCode = staticTestFile.readAsStringSync(); 109 var existingCode = staticTestFile.readAsStringSync();
110 if (!updateStaticTest) { 110 if (!updateStaticTest) {
111 expect(code, existingCode); 111 expect(code, existingCode);
112 } else if (code == existingCode) { 112 } else if (code == existingCode) {
113 print('static_test.dart is already up to date'); 113 print('static_test.dart is already up to date');
114 } else { 114 } else {
115 staticTestFile.writeAsStringSync(code); 115 staticTestFile.writeAsStringSync(code);
116 print('static_test.dart has been updated.'); 116 print('static_test.dart has been updated.');
117 } 117 }
118 }); 118 });
119 } 119 }
120 120
121 _createEntrypoint(SmokeCodeGenerator generator) { 121 _createEntrypoint(SmokeCodeGenerator generator) {
122 var sb = new StringBuffer() 122 var sb = new StringBuffer()
123 ..writeln('/// ---- AUTOGENERATED: DO NOT EDIT THIS FILE --------------') 123 ..writeln('/// ---- AUTOGENERATED: DO NOT EDIT THIS FILE --------------')
124 ..writeln('/// To update this test file, call:') 124 ..writeln('/// To update this test file, call:')
125 ..writeln('/// > dart codegen/end_to_end_test.dart --update_static_test') 125 ..writeln('/// > dart codegen/end_to_end_test.dart --update_static_test')
126 ..writeln('/// --------------------------------------------------------'); 126 ..writeln('/// --------------------------------------------------------')
127 sb.write('\nlibrary smoke.test.static_test;\n\n'); 127 ..writeln('\nlibrary smoke.test.static_test;\n')
128 sb.writeln("import 'package:unittest/unittest.dart';"); 128 ..writeln("import 'package:unittest/unittest.dart';");
129
129 generator.writeImports(sb); 130 generator.writeImports(sb);
130 sb.writeln("import 'common.dart' as common show main;\n"); 131 sb.writeln("import 'common.dart' as common show main;\n");
131 generator.writeTopLevelDeclarations(sb); 132 generator.writeTopLevelDeclarations(sb);
132 sb.writeln('\n_configure() {'); 133 sb.writeln('\n_configure() {');
133 generator.writeInitCall(sb); 134 generator.writeInitCall(sb);
134 sb.writeln('}\n'); 135
135 sb.writeln('main() {'); 136 sb..writeln('}\n')
136 sb.writeln(' setUp(_configure);'); 137 ..writeln('main() {')
137 sb.writeln(' common.main();'); 138 ..writeln(' setUp(_configure);')
138 sb.writeln('}'); 139 ..writeln(' common.main();')
140 ..writeln('}');
139 return sb.toString(); 141 return sb.toString();
140 } 142 }
141 143
142 144 _resolveImportUrl(LibraryElement lib) {
143 resolveImportUrl(LibraryElement lib) {
144 if (lib.isDartCore) return 'dart:core'; 145 if (lib.isDartCore) return 'dart:core';
145 if (lib.displayName == 'smoke.test.common') return 'common.dart'; 146 if (lib.displayName == 'smoke.test.common') return 'common.dart';
146 return 'unknown.dart'; 147 return 'unknown.dart';
147 } 148 }
OLDNEW
« no previous file with comments | « pkg/smoke/pubspec.yaml ('k') | pkg/smoke/test/codegen/recorder_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698