Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-go / lib / utils / tests.js
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 (file)
index 0000000..f64258d
--- /dev/null
@@ -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.workspace.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.workspace.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.workspace.showMessage("Document is a test file", "error");
+        return;
+    }
+    const { line } = await coc_nvim_1.workspace.getCursorPosition();
+    const text = await document.getText({
+        start: { line, character: 0 },
+        end: { line, character: Infinity },
+    });
+    coc_nvim_1.workspace.showMessage(text);
+    const funcName = extractFunctionName(text);
+    if (!funcName) {
+        coc_nvim_1.workspace.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 tools_1.execTool(binaries_1.GOTESTS, args);
+        coc_nvim_1.workspace.showMessage(stdout || "");
+        return true;
+    }
+    catch (err) {
+        coc_nvim_1.workspace.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