Update the license headers throughout the repository to reference Google LLC rather than Google Inc, for the required license headers. PR Close #37205
		
			
				
	
	
		
			116 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.2 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 {absoluteFrom} from '../../src/ngtsc/file_system';
 | 
						|
import {runInEachFileSystem} from '../../src/ngtsc/file_system/testing';
 | 
						|
import {loadStandardTestFiles} from '../helpers/src/mock_file_loading';
 | 
						|
 | 
						|
import {NgtscTestEnvironment} from './env';
 | 
						|
 | 
						|
const testFiles = loadStandardTestFiles();
 | 
						|
 | 
						|
runInEachFileSystem(() => {
 | 
						|
  describe('monorepos', () => {
 | 
						|
    let env!: NgtscTestEnvironment;
 | 
						|
 | 
						|
    beforeEach(() => {
 | 
						|
      env = NgtscTestEnvironment.setup(testFiles, absoluteFrom('/app'));
 | 
						|
      env.tsconfig();
 | 
						|
 | 
						|
      // env.tsconfig() will write to /app/tsconfig.json, but list it as extending
 | 
						|
      // ./tsconfig-base.json. So that file should exist, and redirect to ../tsconfig-base.json.
 | 
						|
      env.write('/app/tsconfig-base.json', JSON.stringify({'extends': '../tsconfig-base.json'}));
 | 
						|
    });
 | 
						|
 | 
						|
    it('should compile a project with a reference above the current dir', () => {
 | 
						|
      env.write('/app/index.ts', `
 | 
						|
        import {Component, NgModule} from '@angular/core';
 | 
						|
        import {LibModule} from '../lib/module';
 | 
						|
 | 
						|
        @Component({
 | 
						|
          selector: 'app-cmp',
 | 
						|
          template: '<lib-cmp></lib-cmp>',
 | 
						|
        })
 | 
						|
        export class AppCmp {}
 | 
						|
 | 
						|
        @NgModule({
 | 
						|
          declarations: [AppCmp],
 | 
						|
          imports: [LibModule],
 | 
						|
        })
 | 
						|
        export class AppModule {}
 | 
						|
      `);
 | 
						|
      env.write('/lib/module.ts', `
 | 
						|
        import {NgModule} from '@angular/core';
 | 
						|
        import {LibCmp} from './cmp';
 | 
						|
 | 
						|
        @NgModule({
 | 
						|
          declarations: [LibCmp],
 | 
						|
          exports: [LibCmp],
 | 
						|
        })
 | 
						|
        export class LibModule {}
 | 
						|
      `);
 | 
						|
      env.write('/lib/cmp.ts', `
 | 
						|
        import {Component} from '@angular/core';
 | 
						|
 | 
						|
        @Component({
 | 
						|
          selector: 'lib-cmp',
 | 
						|
          template: '...',
 | 
						|
        })
 | 
						|
        export class LibCmp {}
 | 
						|
      `);
 | 
						|
 | 
						|
      env.driveMain();
 | 
						|
 | 
						|
      const jsContents = env.getContents('app/index.js');
 | 
						|
      expect(jsContents).toContain(`import * as i1 from "../lib/cmp";`);
 | 
						|
    });
 | 
						|
 | 
						|
    it('should compile a project with a reference into the same dir', () => {
 | 
						|
      env.write('/app/index.ts', `
 | 
						|
        import {Component, NgModule} from '@angular/core';
 | 
						|
        import {TargetModule} from './target';
 | 
						|
 | 
						|
        @Component({
 | 
						|
          selector: 'app-cmp',
 | 
						|
          template: '<target-cmp></target-cmp>',
 | 
						|
        })
 | 
						|
        export class AppCmp {}
 | 
						|
 | 
						|
        @NgModule({
 | 
						|
          declarations: [AppCmp],
 | 
						|
          imports: [TargetModule],
 | 
						|
        })
 | 
						|
        export class AppModule {}
 | 
						|
      `);
 | 
						|
 | 
						|
      env.write('/app/target.ts', `
 | 
						|
        import {Component, NgModule} from '@angular/core';
 | 
						|
 | 
						|
        @Component({
 | 
						|
          selector: 'target-cmp',
 | 
						|
          template: '...',
 | 
						|
        })
 | 
						|
        export class TargetCmp {}
 | 
						|
 | 
						|
        @NgModule({
 | 
						|
          declarations: [TargetCmp],
 | 
						|
          exports: [TargetCmp],
 | 
						|
        })
 | 
						|
        export class TargetModule {}
 | 
						|
      `);
 | 
						|
 | 
						|
      env.driveMain();
 | 
						|
 | 
						|
      const jsContents = env.getContents('app/index.js');
 | 
						|
 | 
						|
      // Check that the relative import has the leading './'.
 | 
						|
      expect(jsContents).toContain(`import * as i1 from "./target";`);
 | 
						|
    });
 | 
						|
  });
 | 
						|
});
 |