Skip to content

Commit 12c028d

Browse files
authored
feat: support to run test via YAML editor (#1)
* feat: add syntax support * feat: support to run test case directly --------- Co-authored-by: Rick <[email protected]>
1 parent c4bfb8a commit 12c028d

File tree

7 files changed

+100
-12
lines changed

7 files changed

+100
-12
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
node_modules/
2-
2+
*.vsix

dist/extension.js

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43301,7 +43301,39 @@ var serverProto = grpc.loadPackageDefinition(packageDefinition).server;
4330143301
var apiConsole = vscode.window.createOutputChannel("API Testing");
4330243302
function activate(context) {
4330343303
console.log('Congratulations, your extension "api-testing" is now active!');
43304-
let atest = vscode.commands.registerCommand("atest", function() {
43304+
const toggleLink = {
43305+
provideCodeLenses: function(document2, token) {
43306+
if (document2.lineAt(0).text !== "#!api-testing") {
43307+
return [];
43308+
}
43309+
const range = new vscode.Range(0, 1, 10, 10);
43310+
const lens = new vscode.CodeLens(range, {
43311+
command: "atest",
43312+
title: "Run Suite"
43313+
});
43314+
let result = [lens];
43315+
for (let i = 0; i < document2.lineCount; i++) {
43316+
let nameAnchor = document2.lineAt(i).text;
43317+
if (nameAnchor.startsWith("- name: ")) {
43318+
let name = nameAnchor.replace("- name: ", "");
43319+
const range2 = new vscode.Range(i, 1, 10, 10);
43320+
const testcaseLens = new vscode.CodeLens(range2, {
43321+
command: "atest",
43322+
title: "Run Case",
43323+
arguments: [name]
43324+
});
43325+
result.push(testcaseLens);
43326+
}
43327+
}
43328+
return result;
43329+
},
43330+
resolveCodeLens: function(code, token) {
43331+
return code;
43332+
}
43333+
};
43334+
const codeLens = vscode.languages.registerCodeLensProvider({ language: "yaml", scheme: "file" }, toggleLink);
43335+
context.subscriptions.push(codeLens);
43336+
let atest = vscode.commands.registerCommand("atest", function(args) {
4330543337
if (vscode.workspace.workspaceFolders !== void 0) {
4330643338
let filename = vscode.window.activeTextEditor.document.fileName;
4330743339
const addr = vscode.workspace.getConfiguration().get("api-testing.server");
@@ -43319,10 +43351,17 @@ function activate(context) {
4331943351
const data = fs.readFileSync(filename);
4332043352
task = data.toString();
4332143353
}
43354+
let kind = "suite";
43355+
let caseName = "";
43356+
if (args && args.length > 0) {
43357+
kind = "testcaseInSuite";
43358+
caseName = args;
43359+
}
4332243360
const client = new serverProto.Runner(addr, grpc.credentials.createInsecure());
4332343361
client.run({
43324-
kind: "suite",
43325-
data: task
43362+
kind,
43363+
data: task,
43364+
caseName
4332643365
}, function(err, response) {
4332743366
if (err !== void 0 && err !== null) {
4332843367
apiConsole.appendLine(err + " with " + addr);

dist/server.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ service Runner {
1111
message TestTask {
1212
string data = 1;
1313
string kind = 2;
14+
string caseName = 3;
1415
}
1516

1617
message HelloReply {

extension.js

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,46 @@ const apiConsole = vscode.window.createOutputChannel("API Testing")
2828
function activate(context) {
2929
console.log('Congratulations, your extension "api-testing" is now active!');
3030

31-
let atest = vscode.commands.registerCommand('atest', function() {
31+
const toggleLink = {
32+
provideCodeLenses: function (document, token) {
33+
if (document.lineAt(0).text !== "#!api-testing") {
34+
return []
35+
}
36+
37+
// for the whole test suite
38+
const range = new vscode.Range(0, 1, 10, 10)
39+
const lens = new vscode.CodeLens(range, {
40+
command: 'atest',
41+
title: 'Run Suite'
42+
})
43+
let result = [lens]
44+
45+
// for test cases
46+
for (let i = 0; i < document.lineCount; i++) {
47+
let nameAnchor = document.lineAt(i).text
48+
if (nameAnchor.startsWith('- name: ')) {
49+
let name = nameAnchor.replace('- name: ', '')
50+
const range = new vscode.Range(i, 1, 10, 10)
51+
const testcaseLens = new vscode.CodeLens(range, {
52+
command: 'atest',
53+
title: 'Run Case',
54+
arguments: [name]
55+
})
56+
result.push(testcaseLens)
57+
}
58+
}
59+
60+
return result
61+
},
62+
resolveCodeLens: function (code,token) {
63+
return code
64+
}
65+
}
66+
67+
const codeLens = vscode.languages.registerCodeLensProvider({ language: 'yaml', scheme: 'file' }, toggleLink)
68+
context.subscriptions.push(codeLens)
69+
70+
let atest = vscode.commands.registerCommand('atest', function(args) {
3271
if(vscode.workspace.workspaceFolders !== undefined) {
3372
let filename = vscode.window.activeTextEditor.document.fileName
3473
const addr = vscode.workspace.getConfiguration().get('api-testing.server')
@@ -49,10 +88,18 @@ function activate(context) {
4988
task = data.toString()
5089
}
5190

91+
let kind = "suite"
92+
let caseName = ""
93+
if (args && args.length > 0) {
94+
kind = "testcaseInSuite"
95+
caseName = args
96+
}
97+
5298
const client = new serverProto.Runner(addr, grpc.credentials.createInsecure());
5399
client.run({
54-
kind: "suite",
55-
data: task
100+
kind: kind,
101+
data: task,
102+
caseName: caseName
56103
} , function(err, response) {
57104
if (err !== undefined && err !== null) {
58105
apiConsole.appendLine(err + " with " + addr);

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "api-testing",
33
"displayName": "API Testing",
44
"description": "API Testing",
5-
"version": "0.0.1",
5+
"version": "0.0.2",
66
"repository": "https://github.com/linuxsuren/vscode-api-testing",
77
"engines": {
88
"vscode": "^1.68.0"

server.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ service Runner {
1111
message TestTask {
1212
string data = 1;
1313
string kind = 2;
14+
string caseName = 3;
1415
}
1516

1617
message HelloReply {

0 commit comments

Comments
 (0)