diff options
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.js | 85 |
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 |
