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

Unified Diff: tests/compiler/dart2js/sourcemaps/load.dart

Issue 2431223006: Add stacktrace_test (Closed)
Patch Set: Updated cf. comments. Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: tests/compiler/dart2js/sourcemaps/load.dart
diff --git a/tests/compiler/dart2js/sourcemaps/load.dart b/tests/compiler/dart2js/sourcemaps/load.dart
new file mode 100644
index 0000000000000000000000000000000000000000..29cb8e096ad660f3b5812bf66c11d17c5c2e1c45
--- /dev/null
+++ b/tests/compiler/dart2js/sourcemaps/load.dart
@@ -0,0 +1,97 @@
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Loads a source map file and outputs a human-readable version of it.
+
+library load;
+
+import 'dart:convert';
+import 'dart:io';
+import 'package:source_maps/source_maps.dart';
+
+void main(List<String> args) {
+ if (args.isEmpty) {
+ print('''
+Usage: load <dir-containing 'out.js.map'>
+ or: load <source-map-file> [<human-readable-source-map-file>]''');
+ exit(1);
+ }
+
+ File humanReadableSourceMapFile;
+ File sourceMapFile;
+ if (args.length == 1 && new Directory(args[0]).existsSync()) {
+ humanReadableSourceMapFile = new File('${args[0]}/out.js.map2');
+ sourceMapFile = new File('${args[0]}/out.js.map');
+ } else {
+ sourceMapFile = new File(args[0]);
+ if (args.length > 1) {
+ humanReadableSourceMapFile = new File(args[1]);
+ }
+ }
+ mainInternal(sourceMapFile, humanReadableSourceMapFile);
+}
+
+void mainInternal(File sourceMapFile, File humanReadableSourceMapFile) {
+ SingleMapping sourceMap =
+ new SingleMapping.fromJson(JSON.decode(sourceMapFile.readAsStringSync()));
+ String humanReadableSourceMap = convertToHumanReadableSourceMap(sourceMap);
+ if (humanReadableSourceMapFile != null) {
+ humanReadableSourceMapFile.writeAsStringSync(humanReadableSourceMap);
+ } else {
+ print(humanReadableSourceMap);
+ }
+}
+
+String convertToHumanReadableSourceMap(SingleMapping sourceMap) {
+ StringBuffer sb = new StringBuffer();
+ sb.write('{\n');
+ sb.write(' "file": "${sourceMap.targetUrl}",\n');
+ sb.write(' "sourceRoot": "${sourceMap.sourceRoot}",\n');
+ sb.write(' "sources": {\n');
+ for (int index = 0; index < sourceMap.urls.length; index++) {
+ if (index > 0) {
+ sb.write(',\n');
+ }
+ sb.write(' "$index": "${sourceMap.urls[index]}"');
+ }
+ sb.write('\n },\n');
+ sb.write(' "lines": [\n');
+ bool needsComma = false;
+ for (int lineIndex = 0; lineIndex < sourceMap.lines.length; lineIndex++) {
+ TargetLineEntry lineEntry = sourceMap.lines[lineIndex];
+ int line = lineEntry.line + 1;
+ for (int entryIndex = 0;
+ entryIndex < lineEntry.entries.length;
+ entryIndex++) {
+ TargetEntry entry = lineEntry.entries[entryIndex];
+ int columnStart = entry.column + 1;
+ int columnEnd;
+ String position;
+ if (entryIndex + 1 < lineEntry.entries.length) {
+ columnEnd = lineEntry.entries[entryIndex + 1].column + 1;
+ position = '$line,$columnStart-$columnEnd';
+ } else {
+ position = '$line,$columnStart-';
+ }
+ if (entry.sourceUrlId != null) {
+ int sourceUrlId = entry.sourceUrlId;
+ int sourceLine = entry.sourceLine + 1;
+ int sourceColumn = entry.sourceColumn + 1;
+ if (needsComma) {
+ sb.write(',\n');
+ }
+ sb.write(' {"target": "$position"');
+ sb.write(', "source": "$sourceUrlId:$sourceLine,$sourceColumn"');
+ if (entry.sourceNameId != null) {
+ sb.write(', "name": "${sourceMap.names[entry.sourceNameId]}"');
+ }
+ sb.write('}');
+ needsComma = true;
+ }
+ }
+ }
+ sb.write('\n ]\n');
+ sb.write('}');
+ return sb.toString();
+}
« no previous file with comments | « tests/compiler/dart2js/sourcemaps/lax_json_test.dart ('k') | tests/compiler/dart2js/sourcemaps/load_save_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698