From a7155bc2faf3137a065ffbf17e6ce61f0e0b8f93 Mon Sep 17 00:00:00 2001 From: Alex Rickabaugh Date: Wed, 4 Nov 2020 12:28:37 -0800 Subject: [PATCH] test(language-service): move existing tests to legacy directory (#39594) In preparation for in-memory testing infrastructure, the existing Ivy language service tests are moved to a `legacy` directory. These existing tests rely on a single integration project in `test/project/app`, which presents a number of challenges: * adding extra fields/properties to the integration project for one test can cause others to fail/flake. * it's especially difficult to test any cases that require introducing intentional errors, as those tend to break other tests. * tests load files from disk, which is slower. * tests rely on the real built versions of @angular/core and @angular/common, which makes them both slow to build and require rebuilds on every compiler change. * tests share a single tsconfig.json, making it extremely difficult to test how the language service handles different configuration scenarios (e.g. different type-checking flags). PR Close #39594 --- packages/language-service/ivy/test/{ => legacy}/BUILD.bazel | 6 +++--- .../ivy/test/{ => legacy}/compiler_factory_spec.ts | 0 .../ivy/test/{ => legacy}/definitions_spec.ts | 2 +- .../ivy/test/{ => legacy}/diagnostic_spec.ts | 2 +- .../ivy/test/{ => legacy}/language_service_adapter_spec.ts | 2 +- .../ivy/test/{ => legacy}/language_service_spec.ts | 2 +- .../language-service/ivy/test/{ => legacy}/mock_host.ts | 4 ++-- .../ivy/test/{ => legacy}/mock_host_spec.ts | 0 .../ivy/test/{ => legacy}/quick_info_spec.ts | 2 +- .../ivy/test/{ => legacy}/template_target_spec.ts | 4 ++-- .../language-service/ivy/test/{ => legacy}/test_utils.ts | 0 .../ivy/test/{ => legacy}/type_definitions_spec.ts | 2 +- 12 files changed, 13 insertions(+), 13 deletions(-) rename packages/language-service/ivy/test/{ => legacy}/BUILD.bazel (92%) rename packages/language-service/ivy/test/{ => legacy}/compiler_factory_spec.ts (100%) rename packages/language-service/ivy/test/{ => legacy}/definitions_spec.ts (99%) rename packages/language-service/ivy/test/{ => legacy}/diagnostic_spec.ts (98%) rename packages/language-service/ivy/test/{ => legacy}/language_service_adapter_spec.ts (94%) rename packages/language-service/ivy/test/{ => legacy}/language_service_spec.ts (98%) rename packages/language-service/ivy/test/{ => legacy}/mock_host.ts (99%) rename packages/language-service/ivy/test/{ => legacy}/mock_host_spec.ts (100%) rename packages/language-service/ivy/test/{ => legacy}/quick_info_spec.ts (99%) rename packages/language-service/ivy/test/{ => legacy}/template_target_spec.ts (99%) rename packages/language-service/ivy/test/{ => legacy}/test_utils.ts (100%) rename packages/language-service/ivy/test/{ => legacy}/type_definitions_spec.ts (99%) diff --git a/packages/language-service/ivy/test/BUILD.bazel b/packages/language-service/ivy/test/legacy/BUILD.bazel similarity index 92% rename from packages/language-service/ivy/test/BUILD.bazel rename to packages/language-service/ivy/test/legacy/BUILD.bazel index aaa729f266..776992f3f0 100644 --- a/packages/language-service/ivy/test/BUILD.bazel +++ b/packages/language-service/ivy/test/legacy/BUILD.bazel @@ -1,7 +1,7 @@ load("//tools:defaults.bzl", "jasmine_node_test", "ts_library") ts_library( - name = "test_lib", + name = "legacy_lib", testonly = True, srcs = glob(["*.ts"]), deps = [ @@ -12,7 +12,7 @@ ts_library( ) jasmine_node_test( - name = "test", + name = "legacy", data = [ # Note that we used to depend on the npm_package of common, core, and # forms, but this is no longer the case. We did it for View Engine @@ -28,6 +28,6 @@ jasmine_node_test( "ivy-only", ], deps = [ - ":test_lib", + ":legacy_lib", ], ) diff --git a/packages/language-service/ivy/test/compiler_factory_spec.ts b/packages/language-service/ivy/test/legacy/compiler_factory_spec.ts similarity index 100% rename from packages/language-service/ivy/test/compiler_factory_spec.ts rename to packages/language-service/ivy/test/legacy/compiler_factory_spec.ts diff --git a/packages/language-service/ivy/test/definitions_spec.ts b/packages/language-service/ivy/test/legacy/definitions_spec.ts similarity index 99% rename from packages/language-service/ivy/test/definitions_spec.ts rename to packages/language-service/ivy/test/legacy/definitions_spec.ts index b9d0e0c88b..58bfa993df 100644 --- a/packages/language-service/ivy/test/definitions_spec.ts +++ b/packages/language-service/ivy/test/legacy/definitions_spec.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {LanguageService} from '../language_service'; +import {LanguageService} from '../../language_service'; import {APP_COMPONENT, MockService, setup} from './mock_host'; import {humanizeDefinitionInfo} from './test_utils'; diff --git a/packages/language-service/ivy/test/diagnostic_spec.ts b/packages/language-service/ivy/test/legacy/diagnostic_spec.ts similarity index 98% rename from packages/language-service/ivy/test/diagnostic_spec.ts rename to packages/language-service/ivy/test/legacy/diagnostic_spec.ts index bb894c8c7b..1d8f6c4ef3 100644 --- a/packages/language-service/ivy/test/diagnostic_spec.ts +++ b/packages/language-service/ivy/test/legacy/diagnostic_spec.ts @@ -8,7 +8,7 @@ import * as ts from 'typescript/lib/tsserverlibrary'; -import {LanguageService} from '../language_service'; +import {LanguageService} from '../../language_service'; import {APP_COMPONENT, MockService, setup, TEST_TEMPLATE} from './mock_host'; diff --git a/packages/language-service/ivy/test/language_service_adapter_spec.ts b/packages/language-service/ivy/test/legacy/language_service_adapter_spec.ts similarity index 94% rename from packages/language-service/ivy/test/language_service_adapter_spec.ts rename to packages/language-service/ivy/test/legacy/language_service_adapter_spec.ts index 2aad2c035d..32d9f4e8be 100644 --- a/packages/language-service/ivy/test/language_service_adapter_spec.ts +++ b/packages/language-service/ivy/test/legacy/language_service_adapter_spec.ts @@ -8,7 +8,7 @@ import * as ts from 'typescript/lib/tsserverlibrary'; -import {LanguageServiceAdapter} from '../language_service_adapter'; +import {LanguageServiceAdapter} from '../../language_service_adapter'; import {MockService, setup, TEST_TEMPLATE} from './mock_host'; diff --git a/packages/language-service/ivy/test/language_service_spec.ts b/packages/language-service/ivy/test/legacy/language_service_spec.ts similarity index 98% rename from packages/language-service/ivy/test/language_service_spec.ts rename to packages/language-service/ivy/test/legacy/language_service_spec.ts index aec1aa8567..1831138563 100644 --- a/packages/language-service/ivy/test/language_service_spec.ts +++ b/packages/language-service/ivy/test/legacy/language_service_spec.ts @@ -8,7 +8,7 @@ import * as ts from 'typescript/lib/tsserverlibrary'; -import {LanguageService, parseNgCompilerOptions} from '../language_service'; +import {LanguageService, parseNgCompilerOptions} from '../../language_service'; import {MockService, setup, TEST_TEMPLATE} from './mock_host'; diff --git a/packages/language-service/ivy/test/mock_host.ts b/packages/language-service/ivy/test/legacy/mock_host.ts similarity index 99% rename from packages/language-service/ivy/test/mock_host.ts rename to packages/language-service/ivy/test/legacy/mock_host.ts index 34a052eacf..bf86c266ac 100644 --- a/packages/language-service/ivy/test/mock_host.ts +++ b/packages/language-service/ivy/test/legacy/mock_host.ts @@ -9,7 +9,7 @@ import {join} from 'path'; import * as ts from 'typescript/lib/tsserverlibrary'; -import {isTypeScriptFile} from '../utils'; +import {isTypeScriptFile} from '../../utils'; const logger: ts.server.Logger = { close(): void{}, @@ -147,7 +147,7 @@ export class MockService { return this.overwriteScriptInfo(scriptInfo, text); } - reset() { + reset(): void { if (this.overwritten.size === 0) { return; } diff --git a/packages/language-service/ivy/test/mock_host_spec.ts b/packages/language-service/ivy/test/legacy/mock_host_spec.ts similarity index 100% rename from packages/language-service/ivy/test/mock_host_spec.ts rename to packages/language-service/ivy/test/legacy/mock_host_spec.ts diff --git a/packages/language-service/ivy/test/quick_info_spec.ts b/packages/language-service/ivy/test/legacy/quick_info_spec.ts similarity index 99% rename from packages/language-service/ivy/test/quick_info_spec.ts rename to packages/language-service/ivy/test/legacy/quick_info_spec.ts index 8d41c1463a..8516c8a069 100644 --- a/packages/language-service/ivy/test/quick_info_spec.ts +++ b/packages/language-service/ivy/test/legacy/quick_info_spec.ts @@ -8,7 +8,7 @@ import * as ts from 'typescript/lib/tsserverlibrary'; -import {LanguageService} from '../language_service'; +import {LanguageService} from '../../language_service'; import {APP_COMPONENT, MockService, setup, TEST_TEMPLATE} from './mock_host'; diff --git a/packages/language-service/ivy/test/template_target_spec.ts b/packages/language-service/ivy/test/legacy/template_target_spec.ts similarity index 99% rename from packages/language-service/ivy/test/template_target_spec.ts rename to packages/language-service/ivy/test/legacy/template_target_spec.ts index 8e904c62f9..adbfb5f6d2 100644 --- a/packages/language-service/ivy/test/template_target_spec.ts +++ b/packages/language-service/ivy/test/legacy/template_target_spec.ts @@ -10,8 +10,8 @@ import {ParseError, parseTemplate} from '@angular/compiler'; import * as e from '@angular/compiler/src/expression_parser/ast'; // e for expression AST import * as t from '@angular/compiler/src/render3/r3_ast'; // t for template AST -import {getTargetAtPosition} from '../template_target'; -import {isExpressionNode, isTemplateNode} from '../utils'; +import {getTargetAtPosition} from '../../template_target'; +import {isExpressionNode, isTemplateNode} from '../../utils'; interface ParseResult { nodes: t.Node[]; diff --git a/packages/language-service/ivy/test/test_utils.ts b/packages/language-service/ivy/test/legacy/test_utils.ts similarity index 100% rename from packages/language-service/ivy/test/test_utils.ts rename to packages/language-service/ivy/test/legacy/test_utils.ts diff --git a/packages/language-service/ivy/test/type_definitions_spec.ts b/packages/language-service/ivy/test/legacy/type_definitions_spec.ts similarity index 99% rename from packages/language-service/ivy/test/type_definitions_spec.ts rename to packages/language-service/ivy/test/legacy/type_definitions_spec.ts index 2f2f340ea7..1121460873 100644 --- a/packages/language-service/ivy/test/type_definitions_spec.ts +++ b/packages/language-service/ivy/test/legacy/type_definitions_spec.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {LanguageService} from '../language_service'; +import {LanguageService} from '../../language_service'; import {APP_COMPONENT, MockService, setup} from './mock_host'; import {HumanizedDefinitionInfo, humanizeDefinitionInfo} from './test_utils';