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

Yaxunit #94

Closed
wants to merge 5 commits into from
Closed

Yaxunit #94

wants to merge 5 commits into from

Conversation

kuzja086
Copy link
Contributor

#89 Пока черновой вариант, все топорно и костыльно. Хочу сверить концепцию и уточнить некоторые моменты.
Пока остановился на том, что тесты запускаются и отображаются в панельке junit в jenkins на моей машине=) . Дальше буду рефакторить.

  1. Сейчас захардкорил скачивание расширения yaxunit. Было несколько идей таких как:
  • Скачивать готовое последнее расширение с релизов гитхаба; (Кажется наиболее распространенным)
  • Скачивать определенную версию с релизов гитхаба;
  • Скачивать исходники и собирать из исходников расширение;
  • Может у кого-то тесты будут сразу в расширении yaxunit или ядро будет доработано и оно будет лежать в одном репо с проектом.
    Как лучше?
  1. В какой момент загружать yaxunit и тесты? вроде логично загружать при инициализации базы, прописав дополнительные шаги. А вроде логично уже на этапе тестов все загрузить и запустить (всякие принципы единственности ответственности и т.п.). Пока остановился на втором варианте.
  2. Путь для сохранения отчета в junit указывается в конфиг файле, который передается при запуске 1с. Но т.к. агенты могут запускаться как под линукс так и под виндой, то не понятно какой путь указать. Переопределить путь через параметры запуска нельзя, нужно доработать yaxunit.
    Пока решил остановится на варианте, что конфиг надо собрать динамически, но почему-то не получается сохранить файл, выдает ошибки (нет файла, нет параметров, нет прав) ЧТЯДНТ? Поэтому пока захардкодил конфиг с агентом под виндой. И, как я понимаю, если так делать, то лучше вынести работу с конфигом в отдельный класс?

@nixel2007 nixel2007 requested review from nixel2007 and igostv January 30, 2023 19:01
@nixel2007
Copy link
Member

Спасибо большое, погляжу

@kuzja086
Copy link
Contributor Author

kuzja086 commented Feb 8, 2023

@nixel2007 Не получилось посмотреть? 😊

@nixel2007
Copy link
Member

Только из отпуска вышел. Обязательно доберусь на днях.

expression { config.stageFlags.yaxunit }
}
steps {
timeout(time: config.timeoutOptions.smoke, unit: TimeUnit.MINUTES) {
Copy link
Contributor

Choose a reason for hiding this comment

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

вот тут должно быть .yaxunit

@ovcharenko-di
Copy link
Contributor

@kuzja086 планируешь доделать? я бы воспользовался

По п.2 лично я поддерживаю твое решение грузить расширение прямо в стейдже, потому что сейчас подключенное расширение YAXUnit может приводить к ошибкам при "обычной" работе, соответственно, оно может мешать bdd и дымовым тестам.

Думаю, что надо поддержать в библиотеке самый "правильный" способ, когда исходники тестов лежат в том же репозитории, что и основная конфигурация, поэтому надо добавить для стейджа 2 параметра:

  • cfe - ссылка на cfe (либо оф.релиз на GH, либо ссылка на свою версию)
  • extensionName - (необязательный параметр) имя расширения с тестами (или путь?), которое нужно собрать и подключить. если параметр не указан, то считаем, что тесты находятся прямо внутри cfe

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

@nixel2007 есть мысли?

@kuzja086
Copy link
Contributor Author

@ovcharenko-di Да, планирую закончить. Сейчас жду обратной связи от @nixel2007 😊
Идея с параметрами стейджа мне нравится, например если cfe не заполнен, то качаем из оф. Репо на GH и testPath относительный путь к исходникам расширения с тестами. Если не заполнен, то значит предполагаем, что тесты в ядре.

Есть идеи как быть с путем к отчету junit? На мой взгляд лучше доработать Yaxunit, чтобы через параметры запуска можно было переопределять его. Может еще варианты есть ?

@ovcharenko-di
Copy link
Contributor

@kuzja086 по поводу пути к отчету junit: я считаю, что в библиотеке путь к отчету junit можно просто захардкодить, как это сделано сейчас для шагов bdd и smokeTest. Тогда ожидается, что пользователь библиотеки сам предоставит конфиг, в котором будет указан именно этот путь.

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

@ovcharenko-di
Copy link
Contributor

@kuzja086 я в твоем форке создал PR!

* add params

* rewrite and add params

* fix options merge

* fix command

* switch to ArrayList

* fix junit reports

* fix yaxunit config

* fix yaxunit config

* fix yaxunit config paths

* add allure

* fix allure

* fix public

* fix static

* copy allure

* publish options

* schema upd
@kuzja086 kuzja086 marked this pull request as ready for review July 6, 2023 18:40
@kuzja086
Copy link
Contributor Author

kuzja086 commented Jul 6, 2023

@nixel2007 мы готовы))

@ovcharenko-di
Copy link
Contributor

@nixel2007 вот теперь точно готовы)

for (extCommand in extCommandsWithSettings) {
VRunner.exec(extCommand, true)
}
VRunner.exec(runTestsCommand, true)
Copy link
Contributor

Choose a reason for hiding this comment

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

вот эту команду я специально оставил отдельно, т.к. потом вокруг нее надо будет coverage start и coverage stop делать (в экспериментальной ветке уже сделано и работает)

}

// Команда компиляции в cfe
def compileExtCommand = "$vrunnerPath compileexttocfe --src ./src/cfe/$extension --out build/out/${extension}.cfe"
Copy link
Member

Choose a reason for hiding this comment

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

кажется, путь src/cfe захардкожен. не надо ли его разрешать относительно srcDir в конфиге?

Copy link
Member

Choose a reason for hiding this comment

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

или в списке расширений в конфиге хранить не список имен, а пары имя,путь


// Готовим конфиг для yaxunit
String yaxunitConfigPath = options.configPath
File yaxunitConfigFile = new File("$env.WORKSPACE/$yaxunitConfigPath")
Copy link
Member

Choose a reason for hiding this comment

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

Запретный new File

def defaultYaxunitConfig = steps.libraryResource DEFAULT_YAXUNIT_CONFIGURATION_RESOURCE
yaxunitConfigFile.write defaultYaxunitConfig
}
def yaxunitConfig = yaxunitConfigFile.getCanonicalPath()
Copy link
Member

Choose a reason for hiding this comment

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

canonicalPath тоже рухнет

File yaxunitConfigFile = new File("$env.WORKSPACE/$yaxunitConfigPath")
if (!steps.fileExists(yaxunitConfigPath)) {
def defaultYaxunitConfig = steps.libraryResource DEFAULT_YAXUNIT_CONFIGURATION_RESOURCE
yaxunitConfigFile.write defaultYaxunitConfig
Copy link
Member

Choose a reason for hiding this comment

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

я не уверен, что на это всегда будут права. тем более от File. скорее всего надо переписать на steps.writeFile

@@ -219,6 +219,23 @@ void call() {
}
}
}

stage('Юнит тесты') {
Copy link
Member

Choose a reason for hiding this comment

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

Предлагаю таки переименовать в Yaxunit здесь и в описании конфига

@ovcharenko-di
Copy link
Contributor

@nixel2007 посмотри, плз

вроде все отработал, получилось даже избавиться от одного параметра в конфиге

@nixel2007
Copy link
Member

Superseded by #114

@nixel2007 nixel2007 closed this May 8, 2024
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.

4 participants