testeranto 0.219.14 → 0.219.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/testeranto.ts +1 -1
- package/dist/common/allTestsUtils.js +0 -17
- package/dist/common/package.json +0 -3
- package/dist/common/scripts/build-example.js +0 -105
- package/dist/common/src/Init.js +0 -38
- package/dist/common/src/Types.js +0 -63
- package/dist/common/src/esbuildConfigs/consoleDetectorPlugin.js +0 -38
- package/dist/common/src/esbuildConfigs/eslint-formatter-testeranto.js +0 -21
- package/dist/common/src/esbuildConfigs/featuresPlugin.js +0 -39
- package/dist/common/src/esbuildConfigs/index.js +0 -22
- package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +0 -30
- package/dist/common/src/esbuildConfigs/nativeImportDetectorPlugin.js +0 -24
- package/dist/common/src/esbuildConfigs/rebuildPlugin.js +0 -19
- package/dist/common/src/init-docs.js +0 -9
- package/dist/common/src/lib/tiposkripto/BaseGiven.js +0 -96
- package/dist/common/src/lib/tiposkripto/BaseSuite.js +0 -134
- package/dist/common/src/lib/tiposkripto/BaseThen.js +0 -65
- package/dist/common/src/lib/tiposkripto/BaseTiposkripto.js +0 -193
- package/dist/common/src/lib/tiposkripto/BaseWhen.js +0 -46
- package/dist/common/src/lib/tiposkripto/CoreTypes.js +0 -2
- package/dist/common/src/lib/tiposkripto/Node.js +0 -40
- package/dist/common/src/lib/tiposkripto/Tiposkripto.js +0 -49
- package/dist/common/src/lib/tiposkripto/Types.js +0 -2
- package/dist/common/src/lib/tiposkripto/Web.js +0 -70
- package/dist/common/src/lib/tiposkripto/abstractBase.test/MockGiven.js +0 -22
- package/dist/common/src/lib/tiposkripto/abstractBase.test/MockThen.js +0 -16
- package/dist/common/src/lib/tiposkripto/abstractBase.test/MockWhen.js +0 -18
- package/dist/common/src/lib/tiposkripto/abstractBase.test/adapter.js +0 -24
- package/dist/common/src/lib/tiposkripto/abstractBase.test/implementation.js +0 -38
- package/dist/common/src/lib/tiposkripto/abstractBase.test/index.js +0 -17
- package/dist/common/src/lib/tiposkripto/abstractBase.test/specification.js +0 -19
- package/dist/common/src/lib/tiposkripto/abstractBase.test/types.js +0 -2
- package/dist/common/src/lib/tiposkripto/index.js +0 -29
- package/dist/common/src/runtimes.js +0 -4
- package/dist/common/src/server/aider/configParser.js +0 -124
- package/dist/common/src/server/aider/docker.js +0 -30
- package/dist/common/src/server/getRunnables.js +0 -36
- package/dist/common/src/server/htmlTemplate.js +0 -44
- package/dist/common/src/server/nodeVersion.js +0 -5
- package/dist/common/src/server/runtimes/common.js +0 -136
- package/dist/common/src/server/runtimes/golang/docker.js +0 -62
- package/dist/common/src/server/runtimes/java/docker.js +0 -46
- package/dist/common/src/server/runtimes/node/docker.js +0 -42
- package/dist/common/src/server/runtimes/node/esbuild.js +0 -40
- package/dist/common/src/server/runtimes/node/node.js +0 -75
- package/dist/common/src/server/runtimes/python/docker.js +0 -31
- package/dist/common/src/server/runtimes/ruby/docker.js +0 -34
- package/dist/common/src/server/runtimes/rust/docker.js +0 -35
- package/dist/common/src/server/runtimes/web/docker.js +0 -42
- package/dist/common/src/server/runtimes/web/esbuild.js +0 -29
- package/dist/common/src/server/runtimes/web/hoist.js +0 -16
- package/dist/common/src/server/runtimes/web/web.js +0 -157
- package/dist/common/src/server/serverClasees/Server.js +0 -47
- package/dist/common/src/server/serverClasees/Server_Base.js +0 -18
- package/dist/common/src/server/serverClasees/Server_Docker.js +0 -904
- package/dist/common/src/server/serverClasees/Server_FS.js +0 -119
- package/dist/common/src/server/serverClasees/Server_HTTP.js +0 -189
- package/dist/common/src/server/serverClasees/Server_WS.js +0 -262
- package/dist/common/src/server/serverManagers/DockerManager.js +0 -28
- package/dist/common/src/server/serverManagers/HttpManager.js +0 -114
- package/dist/common/src/server/serverManagers/WsManager.js +0 -230
- package/dist/common/src/server/serverManagers/fs.js +0 -32
- package/dist/common/src/server/serverManagers/tcp.js +0 -51
- package/dist/common/src/server/types.js +0 -2
- package/dist/common/src/testeranto.js +0 -75
- package/dist/common/src/vscode/TerminalManager.js +0 -129
- package/dist/common/src/vscode/TestTreeItem.js +0 -77
- package/dist/common/src/vscode/extension.js +0 -185
- package/dist/common/src/vscode/providers/FeaturesTreeDataProvider.js +0 -445
- package/dist/common/src/vscode/providers/FileTreeDataProvider.js +0 -190
- package/dist/common/src/vscode/providers/ProcessesTreeDataProvider.js +0 -270
- package/dist/common/src/vscode/providers/ResultsTreeDataProvider.js +0 -87
- package/dist/common/src/vscode/providers/TestTreeDataProvider.js +0 -309
- package/dist/common/src/vscode/types.js +0 -9
- package/dist/common/testeranto/runtimes/node/node.js +0 -7
- package/dist/common/testeranto/runtimes/web/web.js +0 -6
- package/dist/common/testeranto/testeranto.js +0 -70
- package/dist/common/tsconfig.common.tsbuildinfo +0 -1
- package/dist/module/allTestsUtils.js +0 -13
- package/dist/module/package.json +0 -3
- package/dist/module/scripts/build-example.js +0 -100
- package/dist/module/src/Init.js +0 -33
- package/dist/module/src/Types.js +0 -62
- package/dist/module/src/esbuildConfigs/consoleDetectorPlugin.js +0 -32
- package/dist/module/src/esbuildConfigs/eslint-formatter-testeranto.js +0 -18
- package/dist/module/src/esbuildConfigs/featuresPlugin.js +0 -34
- package/dist/module/src/esbuildConfigs/index.js +0 -20
- package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +0 -25
- package/dist/module/src/esbuildConfigs/nativeImportDetectorPlugin.js +0 -21
- package/dist/module/src/esbuildConfigs/rebuildPlugin.js +0 -14
- package/dist/module/src/init-docs.js +0 -4
- package/dist/module/src/lib/tiposkripto/BaseGiven.js +0 -92
- package/dist/module/src/lib/tiposkripto/BaseSuite.js +0 -130
- package/dist/module/src/lib/tiposkripto/BaseThen.js +0 -61
- package/dist/module/src/lib/tiposkripto/BaseTiposkripto.js +0 -190
- package/dist/module/src/lib/tiposkripto/BaseWhen.js +0 -42
- package/dist/module/src/lib/tiposkripto/CoreTypes.js +0 -1
- package/dist/module/src/lib/tiposkripto/Node.js +0 -33
- package/dist/module/src/lib/tiposkripto/Tiposkripto.js +0 -14
- package/dist/module/src/lib/tiposkripto/Types.js +0 -1
- package/dist/module/src/lib/tiposkripto/Web.js +0 -63
- package/dist/module/src/lib/tiposkripto/abstractBase.test/MockGiven.js +0 -18
- package/dist/module/src/lib/tiposkripto/abstractBase.test/MockThen.js +0 -12
- package/dist/module/src/lib/tiposkripto/abstractBase.test/MockWhen.js +0 -14
- package/dist/module/src/lib/tiposkripto/abstractBase.test/adapter.js +0 -21
- package/dist/module/src/lib/tiposkripto/abstractBase.test/implementation.js +0 -35
- package/dist/module/src/lib/tiposkripto/abstractBase.test/index.js +0 -12
- package/dist/module/src/lib/tiposkripto/abstractBase.test/specification.js +0 -15
- package/dist/module/src/lib/tiposkripto/abstractBase.test/types.js +0 -1
- package/dist/module/src/lib/tiposkripto/index.js +0 -24
- package/dist/module/src/runtimes.js +0 -1
- package/dist/module/src/server/aider/configParser.js +0 -116
- package/dist/module/src/server/aider/docker.js +0 -28
- package/dist/module/src/server/getRunnables.js +0 -29
- package/dist/module/src/server/htmlTemplate.js +0 -40
- package/dist/module/src/server/nodeVersion.js +0 -2
- package/dist/module/src/server/runtimes/common.js +0 -127
- package/dist/module/src/server/runtimes/golang/docker.js +0 -55
- package/dist/module/src/server/runtimes/java/docker.js +0 -40
- package/dist/module/src/server/runtimes/node/docker.js +0 -36
- package/dist/module/src/server/runtimes/node/esbuild.js +0 -35
- package/dist/module/src/server/runtimes/node/node.js +0 -37
- package/dist/module/src/server/runtimes/python/docker.js +0 -25
- package/dist/module/src/server/runtimes/ruby/docker.js +0 -28
- package/dist/module/src/server/runtimes/rust/docker.js +0 -29
- package/dist/module/src/server/runtimes/web/docker.js +0 -36
- package/dist/module/src/server/runtimes/web/esbuild.js +0 -24
- package/dist/module/src/server/runtimes/web/hoist.js +0 -11
- package/dist/module/src/server/runtimes/web/web.js +0 -119
- package/dist/module/src/server/serverClasees/Server.js +0 -40
- package/dist/module/src/server/serverClasees/Server_Base.js +0 -14
- package/dist/module/src/server/serverClasees/Server_Docker.js +0 -897
- package/dist/module/src/server/serverClasees/Server_FS.js +0 -119
- package/dist/module/src/server/serverClasees/Server_HTTP.js +0 -182
- package/dist/module/src/server/serverClasees/Server_WS.js +0 -258
- package/dist/module/src/server/serverManagers/DockerManager.js +0 -28
- package/dist/module/src/server/serverManagers/HttpManager.js +0 -110
- package/dist/module/src/server/serverManagers/WsManager.js +0 -226
- package/dist/module/src/server/serverManagers/fs.js +0 -32
- package/dist/module/src/server/serverManagers/tcp.js +0 -47
- package/dist/module/src/server/types.js +0 -1
- package/dist/module/src/testeranto.js +0 -40
- package/dist/module/src/vscode/TerminalManager.js +0 -92
- package/dist/module/src/vscode/TestTreeItem.js +0 -40
- package/dist/module/src/vscode/extension.js +0 -148
- package/dist/module/src/vscode/providers/FeaturesTreeDataProvider.js +0 -408
- package/dist/module/src/vscode/providers/FileTreeDataProvider.js +0 -153
- package/dist/module/src/vscode/providers/ProcessesTreeDataProvider.js +0 -233
- package/dist/module/src/vscode/providers/ResultsTreeDataProvider.js +0 -50
- package/dist/module/src/vscode/providers/TestTreeDataProvider.js +0 -272
- package/dist/module/src/vscode/types.js +0 -6
- package/dist/module/testeranto/runtimes/node/node.js +0 -5
- package/dist/module/testeranto/runtimes/web/web.js +0 -4
- package/dist/module/testeranto/testeranto.js +0 -68
- package/dist/module/tsconfig.module.tsbuildinfo +0 -1
- package/dist/prebuild/chunk-QLT7PNPK.mjs +0 -162
- package/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs +0 -20
- package/dist/prebuild/init-docs.mjs +0 -56
- package/dist/prebuild/server/runtimes/node/node.mjs +0 -80
- package/dist/prebuild/server/runtimes/web/hoist.mjs +0 -12
- package/dist/prebuild/server/runtimes/web/web.mjs +0 -162
- package/dist/prebuild/testeranto-6SAYRVSE.mjs +0 -72
- package/dist/prebuild/testeranto.mjs +0 -1692
- package/dist/types/src/Init.d.ts +0 -2
- package/dist/types/src/Types.d.ts +0 -87
- package/dist/types/src/esbuildConfigs/consoleDetectorPlugin.d.ts +0 -2
- package/dist/types/src/esbuildConfigs/eslint-formatter-testeranto.d.ts +0 -2
- package/dist/types/src/esbuildConfigs/featuresPlugin.d.ts +0 -5
- package/dist/types/src/esbuildConfigs/index.d.ts +0 -3
- package/dist/types/src/esbuildConfigs/inputFilesPlugin.d.ts +0 -7
- package/dist/types/src/esbuildConfigs/nativeImportDetectorPlugin.d.ts +0 -2
- package/dist/types/src/esbuildConfigs/rebuildPlugin.d.ts +0 -6
- package/dist/types/src/init-docs.d.ts +0 -1
- package/dist/types/src/lib/tiposkripto/BaseGiven.d.ts +0 -42
- package/dist/types/src/lib/tiposkripto/BaseSuite.d.ts +0 -46
- package/dist/types/src/lib/tiposkripto/BaseThen.d.ts +0 -28
- package/dist/types/src/lib/tiposkripto/BaseTiposkripto.d.ts +0 -35
- package/dist/types/src/lib/tiposkripto/BaseWhen.d.ts +0 -27
- package/dist/types/src/lib/tiposkripto/CoreTypes.d.ts +0 -51
- package/dist/types/src/lib/tiposkripto/Node.d.ts +0 -9
- package/dist/types/src/lib/tiposkripto/Tiposkripto.d.ts +0 -5
- package/dist/types/src/lib/tiposkripto/Types.d.ts +0 -9
- package/dist/types/src/lib/tiposkripto/Web.d.ts +0 -9
- package/dist/types/src/lib/tiposkripto/abstractBase.test/MockGiven.d.ts +0 -9
- package/dist/types/src/lib/tiposkripto/abstractBase.test/MockThen.d.ts +0 -6
- package/dist/types/src/lib/tiposkripto/abstractBase.test/MockWhen.d.ts +0 -6
- package/dist/types/src/lib/tiposkripto/abstractBase.test/adapter.d.ts +0 -3
- package/dist/types/src/lib/tiposkripto/abstractBase.test/implementation.d.ts +0 -3
- package/dist/types/src/lib/tiposkripto/abstractBase.test/index.d.ts +0 -28
- package/dist/types/src/lib/tiposkripto/abstractBase.test/specification.d.ts +0 -3
- package/dist/types/src/lib/tiposkripto/abstractBase.test/types.d.ts +0 -39
- package/dist/types/src/lib/tiposkripto/index.d.ts +0 -56
- package/dist/types/src/runtimes.d.ts +0 -2
- package/dist/types/src/server/aider/configParser.d.ts +0 -11
- package/dist/types/src/server/aider/docker.d.ts +0 -2
- package/dist/types/src/server/getRunnables.d.ts +0 -3
- package/dist/types/src/server/htmlTemplate.d.ts +0 -2
- package/dist/types/src/server/nodeVersion.d.ts +0 -2
- package/dist/types/src/server/runtimes/common.d.ts +0 -12
- package/dist/types/src/server/runtimes/golang/docker.d.ts +0 -5
- package/dist/types/src/server/runtimes/java/docker.d.ts +0 -14
- package/dist/types/src/server/runtimes/node/docker.d.ts +0 -14
- package/dist/types/src/server/runtimes/node/esbuild.d.ts +0 -4
- package/dist/types/src/server/runtimes/node/node.d.ts +0 -1
- package/dist/types/src/server/runtimes/python/docker.d.ts +0 -14
- package/dist/types/src/server/runtimes/ruby/docker.d.ts +0 -14
- package/dist/types/src/server/runtimes/rust/docker.d.ts +0 -14
- package/dist/types/src/server/runtimes/web/docker.d.ts +0 -15
- package/dist/types/src/server/runtimes/web/esbuild.d.ts +0 -4
- package/dist/types/src/server/runtimes/web/hoist.d.ts +0 -1
- package/dist/types/src/server/runtimes/web/web.d.ts +0 -1
- package/dist/types/src/server/serverClasees/Server.d.ts +0 -8
- package/dist/types/src/server/serverClasees/Server_Base.d.ts +0 -9
- package/dist/types/src/server/serverClasees/Server_Docker.d.ts +0 -81
- package/dist/types/src/server/serverClasees/Server_FS.d.ts +0 -0
- package/dist/types/src/server/serverClasees/Server_HTTP.d.ts +0 -20
- package/dist/types/src/server/serverClasees/Server_WS.d.ts +0 -23
- package/dist/types/src/server/serverManagers/DockerManager.d.ts +0 -0
- package/dist/types/src/server/serverManagers/HttpManager.d.ts +0 -9
- package/dist/types/src/server/serverManagers/WsManager.d.ts +0 -10
- package/dist/types/src/server/serverManagers/fs.d.ts +0 -0
- package/dist/types/src/server/serverManagers/tcp.d.ts +0 -27
- package/dist/types/src/server/types.d.ts +0 -68
- package/dist/types/src/testeranto.d.ts +0 -1
- package/dist/types/src/vscode/TerminalManager.d.ts +0 -18
- package/dist/types/src/vscode/TestTreeItem.d.ts +0 -13
- package/dist/types/src/vscode/extension.d.ts +0 -3
- package/dist/types/src/vscode/providers/FeaturesTreeDataProvider.d.ts +0 -17
- package/dist/types/src/vscode/providers/FileTreeDataProvider.d.ts +0 -13
- package/dist/types/src/vscode/providers/ProcessesTreeDataProvider.d.ts +0 -23
- package/dist/types/src/vscode/providers/ResultsTreeDataProvider.d.ts +0 -10
- package/dist/types/src/vscode/providers/TestTreeDataProvider.d.ts +0 -16
- package/dist/types/src/vscode/types.d.ts +0 -14
- package/dist/types/testeranto/testeranto.d.ts +0 -3
- package/dist/types/tsconfig.types.tsbuildinfo +0 -1
- package/dist/vscode/extension.mjs +0 -5116
|
@@ -1,445 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// This component shows a tree
|
|
3
|
-
// It first breaksdown matching the file structure.
|
|
4
|
-
// tests.json are further broken done via given-when-then
|
|
5
|
-
// features are also spread into the tree
|
|
6
|
-
// example: "testeranto/reports/allTests/example/node.Calculator.test.ts.json"
|
|
7
|
-
// the tree should spread to "example/Calculator.test.ts"
|
|
8
|
-
// then the json file is spread from there
|
|
9
|
-
// • example(folder)
|
|
10
|
-
// • Calculator.test.ts(file)
|
|
11
|
-
// • node(runtime - specific results)
|
|
12
|
-
// • Overall status
|
|
13
|
-
// • Features
|
|
14
|
-
// • Test Scenarios
|
|
15
|
-
// • Scenario 1: ...
|
|
16
|
-
// • GIVEN: ...
|
|
17
|
-
// • Features
|
|
18
|
-
// • WHEN Steps
|
|
19
|
-
// • THEN Assertions
|
|
20
|
-
// • python(runtime - specific results)
|
|
21
|
-
// • ...
|
|
22
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
23
|
-
if (k2 === undefined) k2 = k;
|
|
24
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
25
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
26
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
27
|
-
}
|
|
28
|
-
Object.defineProperty(o, k2, desc);
|
|
29
|
-
}) : (function(o, m, k, k2) {
|
|
30
|
-
if (k2 === undefined) k2 = k;
|
|
31
|
-
o[k2] = m[k];
|
|
32
|
-
}));
|
|
33
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
34
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
35
|
-
}) : function(o, v) {
|
|
36
|
-
o["default"] = v;
|
|
37
|
-
});
|
|
38
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
39
|
-
var ownKeys = function(o) {
|
|
40
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
41
|
-
var ar = [];
|
|
42
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
43
|
-
return ar;
|
|
44
|
-
};
|
|
45
|
-
return ownKeys(o);
|
|
46
|
-
};
|
|
47
|
-
return function (mod) {
|
|
48
|
-
if (mod && mod.__esModule) return mod;
|
|
49
|
-
var result = {};
|
|
50
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
51
|
-
__setModuleDefault(result, mod);
|
|
52
|
-
return result;
|
|
53
|
-
};
|
|
54
|
-
})();
|
|
55
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
|
-
exports.FeaturesTreeDataProvider = void 0;
|
|
57
|
-
const vscode = __importStar(require("vscode"));
|
|
58
|
-
const TestTreeItem_1 = require("../TestTreeItem");
|
|
59
|
-
const types_1 = require("../types");
|
|
60
|
-
const fs = __importStar(require("fs"));
|
|
61
|
-
const path = __importStar(require("path"));
|
|
62
|
-
class FeaturesTreeDataProvider {
|
|
63
|
-
constructor() {
|
|
64
|
-
this._onDidChangeTreeData = new vscode.EventEmitter();
|
|
65
|
-
this.onDidChangeTreeData = this._onDidChangeTreeData.event;
|
|
66
|
-
// Determine the workspace root
|
|
67
|
-
const workspaceFolders = vscode.workspace.workspaceFolders;
|
|
68
|
-
if (workspaceFolders && workspaceFolders.length > 0) {
|
|
69
|
-
this.resultsDir = path.join(workspaceFolders[0].uri.fsPath, 'testeranto', 'reports', 'allTests', 'example');
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
this.resultsDir = path.join(process.cwd(), 'testeranto', 'reports', 'allTests', 'example');
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
refresh() {
|
|
76
|
-
this._onDidChangeTreeData.fire();
|
|
77
|
-
}
|
|
78
|
-
getTreeItem(element) {
|
|
79
|
-
return element;
|
|
80
|
-
}
|
|
81
|
-
getChildren(element) {
|
|
82
|
-
if (!element) {
|
|
83
|
-
return Promise.resolve(this.getSourceStructure());
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
const data = element.data;
|
|
87
|
-
if (data === null || data === void 0 ? void 0 : data.sourcePath) {
|
|
88
|
-
// Always get children for the source path
|
|
89
|
-
return Promise.resolve(this.getSourceChildren(data.sourcePath));
|
|
90
|
-
}
|
|
91
|
-
else if ((data === null || data === void 0 ? void 0 : data.testFile) && data.testResultIndex === undefined) {
|
|
92
|
-
// This handles the case when we're showing test results
|
|
93
|
-
return Promise.resolve(this.getTestResults(data.testFile));
|
|
94
|
-
}
|
|
95
|
-
else if ((data === null || data === void 0 ? void 0 : data.testResultIndex) !== undefined) {
|
|
96
|
-
return Promise.resolve(this.getTestDetails(data.testFile, data.testResultIndex));
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return Promise.resolve([]);
|
|
100
|
-
}
|
|
101
|
-
getSourceStructure() {
|
|
102
|
-
// Check if results directory exists
|
|
103
|
-
if (!fs.existsSync(this.resultsDir)) {
|
|
104
|
-
return [
|
|
105
|
-
new TestTreeItem_1.TestTreeItem('No test results found', types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
106
|
-
description: 'Run tests to generate results in testeranto/reports/allTests/example/'
|
|
107
|
-
}, undefined, new vscode.ThemeIcon('info'))
|
|
108
|
-
];
|
|
109
|
-
}
|
|
110
|
-
// Get all JSON files in the results directory
|
|
111
|
-
const files = fs.readdirSync(this.resultsDir).filter(file => file.endsWith('.json'));
|
|
112
|
-
if (files.length === 0) {
|
|
113
|
-
return [
|
|
114
|
-
new TestTreeItem_1.TestTreeItem('No test results found', types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
115
|
-
description: 'Run tests to generate results'
|
|
116
|
-
}, undefined, new vscode.ThemeIcon('info'))
|
|
117
|
-
];
|
|
118
|
-
}
|
|
119
|
-
// Build a tree structure based on file paths
|
|
120
|
-
// First level: 'example' directory
|
|
121
|
-
const treeRoot = { name: '', children: new Map(), fullPath: '', isFile: false };
|
|
122
|
-
// Add 'example' node
|
|
123
|
-
const exampleNode = {
|
|
124
|
-
name: 'example',
|
|
125
|
-
children: new Map(),
|
|
126
|
-
fullPath: 'example',
|
|
127
|
-
isFile: false
|
|
128
|
-
};
|
|
129
|
-
treeRoot.children.set('example', exampleNode);
|
|
130
|
-
for (const file of files) {
|
|
131
|
-
// Extract test name from filename (e.g., "node.Calculator.test.ts.json" -> "Calculator.test.ts")
|
|
132
|
-
// Remove runtime prefix and .json extension
|
|
133
|
-
const match = file.match(/^\w+\.(.+)\.json$/);
|
|
134
|
-
if (match) {
|
|
135
|
-
const testFileName = match[1]; // e.g., "Calculator.test.ts"
|
|
136
|
-
// Add test file under 'example'
|
|
137
|
-
if (!exampleNode.children.has(testFileName)) {
|
|
138
|
-
exampleNode.children.set(testFileName, {
|
|
139
|
-
name: testFileName,
|
|
140
|
-
children: new Map(),
|
|
141
|
-
fullPath: `example/${testFileName}`,
|
|
142
|
-
isFile: true,
|
|
143
|
-
fileName: file
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
// Convert tree to TestTreeItems
|
|
149
|
-
return this.buildSourceTreeItems(treeRoot);
|
|
150
|
-
}
|
|
151
|
-
buildSourceTreeItems(node) {
|
|
152
|
-
const items = [];
|
|
153
|
-
// Sort children: directories first, then files, alphabetically
|
|
154
|
-
const sortedChildren = Array.from(node.children.values()).sort((a, b) => {
|
|
155
|
-
if (a.isFile && !b.isFile)
|
|
156
|
-
return 1;
|
|
157
|
-
if (!a.isFile && b.isFile)
|
|
158
|
-
return -1;
|
|
159
|
-
return a.name.localeCompare(b.name);
|
|
160
|
-
});
|
|
161
|
-
for (const child of sortedChildren) {
|
|
162
|
-
// Set collapsible state based on whether it's a file or directory
|
|
163
|
-
// Directories can be expanded, files can be expanded to show test results
|
|
164
|
-
const collapsibleState = vscode.TreeItemCollapsibleState.Collapsed;
|
|
165
|
-
const treeItem = new TestTreeItem_1.TestTreeItem(child.name, types_1.TreeItemType.File, collapsibleState, {
|
|
166
|
-
sourcePath: child.fullPath,
|
|
167
|
-
testFile: child.fileName,
|
|
168
|
-
fileName: child.fileName,
|
|
169
|
-
// Add a flag to indicate if it's a file or directory
|
|
170
|
-
isFile: child.isFile
|
|
171
|
-
}, undefined, child.isFile ? new vscode.ThemeIcon("file-code") : new vscode.ThemeIcon("folder"));
|
|
172
|
-
items.push(treeItem);
|
|
173
|
-
}
|
|
174
|
-
return items;
|
|
175
|
-
}
|
|
176
|
-
getSourceChildren(sourcePath) {
|
|
177
|
-
// Check if results directory exists
|
|
178
|
-
if (!fs.existsSync(this.resultsDir)) {
|
|
179
|
-
return [];
|
|
180
|
-
}
|
|
181
|
-
// Get all JSON files in the results directory
|
|
182
|
-
const files = fs.readdirSync(this.resultsDir).filter(file => file.endsWith('.json'));
|
|
183
|
-
// Split sourcePath into parts
|
|
184
|
-
const parts = sourcePath.split('/').filter(p => p.length > 0);
|
|
185
|
-
// If we're at the root level, show 'example' directory
|
|
186
|
-
if (parts.length === 0) {
|
|
187
|
-
return [
|
|
188
|
-
new TestTreeItem_1.TestTreeItem('example', types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
|
|
189
|
-
sourcePath: 'example',
|
|
190
|
-
isFile: false
|
|
191
|
-
}, undefined, new vscode.ThemeIcon('folder'))
|
|
192
|
-
];
|
|
193
|
-
}
|
|
194
|
-
// If we're at the 'example' level, show test files
|
|
195
|
-
if (parts.length === 1 && parts[0] === 'example') {
|
|
196
|
-
// Group files by test name (without runtime prefix)
|
|
197
|
-
const testFiles = new Map(); // testName -> list of runtime files
|
|
198
|
-
for (const file of files) {
|
|
199
|
-
const match = file.match(/^(\w+)\.(.+)\.json$/);
|
|
200
|
-
if (match) {
|
|
201
|
-
const runtime = match[1];
|
|
202
|
-
const testName = match[2];
|
|
203
|
-
if (!testFiles.has(testName)) {
|
|
204
|
-
testFiles.set(testName, []);
|
|
205
|
-
}
|
|
206
|
-
testFiles.get(testName).push(file);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
// Create test file items
|
|
210
|
-
const items = [];
|
|
211
|
-
for (const [testName, runtimeFiles] of testFiles) {
|
|
212
|
-
// Count passed/failed for this test across all runtimes
|
|
213
|
-
let passedCount = 0;
|
|
214
|
-
let failedCount = 0;
|
|
215
|
-
for (const file of runtimeFiles) {
|
|
216
|
-
try {
|
|
217
|
-
const filePath = path.join(this.resultsDir, file);
|
|
218
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
219
|
-
const result = JSON.parse(content);
|
|
220
|
-
if (result.status === true || result.failed === false) {
|
|
221
|
-
passedCount++;
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
failedCount++;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
catch (_a) {
|
|
228
|
-
// Skip if can't parse
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
const total = runtimeFiles.length;
|
|
232
|
-
const description = `${passedCount} passed, ${failedCount} failed`;
|
|
233
|
-
items.push(new TestTreeItem_1.TestTreeItem(testName, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
|
|
234
|
-
sourcePath: `example/${testName}`,
|
|
235
|
-
testName: testName,
|
|
236
|
-
isFile: true,
|
|
237
|
-
description: description
|
|
238
|
-
}, undefined, failedCount === 0 ?
|
|
239
|
-
new vscode.ThemeIcon('file-code', new vscode.ThemeColor('testing.iconPassed')) :
|
|
240
|
-
new vscode.ThemeIcon('file-code', new vscode.ThemeColor('testing.iconFailed'))));
|
|
241
|
-
}
|
|
242
|
-
return items.sort((a, b) => a.label.localeCompare(b.label));
|
|
243
|
-
}
|
|
244
|
-
// If we're at the test file level (e.g., "example/Calculator.test.ts"), show runtime-specific results
|
|
245
|
-
if (parts.length === 2 && parts[0] === 'example') {
|
|
246
|
-
const testName = parts[1];
|
|
247
|
-
// Find all runtime files for this test
|
|
248
|
-
const runtimeFiles = files.filter(file => {
|
|
249
|
-
const match = file.match(/^(\w+)\.(.+)\.json$/);
|
|
250
|
-
return match && match[2] === testName;
|
|
251
|
-
});
|
|
252
|
-
return runtimeFiles.map(file => {
|
|
253
|
-
const match = file.match(/^(\w+)\.(.+)\.json$/);
|
|
254
|
-
const runtime = match ? match[1] : 'unknown';
|
|
255
|
-
// Read the file to get status
|
|
256
|
-
let icon = new vscode.ThemeIcon('file-code');
|
|
257
|
-
let description = '';
|
|
258
|
-
try {
|
|
259
|
-
const filePath = path.join(this.resultsDir, file);
|
|
260
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
261
|
-
const result = JSON.parse(content);
|
|
262
|
-
if (result.status === true || result.failed === false) {
|
|
263
|
-
icon = new vscode.ThemeIcon('check', new vscode.ThemeColor('testing.iconPassed'));
|
|
264
|
-
description = 'PASSED';
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
icon = new vscode.ThemeIcon('error', new vscode.ThemeColor('testing.iconFailed'));
|
|
268
|
-
description = `FAILED: ${result.fails || 0} failures`;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
catch (_a) {
|
|
272
|
-
description = 'Error reading file';
|
|
273
|
-
icon = new vscode.ThemeIcon('warning');
|
|
274
|
-
}
|
|
275
|
-
return new TestTreeItem_1.TestTreeItem(runtime, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
|
|
276
|
-
sourcePath: `example/${testName}/${runtime}`,
|
|
277
|
-
testFile: file,
|
|
278
|
-
fileName: file,
|
|
279
|
-
isFile: true,
|
|
280
|
-
description: description
|
|
281
|
-
}, undefined, icon);
|
|
282
|
-
}).sort((a, b) => a.label.localeCompare(b.label));
|
|
283
|
-
}
|
|
284
|
-
// If we're at the runtime level under a test file (e.g., "example/Calculator.test.ts/node"), show test results
|
|
285
|
-
if (parts.length === 3 && parts[0] === 'example') {
|
|
286
|
-
const testName = parts[1];
|
|
287
|
-
const runtime = parts[2];
|
|
288
|
-
// Find the actual file
|
|
289
|
-
const fileName = `${runtime}.${testName}.json`;
|
|
290
|
-
if (files.includes(fileName)) {
|
|
291
|
-
// Return the test results for this file
|
|
292
|
-
return this.getTestResults(fileName);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
return [];
|
|
296
|
-
}
|
|
297
|
-
getTestFilesForRuntime(runtime) {
|
|
298
|
-
const files = fs.readdirSync(this.resultsDir).filter(file => file.startsWith(runtime + '.') && file.endsWith('.json'));
|
|
299
|
-
return files.map(file => {
|
|
300
|
-
const filePath = path.join(this.resultsDir, file);
|
|
301
|
-
try {
|
|
302
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
303
|
-
const result = JSON.parse(content);
|
|
304
|
-
let icon;
|
|
305
|
-
let description = '';
|
|
306
|
-
if (result.status === true || result.failed === false) {
|
|
307
|
-
icon = new vscode.ThemeIcon('check', new vscode.ThemeColor('testing.iconPassed'));
|
|
308
|
-
description = 'All tests passed';
|
|
309
|
-
}
|
|
310
|
-
else {
|
|
311
|
-
icon = new vscode.ThemeIcon('error', new vscode.ThemeColor('testing.iconFailed'));
|
|
312
|
-
description = `${result.fails || 0} tests failed`;
|
|
313
|
-
}
|
|
314
|
-
return new TestTreeItem_1.TestTreeItem(file, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
|
|
315
|
-
testFile: file,
|
|
316
|
-
description: description
|
|
317
|
-
}, undefined, icon);
|
|
318
|
-
}
|
|
319
|
-
catch (error) {
|
|
320
|
-
return new TestTreeItem_1.TestTreeItem(file, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
321
|
-
testFile: file,
|
|
322
|
-
description: 'Error reading file'
|
|
323
|
-
}, undefined, new vscode.ThemeIcon('warning'));
|
|
324
|
-
}
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
getTestResults(testFile) {
|
|
328
|
-
var _a;
|
|
329
|
-
const filePath = path.join(this.resultsDir, testFile);
|
|
330
|
-
try {
|
|
331
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
332
|
-
const result = JSON.parse(content);
|
|
333
|
-
const items = [];
|
|
334
|
-
// Add overall status
|
|
335
|
-
const overallPassed = result.status === true || result.failed === false;
|
|
336
|
-
items.push(new TestTreeItem_1.TestTreeItem(`Overall: ${overallPassed ? 'PASSED' : 'FAILED'}`, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
337
|
-
description: `Fails: ${result.fails || 0} | Features: ${((_a = result.features) === null || _a === void 0 ? void 0 : _a.length) || 0}`
|
|
338
|
-
}, undefined, overallPassed ?
|
|
339
|
-
new vscode.ThemeIcon('check', new vscode.ThemeColor('testing.iconPassed')) :
|
|
340
|
-
new vscode.ThemeIcon('error', new vscode.ThemeColor('testing.iconFailed'))));
|
|
341
|
-
// Add features section
|
|
342
|
-
if (result.features && result.features.length > 0) {
|
|
343
|
-
const featuresItem = new TestTreeItem_1.TestTreeItem(`Features (${result.features.length})`, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
|
|
344
|
-
description: 'All test features'
|
|
345
|
-
}, undefined, new vscode.ThemeIcon('symbol-array'));
|
|
346
|
-
items.push(featuresItem);
|
|
347
|
-
}
|
|
348
|
-
// Add Givens section (test scenarios)
|
|
349
|
-
if (result.givens && result.givens.length > 0) {
|
|
350
|
-
const givensItem = new TestTreeItem_1.TestTreeItem(`Test Scenarios (${result.givens.length})`, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
|
|
351
|
-
description: 'Given-When-Then test cases'
|
|
352
|
-
}, undefined, new vscode.ThemeIcon('list-tree'));
|
|
353
|
-
items.push(givensItem);
|
|
354
|
-
// Add each given as a child
|
|
355
|
-
for (let i = 0; i < result.givens.length; i++) {
|
|
356
|
-
const given = result.givens[i];
|
|
357
|
-
const givenPassed = given.status === true || given.failed === false;
|
|
358
|
-
const givenItem = new TestTreeItem_1.TestTreeItem(`Scenario ${i + 1}: ${given.key || 'Unnamed'}`, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
|
|
359
|
-
testFile: testFile,
|
|
360
|
-
testResultIndex: i,
|
|
361
|
-
description: givenPassed ? 'PASSED' : 'FAILED'
|
|
362
|
-
}, undefined, givenPassed ?
|
|
363
|
-
new vscode.ThemeIcon('check', new vscode.ThemeColor('testing.iconPassed')) :
|
|
364
|
-
new vscode.ThemeIcon('error', new vscode.ThemeColor('testing.iconFailed')));
|
|
365
|
-
items.push(givenItem);
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
return items;
|
|
369
|
-
}
|
|
370
|
-
catch (error) {
|
|
371
|
-
return [
|
|
372
|
-
new TestTreeItem_1.TestTreeItem('Error reading test results', types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
373
|
-
description: String(error)
|
|
374
|
-
}, undefined, new vscode.ThemeIcon('error'))
|
|
375
|
-
];
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
getTestDetails(testFile, index) {
|
|
379
|
-
const filePath = path.join(this.resultsDir, testFile);
|
|
380
|
-
try {
|
|
381
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
382
|
-
const result = JSON.parse(content);
|
|
383
|
-
if (!result.givens || index >= result.givens.length) {
|
|
384
|
-
return [
|
|
385
|
-
new TestTreeItem_1.TestTreeItem('Test scenario not found', types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, { description: 'Invalid test scenario index' }, undefined, new vscode.ThemeIcon('warning'))
|
|
386
|
-
];
|
|
387
|
-
}
|
|
388
|
-
const given = result.givens[index];
|
|
389
|
-
const items = [];
|
|
390
|
-
// Add GIVEN section
|
|
391
|
-
const givenPassed = given.status === true || given.failed === false;
|
|
392
|
-
items.push(new TestTreeItem_1.TestTreeItem(`GIVEN: ${given.key || 'Test Scenario'}`, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, { description: givenPassed ? 'PASSED' : 'FAILED' }, undefined, givenPassed ?
|
|
393
|
-
new vscode.ThemeIcon('check') :
|
|
394
|
-
new vscode.ThemeIcon('error')));
|
|
395
|
-
// Add features for this given
|
|
396
|
-
if (given.features && given.features.length > 0) {
|
|
397
|
-
const featuresItem = new TestTreeItem_1.TestTreeItem(`Features (${given.features.length})`, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, { description: 'Features tested in this scenario' }, undefined, new vscode.ThemeIcon('symbol-array'));
|
|
398
|
-
items.push(featuresItem);
|
|
399
|
-
for (const feature of given.features) {
|
|
400
|
-
items.push(new TestTreeItem_1.TestTreeItem(feature, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, { description: 'Feature' }, undefined, new vscode.ThemeIcon('symbol-string')));
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
// Add WHEN steps
|
|
404
|
-
if (given.whens && given.whens.length > 0) {
|
|
405
|
-
const whensItem = new TestTreeItem_1.TestTreeItem(`WHEN Steps (${given.whens.length})`, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, { description: 'Actions performed' }, undefined, new vscode.ThemeIcon('list-ordered'));
|
|
406
|
-
items.push(whensItem);
|
|
407
|
-
for (let i = 0; i < given.whens.length; i++) {
|
|
408
|
-
const when = given.whens[i];
|
|
409
|
-
items.push(new TestTreeItem_1.TestTreeItem(`Step ${i + 1}: ${when.name || 'Action'}`, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
410
|
-
description: when.status || 'No status',
|
|
411
|
-
tooltip: when.error ? `Error: ${when.error}` : undefined
|
|
412
|
-
}, undefined, when.error ?
|
|
413
|
-
new vscode.ThemeIcon('error') :
|
|
414
|
-
new vscode.ThemeIcon('circle')));
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
// Add THEN assertions
|
|
418
|
-
if (given.thens && given.thens.length > 0) {
|
|
419
|
-
const thensItem = new TestTreeItem_1.TestTreeItem(`THEN Assertions (${given.thens.length})`, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, { description: 'Expected outcomes' }, undefined, new vscode.ThemeIcon('checklist'));
|
|
420
|
-
items.push(thensItem);
|
|
421
|
-
for (let i = 0; i < given.thens.length; i++) {
|
|
422
|
-
const then = given.thens[i];
|
|
423
|
-
const assertionPassed = !then.error;
|
|
424
|
-
items.push(new TestTreeItem_1.TestTreeItem(`Assertion ${i + 1}: ${then.name || 'Check'}`, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
425
|
-
description: assertionPassed ? 'PASSED' : 'FAILED',
|
|
426
|
-
tooltip: then.error ? `Error: ${then.error}` : undefined
|
|
427
|
-
}, undefined, assertionPassed ?
|
|
428
|
-
new vscode.ThemeIcon('check') :
|
|
429
|
-
new vscode.ThemeIcon('error')));
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
// Add error if present
|
|
433
|
-
if (given.error) {
|
|
434
|
-
items.push(new TestTreeItem_1.TestTreeItem('Error Details', types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, { description: given.error }, undefined, new vscode.ThemeIcon('warning')));
|
|
435
|
-
}
|
|
436
|
-
return items;
|
|
437
|
-
}
|
|
438
|
-
catch (error) {
|
|
439
|
-
return [
|
|
440
|
-
new TestTreeItem_1.TestTreeItem('Error reading test details', types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, { description: String(error) }, undefined, new vscode.ThemeIcon('error'))
|
|
441
|
-
];
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
exports.FeaturesTreeDataProvider = FeaturesTreeDataProvider;
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.FileTreeDataProvider = void 0;
|
|
37
|
-
const vscode = __importStar(require("vscode"));
|
|
38
|
-
const TestTreeItem_1 = require("../TestTreeItem");
|
|
39
|
-
const types_1 = require("../types");
|
|
40
|
-
class FileTreeDataProvider {
|
|
41
|
-
constructor() {
|
|
42
|
-
this._onDidChangeTreeData = new vscode.EventEmitter();
|
|
43
|
-
this.onDidChangeTreeData = this._onDidChangeTreeData.event;
|
|
44
|
-
}
|
|
45
|
-
refresh() {
|
|
46
|
-
this._onDidChangeTreeData.fire();
|
|
47
|
-
}
|
|
48
|
-
getTreeItem(element) {
|
|
49
|
-
return element;
|
|
50
|
-
}
|
|
51
|
-
getChildren(element) {
|
|
52
|
-
var _a;
|
|
53
|
-
if (!element) {
|
|
54
|
-
return this.getRootItems();
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
const path = (_a = element.data) === null || _a === void 0 ? void 0 : _a.path;
|
|
58
|
-
return this.getDirectoryItems(path);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
async getRootItems() {
|
|
62
|
-
const tree = await this.buildFileTree();
|
|
63
|
-
if (!tree) {
|
|
64
|
-
return [];
|
|
65
|
-
}
|
|
66
|
-
return this.buildTreeItems(tree);
|
|
67
|
-
}
|
|
68
|
-
async getDirectoryItems(path) {
|
|
69
|
-
if (!path) {
|
|
70
|
-
return [];
|
|
71
|
-
}
|
|
72
|
-
const tree = await this.buildFileTree();
|
|
73
|
-
if (!tree) {
|
|
74
|
-
return [];
|
|
75
|
-
}
|
|
76
|
-
// Find the node corresponding to the path
|
|
77
|
-
const parts = path.split('/').filter(p => p.length > 0);
|
|
78
|
-
let currentNode = tree;
|
|
79
|
-
for (const part of parts) {
|
|
80
|
-
if (currentNode.children.has(part)) {
|
|
81
|
-
currentNode = currentNode.children.get(part);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
return [];
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return this.buildTreeItems(currentNode);
|
|
88
|
-
}
|
|
89
|
-
async buildFileTree() {
|
|
90
|
-
const jsonFilePaths = [
|
|
91
|
-
"testeranto/bundles/allTests/golang/example/Calculator.test.go-inputFiles.json",
|
|
92
|
-
"testeranto/bundles/allTests/node/example/Calculator.test.mjs-inputFiles.json",
|
|
93
|
-
"testeranto/bundles/allTests/web/example/Calculator.test.mjs-inputFiles.json",
|
|
94
|
-
"testeranto/bundles/allTests/python/example/Calculator.test.py-inputFiles.json",
|
|
95
|
-
"testeranto/bundles/allTests/ruby/example/Calculator.test.rb-inputFiles.json"
|
|
96
|
-
];
|
|
97
|
-
const allFiles = new Set();
|
|
98
|
-
const workspaceFolders = vscode.workspace.workspaceFolders;
|
|
99
|
-
if (!workspaceFolders || workspaceFolders.length === 0) {
|
|
100
|
-
console.error("No workspace folder open");
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
const workspaceRoot = workspaceFolders[0].uri;
|
|
104
|
-
// Add files from JSON input files
|
|
105
|
-
for (const jsonFilePath of jsonFilePaths) {
|
|
106
|
-
try {
|
|
107
|
-
const jsonFileUri = vscode.Uri.joinPath(workspaceRoot, jsonFilePath);
|
|
108
|
-
const fileContent = await vscode.workspace.fs.readFile(jsonFileUri);
|
|
109
|
-
const files = JSON.parse(Buffer.from(fileContent).toString('utf-8'));
|
|
110
|
-
files.forEach(file => allFiles.add(file));
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
console.error(`Failed to read JSON file ${jsonFilePath}:`, error);
|
|
114
|
-
// Continue with other files
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
// Add report files from testeranto/reports/allTests/example/
|
|
118
|
-
try {
|
|
119
|
-
const reportsDir = vscode.Uri.joinPath(workspaceRoot, "testeranto/reports/allTests/example");
|
|
120
|
-
// Check if directory exists
|
|
121
|
-
try {
|
|
122
|
-
await vscode.workspace.fs.stat(reportsDir);
|
|
123
|
-
// Read directory contents
|
|
124
|
-
const entries = await vscode.workspace.fs.readDirectory(reportsDir);
|
|
125
|
-
for (const [name, type] of entries) {
|
|
126
|
-
if (type === vscode.FileType.File && name.endsWith('.json')) {
|
|
127
|
-
// Add the report file path
|
|
128
|
-
const reportFilePath = `testeranto/reports/allTests/example/${name}`;
|
|
129
|
-
allFiles.add(reportFilePath);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
console.log(`Reports directory doesn't exist or can't be read: ${reportsDir.fsPath}`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
catch (error) {
|
|
138
|
-
console.error(`Failed to scan reports directory:`, error);
|
|
139
|
-
}
|
|
140
|
-
// Build tree structure
|
|
141
|
-
const treeRoot = { name: '', children: new Map(), fullPath: '', isFile: false };
|
|
142
|
-
for (const rawFileName of Array.from(allFiles)) {
|
|
143
|
-
// Remove leading '/' if present
|
|
144
|
-
const fileName = rawFileName.startsWith('/') ? rawFileName.substring(1) : rawFileName;
|
|
145
|
-
const parts = fileName.split('/');
|
|
146
|
-
let currentNode = treeRoot;
|
|
147
|
-
for (let i = 0; i < parts.length; i++) {
|
|
148
|
-
const part = parts[i];
|
|
149
|
-
const isLast = i === parts.length - 1;
|
|
150
|
-
if (!currentNode.children.has(part)) {
|
|
151
|
-
currentNode.children.set(part, {
|
|
152
|
-
name: part,
|
|
153
|
-
children: new Map(),
|
|
154
|
-
fullPath: parts.slice(0, i + 1).join('/'),
|
|
155
|
-
isFile: isLast
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
currentNode = currentNode.children.get(part);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return treeRoot;
|
|
162
|
-
}
|
|
163
|
-
buildTreeItems(node) {
|
|
164
|
-
const items = [];
|
|
165
|
-
// Sort children: directories first, then files, alphabetically
|
|
166
|
-
const sortedChildren = Array.from(node.children.values()).sort((a, b) => {
|
|
167
|
-
if (a.isFile && !b.isFile)
|
|
168
|
-
return 1;
|
|
169
|
-
if (!a.isFile && b.isFile)
|
|
170
|
-
return -1;
|
|
171
|
-
return a.name.localeCompare(b.name);
|
|
172
|
-
});
|
|
173
|
-
for (const child of sortedChildren) {
|
|
174
|
-
const collapsibleState = child.isFile
|
|
175
|
-
? vscode.TreeItemCollapsibleState.None
|
|
176
|
-
: vscode.TreeItemCollapsibleState.Collapsed;
|
|
177
|
-
const treeItem = new TestTreeItem_1.TestTreeItem(child.name, types_1.TreeItemType.File, collapsibleState, {
|
|
178
|
-
path: child.fullPath,
|
|
179
|
-
fileName: child.fullPath
|
|
180
|
-
}, child.isFile ? {
|
|
181
|
-
command: "vscode.open",
|
|
182
|
-
title: "Open File",
|
|
183
|
-
arguments: [vscode.Uri.file(child.fullPath)]
|
|
184
|
-
} : undefined, child.isFile ? new vscode.ThemeIcon("file") : new vscode.ThemeIcon("folder"));
|
|
185
|
-
items.push(treeItem);
|
|
186
|
-
}
|
|
187
|
-
return items;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
exports.FileTreeDataProvider = FileTreeDataProvider;
|