89 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.9 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 {cat, find} from 'shelljs';
 | |
| 
 | |
| import {mainNgcc} from '../../src/ngcc/src/main';
 | |
| 
 | |
| import {TestSupport, isInBazel, setup} from '../test_support';
 | |
| 
 | |
| function setupNodeModules(support: TestSupport): void {
 | |
|   const corePath = path.join(process.env.TEST_SRCDIR, 'angular/packages/core/npm_package');
 | |
|   const commonPath = path.join(process.env.TEST_SRCDIR, 'angular/packages/common/npm_package');
 | |
| 
 | |
|   const nodeModulesPath = path.join(support.basePath, 'node_modules');
 | |
|   const angularCoreDirectory = path.join(nodeModulesPath, '@angular/core');
 | |
|   const angularCommonDirectory = path.join(nodeModulesPath, '@angular/common');
 | |
| 
 | |
|   // fs.symlinkSync(corePath, angularCoreDirectory);
 | |
|   // fs.symlinkSync(commonPath, angularCommonDirectory);
 | |
| }
 | |
| 
 | |
| describe('ngcc behavioral tests', () => {
 | |
|   if (!isInBazel()) {
 | |
|     // These tests should be excluded from the non-Bazel build.
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   let basePath: string;
 | |
|   let outDir: string;
 | |
|   let write: (fileName: string, content: string) => void;
 | |
|   let errorSpy: jasmine.Spy&((s: string) => void);
 | |
| 
 | |
|   function shouldExist(fileName: string) {
 | |
|     if (!fs.existsSync(path.resolve(outDir, fileName))) {
 | |
|       throw new Error(`Expected ${fileName} to be emitted (outDir: ${outDir})`);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   function shouldNotExist(fileName: string) {
 | |
|     if (fs.existsSync(path.resolve(outDir, fileName))) {
 | |
|       throw new Error(`Did not expect ${fileName} to be emitted (outDir: ${outDir})`);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   function getContents(fileName: string): string {
 | |
|     shouldExist(fileName);
 | |
|     const modulePath = path.resolve(outDir, fileName);
 | |
|     return fs.readFileSync(modulePath, 'utf8');
 | |
|   }
 | |
| 
 | |
|   function writeConfig(
 | |
|       tsconfig: string =
 | |
|           '{"extends": "./tsconfig-base.json", "angularCompilerOptions": {"enableIvy": "ngtsc"}}') {
 | |
|     write('tsconfig.json', tsconfig);
 | |
|   }
 | |
| 
 | |
|   beforeEach(() => {
 | |
|     errorSpy = jasmine.createSpy('consoleError').and.callFake(console.error);
 | |
|     const support = setup();
 | |
|     basePath = support.basePath;
 | |
|     outDir = path.join(basePath, 'built');
 | |
|     process.chdir(basePath);
 | |
|     write = (fileName: string, content: string) => { support.write(fileName, content); };
 | |
| 
 | |
|     setupNodeModules(support);
 | |
|   });
 | |
| 
 | |
|   it('should run ngcc without errors', () => {
 | |
|     const nodeModulesPath = path.join(basePath, 'node_modules');
 | |
|     console.error(nodeModulesPath);
 | |
|     const commonPath = path.join(nodeModulesPath, '@angular/common');
 | |
|     const exitCode = mainNgcc([commonPath]);
 | |
| 
 | |
|     console.warn(find('node_modules_ngtsc').filter(p => p.endsWith('.js') || p.endsWith('map')));
 | |
| 
 | |
|     console.warn(cat('node_modules_ngtsc/@angular/common/fesm2015/common.js').stdout);
 | |
|     console.warn(cat('node_modules_ngtsc/@angular/common/fesm2015/common.js.map').stdout);
 | |
| 
 | |
|     expect(exitCode).toBe(0);
 | |
|   });
 | |
| });
 |