Исправление ошибок запуска Yaxunit и VA тестов - #6
Conversation
build_project.rs: EDT build-export теперь вызывает export --project <path>, а не --project-name. coordinator.rs: для build-export используется отдельный очищаемый workspace build\edt-build-workspace, чтобы не конфликтовать с init workspace. cli_build.rs: обновил ожидание CLI-теста.
- add EDT syntax exception file handling for CLI requests - isolate EDT syntax validation in a clean workspace - document source-set based EDT syntax filtering
- soft-skip trusted happy-path live fixture when platform bundle secrets are absent - keep blocking CI on Linux until Windows test helpers are hardened - stabilize Linux process and CLI output assertions
- add debug tracing around snapshot analysis and filesystem scans - keep directory fsync best-effort on non-Unix platforms
WalkthroughЭта PR реализует систему фильтрации исключений для EDT синтаксиса, переорганизует рабочие пространства EDT для изоляции сборки, переструктурирует аргументы запуска платформы ChangesEDT Exception Filtering System
EDT Build Export Workspace Management
Platform Launch Argument Restructuring
CI Workflow, Configuration и Documentation
Estimated code review effort🎯 4 (Complex) | ⏱️ ~65 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Confirmed on Linux. Same root cause as our independently-filed #7 (now closed as dup):
…rather than the Windows YAxUnit-doesn't-start signature, but both come from the same unrecognized Tested this PR's two-token form on platform 8.3.27.2074 against Result: cv8c parses the argv cleanly, no «Неверные параметры», process reaches the Vanessa side. LGTM from a Linux perspective. |
Дополнение по последнему коммиту Зачем понадобилось изменение: на реальном Диагностика показала расхождение путей: runner выставлял верхнеуровневый Теперь runtime overlay синхронизирует оба поля JUnit на один run-specific каталог. Это сохраняет отчет внутри artifacts конкретного запуска и позволяет runner корректно разобрать JUnit после успешного завершения VA. Проверено |
Дополнение по последнему коммиту Что изменилось:
Зачем это понадобилось: Теперь свежая конфигурация получает рабочие VA defaults сразу при setup, а полный BDD-прогон не обрезается старым глобальным 5-минутным лимитом. Проверено:
|
Дополнение по последнему коммиту Что изменилось:
Зачем это понадобилось: Проверено:
|
Independent confirmation of the Windows-side bug and the fix approach on a real-world configuration. Environment: Windows 11, platform 8.3.27.2214, release binary v0.5.1, large legacy configuration (UT 10.3, ~30k source files, file infobase, YAxUnit 25.04 engine loaded as extension). Symptom reproduced with the v0.5.1 release binary: Captured child command line (via
Control experiment: launching Fix verified: rebuilt v0.5.1 with Both forms (glued single token and the two-token split from this PR) are accepted by the 8.3.27 Windows parser. Would be great to see this merged and released — on Windows every |
Actionable comments posted: 3 🤖 Prompt for all review comments with AI agents🪄 Autofix (Beta)Fix all unresolved CodeRabbit comments on this PR:
ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (22)
|
🧹 Nitpick comments (1)
🤖 Prompt for all review comments with AI agentsℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
|
Actionable comments posted: 2 🤖 Prompt for all review comments with AI agents🪄 Autofix (Beta)Fix all unresolved CodeRabbit comments on this PR:
ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (7)
✅ Files skipped from review due to trivial changes (3)
|
Исправьте относительную ссылку на workflow. На Line 5 путь Предлагаемое исправление-Начиная с `2026-04-22`, source of truth для real-env happy-path является GitHub Actions workflow [`ci.yml`](../.github/workflows/ci.yml), а локальные скрипты в `scripts/test/*` остаются helper/entrypoint-слоем для этого workflow.
+Начиная с `2026-04-22`, source of truth для real-env happy-path является GitHub Actions workflow [`ci.yml`](../../.github/workflows/ci.yml), а локальные скрипты в `scripts/test/*` остаются helper/entrypoint-слоем для этого workflow.📝 Committable suggestion
🤖 Prompt for AI Agents |
Избегайте общего Сейчас используется один фиксированный каталог, который каждый запуск очищает через 💡 Предлагаемое исправление fn prepare_edt_syntax_workspace(work_path: &Path) -> std::io::Result<PathBuf> {
- let workspace = work_path.join("edt-syntax-workspace");
- clean_dir(&workspace)?;
- std::fs::create_dir_all(&workspace)?;
- Ok(workspace)
+ let root = work_path.join("edt-syntax-workspace");
+ std::fs::create_dir_all(&root)?;
+ let workspace = root.join(format!(
+ "run-{}-{}",
+ std::process::id(),
+ LOG_SEQUENCE.fetch_add(1, Ordering::Relaxed)
+ ));
+ clean_dir(&workspace)?;
+ std::fs::create_dir_all(&workspace)?;
+ Ok(workspace)
}🤖 Prompt for AI Agents |
Усилите проверку аргумента На Line 679 проверяется только факт наличия 💡 Предлагаемое изменение- assert!(edt_calls.contains("export --project "));
+ let expected_project = config_path
+ .parent()
+ .expect("workspace dir")
+ .join("project")
+ .join("configuration");
+ assert!(edt_calls.contains(&format!(
+ "export --project {}",
+ expected_project.display()
+ )));🤖 Prompt for AI Agents |
Критическая проблема кросс-платформенной совместимости: пути с обратными слешами Windows не работают на Unix. Константы Проблема:
Решение: Используйте прямые слеши 🔧 Предлагаемое исправление-const DEFAULT_VANESSA_VA_FIELDS: &str = " va:\n params_path: 'tools\\VAParams.json'\n profile: 'all'\n timeouts:\n total_ms: 3600000\n profiles:\n all:\n feature_path: 'features'\n ignore_tags:\n - 'IgnoreOnCIMainBuild'\n";
-const DEFAULT_VANESSA_TESTS_FIELDS: &str = " execution_timeout_seconds: 3600\n va:\n params_path: 'tools\\VAParams.json'\n profile: 'all'\n timeouts:\n total_ms: 3600000\n profiles:\n all:\n feature_path: 'features'\n ignore_tags:\n - 'IgnoreOnCIMainBuild'\n";
-const DEFAULT_VANESSA_TESTS_CONFIG: &str = "tests:\n execution_timeout_seconds: 3600\n va:\n params_path: 'tools\\VAParams.json'\n profile: 'all'\n timeouts:\n total_ms: 3600000\n profiles:\n all:\n feature_path: 'features'\n ignore_tags:\n - 'IgnoreOnCIMainBuild'\n";
+const DEFAULT_VANESSA_VA_FIELDS: &str = " va:\n params_path: 'tools/VAParams.json'\n profile: 'all'\n timeouts:\n total_ms: 3600000\n profiles:\n all:\n feature_path: 'features'\n ignore_tags:\n - 'IgnoreOnCIMainBuild'\n";
+const DEFAULT_VANESSA_TESTS_FIELDS: &str = " execution_timeout_seconds: 3600\n va:\n params_path: 'tools/VAParams.json'\n profile: 'all'\n timeouts:\n total_ms: 3600000\n profiles:\n all:\n feature_path: 'features'\n ignore_tags:\n - 'IgnoreOnCIMainBuild'\n";
+const DEFAULT_VANESSA_TESTS_CONFIG: &str = "tests:\n execution_timeout_seconds: 3600\n va:\n params_path: 'tools/VAParams.json'\n profile: 'all'\n timeouts:\n total_ms: 3600000\n profiles:\n all:\n feature_path: 'features'\n ignore_tags:\n - 'IgnoreOnCIMainBuild'\n";📝 Committable suggestion
🤖 Prompt for AI Agents |
Обновите утверждения теста после исправления разделителей путей. Эти утверждения проверяют путь с обратными слешами Windows ( 🔧 Ожидаемое исправление (после исправления констант)- assert!(config.contains(" params_path: 'tools\\VAParams.json'"));
+ assert!(config.contains(" params_path: 'tools/VAParams.json'"));🤖 Prompt for AI Agents |
Кратко
/Cпри запуске 1С Enterprise./C"RunUnitTests=..."теперь передаются два аргумента:/CиRunUnitTests=....launch mcp.Причина
На Windows
std::process::Commandэкранировал кавычки внутри аргумента/C"...".В результате 1С получала в raw command line не ожидаемый параметр
/C RunUnitTests=..., а строку с экранированными кавычками. Из-за этого 1C запускалась, но YAxUnit не перехватывал старт и тесты не начинались.Что изменено
/Cтеперь передаётся отдельным argv-аргументом после/C./C"<payload>".Дополнение: Vanessa JUnit reports
test varuntimeVAParamsтеперь синхронизирует оба поддерживаемых пути JUnit-отчета: верхнеуровневыйКаталогВыгрузкиJUnitи вложенныйОтчетJUnit.КаталогВыгрузкиJUnit.junit.Зачем это понадобилось
На реальном прогоне Vanessa Automation сценарии завершались успешно (
Ошибок не было,va-status.log = 0), ноv8-runnerпадал на этапеparse JUnit reportсJUnit report was not produced. Причина оказалась в том, что текущая VA использовала вложенныйОтчетJUnit.КаталогВыгрузкиJUnitиз шаблона и писалаjunit.xmlвbuild/out/junit, а runner ожидал отчет внутриbuild/temp/<profile>/runs/<run-id>/junit.Синхронизация обоих полей делает тестовый запуск самодостаточным: отчет остается в retained run artifacts, и runner может разобрать его без зависимости от статического каталога шаблона VAParams.
Дополнение: VA setup defaults
config initтеперь генерирует верхнеуровневыйexecution_timeout: 3600000с комментарием о миллисекундах.tools download vanessaтеперь дополняет primary config дефолтным блокомtests/tests.va, если он ещё не настроен.tests.execution_timeout_seconds: 3600,tests.va.timeouts.total_ms: 3600000, профильall, каталогfeaturesи исключение тегаIgnoreOnCIMainBuild.Зачем это понадобилось
Ручная настройка VA после
config init/tools download vanessaбыла неполной:test vaтребовалtests.va.profile,tests.va.params_pathи профиль сfeature_path, а общийexecution_timeout: 300000обрезал длинные BDD-прогоны примерно через 5 минут даже при более длинных test timeout. Новые дефолты делают свежую конфигурацию пригодной для полного VA-прогона без ручного восстановления обязательных полей и без раннего внешнего timeout.Дополнение: Windows path normalization for config init
config initтеперь выводит относительные пути source-set в YAML как логические/-пути независимо от Windows-разделителей.ConfigInitResultочищаются от Windows verbatim-префикса\\?\, чтобы result output был стабильным.Зачем это понадобилось
Расширенная проверка
config_initвыявила Windows-специфичную проблему нормализации путей: часть YAML/result output зависела от платформенного формата путей. Это исправлено отдельным коммитом, иcargo test config_initтеперь проходит полностью.Summary by CodeRabbit
--exception-fileдля фильтрации ошибок EDT синтаксиса.--projectдля выбораsource-setв командах EDT.launch mcp(разделение аргументов после/C).execution_timeoutдо3600000мс; для Vanessa дополнены дефолтные поляtests/va.ubuntu-latest; Windows переведён в план/неблокирующий режим.