| /** |
| * @license |
| * Copyright 2017 The Bazel Authors. All rights reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * |
| * You may obtain a copy of the License at |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| import * as ts from 'typescript'; |
| |
| import {parseTsconfig, resolveNormalizedPath} from './tsconfig'; |
| |
| describe('tsconfig', () => { |
| it('honors bazelOptions in the users tsconfig', () => { |
| const userTsconfig = { |
| bazelOptions: {disableStrictDeps: true}, |
| }; |
| const generatedTsconfig = { |
| extends: './user.tsconfig', |
| files: ['a.ts'], |
| bazelOptions: {}, |
| }; |
| const files = { |
| [resolveNormalizedPath('path/to/user.tsconfig.json')]: |
| '/*some comment*/\n' + JSON.stringify(userTsconfig), |
| [resolveNormalizedPath('path/to/generated.tsconfig.json')]: |
| JSON.stringify(generatedTsconfig), |
| }; |
| const host: ts.ParseConfigHost = { |
| useCaseSensitiveFileNames: true, |
| fileExists: (path: string) => !!files[path], |
| readFile: (path: string) => files[path], |
| readDirectory( |
| rootDir: string, extensions: ReadonlyArray<string>, |
| excludes: ReadonlyArray<string>, includes: ReadonlyArray<string>, |
| depth: number): string[] { |
| throw new Error(`unexpected readDirectory of ${rootDir}`); |
| }, |
| }; |
| |
| const [parsed, diagnostics, {target}] = |
| parseTsconfig('path/to/generated.tsconfig.json', host); |
| expect(diagnostics).toBeNull(); |
| if (!parsed) { |
| fail('Expected parsed'); |
| } else { |
| const {options, bazelOpts, files, config} = parsed; |
| expect(bazelOpts.disableStrictDeps).toBeTruthy(); |
| } |
| }); |
| }); |