summaryrefslogtreecommitdiff
path: root/.config/coc/extensions/node_modules/coc-go/lib/utils/tests.js
diff options
context:
space:
mode:
Diffstat (limited to '.config/coc/extensions/node_modules/coc-go/lib/utils/tests.js')
-rw-r--r--.config/coc/extensions/node_modules/coc-go/lib/utils/tests.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/.config/coc/extensions/node_modules/coc-go/lib/utils/tests.js b/.config/coc/extensions/node_modules/coc-go/lib/utils/tests.js
new file mode 100644
index 0000000..4aa14b2
--- /dev/null
+++ b/.config/coc/extensions/node_modules/coc-go/lib/utils/tests.js
@@ -0,0 +1,85 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.extractFunctionName = exports.toogleTests = exports.generateTestsFunction = exports.generateTestsExported = exports.generateTestsAll = void 0;
+const coc_nvim_1 = require("coc.nvim");
+const vscode_uri_1 = require("vscode-uri");
+const tools_1 = require("./tools");
+const binaries_1 = require("../binaries");
+////////////////////////////////////////////////////////////////////////////////
+async function generateTestsAll(document) {
+ if (isTest(document)) {
+ coc_nvim_1.window.showMessage("Document is a test file", "error");
+ return;
+ }
+ await runGotests(document, ["-all"]) && await openTests(document);
+}
+exports.generateTestsAll = generateTestsAll;
+async function generateTestsExported(document) {
+ if (isTest(document)) {
+ coc_nvim_1.window.showMessage("Document is a test file", "error");
+ return;
+ }
+ await runGotests(document, ["-exported"]) && await openTests(document);
+}
+exports.generateTestsExported = generateTestsExported;
+async function generateTestsFunction(document) {
+ if (isTest(document)) {
+ coc_nvim_1.window.showMessage("Document is a test file", "error");
+ return;
+ }
+ const { line } = await coc_nvim_1.window.getCursorPosition();
+ const text = await document.getText({
+ start: { line, character: 0 },
+ end: { line, character: Infinity },
+ });
+ coc_nvim_1.window.showMessage(text);
+ const funcName = extractFunctionName(text);
+ if (!funcName) {
+ coc_nvim_1.window.showMessage("No function found", "error");
+ return;
+ }
+ await runGotests(document, ["-only", `^${funcName}$`]) && await openTests(document);
+}
+exports.generateTestsFunction = generateTestsFunction;
+async function toogleTests(document) {
+ const targetURI = isTest(document)
+ ? sourceURI(document)
+ : testURI(document);
+ return coc_nvim_1.workspace.openResource(targetURI);
+}
+exports.toogleTests = toogleTests;
+////////////////////////////////////////////////////////////////////////////////
+async function openTests(document) {
+ return coc_nvim_1.workspace.openResource(testURI(document));
+}
+function isTest(document) {
+ return document.uri.endsWith('_test.go');
+}
+function testURI(document) {
+ return document.uri.replace(/(_test)?\.go$/, '_test.go');
+}
+function sourceURI(document) {
+ return document.uri.replace(/(_test)?\.go$/, '.go');
+}
+async function runGotests(document, args) {
+ const config = coc_nvim_1.workspace.getConfiguration().get('go.tests', {});
+ args.push(...(config.generateFlags || []), '-w', vscode_uri_1.URI.parse(document.uri).fsPath);
+ try {
+ const stdout = await (0, tools_1.execTool)(binaries_1.GOTESTS, args);
+ coc_nvim_1.window.showMessage(stdout || "");
+ return true;
+ }
+ catch (err) {
+ coc_nvim_1.window.showMessage(`Error: ${err}`, "error");
+ return false;
+ }
+}
+////////////////////////////////////////////////////////////////////////////////
+function extractFunctionName(line) {
+ const m = /^func +(\([^)]+\) +)?([^\s(]+)/.exec(line);
+ if (m) {
+ return m[2];
+ }
+}
+exports.extractFunctionName = extractFunctionName;
+//# sourceMappingURL=tests.js.map \ No newline at end of file