mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-07 17:23:56 -05:00
Merge from vscode bead496a613e475819f89f08e9e882b841bc1fe8 (#14883)
* Merge from vscode bead496a613e475819f89f08e9e882b841bc1fe8 * Bump distro * Upgrade GCC to 4.9 due to yarn install errors * Update build image * Fix bootstrap base url * Bump distro * Fix build errors * Update source map file * Disable checkbox for blocking migration issues (#15131) * disable checkbox for blocking issues * wip * disable checkbox fixes * fix strings * Remove duplicate tsec command * Default to off for tab color if settings not present * re-skip failing tests * Fix mocha error * Bump sqlite version & fix notebooks search view * Turn off esbuild warnings * Update esbuild log level * Fix overflowactionbar tests * Fix ts-ignore in dropdown tests * cleanup/fixes * Fix hygiene * Bundle in entire zone.js module * Remove extra constructor param * bump distro for web compile break * bump distro for web compile break v2 * Undo log level change * New distro * Fix integration test scripts * remove the "no yarn.lock changes" workflow * fix scripts v2 * Update unit test scripts * Ensure ads-kerberos2 updates in .vscodeignore * Try fix unit tests * Upload crash reports * remove nogpu * always upload crashes * Use bash script * Consolidate data/ext dir names * Create in tmp directory Co-authored-by: chlafreniere <hichise@gmail.com> Co-authored-by: Christopher Suh <chsuh@microsoft.com> Co-authored-by: chgagnon <chgagnon@microsoft.com>
This commit is contained in:
83
src/vs/base/test/node/powershell.test.ts
Normal file
83
src/vs/base/test/node/powershell.test.ts
Normal file
@@ -0,0 +1,83 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import * as assert from 'assert';
|
||||
import * as fs from 'fs';
|
||||
import * as os from 'os';
|
||||
import * as platform from 'vs/base/common/platform';
|
||||
import { enumeratePowerShellInstallations, getFirstAvailablePowerShellInstallation, IPowerShellExeDetails } from 'vs/base/node/powershell';
|
||||
|
||||
function checkPath(exePath: string) {
|
||||
// Check to see if the path exists
|
||||
let pathCheckResult = false;
|
||||
try {
|
||||
const stat = fs.statSync(exePath);
|
||||
pathCheckResult = stat.isFile();
|
||||
} catch {
|
||||
// fs.exists throws on Windows with SymbolicLinks so we
|
||||
// also use lstat to try and see if the file exists.
|
||||
try {
|
||||
pathCheckResult = fs.statSync(fs.readlinkSync(exePath)).isFile();
|
||||
} catch {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
assert.strictEqual(pathCheckResult, true);
|
||||
}
|
||||
|
||||
if (platform.isWindows) {
|
||||
suite('PowerShell finder', () => {
|
||||
|
||||
test('Can find first available PowerShell', async () => {
|
||||
const pwshExe = await getFirstAvailablePowerShellInstallation();
|
||||
const exePath = pwshExe?.exePath;
|
||||
assert.notStrictEqual(exePath, null);
|
||||
assert.notStrictEqual(pwshExe?.displayName, null);
|
||||
|
||||
checkPath(exePath!);
|
||||
});
|
||||
|
||||
test('Can enumerate PowerShells', async () => {
|
||||
const isOS64Bit = os.arch() === 'x64';
|
||||
const pwshs = new Array<IPowerShellExeDetails>();
|
||||
for await (const p of enumeratePowerShellInstallations()) {
|
||||
pwshs.push(p);
|
||||
}
|
||||
|
||||
const powershellLog = 'Found these PowerShells:\n' + pwshs.map(p => `${p.displayName}: ${p.exePath}`).join('\n');
|
||||
assert.strictEqual(pwshs.length >= (isOS64Bit ? 2 : 1), true, powershellLog);
|
||||
|
||||
for (const pwsh of pwshs) {
|
||||
checkPath(pwsh.exePath);
|
||||
}
|
||||
|
||||
|
||||
const lastIndex = pwshs.length - 1;
|
||||
const secondToLastIndex = pwshs.length - 2;
|
||||
|
||||
// 64bit process on 64bit OS
|
||||
if (process.arch === 'x64') {
|
||||
checkPath(pwshs[secondToLastIndex].exePath);
|
||||
assert.strictEqual(pwshs[secondToLastIndex].displayName, 'Windows PowerShell', powershellLog);
|
||||
|
||||
checkPath(pwshs[lastIndex].exePath);
|
||||
assert.strictEqual(pwshs[lastIndex].displayName, 'Windows PowerShell (x86)', powershellLog);
|
||||
} else if (isOS64Bit) {
|
||||
// 32bit process on 64bit OS
|
||||
|
||||
// Windows PowerShell x86 comes first if vscode is 32bit
|
||||
checkPath(pwshs[secondToLastIndex].exePath);
|
||||
assert.strictEqual(pwshs[secondToLastIndex].displayName, 'Windows PowerShell (x86)', powershellLog);
|
||||
|
||||
checkPath(pwshs[lastIndex].exePath);
|
||||
assert.strictEqual(pwshs[lastIndex].displayName, 'Windows PowerShell', powershellLog);
|
||||
} else {
|
||||
// 32bit or ARM process
|
||||
checkPath(pwshs[lastIndex].exePath);
|
||||
assert.strictEqual(pwshs[lastIndex].displayName, 'Windows PowerShell (x86)', powershellLog);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user