mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-23 10:08:49 +01:00
Ask user to select PR templates when forking a repository (#143733)
* 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>
This commit is contained in:
65
extensions/github/src/test/github.test.ts
Normal file
65
extensions/github/src/test/github.test.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* 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);
|
||||
});
|
||||
});
|
||||
30
extensions/github/src/test/index.ts
Normal file
30
extensions/github/src/test/index.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
const path = require('path');
|
||||
const testRunner = require('../../../../test/integration/electron/testrunner');
|
||||
|
||||
const suite = 'Github Tests';
|
||||
|
||||
const options: any = {
|
||||
ui: 'tdd',
|
||||
color: true,
|
||||
timeout: 60000
|
||||
};
|
||||
|
||||
if (process.env.BUILD_ARTIFACTSTAGINGDIRECTORY) {
|
||||
options.reporter = 'mocha-multi-reporters';
|
||||
options.reporterOptions = {
|
||||
reporterEnabled: 'spec, mocha-junit-reporter',
|
||||
mochaJunitReporterReporterOptions: {
|
||||
testsuitesTitle: `${suite} ${process.platform}`,
|
||||
mochaFile: path.join(process.env.BUILD_ARTIFACTSTAGINGDIRECTORY, `test-results/${process.platform}-${process.arch}-${suite.toLowerCase().replace(/[^\w]/g, '-')}-results.xml`)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
testRunner.configure(options);
|
||||
|
||||
export = testRunner;
|
||||
Reference in New Issue
Block a user