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

Side by Side Diff: tests/compiler/dart2js/serialization_library_test.dart

Issue 1934883002: Refactor unittests (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 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
OLDNEW
(Empty)
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
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.
4
5 library dart2js.serialization_library_test;
6
7 import 'dart:io';
8 import 'memory_compiler.dart';
9 import 'package:async_helper/async_helper.dart';
10 import 'package:compiler/src/commandline_options.dart';
11 import 'package:compiler/src/common/names.dart';
12 import 'package:compiler/src/constants/constructors.dart';
13 import 'package:compiler/src/constants/expressions.dart';
14 import 'package:compiler/src/dart_types.dart';
15 import 'package:compiler/src/compiler.dart';
16 import 'package:compiler/src/diagnostics/invariant.dart';
17 import 'package:compiler/src/elements/elements.dart';
18 import 'package:compiler/src/elements/visitor.dart';
19 import 'package:compiler/src/ordered_typeset.dart';
20 import 'package:compiler/src/serialization/element_serialization.dart';
21 import 'package:compiler/src/serialization/json_serializer.dart';
22 import 'package:compiler/src/serialization/serialization.dart';
23
24 import 'serialization_test.dart';
25
26 main(List<String> arguments) {
27 // Ensure that we can print out constant expressions.
28 DEBUG_MODE = true;
29
30 Uri entryPoint;
31 String outPath;
32 int shardCount = 3;
33 bool prettyPrint = false;
34 for (String arg in arguments) {
35 if (arg.startsWith('--')) {
36 if (arg.startsWith('--out=')) {
37 outPath = arg.substring('--out='.length);
38 } else if (arg == '--pretty-print') {
39 prettyPrint = true;
40 } else if (arg.startsWith('--shards=')) {
41 shardCount = int.parse(arg.substring('--shards='.length));
42 } else {
43 print("Unknown option $arg");
44 }
45 } else {
46 if (entryPoint != null) {
47 print("Multiple entrypoints are not supported.");
48 }
49 entryPoint = Uri.parse(arg);
50 }
51 }
52 if (entryPoint == null) {
53 entryPoint = Uris.dart_core;
54 }
55 asyncTest(() async {
56 CompilationResult result = await runCompiler(
57 entryPoint: entryPoint, options: [Flags.analyzeAll]);
58 Compiler compiler = result.compiler;
59 testSerialization(compiler.libraryLoader.libraries,
60 outPath: outPath,
61 prettyPrint: prettyPrint,
62 shardCount: shardCount);
63 });
64 }
65
66 void testSerialization(Iterable<LibraryElement> libraries1,
67 {String outPath,
68 bool prettyPrint,
69 int shardCount: 3}) {
70 if (shardCount < 1 || shardCount > libraries1.length) {
71 shardCount = libraries1.length;
72 }
73 List<List<LibraryElement>> librarySplits = <List<LibraryElement>>[];
74 int offset = 0;
75 int shardSize = (libraries1.length / shardCount).ceil();
76 for (int shard = 0; shard < shardCount; shard++) {
77 List<LibraryElement> libraries = <LibraryElement>[];
78 for (int index = 0; index < shardSize; index++) {
79 if (offset + index < libraries1.length) {
80 libraries.add(libraries1.elementAt(offset + index));
81 }
82 }
83 librarySplits.add(libraries);
84 offset += shardSize;
85 }
86 print(librarySplits.join('\n'));
87 List<String> texts = <String>[];
88 for (int shard = 0; shard < shardCount; shard++) {
89 List<LibraryElement> libraries = librarySplits[shard];
90 Serializer serializer = new Serializer(
91 shouldInclude: (e) => libraries.contains(e.library));
92 for (LibraryElement library in libraries) {
93 serializer.serialize(library);
94 }
95 String text = serializer.toText(const JsonSerializationEncoder());
96 String outText = text;
97 if (prettyPrint) {
98 outText = serializer.prettyPrint();
99 }
100 if (outPath != null) {
101 String name = outPath;
102 String ext = '';
103 int dotPos = outPath.lastIndexOf('.');
104 if (dotPos != -1) {
105 name = outPath.substring(0, dotPos);
106 ext = outPath.substring(dotPos);
107 }
108 new File('$name$shard$ext').writeAsStringSync(outText);
109 } else if (prettyPrint) {
110 print(outText);
111 }
112 texts.add(text);
113 }
114 DeserializationContext deserializationContext =
115 new DeserializationContext();
116 for (int shard = 0; shard < shardCount; shard++) {
117 new Deserializer.fromText(
118 deserializationContext, texts[shard], const JsonSerializationDecoder());
119 }
120 List<LibraryElement> libraries2 = <LibraryElement>[];
121 for (LibraryElement library1 in libraries1) {
122 LibraryElement library2 =
123 deserializationContext.lookupLibrary(library1.canonicalUri);
124 if (library2 == null) {
125 throw new ArgumentError('No library ${library1.canonicalUri} found.');
126 }
127 checkLibraryContent('library1', 'library2', 'library', library1, library2);
128 libraries2.add(library2);
129 }
130 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/serialization_impact_test.dart ('k') | tests/compiler/dart2js/serialization_model_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698