| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @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 {makeTempDir} from '@angular/tsc-wrapped/test/test_support'; | 
					
						
							|  |  |  | import * as fs from 'fs'; | 
					
						
							|  |  |  | import * as path from 'path'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import {main} from '../src/main'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  | function getNgRootDir() { | 
					
						
							|  |  |  |   const moduleFilename = module.filename.replace(/\\/g, '/'); | 
					
						
							|  |  |  |   const distIndex = moduleFilename.indexOf('/dist/all'); | 
					
						
							|  |  |  |   return moduleFilename.substr(0, distIndex); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  | describe('compiler-cli with disableTransformerPipeline', () => { | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |   let basePath: string; | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |   let outDir: string; | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |   let write: (fileName: string, content: string) => void; | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |   let errorSpy: jasmine.Spy&((s: string) => void); | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |   function writeConfig(tsconfig: string = '{"extends": "./tsconfig-base.json"}') { | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |     const json = JSON.parse(tsconfig); | 
					
						
							|  |  |  |     // Note: 'extends' does not work for "angularCompilerOptions" yet.
 | 
					
						
							|  |  |  |     const ngOptions = json['angularCompilerOptions'] = json['angularCompilerOptions'] || {}; | 
					
						
							|  |  |  |     ngOptions['disableTransformerPipeline'] = true; | 
					
						
							|  |  |  |     write('tsconfig.json', JSON.stringify(json)); | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |   beforeEach(() => { | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |     errorSpy = jasmine.createSpy('consoleError'); | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |     basePath = makeTempDir(); | 
					
						
							|  |  |  |     write = (fileName: string, content: string) => { | 
					
						
							|  |  |  |       fs.writeFileSync(path.join(basePath, fileName), content, {encoding: 'utf-8'}); | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |     write('tsconfig-base.json', `{
 | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |       "compilerOptions": { | 
					
						
							|  |  |  |         "experimentalDecorators": true, | 
					
						
							|  |  |  |         "types": [], | 
					
						
							|  |  |  |         "outDir": "built", | 
					
						
							|  |  |  |         "declaration": true, | 
					
						
							| 
									
										
										
										
											2016-12-15 09:12:40 -08:00
										 |  |  |         "module": "es2015", | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |         "moduleResolution": "node", | 
					
						
							|  |  |  |         "lib": ["es6", "dom"] | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |     }`);
 | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |     outDir = path.resolve(basePath, 'built'); | 
					
						
							|  |  |  |     const ngRootDir = getNgRootDir(); | 
					
						
							| 
									
										
										
										
											2016-12-15 09:12:40 -08:00
										 |  |  |     const nodeModulesPath = path.resolve(basePath, 'node_modules'); | 
					
						
							|  |  |  |     fs.mkdirSync(nodeModulesPath); | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |     fs.symlinkSync( | 
					
						
							|  |  |  |         path.resolve(ngRootDir, 'dist', 'all', '@angular'), | 
					
						
							|  |  |  |         path.resolve(nodeModulesPath, '@angular')); | 
					
						
							|  |  |  |     fs.symlinkSync( | 
					
						
							|  |  |  |         path.resolve(ngRootDir, 'node_modules', 'rxjs'), path.resolve(nodeModulesPath, 'rxjs')); | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should compile without errors', (done) => { | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |     writeConfig(); | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |     write('test.ts', 'export const A = 1;'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |     main(['-p', basePath], errorSpy) | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |         .then((exitCode) => { | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |           expect(errorSpy).not.toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |           expect(exitCode).toEqual(0); | 
					
						
							|  |  |  |           done(); | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         .catch(e => done.fail(e)); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should not print the stack trace if user input file does not exist', (done) => { | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |     writeConfig(`{
 | 
					
						
							|  |  |  |       "extends": "./tsconfig-base.json", | 
					
						
							|  |  |  |       "files": ["test.ts"] | 
					
						
							|  |  |  |     }`);
 | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |     main(['-p', basePath], errorSpy) | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |         .then((exitCode) => { | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |           expect(errorSpy).toHaveBeenCalledWith( | 
					
						
							|  |  |  |               `Error File '` + path.join(basePath, 'test.ts') + `' not found.`); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  |           expect(exitCode).toEqual(1); | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |           done(); | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         .catch(e => done.fail(e)); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should not print the stack trace if user input file is malformed', (done) => { | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |     writeConfig(); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  |     write('test.ts', 'foo;'); | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |     main(['-p', basePath], errorSpy) | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |         .then((exitCode) => { | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |           expect(errorSpy).toHaveBeenCalledWith( | 
					
						
							|  |  |  |               'Error at ' + path.join(basePath, 'test.ts') + `:1:1: Cannot find name 'foo'.`); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  |           expect(exitCode).toEqual(1); | 
					
						
							|  |  |  |           done(); | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         .catch(e => done.fail(e)); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should not print the stack trace if cannot find the imported module', (done) => { | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |     writeConfig(); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:45:40 -08:00
										 |  |  |     write('test.ts', `import {MyClass} from './not-exist-deps';`); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |     main(['-p', basePath], errorSpy) | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  |         .then((exitCode) => { | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |           expect(errorSpy).toHaveBeenCalledWith( | 
					
						
							|  |  |  |               'Error at ' + path.join(basePath, 'test.ts') + | 
					
						
							|  |  |  |               `:1:23: Cannot find module './not-exist-deps'.`); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  |           expect(exitCode).toEqual(1); | 
					
						
							|  |  |  |           done(); | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         .catch(e => done.fail(e)); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should not print the stack trace if cannot import', (done) => { | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |     writeConfig(); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  |     write('empty-deps.ts', 'export const A = 1;'); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:45:40 -08:00
										 |  |  |     write('test.ts', `import {MyClass} from './empty-deps';`); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |     main(['-p', basePath], errorSpy) | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  |         .then((exitCode) => { | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |           expect(errorSpy).toHaveBeenCalledWith( | 
					
						
							|  |  |  |               'Error at ' + path.join(basePath, 'test.ts') + `:1:9: Module '"` + | 
					
						
							|  |  |  |               path.join(basePath, 'empty-deps') + `"' has no exported member 'MyClass'.`); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  |           expect(exitCode).toEqual(1); | 
					
						
							|  |  |  |           done(); | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         .catch(e => done.fail(e)); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should not print the stack trace if type mismatches', (done) => { | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |     writeConfig(); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  |     write('empty-deps.ts', 'export const A = "abc";'); | 
					
						
							|  |  |  |     write('test.ts', `
 | 
					
						
							|  |  |  |       import {A} from './empty-deps'; | 
					
						
							|  |  |  |       A(); | 
					
						
							|  |  |  |     `);
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |     main(['-p', basePath], errorSpy) | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  |         .then((exitCode) => { | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |           expect(errorSpy).toHaveBeenCalledWith( | 
					
						
							|  |  |  |               'Error at ' + path.join(basePath, 'test.ts') + | 
					
						
							|  |  |  |               ':3:7: Cannot invoke an expression whose type lacks a call signature. ' + | 
					
						
							|  |  |  |               'Type \'String\' has no compatible call signatures.'); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:37:28 -08:00
										 |  |  |           expect(exitCode).toEqual(1); | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |           done(); | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         .catch(e => done.fail(e)); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should print the stack trace on compiler internal errors', (done) => { | 
					
						
							|  |  |  |     write('test.ts', 'export const A = 1;'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |     main(['-p', 'not-exist'], errorSpy) | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |         .then((exitCode) => { | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |           expect(errorSpy).toHaveBeenCalled(); | 
					
						
							|  |  |  |           expect(errorSpy.calls.mostRecent().args[0]).toContain('no such file or directory'); | 
					
						
							|  |  |  |           expect(errorSpy.calls.mostRecent().args[0]).toContain('at Error (native)'); | 
					
						
							| 
									
										
										
										
											2016-11-30 13:59:53 -08:00
										 |  |  |           expect(exitCode).toEqual(1); | 
					
						
							|  |  |  |           done(); | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         .catch(e => done.fail(e)); | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   describe('compile ngfactory files', () => { | 
					
						
							| 
									
										
										
										
											2017-06-12 14:10:08 -07:00
										 |  |  |     it('should only compile ngfactory files that are referenced by root files by default', | 
					
						
							|  |  |  |        (done) => { | 
					
						
							|  |  |  |          writeConfig(`{
 | 
					
						
							|  |  |  |           "extends": "./tsconfig-base.json", | 
					
						
							|  |  |  |           "files": ["mymodule.ts"] | 
					
						
							|  |  |  |         }`);
 | 
					
						
							|  |  |  |          write('mymodule.ts', `
 | 
					
						
							|  |  |  |         import {CommonModule} from '@angular/common'; | 
					
						
							|  |  |  |         import {NgModule} from '@angular/core'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         @NgModule({ | 
					
						
							|  |  |  |           imports: [CommonModule] | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         export class MyModule {} | 
					
						
							|  |  |  |       `);
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |          main(['-p', basePath], errorSpy) | 
					
						
							| 
									
										
										
										
											2017-06-12 14:10:08 -07:00
										 |  |  |              .then((exitCode) => { | 
					
						
							|  |  |  |                expect(exitCode).toEqual(0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                expect(fs.existsSync(path.resolve(outDir, 'mymodule.ngfactory.js'))).toBe(false); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                done(); | 
					
						
							|  |  |  |              }) | 
					
						
							|  |  |  |              .catch(e => done.fail(e)); | 
					
						
							|  |  |  |        }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |     it('should report errors for ngfactory files that are not referenced by root files', (done) => { | 
					
						
							|  |  |  |       writeConfig(`{
 | 
					
						
							|  |  |  |           "extends": "./tsconfig-base.json", | 
					
						
							| 
									
										
										
										
											2017-06-12 14:10:08 -07:00
										 |  |  |           "files": ["mymodule.ts"], | 
					
						
							|  |  |  |           "angularCompilerOptions": { | 
					
						
							|  |  |  |             "alwaysCompileGeneratedCode": true | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |         }`);
 | 
					
						
							|  |  |  |       write('mymodule.ts', `
 | 
					
						
							|  |  |  |         import {NgModule, Component} from '@angular/core'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         @Component({template: '{{unknownProp}}'}) | 
					
						
							|  |  |  |         export class MyComp {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         @NgModule({declarations: [MyComp]}) | 
					
						
							|  |  |  |         export class MyModule {} | 
					
						
							|  |  |  |       `);
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |       main(['-p', basePath], errorSpy) | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |           .then((exitCode) => { | 
					
						
							|  |  |  |             expect(errorSpy).toHaveBeenCalledTimes(1); | 
					
						
							|  |  |  |             expect(errorSpy.calls.mostRecent().args[0]) | 
					
						
							|  |  |  |                 .toContain('Error at ' + path.join(basePath, 'mymodule.ngfactory.ts')); | 
					
						
							|  |  |  |             expect(errorSpy.calls.mostRecent().args[0]) | 
					
						
							|  |  |  |                 .toContain(`Property 'unknownProp' does not exist on type 'MyComp'`); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             expect(exitCode).toEqual(1); | 
					
						
							|  |  |  |             done(); | 
					
						
							|  |  |  |           }) | 
					
						
							|  |  |  |           .catch(e => done.fail(e)); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('should compile ngfactory files that are not referenced by root files', (done) => { | 
					
						
							|  |  |  |       writeConfig(`{
 | 
					
						
							|  |  |  |           "extends": "./tsconfig-base.json", | 
					
						
							| 
									
										
										
										
											2017-06-12 14:10:08 -07:00
										 |  |  |           "files": ["mymodule.ts"], | 
					
						
							|  |  |  |           "angularCompilerOptions": { | 
					
						
							|  |  |  |             "alwaysCompileGeneratedCode": true | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |         }`);
 | 
					
						
							|  |  |  |       write('mymodule.ts', `
 | 
					
						
							|  |  |  |         import {CommonModule} from '@angular/common'; | 
					
						
							|  |  |  |         import {NgModule} from '@angular/core'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         @NgModule({ | 
					
						
							|  |  |  |           imports: [CommonModule] | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         export class MyModule {} | 
					
						
							|  |  |  |       `);
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |       main(['-p', basePath], errorSpy) | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |           .then((exitCode) => { | 
					
						
							|  |  |  |             expect(exitCode).toEqual(0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             expect(fs.existsSync(path.resolve(outDir, 'mymodule.ngfactory.js'))).toBe(true); | 
					
						
							|  |  |  |             expect(fs.existsSync(path.resolve( | 
					
						
							|  |  |  |                        outDir, 'node_modules', '@angular', 'core', 'src', | 
					
						
							|  |  |  |                        'application_module.ngfactory.js'))) | 
					
						
							|  |  |  |                 .toBe(true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             done(); | 
					
						
							|  |  |  |           }) | 
					
						
							|  |  |  |           .catch(e => done.fail(e)); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2017-06-09 14:00:03 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     it('should not produce ngsummary files by default', (done) => { | 
					
						
							|  |  |  |       writeConfig(`{
 | 
					
						
							|  |  |  |           "extends": "./tsconfig-base.json", | 
					
						
							|  |  |  |           "files": ["mymodule.ts"] | 
					
						
							|  |  |  |         }`);
 | 
					
						
							|  |  |  |       write('mymodule.ts', `
 | 
					
						
							|  |  |  |         import {NgModule} from '@angular/core'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         @NgModule() | 
					
						
							|  |  |  |         export class MyModule {} | 
					
						
							|  |  |  |       `);
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |       main(['-p', basePath], errorSpy) | 
					
						
							| 
									
										
										
										
											2017-06-09 14:00:03 -07:00
										 |  |  |           .then((exitCode) => { | 
					
						
							|  |  |  |             expect(exitCode).toEqual(0); | 
					
						
							|  |  |  |             expect(fs.existsSync(path.resolve(outDir, 'mymodule.ngsummary.js'))).toBe(false); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             done(); | 
					
						
							|  |  |  |           }) | 
					
						
							|  |  |  |           .catch(e => done.fail(e)); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('should produce ngsummary files if configured', (done) => { | 
					
						
							|  |  |  |       writeConfig(`{
 | 
					
						
							|  |  |  |           "extends": "./tsconfig-base.json", | 
					
						
							|  |  |  |           "files": ["mymodule.ts"], | 
					
						
							|  |  |  |           "angularCompilerOptions": { | 
					
						
							| 
									
										
										
										
											2017-06-12 14:10:08 -07:00
										 |  |  |             "enableSummariesForJit": true, | 
					
						
							|  |  |  |             "alwaysCompileGeneratedCode": true | 
					
						
							| 
									
										
										
										
											2017-06-09 14:00:03 -07:00
										 |  |  |           } | 
					
						
							|  |  |  |         }`);
 | 
					
						
							|  |  |  |       write('mymodule.ts', `
 | 
					
						
							|  |  |  |         import {NgModule} from '@angular/core'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         @NgModule() | 
					
						
							|  |  |  |         export class MyModule {} | 
					
						
							|  |  |  |       `);
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 13:45:45 -07:00
										 |  |  |       main(['-p', basePath], errorSpy) | 
					
						
							| 
									
										
										
										
											2017-06-09 14:00:03 -07:00
										 |  |  |           .then((exitCode) => { | 
					
						
							|  |  |  |             expect(exitCode).toEqual(0); | 
					
						
							|  |  |  |             expect(fs.existsSync(path.resolve(outDir, 'mymodule.ngsummary.js'))).toBe(true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             done(); | 
					
						
							|  |  |  |           }) | 
					
						
							|  |  |  |           .catch(e => done.fail(e)); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2017-05-25 10:00:26 -07:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2016-11-30 16:45:40 -08:00
										 |  |  | }); |