From 29899b3a4fd6833244b5d81c17ae83b2e26fb11c Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Fri, 13 Mar 2026 10:41:56 +0100 Subject: [PATCH] CLAS: set WITH_UNIT_TESTS flag --- src/web/create.ts | 43 ++++++++++++++++------------ src/web/test/suite/extension.test.ts | 13 +++++++++ 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/web/create.ts b/src/web/create.ts index e5db9db..743d971 100644 --- a/src/web/create.ts +++ b/src/web/create.ts @@ -105,17 +105,10 @@ function createAff(key: string) { return ret; } -async function createCLAS(uri: vscode.Uri) { - const name = await vscode.window.showInputBox({ placeHolder: "cl_name" }); - if (name === undefined || name === "") { - return; - } +export function buildClasXml(name: string, withUnitTests: boolean) { + const withUnitTestsXml = withUnitTests ? "\n X" : ""; - const dir = await findFolder(uri); - const filename = name.replace(/\//g, "#").toLowerCase() + ".clas"; - - const uriXML = filename + ".xml"; - const dataXML = ` + return ` @@ -126,11 +119,31 @@ async function createCLAS(uri: vscode.Uri) { 1 X X - X + X${withUnitTestsXml} `; +} + +async function createCLAS(uri: vscode.Uri) { + const name = await vscode.window.showInputBox({ placeHolder: "cl_name" }); + if (name === undefined || name === "") { + return; + } + + const dir = await findFolder(uri); + const filename = name.replace(/\//g, "#").toLowerCase() + ".clas"; + + const createTestClass = await vscode.window.showQuickPick( + [{ label: "yes" }, + { label: "no" }], + { placeHolder: "Add test class include?" } + ); + const withUnitTests = createTestClass?.label === "yes"; + + const uriXML = filename + ".xml"; + const dataXML = buildClasXml(name, withUnitTests); await createFile(dir, uriXML, dataXML); const uriABAP = filename + ".abap"; @@ -143,13 +156,7 @@ CLASS ${name.toLowerCase()} IMPLEMENTATION. ENDCLASS.`; await createFile(dir, uriABAP, dataABAP); - const createTestClass = await vscode.window.showQuickPick( - [{ label: "yes" }, - { label: "no" }], - { placeHolder: "Add test class include?" } - ); - - if (createTestClass?.label === "yes") { + if (withUnitTests) { const uriTestIncl = filename + ".testclasses" + ".abap"; const dataTestIncl = `*"* use this source file for your ABAP unit test classes`; await createFile(dir, uriTestIncl, dataTestIncl); diff --git a/src/web/test/suite/extension.test.ts b/src/web/test/suite/extension.test.ts index 7e022bc..4a2fc36 100644 --- a/src/web/test/suite/extension.test.ts +++ b/src/web/test/suite/extension.test.ts @@ -3,6 +3,7 @@ import * as assert from 'assert'; // You can import and use all API from the 'vscode' module // as well as import your extension to test it import * as vscode from 'vscode'; +import { buildClasXml } from '../../create'; // import * as myExtension from '../../extension'; suite('Web Extension Test Suite', () => { @@ -12,4 +13,16 @@ suite('Web Extension Test Suite', () => { assert.strictEqual(-1, [1, 2, 3].indexOf(5)); assert.strictEqual(-1, [1, 2, 3].indexOf(0)); }); + + test('CLAS XML sets testclasses flag when requested', () => { + const xml = buildClasXml('zcl_demo', true); + + assert.ok(xml.includes('X')); + }); + + test('CLAS XML omits testclasses flag when not requested', () => { + const xml = buildClasXml('zcl_demo', false); + + assert.ok(!xml.includes('X')); + }); });