diff --git a/tests/skills/cases/cf-init/_skill.json b/tests/skills/cases/cf-init/_skill.json
new file mode 100644
index 00000000..83c5b86e
--- /dev/null
+++ b/tests/skills/cases/cf-init/_skill.json
@@ -0,0 +1,12 @@
+{
+ "script": "cf-init/scripts/cf-init",
+ "setup": "none",
+ "args": [
+ { "flag": "-Name", "from": "case.name" },
+ { "flag": "-OutputDir", "from": "workDir" }
+ ],
+ "snapshot": {
+ "root": "workDir",
+ "normalizeUuids": true
+ }
+}
diff --git a/tests/skills/cases/cf-init/basic.json b/tests/skills/cases/cf-init/basic.json
new file mode 100644
index 00000000..bfc9218c
--- /dev/null
+++ b/tests/skills/cases/cf-init/basic.json
@@ -0,0 +1,7 @@
+{
+ "name": "Пустая конфигурация",
+ "params": { "name": "ТестоваяКонфигурация" },
+ "expect": {
+ "files": ["Configuration.xml", "Languages/Русский.xml"]
+ }
+}
diff --git a/tests/skills/cases/cf-init/error-already-exists.json b/tests/skills/cases/cf-init/error-already-exists.json
new file mode 100644
index 00000000..4d42d10e
--- /dev/null
+++ b/tests/skills/cases/cf-init/error-already-exists.json
@@ -0,0 +1,6 @@
+{
+ "name": "Ошибка: Configuration.xml уже существует",
+ "setup": "empty-config",
+ "params": { "name": "Дубль" },
+ "expectError": true
+}
diff --git a/tests/skills/cases/cf-init/snapshots/basic/Configuration.xml b/tests/skills/cases/cf-init/snapshots/basic/Configuration.xml
new file mode 100644
index 00000000..f600bebf
--- /dev/null
+++ b/tests/skills/cases/cf-init/snapshots/basic/Configuration.xml
@@ -0,0 +1,251 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+ UUID-014
+ UUID-015
+
+
+
+ ТестоваяКонфигурация
+
+
+ ru
+ ТестоваяКонфигурация
+
+
+
+
+ Version8_3_24
+ ManagedApplication
+
+ PlatformApplication
+
+ Russian
+
+
+
+
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Biometrics
+ true
+
+
+ Location
+ false
+
+
+ BackgroundLocation
+ false
+
+
+ BluetoothPrinters
+ false
+
+
+ WiFiPrinters
+ false
+
+
+ Contacts
+ false
+
+
+ Calendars
+ false
+
+
+ PushNotifications
+ false
+
+
+ LocalNotifications
+ false
+
+
+ InAppPurchases
+ false
+
+
+ PersonalComputerFileExchange
+ false
+
+
+ Ads
+ false
+
+
+ NumberDialing
+ false
+
+
+ CallProcessing
+ false
+
+
+ CallLog
+ false
+
+
+ AutoSendSMS
+ false
+
+
+ ReceiveSMS
+ false
+
+
+ SMSLog
+ false
+
+
+ Camera
+ false
+
+
+ Microphone
+ false
+
+
+ MusicLibrary
+ false
+
+
+ PictureAndVideoLibraries
+ false
+
+
+ AudioPlaybackAndVibration
+ false
+
+
+ BackgroundAudioPlaybackAndVibration
+ false
+
+
+ InstallPackages
+ false
+
+
+ OSBackup
+ true
+
+
+ ApplicationUsageStatistics
+ false
+
+
+ BarcodeScanning
+ false
+
+
+ BackgroundAudioRecording
+ false
+
+
+ AllFilesAccess
+ false
+
+
+ Videoconferences
+ false
+
+
+ NFC
+ false
+
+
+ DocumentScanning
+ false
+
+
+ SpeechToText
+ false
+
+
+ Geofences
+ false
+
+
+ IncomingShareRequests
+ false
+
+
+ AllIncomingShareRequestsTypesProcessing
+ false
+
+
+
+
+
+ Normal
+
+
+ Language.Русский
+
+
+
+
+
+ Managed
+ NotAutoFree
+ DontUse
+ DontUse
+ Taxi
+ DontUse
+ Version8_3_24
+
+
+
+ Русский
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/cf-init/snapshots/basic/Languages/Русский.xml b/tests/skills/cases/cf-init/snapshots/basic/Languages/Русский.xml
new file mode 100644
index 00000000..37c60d78
--- /dev/null
+++ b/tests/skills/cases/cf-init/snapshots/basic/Languages/Русский.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Русский
+
+
+ ru
+ Русский
+
+
+
+ ru
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/cf-init/snapshots/with-vendor/Configuration.xml b/tests/skills/cases/cf-init/snapshots/with-vendor/Configuration.xml
new file mode 100644
index 00000000..2535d048
--- /dev/null
+++ b/tests/skills/cases/cf-init/snapshots/with-vendor/Configuration.xml
@@ -0,0 +1,251 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+ UUID-014
+ UUID-015
+
+
+
+ Бухгалтерия
+
+
+ ru
+ Бухгалтерия
+
+
+
+
+ Version8_3_24
+ ManagedApplication
+
+ PlatformApplication
+
+ Russian
+
+ Тест
+ 2.0.1
+
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Biometrics
+ true
+
+
+ Location
+ false
+
+
+ BackgroundLocation
+ false
+
+
+ BluetoothPrinters
+ false
+
+
+ WiFiPrinters
+ false
+
+
+ Contacts
+ false
+
+
+ Calendars
+ false
+
+
+ PushNotifications
+ false
+
+
+ LocalNotifications
+ false
+
+
+ InAppPurchases
+ false
+
+
+ PersonalComputerFileExchange
+ false
+
+
+ Ads
+ false
+
+
+ NumberDialing
+ false
+
+
+ CallProcessing
+ false
+
+
+ CallLog
+ false
+
+
+ AutoSendSMS
+ false
+
+
+ ReceiveSMS
+ false
+
+
+ SMSLog
+ false
+
+
+ Camera
+ false
+
+
+ Microphone
+ false
+
+
+ MusicLibrary
+ false
+
+
+ PictureAndVideoLibraries
+ false
+
+
+ AudioPlaybackAndVibration
+ false
+
+
+ BackgroundAudioPlaybackAndVibration
+ false
+
+
+ InstallPackages
+ false
+
+
+ OSBackup
+ true
+
+
+ ApplicationUsageStatistics
+ false
+
+
+ BarcodeScanning
+ false
+
+
+ BackgroundAudioRecording
+ false
+
+
+ AllFilesAccess
+ false
+
+
+ Videoconferences
+ false
+
+
+ NFC
+ false
+
+
+ DocumentScanning
+ false
+
+
+ SpeechToText
+ false
+
+
+ Geofences
+ false
+
+
+ IncomingShareRequests
+ false
+
+
+ AllIncomingShareRequestsTypesProcessing
+ false
+
+
+
+
+
+ Normal
+
+
+ Language.Русский
+
+
+
+
+
+ Managed
+ NotAutoFree
+ DontUse
+ DontUse
+ Taxi
+ DontUse
+ Version8_3_24
+
+
+
+ Русский
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/cf-init/snapshots/with-vendor/Languages/Русский.xml b/tests/skills/cases/cf-init/snapshots/with-vendor/Languages/Русский.xml
new file mode 100644
index 00000000..37c60d78
--- /dev/null
+++ b/tests/skills/cases/cf-init/snapshots/with-vendor/Languages/Русский.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Русский
+
+
+ ru
+ Русский
+
+
+
+ ru
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/cf-init/with-vendor.json b/tests/skills/cases/cf-init/with-vendor.json
new file mode 100644
index 00000000..a8136a32
--- /dev/null
+++ b/tests/skills/cases/cf-init/with-vendor.json
@@ -0,0 +1,9 @@
+{
+ "name": "Конфигурация с поставщиком и версией",
+ "params": { "name": "Бухгалтерия" },
+ "args_extra": ["-Vendor", "Тест", "-Version", "2.0.1"],
+ "expect": {
+ "files": ["Configuration.xml", "Languages/Русский.xml"],
+ "stdoutContains": "Бухгалтерия"
+ }
+}
diff --git a/tests/skills/runner.mjs b/tests/skills/runner.mjs
index efbfa8a5..e4225e51 100644
--- a/tests/skills/runner.mjs
+++ b/tests/skills/runner.mjs
@@ -185,7 +185,7 @@ function buildArgs(skillConfig, caseData, workDir, inputFilePath, runtime) {
default:
if (mapping.from.startsWith('case.')) {
const field = mapping.from.slice(5);
- const val = caseData[field] ?? caseData.params?.[field] ?? '';
+ const val = caseData.params?.[field] ?? caseData[field] ?? '';
args.push(String(val));
} else if (mapping.from === 'literal') {
args.push(mapping.value || '');
@@ -193,6 +193,11 @@ function buildArgs(skillConfig, caseData, workDir, inputFilePath, runtime) {
}
}
+ // Append extra args from case (for optional params like -Vendor, -Version)
+ if (caseData.args_extra) {
+ args.push(...caseData.args_extra);
+ }
+
return { scriptPath, args };
}