Исправление ошибок запуска 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
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 |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@spec/acceptance/real-environment-validation.md`:
- Line 5: Update the broken relative link string "../.github/workflows/ci.yml"
in the sentence that starts with "Начиная с `2026-04-22`, source of truth..." to
use two-levels-up path "../../.github/workflows/ci.yml" so the link from
spec/acceptance/real-environment-validation.md correctly points to the workflow
file.
In `@src/use_cases/check_syntax.rs`:
- Around line 832-837: The prepare_edt_syntax_workspace function currently uses
a fixed directory "edt-syntax-workspace" and calls clean_dir(&workspace), which
causes collisions and data loss for concurrent runs; change it to create a
unique per-run workspace (e.g., use tempfile::tempdir_in or append a random/UUID
suffix to work_path.join("edt-syntax-workspace-<unique>")) and stop calling
clean_dir on a shared path—create the new directory with std::fs::create_dir_all
and return its PathBuf so parallel `syntax edt` invocations do not interfere;
update references to prepare_edt_syntax_workspace and remove reliance on
clean_dir for the shared name.
In `@tests/cli_build.rs`:
- Line 679: Усиль проверку в тесте: вместо лишь поиска подстроки "export
--project" убедись, что переменная edt_calls содержит точную команду с ожидаемым
путём проекта (например собрать expected_project_path из используемой в тесте
переменной/функции, которая создаёт временный проект) и проверить через
edt_calls.contains(&expected_project_path) или эквивалентную проверку; обнови
утверждение, ссылаясь на edt_calls и ожидаемую строку (expected_project_path /
ожидаемую команду), чтобы тест падал при неверном пути.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 837939e3-e238-479d-85f2-1fed64250cf4
📒 Files selected for processing (22)
.github/workflows/ci.ymlSKILL/references/project-workflows.mdSKILL/references/testing.mddocs/CAPABILITIES.mddocs/CONFIGURATION.mdscripts/test/README.mdspec/acceptance/real-environment-validation.mdsrc/cli/args.rssrc/cli/execute.rssrc/config/model.rssrc/mcp/edt_syntax.rssrc/mcp/service.rssrc/platform/enterprise.rssrc/platform/interactive.rssrc/use_cases/build_project.rssrc/use_cases/build_project/coordinator.rssrc/use_cases/check_syntax.rssrc/use_cases/launch_app.rssrc/use_cases/request.rstests/cli_build.rstests/cli_launch.rstests/cli_test.rs
| ## Цель | ||
|
|
||
| Начиная с `2026-04-22`, source of truth для real-env happy-path является GitHub Actions workflow [`ci.yml`](../.github/workflows/ci.yml) с matrix на `ubuntu-latest` и `windows-latest`, а локальные скрипты в `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. |
There was a problem hiding this comment.
Исправьте относительную ссылку на workflow.
На Line 5 путь ../.github/workflows/ci.yml выглядит битым для файла в spec/acceptance; нужен переход на два уровня вверх.
Предлагаемое исправление
-Начиная с `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
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Начиная с `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. |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@spec/acceptance/real-environment-validation.md` at line 5, Update the broken
relative link string "../.github/workflows/ci.yml" in the sentence that starts
with "Начиная с `2026-04-22`, source of truth..." to use two-levels-up path
"../../.github/workflows/ci.yml" so the link from
spec/acceptance/real-environment-validation.md correctly points to the workflow
file.
| 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) | ||
| } |
There was a problem hiding this comment.
Избегайте общего edt-syntax-workspace для параллельных запусков
Сейчас используется один фиксированный каталог, который каждый запуск очищает через clean_dir. Параллельные syntax edt могут взаимно удалять рабочие данные и падать непредсказуемо.
💡 Предлагаемое исправление
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
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/use_cases/check_syntax.rs` around lines 832 - 837, The
prepare_edt_syntax_workspace function currently uses a fixed directory
"edt-syntax-workspace" and calls clean_dir(&workspace), which causes collisions
and data loss for concurrent runs; change it to create a unique per-run
workspace (e.g., use tempfile::tempdir_in or append a random/UUID suffix to
work_path.join("edt-syntax-workspace-<unique>")) and stop calling clean_dir on a
shared path—create the new directory with std::fs::create_dir_all and return its
PathBuf so parallel `syntax edt` invocations do not interfere; update references
to prepare_edt_syntax_workspace and remove reliance on clean_dir for the shared
name.
| let ibcmd_calls = fs::read_to_string(ibcmd_calls_log).expect("ibcmd calls"); | ||
| let edt_calls = fs::read_to_string(edt_calls_log).expect("edt calls"); | ||
| assert!(edt_calls.contains("export --project-name configuration")); | ||
| assert!(edt_calls.contains("export --project ")); |
There was a problem hiding this comment.
Усилите проверку аргумента --project точным ожидаемым путём.
На Line 679 проверяется только факт наличия export --project, поэтому тест не ловит случай, когда путь проекта неверный.
💡 Предлагаемое изменение
- 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
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@tests/cli_build.rs` at line 679, Усиль проверку в тесте: вместо лишь поиска
подстроки "export --project" убедись, что переменная edt_calls содержит точную
команду с ожидаемым путём проекта (например собрать expected_project_path из
используемой в тесте переменной/функции, которая создаёт временный проект) и
проверить через edt_calls.contains(&expected_project_path) или эквивалентную
проверку; обнови утверждение, ссылаясь на edt_calls и ожидаемую строку
(expected_project_path / ожидаемую команду), чтобы тест падал при неверном пути.
|
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. Проверено |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/use_cases/vanessa.rs (1)
229-234: ⚡ Quick winДокументируйте причину двойной вставки
КаталогВыгрузкиJUnit.Параметр
КаталогВыгрузкиJUnitвставляется дважды: на верхнем уровне (строка 230-233) и внутри вложенного объектаОтчетJUnit(строка 234). Это выглядит как стратегия обратной совместимости, но без комментария будущие разработчики могут не понять причину дублирования или случайно удалить один из вариантов.Рекомендуется добавить краткий комментарий, поясняющий, что верхний уровень поддерживается для совместимости, а вложенная структура является каноническим расположением.
📝 Предлагаемое дополнение документации
object.insert("ДелатьОтчетВФорматеjUnit".to_owned(), Value::Bool(true)); let junit_dir = Value::String(artifacts.junit_dir.display().to_string()); + // Backward compatibility: keep КаталогВыгрузкиJUnit at top level for older VA versions object.insert( "КаталогВыгрузкиJUnit".to_owned(), junit_dir.clone(), ); + // Canonical location: nested under ОтчетJUnit ensure_object(object, "ОтчетJUnit").insert("КаталогВыгрузкиJUnit".to_owned(), junit_dir);🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/use_cases/vanessa.rs` around lines 229 - 234, The key "КаталогВыгрузкиJUnit" is inserted both at the top level (object.insert(...)) and inside the nested "ОтчетJUnit" object (ensure_object(...).insert(...)); add a concise inline comment above these insertions explaining that the top-level key is kept solely for backward compatibility while the canonical location is inside the "ОтчетJUnit" object, so future maintainers know why both entries exist and should not remove the top-level variant; leave both insert calls (object.insert and ensure_object(...).insert) intact and place the comment near the calls referencing the symbols object, ensure_object, "КаталогВыгрузкиJUnit", and "ОтчетJUnit".
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@src/use_cases/vanessa.rs`:
- Around line 229-234: The key "КаталогВыгрузкиJUnit" is inserted both at the
top level (object.insert(...)) and inside the nested "ОтчетJUnit" object
(ensure_object(...).insert(...)); add a concise inline comment above these
insertions explaining that the top-level key is kept solely for backward
compatibility while the canonical location is inside the "ОтчетJUnit" object, so
future maintainers know why both entries exist and should not remove the
top-level variant; leave both insert calls (object.insert and
ensure_object(...).insert) intact and place the comment near the calls
referencing the symbols object, ensure_object, "КаталогВыгрузкиJUnit", and
"ОтчетJUnit".
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 29d1496f-f931-4f3a-b8a4-db3a2ee1e293
📒 Files selected for processing (2)
src/use_cases/vanessa.rstests/cli_test.rs
🚧 Files skipped from review as they are similar to previous changes (1)
- tests/cli_test.rs
|
Дополнение по последнему коммиту Что изменилось:
Зачем это понадобилось: Теперь свежая конфигурация получает рабочие VA defaults сразу при setup, а полный BDD-прогон не обрезается старым глобальным 5-минутным лимитом. Проверено:
|
|
Дополнение по последнему коммиту Что изменилось:
Зачем это понадобилось: Проверено:
|
- add debug tracing around snapshot analysis and filesystem scans - keep directory fsync best-effort on non-Unix platforms
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/use_cases/tools_download.rs`:
- Around line 34-36: The three constants DEFAULT_VANESSA_VA_FIELDS,
DEFAULT_VANESSA_TESTS_FIELDS, and DEFAULT_VANESSA_TESTS_CONFIG contain
Windows-style path separators (backslashes) in the path 'tools\\VAParams.json',
which causes incorrect path interpretation on Unix systems where the backslash
is treated as a literal character rather than a separator. Replace all
occurrences of the Windows path separator \\ with forward slashes / in these
constants, changing 'tools\\VAParams.json' to 'tools/VAParams.json' in each of
the three constants. Forward slashes are cross-platform compatible and will be
automatically normalized by Rust's PathBuf on all operating systems.
In `@tests/cli_tools_download.rs`:
- Around line 316-321: Update the test assertions in the cli_tools_download.rs
test file to use forward slashes instead of Windows backslashes in the path
checks. Specifically, change the assertion that checks for
`'tools\\VAParams.json'` to use `'tools/VAParams.json'` instead, so that the
test matches the updated path separator format that is being applied to the
constants in src/use_cases/tools_download.rs.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 8b95207f-e673-42bd-8b19-1d4272d07ea0
📒 Files selected for processing (7)
src/change_detection/analyzer.rssrc/change_detection/scanner.rssrc/support/fs.rssrc/use_cases/config_init.rssrc/use_cases/tools_download.rstests/cli_config_init.rstests/cli_tools_download.rs
✅ Files skipped from review due to trivial changes (3)
- src/change_detection/analyzer.rs
- src/change_detection/scanner.rs
- tests/cli_config_init.rs
| 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"; |
There was a problem hiding this comment.
Критическая проблема кросс-платформенной совместимости: пути с обратными слешами Windows не работают на Unix.
Константы DEFAULT_VANESSA_VA_FIELDS, DEFAULT_VANESSA_TESTS_FIELDS и DEFAULT_VANESSA_TESTS_CONFIG содержат путь 'tools\\VAParams.json' с Windows-разделителями. После парсинга YAML этот путь становится строкой tools\VAParams.json.
Проблема:
- На Unix системах
PathBuf::from("tools\VAParams.json")интерпретируется как один компонент имени файла с литеральным символом обратного слеша, а не как путьtools/VAParams.json - Это приведёт к ошибкам валидации и выполнения Vanessa на Linux/macOS
Решение: Используйте прямые слеши /, которые работают на обеих платформах — Rust's PathBuf автоматически нормализует их на Windows.
🔧 Предлагаемое исправление
-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
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 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"; |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/use_cases/tools_download.rs` around lines 34 - 36, The three constants
DEFAULT_VANESSA_VA_FIELDS, DEFAULT_VANESSA_TESTS_FIELDS, and
DEFAULT_VANESSA_TESTS_CONFIG contain Windows-style path separators (backslashes)
in the path 'tools\\VAParams.json', which causes incorrect path interpretation
on Unix systems where the backslash is treated as a literal character rather
than a separator. Replace all occurrences of the Windows path separator \\ with
forward slashes / in these constants, changing 'tools\\VAParams.json' to
'tools/VAParams.json' in each of the three constants. Forward slashes are
cross-platform compatible and will be automatically normalized by Rust's PathBuf
on all operating systems.
| assert!(config.contains("tests:\n execution_timeout_seconds: 3600\n va:")); | ||
| assert!(config.contains(" params_path: 'tools\\VAParams.json'")); | ||
| assert!(config.contains(" profile: 'all'")); | ||
| assert!(config.contains(" total_ms: 3600000")); | ||
| assert!(config.contains(" feature_path: 'features'")); | ||
| assert!(config.contains(" - 'IgnoreOnCIMainBuild'")); |
There was a problem hiding this comment.
Обновите утверждения теста после исправления разделителей путей.
Эти утверждения проверяют путь с обратными слешами Windows ('tools\\VAParams.json'), что соответствует текущей реализации констант. После исправления констант на использование прямых слешей (как отмечено в комментарии к src/use_cases/tools_download.rs), эти утверждения также потребуется обновить.
🔧 Ожидаемое исправление (после исправления констант)
- assert!(config.contains(" params_path: 'tools\\VAParams.json'"));
+ assert!(config.contains(" params_path: 'tools/VAParams.json'"));🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@tests/cli_tools_download.rs` around lines 316 - 321, Update the test
assertions in the cli_tools_download.rs test file to use forward slashes instead
of Windows backslashes in the path checks. Specifically, change the assertion
that checks for `'tools\\VAParams.json'` to use `'tools/VAParams.json'` instead,
so that the test matches the updated path separator format that is being applied
to the constants in src/use_cases/tools_download.rs.
Кратко
/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 переведён в план/неблокирующий режим.