|
1 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
4 |
|
5 /** |
|
6 * This script compares the AST of two JavaScript files passed as arguments. |
|
7 * The script exits with a 0 status code if both files parse properly and the |
|
8 * ASTs of both files are identical modulo location differences. The script |
|
9 * exits with status code 1 if any of these conditions don't hold. |
|
10 * |
|
11 * This script is used as part of packaging to verify minified JavaScript files |
|
12 * are identical to their original files. |
|
13 */ |
|
14 |
|
15 "use strict"; |
|
16 |
|
17 function ast(filename) { |
|
18 return JSON.stringify(Reflect.parse(snarf(filename), {loc: 0})); |
|
19 } |
|
20 |
|
21 if (scriptArgs.length !== 2) { |
|
22 throw "usage: js js-compare-ast.js FILE1.js FILE2.js"; |
|
23 } |
|
24 |
|
25 let ast0 = ast(scriptArgs[0]); |
|
26 let ast1 = ast(scriptArgs[1]); |
|
27 |
|
28 quit(ast0 == ast1 ? 0 : 1); |