Skip to content

Commit d24cd2b

Browse files
committed
New CI mock input class
1 parent 1dbc642 commit d24cd2b

File tree

3 files changed

+565
-630
lines changed

3 files changed

+565
-630
lines changed

src/test/test-runner.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,59 @@ export function logTestEnvironment(): void {
9999
console.log('Architecture:', process.arch);
100100
console.log('========================');
101101
}
102+
103+
/**
104+
* Monitor workspace setup progress for integration tests
105+
* @param setupType Type of setup being monitored (e.g., "workspace", "git workspace")
106+
*/
107+
export async function monitorWorkspaceSetup(setupType: string = "workspace"): Promise<void> {
108+
console.log(`⏳ Monitoring ${setupType} setup progress...`);
109+
let waitTime = 0;
110+
const checkInterval = 3000;
111+
let initialSetupComplete = false;
112+
let pythonEnvironmentSetup = false;
113+
let westUpdated = false;
114+
let packagesInstalled = false;
115+
116+
while (!packagesInstalled) {
117+
const extension = vscode.extensions.getExtension("mylonics.zephyr-ide");
118+
let wsConfig = null;
119+
120+
if (extension?.isActive && extension.exports?.getWorkspaceConfig) {
121+
wsConfig = extension.exports.getWorkspaceConfig();
122+
}
123+
124+
if (wsConfig) {
125+
if (!initialSetupComplete && wsConfig.initialSetupComplete) {
126+
console.log(" ✅ Initial setup completed - west.yml created");
127+
initialSetupComplete = true;
128+
}
129+
130+
if (!westUpdated && wsConfig.activeSetupState?.westUpdated) {
131+
console.log(" ✅ West updated - All repos downloaded");
132+
westUpdated = true;
133+
}
134+
135+
if (!pythonEnvironmentSetup && wsConfig.activeSetupState?.pythonEnvironmentSetup) {
136+
console.log(" ✅ Python environment setup completed");
137+
pythonEnvironmentSetup = true;
138+
}
139+
140+
if (wsConfig.activeSetupState?.packagesInstalled) {
141+
packagesInstalled = true;
142+
console.log(" ✅ Packages installed completed");
143+
console.log(`🎉 All ${setupType} setup stages completed!`);
144+
break;
145+
}
146+
}
147+
148+
// Progress update every 30 seconds
149+
if (waitTime % 30000 === 0 && waitTime > 0) {
150+
const completedStages = [initialSetupComplete, pythonEnvironmentSetup, westUpdated, packagesInstalled].filter(Boolean).length;
151+
console.log(`⏳ ${setupType} setup in progress... (${waitTime / 1000}s elapsed, ${completedStages}/4 stages completed)`);
152+
}
153+
154+
await new Promise((resolve) => setTimeout(resolve, checkInterval));
155+
waitTime += checkInterval;
156+
}
157+
}

0 commit comments

Comments
 (0)