mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-20 00:04:14 +08:00
* Add getPullRequestTemplates method to discover templates
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* Add method to quick pick for PR templates
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* Handle possible PR templates
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* Remove unnecessary return value assignment
Co-authored-by: João Moreno <mail@joaomoreno.com>
* Change comparison operands' order
Co-authored-by: João Moreno <mail@joaomoreno.com>
* Remove sorting template URIs in pickPullRequestTemplate
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* Sort template URIs before showing quick-pick list
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* Rename getPullRequestTemplates method to findPullRequestTemplates
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* Find Github PR templates in-parallel using readdir/stat
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* Export method for visibitliy in tests
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* Add tests for Github PR template detection
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* Add launcher configration to run Github tests
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* 💄
* Replace stat with readDirectory for OS native case sensitivity
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* Delete some files to avoid duplicate names on case insensitive envs
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
* Exclude deleted files from test case expected result
Signed-off-by: Babak K. Shandiz <babak.k.shandiz@gmail.com>
Co-authored-by: João Moreno <mail@joaomoreno.com>
Co-authored-by: João Moreno <joao.moreno@microsoft.com>
66 lines
2.4 KiB
TypeScript
66 lines
2.4 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import 'mocha';
|
|
import * as assert from 'assert';
|
|
import { workspace, extensions, Uri, commands } from 'vscode';
|
|
import { findPullRequestTemplates, pickPullRequestTemplate } from '../pushErrorHandler';
|
|
|
|
suite('github smoke test', function () {
|
|
const cwd = workspace.workspaceFolders![0].uri;
|
|
|
|
suiteSetup(async function () {
|
|
const ext = extensions.getExtension('vscode.github');
|
|
await ext?.activate();
|
|
});
|
|
|
|
test('should find all templates', async function () {
|
|
const expectedValuesSorted = [
|
|
'/PULL_REQUEST_TEMPLATE/a.md',
|
|
'/PULL_REQUEST_TEMPLATE/b.md',
|
|
'/docs/PULL_REQUEST_TEMPLATE.md',
|
|
'/docs/PULL_REQUEST_TEMPLATE/a.md',
|
|
'/docs/PULL_REQUEST_TEMPLATE/b.md',
|
|
'/.github/PULL_REQUEST_TEMPLATE.md',
|
|
'/.github/PULL_REQUEST_TEMPLATE/a.md',
|
|
'/.github/PULL_REQUEST_TEMPLATE/b.md',
|
|
'/PULL_REQUEST_TEMPLATE.md'
|
|
];
|
|
expectedValuesSorted.sort();
|
|
|
|
const uris = await findPullRequestTemplates(cwd);
|
|
|
|
const urisSorted = uris.map(x => x.path.slice(cwd.path.length));
|
|
urisSorted.sort();
|
|
|
|
assert.deepStrictEqual(urisSorted, expectedValuesSorted);
|
|
});
|
|
|
|
test('selecting non-default quick-pick item should correspond to a template', async () => {
|
|
const template0 = Uri.file("some-imaginary-template-0");
|
|
const template1 = Uri.file("some-imaginary-template-1");
|
|
const templates = [template0, template1];
|
|
|
|
const pick = pickPullRequestTemplate(templates);
|
|
|
|
await commands.executeCommand('workbench.action.quickOpenSelectNext');
|
|
await commands.executeCommand('workbench.action.quickOpenSelectNext');
|
|
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
|
|
|
|
assert.ok(await pick === template0);
|
|
});
|
|
|
|
test('selecting first quick-pick item should return undefined', async () => {
|
|
const templates = [Uri.file("some-imaginary-file")];
|
|
|
|
const pick = pickPullRequestTemplate(templates);
|
|
|
|
await commands.executeCommand('workbench.action.quickOpenSelectNext');
|
|
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
|
|
|
|
assert.ok(await pick === undefined);
|
|
});
|
|
});
|