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,270 +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.ProcessesTreeDataProvider = void 0;
|
|
37
|
-
const vscode = __importStar(require("vscode"));
|
|
38
|
-
const TestTreeItem_1 = require("../TestTreeItem");
|
|
39
|
-
const types_1 = require("../types");
|
|
40
|
-
class ProcessesTreeDataProvider {
|
|
41
|
-
constructor() {
|
|
42
|
-
this._onDidChangeTreeData = new vscode.EventEmitter();
|
|
43
|
-
this.onDidChangeTreeData = this._onDidChangeTreeData.event;
|
|
44
|
-
this.processes = [];
|
|
45
|
-
this.refreshInterval = null;
|
|
46
|
-
this.ws = null;
|
|
47
|
-
this.isConnected = false;
|
|
48
|
-
this.connectionAttempts = 0;
|
|
49
|
-
this.maxConnectionAttempts = 5;
|
|
50
|
-
// Start WebSocket connection
|
|
51
|
-
this.connectWebSocket();
|
|
52
|
-
// Start periodic refresh
|
|
53
|
-
this.startRefreshing();
|
|
54
|
-
}
|
|
55
|
-
refresh() {
|
|
56
|
-
// Trigger a fresh fetch from the WebSocket server
|
|
57
|
-
this.fetchProcesses();
|
|
58
|
-
// Also fire the event to update the view
|
|
59
|
-
this._onDidChangeTreeData.fire();
|
|
60
|
-
}
|
|
61
|
-
getTreeItem(element) {
|
|
62
|
-
return element;
|
|
63
|
-
}
|
|
64
|
-
getChildren(element) {
|
|
65
|
-
if (!element) {
|
|
66
|
-
return Promise.resolve(this.getProcessItems());
|
|
67
|
-
}
|
|
68
|
-
return Promise.resolve([]);
|
|
69
|
-
}
|
|
70
|
-
getProcessItems() {
|
|
71
|
-
// If not connected, show connection status with retry option
|
|
72
|
-
if (!this.isConnected) {
|
|
73
|
-
const items = [];
|
|
74
|
-
// Check if we've exceeded max connection attempts
|
|
75
|
-
if (this.connectionAttempts >= this.maxConnectionAttempts) {
|
|
76
|
-
items.push(new TestTreeItem_1.TestTreeItem("❌ Failed to connect to Docker process server", types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
77
|
-
description: "Make sure the Testeranto server is running on port 3456",
|
|
78
|
-
connectionFailed: true
|
|
79
|
-
}, {
|
|
80
|
-
command: "testeranto.retryConnection",
|
|
81
|
-
title: "Retry Connection",
|
|
82
|
-
arguments: [this]
|
|
83
|
-
}, new vscode.ThemeIcon("error", new vscode.ThemeColor("testing.iconFailed"))));
|
|
84
|
-
// Add a retry button
|
|
85
|
-
items.push(new TestTreeItem_1.TestTreeItem("Click to retry connection", types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
86
|
-
description: "Or run the Testeranto server first",
|
|
87
|
-
retry: true
|
|
88
|
-
}, {
|
|
89
|
-
command: "testeranto.retryConnection",
|
|
90
|
-
title: "Retry Connection",
|
|
91
|
-
arguments: [this]
|
|
92
|
-
}, new vscode.ThemeIcon("refresh", new vscode.ThemeColor("testing.iconQueued"))));
|
|
93
|
-
// Show how to start the server
|
|
94
|
-
items.push(new TestTreeItem_1.TestTreeItem("To start the server, run:", types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
95
|
-
description: "npm start in the project root",
|
|
96
|
-
info: true
|
|
97
|
-
}, undefined, new vscode.ThemeIcon("info", new vscode.ThemeColor("testing.iconUnset"))));
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
items.push(new TestTreeItem_1.TestTreeItem("Connecting to Docker process server...", types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
101
|
-
description: `Attempt ${this.connectionAttempts + 1}/${this.maxConnectionAttempts} to WebSocket server on port 3456`,
|
|
102
|
-
connecting: true
|
|
103
|
-
}, undefined, new vscode.ThemeIcon("sync", new vscode.ThemeColor("testing.iconQueued"))));
|
|
104
|
-
// Add a manual refresh option
|
|
105
|
-
items.push(new TestTreeItem_1.TestTreeItem("Click to manually refresh", types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
106
|
-
description: "Try to reconnect immediately",
|
|
107
|
-
manualRefresh: true
|
|
108
|
-
}, {
|
|
109
|
-
command: "testeranto.refresh",
|
|
110
|
-
title: "Refresh",
|
|
111
|
-
arguments: []
|
|
112
|
-
}, new vscode.ThemeIcon("refresh", new vscode.ThemeColor("testing.iconQueued"))));
|
|
113
|
-
}
|
|
114
|
-
return items;
|
|
115
|
-
}
|
|
116
|
-
// Connected but no processes
|
|
117
|
-
if (this.processes.length === 0) {
|
|
118
|
-
return [
|
|
119
|
-
new TestTreeItem_1.TestTreeItem("No Docker processes found", types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
120
|
-
description: "Waiting for Docker containers to start",
|
|
121
|
-
noProcesses: true
|
|
122
|
-
}, undefined, new vscode.ThemeIcon("info", new vscode.ThemeColor("testing.iconUnset"))),
|
|
123
|
-
new TestTreeItem_1.TestTreeItem("Click to refresh", types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
124
|
-
description: "Check for new Docker containers",
|
|
125
|
-
refresh: true
|
|
126
|
-
}, {
|
|
127
|
-
command: "testeranto.refresh",
|
|
128
|
-
title: "Refresh",
|
|
129
|
-
arguments: []
|
|
130
|
-
}, new vscode.ThemeIcon("refresh", new vscode.ThemeColor("testing.iconQueued")))
|
|
131
|
-
];
|
|
132
|
-
}
|
|
133
|
-
// Show connected status and processes
|
|
134
|
-
const items = [
|
|
135
|
-
new TestTreeItem_1.TestTreeItem(`✅ Connected to Docker process server`, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
136
|
-
description: `Found ${this.processes.length} container(s)`,
|
|
137
|
-
connected: true
|
|
138
|
-
}, undefined, new vscode.ThemeIcon("check", new vscode.ThemeColor("testing.iconPassed"))),
|
|
139
|
-
new TestTreeItem_1.TestTreeItem("Click to refresh", types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
140
|
-
description: "Update Docker container list",
|
|
141
|
-
refresh: true
|
|
142
|
-
}, {
|
|
143
|
-
command: "testeranto.refresh",
|
|
144
|
-
title: "Refresh",
|
|
145
|
-
arguments: []
|
|
146
|
-
}, new vscode.ThemeIcon("refresh", new vscode.ThemeColor("testing.iconQueued")))
|
|
147
|
-
];
|
|
148
|
-
// Add all processes
|
|
149
|
-
items.push(...this.processes.map(process => {
|
|
150
|
-
let icon;
|
|
151
|
-
const status = process.status || '';
|
|
152
|
-
if (status.toLowerCase().includes('up') || status.toLowerCase().includes('running')) {
|
|
153
|
-
icon = new vscode.ThemeIcon("check", new vscode.ThemeColor("testing.iconPassed"));
|
|
154
|
-
}
|
|
155
|
-
else if (status.toLowerCase().includes('exited') || status.toLowerCase().includes('stopped')) {
|
|
156
|
-
icon = new vscode.ThemeIcon("error", new vscode.ThemeColor("testing.iconFailed"));
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
icon = new vscode.ThemeIcon("circle-outline", new vscode.ThemeColor("testing.iconUnset"));
|
|
160
|
-
}
|
|
161
|
-
const label = `${process.processId || process.name || 'Unknown'} - ${status || 'unknown'}`;
|
|
162
|
-
const description = process.command || process.image || 'No command';
|
|
163
|
-
return new TestTreeItem_1.TestTreeItem(label, types_1.TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
|
|
164
|
-
description: description,
|
|
165
|
-
status: status,
|
|
166
|
-
processId: process.processId,
|
|
167
|
-
runtime: process.runtime,
|
|
168
|
-
ports: process.ports
|
|
169
|
-
}, undefined, icon);
|
|
170
|
-
}));
|
|
171
|
-
return items;
|
|
172
|
-
}
|
|
173
|
-
connectWebSocket() {
|
|
174
|
-
if (this.connectionAttempts >= this.maxConnectionAttempts) {
|
|
175
|
-
console.error('Max WebSocket connection attempts reached');
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
this.connectionAttempts++;
|
|
179
|
-
try {
|
|
180
|
-
// Use the ws library for Node.js environment
|
|
181
|
-
const WS = require('ws');
|
|
182
|
-
// The WebSocket server runs on port 3456
|
|
183
|
-
this.ws = new WS('ws://localhost:3456/ws');
|
|
184
|
-
this.ws.on('open', () => {
|
|
185
|
-
console.log('WebSocket connected to process server');
|
|
186
|
-
this.isConnected = true;
|
|
187
|
-
this.connectionAttempts = 0;
|
|
188
|
-
// Request initial processes
|
|
189
|
-
this.requestProcesses();
|
|
190
|
-
});
|
|
191
|
-
this.ws.on('message', (data) => {
|
|
192
|
-
try {
|
|
193
|
-
const message = JSON.parse(data.toString());
|
|
194
|
-
this.handleWebSocketMessage(message);
|
|
195
|
-
}
|
|
196
|
-
catch (error) {
|
|
197
|
-
console.error('Error parsing WebSocket message:', error);
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
this.ws.on('error', (error) => {
|
|
201
|
-
console.error('WebSocket error:', error);
|
|
202
|
-
this.isConnected = false;
|
|
203
|
-
});
|
|
204
|
-
this.ws.on('close', () => {
|
|
205
|
-
console.log('WebSocket disconnected');
|
|
206
|
-
this.isConnected = false;
|
|
207
|
-
// Attempt to reconnect after 5 seconds
|
|
208
|
-
setTimeout(() => {
|
|
209
|
-
this.connectWebSocket();
|
|
210
|
-
}, 5000);
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
catch (error) {
|
|
214
|
-
console.error('Failed to create WebSocket:', error);
|
|
215
|
-
this.isConnected = false;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
handleWebSocketMessage(message) {
|
|
219
|
-
if (message.type === 'processes') {
|
|
220
|
-
if (message.data && message.data.processes) {
|
|
221
|
-
this.processes = message.data.processes;
|
|
222
|
-
this._onDidChangeTreeData.fire();
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
else if (message.type === 'connected') {
|
|
226
|
-
console.log('Connected to process server:', message.message);
|
|
227
|
-
this.isConnected = true;
|
|
228
|
-
// Request processes after connection
|
|
229
|
-
this.requestProcesses();
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
requestProcesses() {
|
|
233
|
-
if (this.ws && this.ws.readyState === 1) { // 1 = OPEN
|
|
234
|
-
this.ws.send(JSON.stringify({
|
|
235
|
-
type: 'getProcesses'
|
|
236
|
-
}));
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
console.warn('WebSocket not ready, cannot request processes');
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
async fetchProcesses() {
|
|
243
|
-
if (this.isConnected) {
|
|
244
|
-
this.requestProcesses();
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
// Try to reconnect if not connected
|
|
248
|
-
this.connectWebSocket();
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
startRefreshing() {
|
|
252
|
-
// Fetch immediately
|
|
253
|
-
this.fetchProcesses();
|
|
254
|
-
// Set up periodic refresh every 10 seconds
|
|
255
|
-
this.refreshInterval = setInterval(() => {
|
|
256
|
-
this.fetchProcesses();
|
|
257
|
-
}, 10000);
|
|
258
|
-
}
|
|
259
|
-
dispose() {
|
|
260
|
-
if (this.refreshInterval) {
|
|
261
|
-
clearInterval(this.refreshInterval);
|
|
262
|
-
this.refreshInterval = null;
|
|
263
|
-
}
|
|
264
|
-
if (this.ws) {
|
|
265
|
-
this.ws.close();
|
|
266
|
-
this.ws = null;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
exports.ProcessesTreeDataProvider = ProcessesTreeDataProvider;
|
|
@@ -1,87 +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.ResultsTreeDataProvider = void 0;
|
|
37
|
-
const vscode = __importStar(require("vscode"));
|
|
38
|
-
const TestTreeItem_1 = require("../TestTreeItem");
|
|
39
|
-
const types_1 = require("../types");
|
|
40
|
-
class ResultsTreeDataProvider {
|
|
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
|
-
if (!element) {
|
|
53
|
-
return Promise.resolve(this.getResultItems());
|
|
54
|
-
}
|
|
55
|
-
return Promise.resolve([]);
|
|
56
|
-
}
|
|
57
|
-
getResultItems() {
|
|
58
|
-
const results = [
|
|
59
|
-
{
|
|
60
|
-
label: "Calculator.test.ts - ✓ Passed",
|
|
61
|
-
test: "Calculator.test.ts",
|
|
62
|
-
status: "passed",
|
|
63
|
-
icon: new vscode.ThemeIcon("check", new vscode.ThemeColor("testing.iconPassed"))
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
label: "Calculator.pitono.test.py - ⏳ Running",
|
|
67
|
-
test: "Calculator.pitono.test.py",
|
|
68
|
-
status: "running",
|
|
69
|
-
icon: new vscode.ThemeIcon("sync", new vscode.ThemeColor("testing.iconQueued"))
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
label: "Calculator.golingvu.test.go - ✗ Failed",
|
|
73
|
-
test: "Calculator.golingvu.test.go",
|
|
74
|
-
status: "failed",
|
|
75
|
-
icon: new vscode.ThemeIcon("error", new vscode.ThemeColor("testing.iconFailed"))
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
label: "Calculator.test.ts (web) - ✓ Passed",
|
|
79
|
-
test: "Calculator.test.ts (web)",
|
|
80
|
-
status: "passed",
|
|
81
|
-
icon: new vscode.ThemeIcon("check", new vscode.ThemeColor("testing.iconPassed"))
|
|
82
|
-
}
|
|
83
|
-
];
|
|
84
|
-
return results.map(result => new TestTreeItem_1.TestTreeItem(result.label, types_1.TreeItemType.Test, vscode.TreeItemCollapsibleState.None, { test: result.test, status: result.status }, undefined, result.icon));
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
exports.ResultsTreeDataProvider = ResultsTreeDataProvider;
|
|
@@ -1,309 +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.TestTreeDataProvider = void 0;
|
|
37
|
-
const vscode = __importStar(require("vscode"));
|
|
38
|
-
const TestTreeItem_1 = require("../TestTreeItem");
|
|
39
|
-
const types_1 = require("../types");
|
|
40
|
-
class TestTreeDataProvider {
|
|
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, _b, _c;
|
|
53
|
-
if (!element) {
|
|
54
|
-
return Promise.resolve(this.getRuntimeItems());
|
|
55
|
-
}
|
|
56
|
-
else if (element.type === types_1.TreeItemType.Runtime) {
|
|
57
|
-
const runtime = (_a = element.data) === null || _a === void 0 ? void 0 : _a.runtime;
|
|
58
|
-
return Promise.resolve(this.getTestItems(runtime));
|
|
59
|
-
}
|
|
60
|
-
else if (element.type === types_1.TreeItemType.Test) {
|
|
61
|
-
const { runtime, testName } = element.data || {};
|
|
62
|
-
return this.getFileTreeItems(runtime, testName);
|
|
63
|
-
}
|
|
64
|
-
else if (element.type === types_1.TreeItemType.File) {
|
|
65
|
-
// Handle expanding directories
|
|
66
|
-
const { runtime, testName, path } = element.data || {};
|
|
67
|
-
if (path && !((_c = (_b = element.data) === null || _b === void 0 ? void 0 : _b.fileName) === null || _c === void 0 ? void 0 : _c.endsWith('.'))) { // Check if it's a directory
|
|
68
|
-
return this.getDirectoryItems(runtime, testName, path);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return Promise.resolve([]);
|
|
72
|
-
}
|
|
73
|
-
getRuntimeItems() {
|
|
74
|
-
const runtimes = [
|
|
75
|
-
{ label: "Node", runtime: "node" },
|
|
76
|
-
{ label: "Web", runtime: "web" },
|
|
77
|
-
{ label: "Python", runtime: "python" },
|
|
78
|
-
{ label: "Golang", runtime: "golang" }
|
|
79
|
-
];
|
|
80
|
-
return runtimes.map(({ label, runtime }) => new TestTreeItem_1.TestTreeItem(label, types_1.TreeItemType.Runtime, vscode.TreeItemCollapsibleState.Collapsed, { runtime }));
|
|
81
|
-
}
|
|
82
|
-
getTestItems(runtime) {
|
|
83
|
-
if (!runtime) {
|
|
84
|
-
return [];
|
|
85
|
-
}
|
|
86
|
-
let testNames = [];
|
|
87
|
-
switch (runtime) {
|
|
88
|
-
case "node":
|
|
89
|
-
case "web":
|
|
90
|
-
testNames = ["Calculator.test.ts"];
|
|
91
|
-
break;
|
|
92
|
-
case "python":
|
|
93
|
-
testNames = ["Calculator.pitono.test.py"];
|
|
94
|
-
break;
|
|
95
|
-
case "golang":
|
|
96
|
-
testNames = ["Calculator.golingvu.test.go"];
|
|
97
|
-
break;
|
|
98
|
-
default:
|
|
99
|
-
testNames = [];
|
|
100
|
-
}
|
|
101
|
-
return testNames.map(testName => new TestTreeItem_1.TestTreeItem(testName, types_1.TreeItemType.Test, vscode.TreeItemCollapsibleState.Collapsed, { runtime, testName }));
|
|
102
|
-
}
|
|
103
|
-
async getFileItems(runtime, testName) {
|
|
104
|
-
console.log("getFileItems");
|
|
105
|
-
if (!runtime || !testName) {
|
|
106
|
-
return [];
|
|
107
|
-
}
|
|
108
|
-
// Determine which JSON file to read based on runtime and testName
|
|
109
|
-
let jsonFilePath;
|
|
110
|
-
switch (runtime) {
|
|
111
|
-
case "golang":
|
|
112
|
-
jsonFilePath = "testeranto/bundles/allTests/golang/example/Calculator.test.go-inputFiles.json";
|
|
113
|
-
break;
|
|
114
|
-
case "python":
|
|
115
|
-
jsonFilePath = "testeranto/bundles/allTests/python/example/Calculator.test.py-inputFiles.json";
|
|
116
|
-
break;
|
|
117
|
-
case "node":
|
|
118
|
-
jsonFilePath = "testeranto/bundles/allTests/node/example/Calculator.test.mjs-inputFiles.json";
|
|
119
|
-
break;
|
|
120
|
-
case "web":
|
|
121
|
-
jsonFilePath = "testeranto/bundles/allTests/web/example/Calculator.test.mjs-inputFiles.json";
|
|
122
|
-
break;
|
|
123
|
-
case "ruby":
|
|
124
|
-
jsonFilePath = "testeranto/bundles/allTests/ruby/example/Calculator.test.rb-inputFiles.json";
|
|
125
|
-
break;
|
|
126
|
-
default:
|
|
127
|
-
return [];
|
|
128
|
-
}
|
|
129
|
-
try {
|
|
130
|
-
// Get the workspace root
|
|
131
|
-
const workspaceFolders = vscode.workspace.workspaceFolders;
|
|
132
|
-
if (!workspaceFolders || workspaceFolders.length === 0) {
|
|
133
|
-
throw new Error("No workspace folder open");
|
|
134
|
-
}
|
|
135
|
-
const workspaceRoot = workspaceFolders[0].uri;
|
|
136
|
-
// Build the full URI to the JSON file
|
|
137
|
-
const jsonFileUri = vscode.Uri.joinPath(workspaceRoot, jsonFilePath);
|
|
138
|
-
console.log(`Reading JSON from: ${jsonFileUri.fsPath}`);
|
|
139
|
-
// Read the JSON file
|
|
140
|
-
const fileContent = await vscode.workspace.fs.readFile(jsonFileUri);
|
|
141
|
-
const files = JSON.parse(Buffer.from(fileContent).toString('utf-8'));
|
|
142
|
-
console.log(`Found ${files.length} files in JSON`);
|
|
143
|
-
// Build a tree structure
|
|
144
|
-
const treeRoot = { name: '', children: new Map(), fullPath: '', isFile: false };
|
|
145
|
-
for (const rawFileName of files) {
|
|
146
|
-
// Remove leading '/' if present to make paths relative to workspace root
|
|
147
|
-
const fileName = rawFileName.startsWith('/') ? rawFileName.substring(1) : rawFileName;
|
|
148
|
-
const parts = fileName.split('/');
|
|
149
|
-
let currentNode = treeRoot;
|
|
150
|
-
for (let i = 0; i < parts.length; i++) {
|
|
151
|
-
const part = parts[i];
|
|
152
|
-
const isLast = i === parts.length - 1;
|
|
153
|
-
if (!currentNode.children.has(part)) {
|
|
154
|
-
currentNode.children.set(part, {
|
|
155
|
-
name: part,
|
|
156
|
-
children: new Map(),
|
|
157
|
-
fullPath: parts.slice(0, i + 1).join('/'),
|
|
158
|
-
isFile: isLast
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
currentNode = currentNode.children.get(part);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
// Convert tree to TestTreeItems
|
|
165
|
-
return this.buildTreeItems(treeRoot, runtime, testName, workspaceRoot);
|
|
166
|
-
}
|
|
167
|
-
catch (error) {
|
|
168
|
-
console.error(`Failed to read file list from ${jsonFilePath}:`, error);
|
|
169
|
-
vscode.window.showErrorMessage(`Could not load file list for ${testName}: ${error}`);
|
|
170
|
-
// Return empty array to prevent tree view from crashing
|
|
171
|
-
return [];
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
async getFileTreeItems(runtime, testName) {
|
|
175
|
-
const tree = await this.buildFileTree(runtime, testName);
|
|
176
|
-
if (!tree) {
|
|
177
|
-
return [];
|
|
178
|
-
}
|
|
179
|
-
return this.buildTreeItems(tree, runtime, testName);
|
|
180
|
-
}
|
|
181
|
-
async buildFileTree(runtime, testName) {
|
|
182
|
-
// Determine which JSON file to read based on runtime and testName
|
|
183
|
-
let jsonFilePath;
|
|
184
|
-
switch (runtime) {
|
|
185
|
-
case "golang":
|
|
186
|
-
jsonFilePath = "testeranto/bundles/allTests/golang/example/Calculator.test.go-inputFiles.json";
|
|
187
|
-
break;
|
|
188
|
-
case "python":
|
|
189
|
-
jsonFilePath = "testeranto/bundles/allTests/python/example/Calculator.test.py-inputFiles.json";
|
|
190
|
-
break;
|
|
191
|
-
case "node":
|
|
192
|
-
jsonFilePath = "testeranto/bundles/allTests/node/example/Calculator.test.mjs-inputFiles.json";
|
|
193
|
-
break;
|
|
194
|
-
case "web":
|
|
195
|
-
jsonFilePath = "testeranto/bundles/allTests/web/example/Calculator.test.mjs-inputFiles.json";
|
|
196
|
-
break;
|
|
197
|
-
default:
|
|
198
|
-
return null;
|
|
199
|
-
}
|
|
200
|
-
try {
|
|
201
|
-
const workspaceFolders = vscode.workspace.workspaceFolders;
|
|
202
|
-
if (!workspaceFolders || workspaceFolders.length === 0) {
|
|
203
|
-
throw new Error("No workspace folder open");
|
|
204
|
-
}
|
|
205
|
-
const workspaceRoot = workspaceFolders[0].uri;
|
|
206
|
-
// Read files from JSON input file
|
|
207
|
-
const jsonFileUri = vscode.Uri.joinPath(workspaceRoot, jsonFilePath);
|
|
208
|
-
const fileContent = await vscode.workspace.fs.readFile(jsonFileUri);
|
|
209
|
-
const files = JSON.parse(Buffer.from(fileContent).toString('utf-8'));
|
|
210
|
-
const allFiles = new Set(files);
|
|
211
|
-
// Add report files for this runtime
|
|
212
|
-
try {
|
|
213
|
-
const reportsDir = vscode.Uri.joinPath(workspaceRoot, "testeranto/reports/allTests/example");
|
|
214
|
-
// Check if directory exists
|
|
215
|
-
try {
|
|
216
|
-
await vscode.workspace.fs.stat(reportsDir);
|
|
217
|
-
// Read directory contents
|
|
218
|
-
const entries = await vscode.workspace.fs.readDirectory(reportsDir);
|
|
219
|
-
for (const [name, type] of entries) {
|
|
220
|
-
if (type === vscode.FileType.File && name.endsWith('.json')) {
|
|
221
|
-
// Check if this report file matches the current runtime
|
|
222
|
-
// For example: python.Calculator.test.ts.json starts with "python"
|
|
223
|
-
if (name.startsWith(runtime + '.')) {
|
|
224
|
-
const reportFilePath = `testeranto/reports/allTests/example/${name}`;
|
|
225
|
-
allFiles.add(reportFilePath);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
catch (error) {
|
|
231
|
-
console.log(`Reports directory doesn't exist or can't be read: ${reportsDir.fsPath}`);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
catch (error) {
|
|
235
|
-
console.error(`Failed to scan reports directory:`, error);
|
|
236
|
-
}
|
|
237
|
-
const treeRoot = { name: '', children: new Map(), fullPath: '', isFile: false };
|
|
238
|
-
for (const rawFileName of Array.from(allFiles)) {
|
|
239
|
-
const fileName = rawFileName.startsWith('/') ? rawFileName.substring(1) : rawFileName;
|
|
240
|
-
const parts = fileName.split('/');
|
|
241
|
-
let currentNode = treeRoot;
|
|
242
|
-
for (let i = 0; i < parts.length; i++) {
|
|
243
|
-
const part = parts[i];
|
|
244
|
-
const isLast = i === parts.length - 1;
|
|
245
|
-
if (!currentNode.children.has(part)) {
|
|
246
|
-
currentNode.children.set(part, {
|
|
247
|
-
name: part,
|
|
248
|
-
children: new Map(),
|
|
249
|
-
fullPath: parts.slice(0, i + 1).join('/'),
|
|
250
|
-
isFile: isLast
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
currentNode = currentNode.children.get(part);
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
return treeRoot;
|
|
257
|
-
}
|
|
258
|
-
catch (error) {
|
|
259
|
-
console.error(`Failed to build file tree:`, error);
|
|
260
|
-
return null;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
buildTreeItems(node, runtime, testName) {
|
|
264
|
-
const items = [];
|
|
265
|
-
const sortedChildren = Array.from(node.children.values()).sort((a, b) => {
|
|
266
|
-
if (a.isFile && !b.isFile)
|
|
267
|
-
return 1;
|
|
268
|
-
if (!a.isFile && b.isFile)
|
|
269
|
-
return -1;
|
|
270
|
-
return a.name.localeCompare(b.name);
|
|
271
|
-
});
|
|
272
|
-
for (const child of sortedChildren) {
|
|
273
|
-
const collapsibleState = child.isFile
|
|
274
|
-
? vscode.TreeItemCollapsibleState.None
|
|
275
|
-
: vscode.TreeItemCollapsibleState.Collapsed;
|
|
276
|
-
const treeItem = new TestTreeItem_1.TestTreeItem(child.name, types_1.TreeItemType.File, collapsibleState, {
|
|
277
|
-
runtime,
|
|
278
|
-
testName,
|
|
279
|
-
fileName: child.fullPath,
|
|
280
|
-
path: child.fullPath
|
|
281
|
-
}, child.isFile ? {
|
|
282
|
-
command: "vscode.open",
|
|
283
|
-
title: "Open File",
|
|
284
|
-
arguments: [vscode.Uri.file(child.fullPath)]
|
|
285
|
-
} : undefined, child.isFile ? new vscode.ThemeIcon("file") : new vscode.ThemeIcon("folder"));
|
|
286
|
-
items.push(treeItem);
|
|
287
|
-
}
|
|
288
|
-
return items;
|
|
289
|
-
}
|
|
290
|
-
async getDirectoryItems(runtime, testName, path) {
|
|
291
|
-
const tree = await this.buildFileTree(runtime, testName);
|
|
292
|
-
if (!tree) {
|
|
293
|
-
return [];
|
|
294
|
-
}
|
|
295
|
-
// Find the node corresponding to the path
|
|
296
|
-
const parts = path.split('/').filter(p => p.length > 0);
|
|
297
|
-
let currentNode = tree;
|
|
298
|
-
for (const part of parts) {
|
|
299
|
-
if (currentNode.children.has(part)) {
|
|
300
|
-
currentNode = currentNode.children.get(part);
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
return [];
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
return this.buildTreeItems(currentNode, runtime, testName);
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
exports.TestTreeDataProvider = TestTreeDataProvider;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TreeItemType = void 0;
|
|
4
|
-
var TreeItemType;
|
|
5
|
-
(function (TreeItemType) {
|
|
6
|
-
TreeItemType[TreeItemType["Runtime"] = 0] = "Runtime";
|
|
7
|
-
TreeItemType[TreeItemType["Test"] = 1] = "Test";
|
|
8
|
-
TreeItemType[TreeItemType["File"] = 2] = "File";
|
|
9
|
-
})(TreeItemType || (exports.TreeItemType = TreeItemType = {}));
|