Skip to content

Commit 46f2d16

Browse files
Refactor and improve test infrastructure, starting with automated version validation tests (#4126)
* renamed to end-to-end-tests and moved backend unit tests to unit-tests folder * create folder for kits code, refactor imports to use @cmt and @test * move variants into the kits folder * refactor into better folder structure, still more to go * Initial refactor making presets validation unit testing possible. This seems to work well so far, I have v1-v3 presets tested, with some more refactors regarding error reporting to come. However, the design/infrastructure refactor seems to be allowing us to unit test validation. * implemented Presets version validation automated testing * Added version testing for presets v1-9. This adds testing for our version validation for all Presets versions currently supported. It creates presets on the fly and ensures that we correctly get errors, or don't, depending on the setup and what fields are present with what versions. * fix workflows * Ensure that we correctly initialize the presetsParser class * refactor imports * refactor imports * more import fixes * imports in projectStatus * missed one * workflow imports * added comment about definite assignment * add comments * fix launch file to make sure breakpoints happen * fix syntax error
1 parent bab2895 commit 46f2d16

File tree

137 files changed

+2030
-795
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

137 files changed

+2030
-795
lines changed

.eslintignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
*.js
2-
test/extension-tests/successful-build/project-folder/build
2+
test/end-to-end-tests/successful-build/project-folder/build
33
tools/prepublish.js

.github/workflows/ci-main-linux.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,17 @@ jobs:
5959
- name: Run successful-build test
6060
uses: GabrielBB/[email protected]
6161
with:
62-
run: yarn extensionTestsSuccessfulBuild
62+
run: yarn endToEndTestsSuccessfulBuild
6363

6464
- name: Run single root test
6565
uses: GabrielBB/[email protected]
6666
with:
67-
run: yarn extensionTestsSingleRoot
67+
run: yarn endToEndTestsSingleRoot
6868

6969
- name: Run multi root test
7070
uses: GabrielBB/[email protected]
7171
with:
72-
run: yarn extensionTestsMultiRoot
72+
run: yarn endToEndTestsMultiRoot
7373

7474
- name: Upload test logs if tests failed
7575
if: failure()

.github/workflows/ci-main-mac.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646

4747

4848
- name: Run successful-build test
49-
run: yarn extensionTestsSuccessfulBuild
49+
run: yarn endToEndTestsSuccessfulBuild
5050

5151
- name: Run backend tests
5252
run: yarn backendTests
@@ -58,10 +58,10 @@ jobs:
5858
run: yarn unitTests
5959

6060
- name: Run single root test
61-
run: yarn extensionTestsSingleRoot
61+
run: yarn endToEndTestsSingleRoot
6262

6363
- name: Run multi root test
64-
run: yarn extensionTestsMultiRoot
64+
run: yarn endToEndTestsMultiRoot
6565

6666
- name: Upload test logs if tests failed
6767
if: failure()

.github/workflows/ci-main.win.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@ jobs:
5555
run: yarn unitTests
5656

5757
- name: Run successful-build test
58-
run: yarn extensionTestsSuccessfulBuild
58+
run: yarn endToEndTestsSuccessfulBuild
5959

6060
- name: Run single root test
61-
run: yarn extensionTestsSingleRoot
61+
run: yarn endToEndTestsSingleRoot
6262

6363
- name: Run multi root test
64-
run: yarn extensionTestsMultiRoot
64+
run: yarn endToEndTestsMultiRoot
6565

6666
- name: Upload test logs if tests failed
6767
if: failure()

.vscode/launch.json

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@
3333
"sourceMaps": true,
3434
"outFiles": [
3535
"${workspaceFolder}/out/*",
36-
"${workspaceFolder}/out/src/*",
36+
"${workspaceFolder}/out/src/**",
3737
"${workspaceFolder}/out/test/*",
38-
"${workspaceFolder}/out/test/unit-tests/*"
38+
"${workspaceFolder}/out/test/unit-tests/**",
3939
],
4040
"env": {
4141
"CMT_TESTING": "1",
@@ -50,17 +50,17 @@
5050
"request": "launch",
5151
"runtimeExecutable": "${execPath}",
5252
"args": [
53-
"${workspaceFolder}/test/extension-tests/successful-build/project-folder",
53+
"${workspaceFolder}/test/end-to-end-tests/successful-build/project-folder",
5454
"--extensionDevelopmentPath=${workspaceFolder}",
55-
"--extensionTestsPath=${workspaceFolder}/out/test/extension-tests/successful-build/index"
55+
"--extensionTestsPath=${workspaceFolder}/out/test/end-to-end-tests/successful-build/index"
5656
],
5757
"sourceMaps": true,
5858
"outFiles": [
5959
"${workspaceFolder}/out/*",
60-
"${workspaceFolder}/out/src/*",
60+
"${workspaceFolder}/out/src/**",
6161
"${workspaceFolder}/out/test/*",
62-
"${workspaceFolder}/out/test/extension-tests/successful-build/*",
63-
"${workspaceFolder}/out/test/extension-tests/successful-build/test/*"
62+
"${workspaceFolder}/out/test/end-to-end-tests/successful-build/*",
63+
"${workspaceFolder}/out/test/end-to-end-tests/successful-build/test/*"
6464
],
6565
"preLaunchTask": "Pretest",
6666
"env": {
@@ -75,17 +75,17 @@
7575
"request": "launch",
7676
"runtimeExecutable": "${execPath}",
7777
"args": [
78-
"${workspaceFolder}/test/extension-tests/single-root-UI/project-folder",
78+
"${workspaceFolder}/test/end-to-end-tests/single-root-UI/project-folder",
7979
"--extensionDevelopmentPath=${workspaceFolder}",
80-
"--extensionTestsPath=${workspaceFolder}/out/test/extension-tests/single-root-UI/index"
80+
"--extensionTestsPath=${workspaceFolder}/out/test/end-to-end-tests/single-root-UI/index"
8181
],
8282
"sourceMaps": true,
8383
"outFiles": [
8484
"${workspaceFolder}/out/*",
85-
"${workspaceFolder}/out/src/*",
85+
"${workspaceFolder}/out/src/**",
8686
"${workspaceFolder}/out/test/*",
87-
"${workspaceFolder}/out/test/extension-tests/single-root-UI/*",
88-
"${workspaceFolder}/out/test/extension-tests/single-root-UI/test/*"
87+
"${workspaceFolder}/out/test/end-to-end-tests/single-root-UI/*",
88+
"${workspaceFolder}/out/test/end-to-end-tests/single-root-UI/test/*"
8989
],
9090
"preLaunchTask": "Pretest",
9191
"env": {
@@ -100,17 +100,17 @@
100100
"request": "launch",
101101
"runtimeExecutable": "${execPath}",
102102
"args": [
103-
"${workspaceFolder}/test/extension-tests/multi-root-UI/project-workspace.code-workspace",
103+
"${workspaceFolder}/test/end-to-end-tests/multi-root-UI/project-workspace.code-workspace",
104104
"--extensionDevelopmentPath=${workspaceFolder}",
105-
"--extensionTestsPath=${workspaceFolder}/out/test/extension-tests/multi-root-UI/index"
105+
"--extensionTestsPath=${workspaceFolder}/out/test/end-to-end-tests/multi-root-UI/index"
106106
],
107107
"sourceMaps": true,
108108
"outFiles": [
109109
"${workspaceFolder}/out/*",
110-
"${workspaceFolder}/out/src/*",
110+
"${workspaceFolder}/out/src/**",
111111
"${workspaceFolder}/out/test/*",
112-
"${workspaceFolder}/out/test/extension-tests/multi-root-UI/*",
113-
"${workspaceFolder}/out/test/extension-tests/multi-root-UI/test/*"
112+
"${workspaceFolder}/out/test/end-to-end-tests/multi-root-UI/*",
113+
"${workspaceFolder}/out/test/end-to-end-tests/multi-root-UI/test/*"
114114
],
115115
"preLaunchTask": "Pretest",
116116
"env": {
@@ -122,7 +122,7 @@
122122
{
123123
"type": "node",
124124
"request": "launch",
125-
"name": "Run Backend tests",
125+
"name": "Run Backend Unit tests",
126126
"program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
127127
"args": [
128128
"-u",
@@ -134,7 +134,7 @@
134134
"ts-node/register",
135135
"-r",
136136
"tsconfig-paths/register",
137-
"${workspaceFolder}/test/backend-unit-tests/**/*.test.ts"
137+
"${workspaceFolder}/test/unit-tests/backend/**/*.test.ts"
138138
],
139139
"internalConsoleOptions": "openOnSessionStart",
140140
"env": {

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3701,10 +3701,10 @@
37013701
"lint": "gulp lint",
37023702
"smokeTests": "yarn run pretest && node ./out/test/smoke/badProject/runTest.js && node ./out/test/smoke/goodProject/runTest.js && node ./out/test/smoke/noCtest/runTest.js",
37033703
"unitTests": "yarn run pretest && node ./out/test/unit-tests/runTest.js",
3704-
"extensionTestsSuccessfulBuild": "yarn run pretest && node ./out/test/extension-tests/successful-build/runTest.js",
3705-
"extensionTestsSingleRoot": "yarn run pretest && node ./out/test/extension-tests/single-root-UI/runTest.js",
3706-
"extensionTestsMultiRoot": "yarn run pretest && node ./out/test/extension-tests/multi-root-UI/runTest.js",
3707-
"backendTests": "node ./node_modules/mocha/bin/_mocha -u tdd --timeout 999999 --colors -r ts-node/register -r tsconfig-paths/register ./test/backend-unit-tests/**/*.test.ts",
3704+
"endToEndTestsSuccessfulBuild": "yarn run pretest && node ./out/test/end-to-end-tests/successful-build/runTest.js",
3705+
"endToEndTestsSingleRoot": "yarn run pretest && node ./out/test/end-to-end-tests/single-root-UI/runTest.js",
3706+
"endToEndTestsMultiRoot": "yarn run pretest && node ./out/test/end-to-end-tests/multi-root-UI/runTest.js",
3707+
"backendTests": "node ./node_modules/mocha/bin/_mocha -u tdd --timeout 999999 --colors -r ts-node/register -r tsconfig-paths/register ./test/unit-tests/backend/**/*.test.ts",
37083708
"build-product-icon-font": "yarn --cwd ./tools/product-icon-font-generator/ install && yarn --cwd ./tools/product-icon-font-generator/ build && node ./tools/product-icon-font-generator/dist/index.js --source-directory ./res/product-icons/ --output-directory ./res/ --woff2"
37093709
},
37103710
"devDependencies": {

src/cache.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
* Module for reading from the CMake cache
33
*/ /** */
44

5-
import * as logging from './logging';
6-
import { fs } from './pr';
7-
import rollbar from './rollbar';
8-
import * as util from './util';
5+
import * as logging from '@cmt/logging';
6+
import { fs } from '@cmt/pr';
7+
import rollbar from '@cmt/rollbar';
8+
import * as util from '@cmt/util';
99
import * as nls from 'vscode-nls';
1010

1111
nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })();

src/cmake/cmakeExecutable.ts renamed to src/cmakeExecutable.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import * as proc from '../proc';
2-
import * as util from '../util';
3-
import {setContextAndStore} from '../extension';
1+
import * as proc from '@cmt/proc';
2+
import * as util from '@cmt/util';
3+
import {setContextAndStore} from '@cmt/extension';
44
import * as logging from '@cmt/logging';
55
import * as nls from 'vscode-nls';
66

src/cmakeProject.ts

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { CMakeCache } from '@cmt/cache';
2-
import { CMakeExecutable, getCMakeExecutableInformation } from '@cmt/cmake/cmakeExecutable';
2+
import { CMakeExecutable, getCMakeExecutableInformation } from '@cmt/cmakeExecutable';
33
import { CompilationDatabase } from '@cmt/compilationDatabase';
4-
import * as debuggerModule from '@cmt/debugger';
4+
import * as debuggerModule from '@cmt/debug/debugger';
55
import collections from '@cmt/diagnostics/collections';
66
import * as shlex from '@cmt/shlex';
77
import { Strand } from '@cmt/strand';
@@ -23,34 +23,34 @@ import {
2323
ExecutableTarget,
2424
NoGeneratorError
2525
} from '@cmt/drivers/drivers';
26-
import { CTestDriver } from './ctest';
27-
import { CPackDriver } from './cpack';
28-
import { WorkflowDriver } from './workflow';
29-
import { CMakeBuildConsumer } from './diagnostics/build';
30-
import { CMakeOutputConsumer } from './diagnostics/cmake';
31-
import { FileDiagnostic, populateCollection } from './diagnostics/util';
32-
import { expandStrings, expandString, ExpansionOptions } from './expand';
33-
import { CMakeGenerator, Kit, SpecialKits } from './kit';
34-
import * as logging from './logging';
35-
import { fs } from './pr';
26+
import { CTestDriver } from '@cmt/ctest';
27+
import { CPackDriver } from '@cmt/cpack';
28+
import { WorkflowDriver } from '@cmt/workflow';
29+
import { CMakeBuildConsumer } from '@cmt/diagnostics/build';
30+
import { CMakeOutputConsumer } from '@cmt/diagnostics/cmake';
31+
import { FileDiagnostic, populateCollection } from '@cmt/diagnostics/util';
32+
import { expandStrings, expandString, ExpansionOptions } from '@cmt/expand';
33+
import { CMakeGenerator, Kit, SpecialKits } from '@cmt/kits/kit';
34+
import * as logging from '@cmt/logging';
35+
import { fs } from '@cmt/pr';
3636
import { buildCmdStr, DebuggerEnvironmentVariable, ExecutionResult, ExecutionOptions } from './proc';
37-
import { FireLate, Property } from './prop';
38-
import rollbar from './rollbar';
39-
import * as telemetry from './telemetry';
40-
import { VariantManager } from './variant';
37+
import { FireLate, Property } from '@cmt/prop';
38+
import rollbar from '@cmt/rollbar';
39+
import * as telemetry from '@cmt/telemetry';
40+
import { VariantManager } from '@cmt/kits/variant';
4141
import * as nls from 'vscode-nls';
42-
import { ConfigurationWebview } from './cacheView';
43-
import { enableFullFeatureSet, extensionManager, updateFullFeatureSet, setContextAndStore } from './extension';
44-
import { CMakeCommunicationMode, ConfigurationReader, OptionConfig, UseCMakePresets, checkConfigureOverridesPresent } from './config';
45-
import * as preset from '@cmt/preset';
42+
import { ConfigurationWebview } from '@cmt/ui/cacheView';
43+
import { enableFullFeatureSet, extensionManager, updateFullFeatureSet, setContextAndStore } from '@cmt/extension';
44+
import { CMakeCommunicationMode, ConfigurationReader, OptionConfig, UseCMakePresets, checkConfigureOverridesPresent } from '@cmt/config';
45+
import * as preset from '@cmt/presets/preset';
4646
import * as util from '@cmt/util';
47-
import { Environment, EnvironmentUtils } from './environmentVariables';
48-
import { KitsController } from './kitsController';
49-
import { PresetsController } from './presetsController';
50-
import paths from './paths';
51-
import { ProjectController } from './projectController';
47+
import { Environment, EnvironmentUtils } from '@cmt/environmentVariables';
48+
import { KitsController } from '@cmt/kits/kitsController';
49+
import { PresetsController } from '@cmt/presets/presetsController';
50+
import paths from '@cmt/paths';
51+
import { ProjectController } from '@cmt/projectController';
5252
import { MessageItem } from 'vscode';
53-
import { DebugTrackerFactory, DebuggerInformation, getDebuggerPipeName } from './debug/debuggerConfigureDriver';
53+
import { DebugTrackerFactory, DebuggerInformation, getDebuggerPipeName } from '@cmt/debug/cmakeDebugger/debuggerConfigureDriver';
5454
import { ConfigurationType } from 'vscode-cmake-tools';
5555

5656
nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })();

src/cmakeTaskProvider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { Environment, EnvironmentUtils } from './environmentVariables';
1010
import * as logging from './logging';
1111
import { extensionManager, getActiveProject } from './extension';
1212
import { CMakeProject, ConfigureTrigger } from './cmakeProject';
13-
import * as preset from '@cmt/preset';
13+
import * as preset from '@cmt/presets/preset';
1414
import { UseCMakePresets } from './config';
1515
import * as telemetry from '@cmt/telemetry';
1616
import * as util from '@cmt/util';

0 commit comments

Comments
 (0)