angular-cn/tools/symbol-extractor/symbol_extractor_spec.ts
Miško Hevery 20a900b648 test: Add bundle symbol extractor tool ()
This tool will be used for extracting symbols out of bundles so that
we can assert that only whitelisted symbols are allowed.

PR Close 
2018-02-13 11:28:54 -08:00

39 lines
1.5 KiB
TypeScript

/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import * as fs from 'fs';
import * as path from 'path';
import * as ts from 'typescript';
import {Symbol, SymbolExtractor} from './symbol_extractor';
describe('scenarios', () => {
const symbolExtractorSpecDir = path.dirname(
require.resolve('angular/tools/symbol-extractor/symbol_extractor_spec/empty.json'));
const scenarioFiles = fs.readdirSync(symbolExtractorSpecDir);
for (let i = 0; i < scenarioFiles.length; i = i + 2) {
let jsFile = scenarioFiles[i];
let jsonFile = scenarioFiles[i + 1];
let testName = jsFile.substring(0, jsFile.lastIndexOf('.'));
if (!jsFile.endsWith('.js')) throw new Error('Expected: .js file found: ' + jsFile);
if (!jsonFile.endsWith('.json')) throw new Error('Expected: .json file found: ' + jsonFile);
// Left here so that it is easy to debug single test.
// if (testName !== 'hello_world_min_debug') continue;
it(testName, () => {
const jsFileContent = fs.readFileSync(path.join(symbolExtractorSpecDir, jsFile)).toString();
const jsonFileContent =
fs.readFileSync(path.join(symbolExtractorSpecDir, jsonFile)).toString();
const symbols = SymbolExtractor.parse(testName, jsFileContent);
const diff = SymbolExtractor.diff(symbols, jsonFileContent);
expect(diff).toEqual({});
});
}
});