--- /dev/null
+"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