Update the license headers throughout the repository to reference Google LLC rather than Google Inc, for the required license headers. PR Close #37205
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google LLC 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 {getSystemPath, normalize, virtualFs} from '@angular-devkit/core';
 | |
| import {TempScopedNodeJsSyncHost} from '@angular-devkit/core/node/testing';
 | |
| import {HostTree} from '@angular-devkit/schematics';
 | |
| import {SchematicTestRunner, UnitTestTree} from '@angular-devkit/schematics/testing';
 | |
| import * as shx from 'shelljs';
 | |
| 
 | |
| describe('all migrations', () => {
 | |
|   let runner: SchematicTestRunner;
 | |
|   let host: TempScopedNodeJsSyncHost;
 | |
|   let tree: UnitTestTree;
 | |
|   let tmpDirPath: string;
 | |
|   let previousWorkingDir: string;
 | |
| 
 | |
|   const migrationCollectionPath = require.resolve('../migrations.json');
 | |
|   const allMigrationSchematics = Object.keys(require(migrationCollectionPath).schematics);
 | |
| 
 | |
|   beforeEach(() => {
 | |
|     runner = new SchematicTestRunner('test', migrationCollectionPath);
 | |
|     host = new TempScopedNodeJsSyncHost();
 | |
|     tree = new UnitTestTree(new HostTree(host));
 | |
| 
 | |
|     writeFile('/node_modules/@angular/core/index.d.ts', `export const MODULE: any;`);
 | |
|     writeFile('/angular.json', JSON.stringify({
 | |
|       projects: {t: {architect: {build: {options: {tsConfig: './tsconfig.json'}}}}}
 | |
|     }));
 | |
|     writeFile('/tsconfig.json', `{}`);
 | |
| 
 | |
| 
 | |
|     previousWorkingDir = shx.pwd();
 | |
|     tmpDirPath = getSystemPath(host.root);
 | |
| 
 | |
|     // Switch into the temporary directory path. This allows us to run
 | |
|     // the schematic against our custom unit test tree.
 | |
|     shx.cd(tmpDirPath);
 | |
|   });
 | |
| 
 | |
|   afterEach(() => {
 | |
|     shx.cd(previousWorkingDir);
 | |
|     shx.rm('-r', tmpDirPath);
 | |
|   });
 | |
| 
 | |
|   function writeFile(filePath: string, contents: string) {
 | |
|     host.sync.write(normalize(filePath), virtualFs.stringToFileBuffer(contents));
 | |
|   }
 | |
| 
 | |
|   async function runMigration(migrationName: string) {
 | |
|     await runner.runSchematicAsync(migrationName, undefined, tree).toPromise();
 | |
|   }
 | |
| 
 | |
|   if (!allMigrationSchematics.length) {
 | |
|     throw Error('No migration schematics found.');
 | |
|   }
 | |
| 
 | |
|   allMigrationSchematics.forEach(name => {
 | |
|     describe(name, () => createTests(name));
 | |
|   });
 | |
| 
 | |
|   function createTests(migrationName: string) {
 | |
|     // Regression test for: https://github.com/angular/angular/issues/36346.
 | |
|     it('should not throw if non-existent symbols are imported with rootDirs', async () => {
 | |
|       writeFile(`/tsconfig.json`, JSON.stringify({
 | |
|         compilerOptions: {
 | |
|           rootDirs: [
 | |
|             './generated',
 | |
|           ]
 | |
|         }
 | |
|       }));
 | |
|       writeFile('/index.ts', `
 | |
|       import {Renderer} from '@angular/core';
 | |
| 
 | |
|       const variableDecl: Renderer = null;
 | |
| 
 | |
|       export class Test {
 | |
|         constructor(renderer: Renderer) {}
 | |
|       }
 | |
|     `);
 | |
| 
 | |
|       let error: any = null;
 | |
|       try {
 | |
|         await runMigration(migrationName);
 | |
|       } catch (e) {
 | |
|         error = e;
 | |
|       }
 | |
| 
 | |
|       expect(error).toBe(null);
 | |
|     });
 | |
|   }
 | |
| });
 |