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

Падает прогон тестов через opm test #29

Closed
artbear opened this issue Oct 17, 2017 · 11 comments
Closed

Падает прогон тестов через opm test #29

artbear opened this issue Oct 17, 2017 · 11 comments
Assignees
Milestone

Comments

@artbear
Copy link
Owner

artbear commented Oct 17, 2017

@artbear artbear added this to the 1.2 milestone Oct 17, 2017
@artbear
Copy link
Owner Author

artbear commented Oct 18, 2017

@nixel2007 @EvilBeaver @dmpas Проблема в запуске через opm test

В этом случае сначала opm грузит системные библиотеки, в т.ч. и 1commands, и только потом загружается библиотека из рабочего каталога.

Часть лога package-loader.os,

  • где C:\OneScript\lib - системный каталог пакетов,
  • а C:\projects\1commands - это рабочей каталог разработки
ПриЗагрузкеБиблиотеки C:\OneScript\lib\1commands
класс Команда, файл C:\OneScript\lib\1commands\src\Команда.os
класс КомандныйФайл, файл C:\OneScript\lib\1commands\src\КомандныйФайл.os

ПриЗагрузкеБиблиотеки C:\OneScript\lib\tempfiles
модуль ВременныеФайлы, файл C:\OneScript\lib\tempfiles\ВременныеФайлы.os
класс МенеджерВременныхФайлов, файл C:\OneScript\lib\tempfiles\ВременныеФайлы.os
ПриЗагрузкеБиблиотеки C:\OneScript\lib\fs
ОбработатьСтруктуруКаталоговПоСоглашению
модуль ФС, файл C:\OneScript\lib\fs\Модули\ФС.os

ПриЗагрузкеБиблиотеки C:\projects\1commands
класс Команда, файл C:\projects\1commands\src\Команда.os
класс КомандныйФайл, файл C:\projects\1commands\src\КомандныйФайл.os

ПриЗагрузкеБиблиотеки C:\OneScript\lib\1bdd

2 последних библиотеки загружаются, т.к. в test.os прописано

#Использовать ".."
#Использовать 1bdd

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

Если же прогонять тесты без участия opm, напрямую через oscript tasks/test.os,

то все в порядке и загрузка библиотек идет в обратном, правильном порядке,
как и прописано в файле test.os

лог следующий

ПриЗагрузкеБиблиотеки C:\projects\1commands
класс Команда, файл C:\projects\1commands\src\Команда.os
класс КомандныйФайл, файл C:\projects\1commands\src\КомандныйФайл.os

ПриЗагрузкеБиблиотеки C:\OneScript\lib\logos
ПриЗагрузкеБиблиотеки C:\OneScript\lib\asserts
ПриЗагрузкеБиблиотеки C:\OneScript\lib\tempfiles

ПриЗагрузкеБиблиотеки C:\OneScript\lib\1bdd

ПриЗагрузкеБиблиотеки C:\OneScript\lib\strings

ПриЗагрузкеБиблиотеки C:\OneScript\lib\1commands
класс Команда, файл C:\OneScript\lib\1commands\src\Команда.os
класс КомандныйФайл, файл C:\OneScript\lib\1commands\src\КомандныйФайл.os

@artbear
Copy link
Owner Author

artbear commented Oct 18, 2017

В итоге, получается, для разработки системных библиотек нельзя юзать opm test
либо нужно предпринимать какие-то меры для защиты от подобного поведения :(

@nixel2007
Copy link
Collaborator

Эту проблему обсуждали и решали еще год назад. Надо тестировать что-то, что используется как зависимость в фреймворке тестирования - подключай свой файл через ЗагрузитьСценарий

@artbear
Copy link
Owner Author

artbear commented Oct 18, 2017

ЗагрузитьСценарий использует те же библиотеки, т.к. он находится в одном сеансе oscript.
и это не решает проблему.
opm test как раз так и работает, насколько я понимаю.

@nixel2007
Copy link
Collaborator

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

тестируешь классы 1коммандс - загружаешь 1коммандс.

@artbear
Copy link
Owner Author

artbear commented Oct 18, 2017

@nixel2007 Ты уверен в 'ЗагрузитьСценарий вообще не использует библиотек'?
У нас же одно пространство имен.

@EvilBeaver @dmpas А вы что скажете?

@artbear
Copy link
Owner Author

artbear commented Oct 18, 2017

@nixel2007 Ты какой вариант предлагаешь для 1коммандс? я что-то не понял.

@artbear
Copy link
Owner Author

artbear commented Oct 18, 2017

Кстати, в типовом Jenkinsfile для билд.оскрипт.ио Андрей удачно использует именно oscript tasks/test.os и пакеты прогоняются без ошибок, в т.ч. и 1тестраннер, например.

@nixel2007
Copy link
Collaborator

@artbear я имею ввиду, что если у тебя уже загружен через Использовать класс КомандныйФайл, то через загрузить сценарий ты подключишь конкретную версию с диска, а не с каталога либ. Библиотеки, импортируемые внутри КомандныйФайл, понятное дело, полезут из каталога либ, но тебе и не надо их тестировать - они просто должным быть прописаны в зависимостях с нужными версиями

@artbear
Copy link
Owner Author

artbear commented Oct 19, 2017

В целом результат - для правильного тестирования библиотек, которые есть и в разработке, и в каталоге lib движка на машине, нужно

  • юзать запуск через oscript tasks/test.os, а не opm test
  • первой строкой в этом файле нужно писать Использовать ".."
    • вместо ".." нужно писать правильный путь к исходникам классов/модулей
  • а уже далее писать Использовать 1bdd и/или Использовать 1testrunner

И дополнительно (но необязательно):

  • если в разработке меняется API разрабатываемой библиотеки, которое юзается в 1бдд или 1тестраннере и/или используемых ими библиотек,
    • тогда нужно менять код использования API в нужных местах других библиотек
    • добиваться прохождения всех тестов/фич
    • и делать пулл-реквест в соответствующей библиотеки
  • без подобной доработки тесты, скорее всего, будут падать и нельзя будет гарантировать правильность разработки

обсудили эту с @nixel2007
других вариантов не нашли

@artbear artbear closed this as completed Oct 19, 2017
@artbear
Copy link
Owner Author

artbear commented Oct 19, 2017

И кстати, после недавнего PR по PowerShell тесты AppVeyor стали падать.

А после исправления согласно комментариям выше эти тесты опять стали зелеными.

Я вчера также добавил типовой Jenkinsfile для CI на build.oscript.io

@artbear artbear self-assigned this Oct 19, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants