Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Многострочные строковые литералы и исправление тестирования #11

Merged
merged 5 commits into from
Jan 30, 2025

Conversation

sfaqer
Copy link
Member

@sfaqer sfaqer commented Jan 30, 2025

  1. Теперь тесты вновь запускаются
  2. Поднята зависимость от декоратора
  3. Теперь в описаниях команд\опций\аргументов можно использовать многострочные строковые литералы

2. Поднята зависимость от декоратора
3. Теперь в описаниях команд\опций\аргументов можно использовать многострочные строковые литералы
Copy link

coderabbitai bot commented Jan 30, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Обновление включает в себя несколько изменений в проекте autumn-cli. Версия пакета увеличена до 1.1.0, обновлена версия среды до 1.9.2 и зависимость от пакета autumn до версии 4.3.7. Также обновлена зависимость от пакета decorator до версии 2.0.2. В коде декоратора команд улучшена обработка многострочных описаний. Из тестового скрипта удалена функция выполнения BDD-тестов, добавлены новые тестовые классы и исправлена опечатка в имени процедуры. Также был добавлен новый скрипт для управления покрытием кода в Windows. Удален файл package-loader.os.

Changes

Файл Изменения
packagedef - Версия пакета обновлена с 1.0.6 до 1.1.0
- Версия среды обновлена с 1.8.3 до 1.9.2
- Зависимость от autumn обновлена с 3.3.0 до 4.3.7
- Зависимость от decorator обновлена с 1.5.2 до 2.0.2
- Удален файл package-loader.os
src/Классы/ИКС_ДекораторКоманд.os Улучшена обработка многострочных описаний в процедуре РазвернутьОписаниеАннотацииПолей
tasks/coverage.os Добавлен новый скрипт для управления покрытием кода в Windows
tasks/test.os Удалена функция ПрогнатьФичи(), упрощена логика тестирования
tests/alltests.os Добавлена новая тестовая процедура КомандаСМногострочнымиОписаниями()
tests/Классы/ДубЛегасиКоманды.os Исправлена опечатка в имени процедуры ПриСозданииОбъекета() на ПриСозданииОбъекта()
tests/Классы/КомандаСАргументомИФлагом.os Добавлен новый флаг "install i" для установки версии
tests/Классы/КомандаСМногострочнымиОписаниями.os Добавлена команда с многострочными описаниями

Possibly related PRs

Suggested reviewers

  • Nivanchenko

Poem

🐰 В мире кода, где строки танцуют,
Декоратор команд веселится, ликует!
Многострочность – теперь его стиль,
Описания стали как яркий фонарь.
Осень CLI – магия в каждой строке! 🍂


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bea4506 and 47eaa31.

📒 Files selected for processing (1)
  • packagedef (1 hunks)

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

2. Отказ от кастомного загрузчика библиотеки
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (4)
tasks/test.os (1)

39-39: Проверка статуса тестов.
Отсутствие детальной обработки ошибок BDD оставляет только общий результат тестирования. Убедитесь, что это не влияет на выявление специфических ошибок.

tasks/coverage.os (2)

8-9: Используйте более надежный способ работы с путями.

Текущая реализация может быть улучшена использованием встроенных методов для работы с путями.

Предлагаю следующие изменения:

-ФС.ОбеспечитьПустойКаталог(ОбъединитьПути("out", "coverage"));
-ПутьКСтат = "out/coverage/stat.json";
+ПутьККаталогу = ОбъединитьПути(ТекущийКаталог(), "out", "coverage");
+ФС.ОбеспечитьПустойКаталог(ПутьККаталогу);
+ПутьКСтат = ОбъединитьПути(ПутьККаталогу, "stat.json");

34-34: Добавьте обработку кодов возврата.

Текущая реализация просто передает код возврата, но было бы полезно добавить логирование или обработку ошибок.

Предлагаю следующие изменения:

-ЗавершитьРаботу(КодВозврата);
+Если КодВозврата <> 0 Тогда
+    ВызватьИсключение СтрШаблон("Выполнение тестов завершилось с ошибкой. Код возврата: %1", КодВозврата);
+КонецЕсли;
+
+ЗавершитьРаботу(КодВозврата);
src/Классы/ИКС_ДекораторКоманд.os (1)

131-133: Добавьте проверку на пустое описание.

Текущая реализация не проверяет случай, когда описание может быть пустым или равным Неопределено.

Предлагаю следующие изменения:

+Если Описание = Неопределено ИЛИ ПустаяСтрока(Описание) Тогда
+    Возврат;
+КонецЕсли;
+
 Если СтрЧислоСтрок(Описание) > 1 Тогда
     Описание = СтрЗаменить(Описание, Символы.ПС, Символы.ПС + "|");
 КонецЕсли;
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 68cf932 and 84d49d3.

⛔ Files ignored due to path filters (1)
  • .github/workflows/test.yml is excluded by !**/*.yml
📒 Files selected for processing (8)
  • packagedef (1 hunks)
  • src/Классы/ИКС_ДекораторКоманд.os (1 hunks)
  • tasks/coverage.os (1 hunks)
  • tasks/test.os (3 hunks)
  • tests/alltests.os (1 hunks)
  • tests/Классы/ДубЛегасиКоманды.os (1 hunks)
  • tests/Классы/КомандаСАргументомИФлагом.os (1 hunks)
  • tests/Классы/КомандаСМногострочнымиОписаниями.os (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • tests/Классы/ДубЛегасиКоманды.os
🧰 Additional context used
🪛 GitHub Actions: Тестирование
tests/alltests.os

[error] 8-498: All 20 tests failed due to initialization error in Поделка.os

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: test (dev) / build (windows-latest, dev)
  • GitHub Check: test (default) / build (ubuntu-latest, default)
🔇 Additional comments (11)
tasks/test.os (2)

10-10: Уточните необходимость BDD-тестов.
Удаление логики для BDD может привести к потере части покрываемых сценариев. Если это намеренное решение, убедитесь, что все важные сценарии теперь покрываются другими тестами.


23-23: Выглядит корректно.
Завершение процедуры на данном этапе не вызывает вопросов. Функция упрощена и понятна.

tests/Классы/КомандаСМногострочнымиОписаниями.os (5)

1-10: Многострочные описания аргумента.
Реализация с использованием многострочных строковых литералов улучшает читаемость и наглядность аргумента "ARG". Отличная идея для расширенной документации.


11-20: Опция с многострочным описанием.
Аналогичное улучшение, позволяющее подробнее описать параметры запуска. Хорошая практика для CLI-инструментов.


23-29: Команда с многострочным описанием.
Расширенное описание упрощает понимание назначения команды. Убедитесь, что подобные описания корректно выводятся на всех платформах и в справке.


30-32: Инициализация массива результата.
Объявление массива внутри процедуры упрощает логику хранения и обратной передачи значений, что способствует лучшей модульности.


34-39: Формирование итогового результата.
Добавление аргумента и опции в массив даёт понятную структуру данных для последующей обработки. Логика выглядит целостной и расширяемой.

packagedef (3)

8-8: Обновление версии пакета.
Переход на версию «1.0.7» логичен при внесении функциональных обновлений, включая поддержку многострочных описаний команд.


12-12: Версия среды 1.9.2.
Убедитесь, что в остальных компонентах проекта учтены возможные изменения и совместимость с новой версией среды.


16-16: Обновление зависимости «decorator» до 2.0.2.
Проверьте, нет ли критических изменений, влияющих на предыдущие вызовы декораторов. Рекомендуется перезапустить тесты с расширенными сценариями.

tests/Классы/КомандаСАргументомИФлагом.os (1)

7-10: Корректное объявление флага установки!

Флаг ВыполнятьУстановкуПриНеобходимости правильно определен с использованием всех необходимых атрибутов:

  • Корректное значение по умолчанию
  • Привязка к переменной окружения
  • Согласованность с общей архитектурой команды

tests/alltests.os Show resolved Hide resolved
tests/alltests.os Outdated Show resolved Hide resolved
ТелоМетода.Добавить(
СтрШаблон(
Шаблон,
РаботаСАннотациями.ПолучитьЗначениеПараметраАннотации(Аннотация, "Имя"),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В отдельную переменную бы

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.)

tasks/test.os Outdated
@@ -8,7 +7,7 @@
Тестер.УстановитьФорматЛогФайла(Тестер.ФорматыЛогФайла().GenericExec);

ПутьКТестам = "tests";
ПутьКОтчетуJUnit = "out";
ПутьКОтчетуJUnit = ОбъединитьПути("out", "testsResults");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А вот это зачем? Оно сонару не помешает?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Копипаста, Fixed.)

packagedef Outdated Show resolved Hide resolved
@nixel2007 nixel2007 merged commit 23cf6ba into master Jan 30, 2025
12 checks passed
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
tasks/test.os (1)

Line range hint 27-38: Рекомендуется улучшить обработку ошибок.

Текущая реализация обработки ошибок может быть улучшена:

  1. Добавьте более подробную информацию о типе ошибки
  2. Рассмотрите возможность логирования ошибок для последующего анализа

Предлагаемые изменения:

 Попытка
 	ТестыПрошли = ПрогнатьТесты();
 Исключение
 	ТестыПрошли = Ложь;
-	Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно
-	|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
+	ИнфоОбОшибке = ИнформацияОбОшибке();
+	ТекстОшибки = СтрШаблон(
+		"Тесты через 1testrunner выполнены неудачно:
+		|Описание: %1
+		|Модуль: %2
+		|Строка: %3
+		|Подробно: %4",
+		ИнфоОбОшибке.Описание,
+		ИнфоОбОшибке.ИмяМодуля,
+		ИнфоОбОшибке.НомерСтроки,
+		ПодробноеПредставлениеОшибки(ИнфоОбОшибке)
+	);
+	Сообщить(ТекстОшибки);
 КонецПопытки;
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8ef1d53 and bea4506.

📒 Files selected for processing (4)
  • src/Классы/ИКС_ДекораторКоманд.os (1 hunks)
  • tasks/test.os (2 hunks)
  • tests/alltests.os (1 hunks)
  • tests/Классы/КомандаСМногострочнымиОписаниями.os (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • tests/alltests.os
  • tests/Классы/КомандаСМногострочнымиОписаниями.os
  • src/Классы/ИКС_ДекораторКоманд.os
⏰ Context from checks skipped due to timeout of 90000ms (6)
  • GitHub Check: test (default) / build (ubuntu-latest, default)
  • GitHub Check: test (dev) / build (windows-latest, dev)
  • GitHub Check: test (dev) / build (ubuntu-latest, dev)
  • GitHub Check: test (lts-dev) / build (ubuntu-latest, lts-dev)
  • GitHub Check: test (lts-dev) / build (ubuntu-latest, lts-dev)
  • GitHub Check: test (default) / build (ubuntu-latest, default)
🔇 Additional comments (2)
tasks/test.os (2)

23-23: Хорошая практика добавления завершающего комментария функции!

Добавление завершающего комментария улучшает читаемость кода, особенно в больших функциях.


39-44: Проверьте влияние удаления BDD тестов на покрытие кода.

После удаления функциональности BDD тестов (ПрогнатьФичи) и упрощения обработки ошибок, необходимо убедиться, что все критические сценарии по-прежнему покрыты оставшимися тестами.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants