Skip to content

Commit 0dd1168

Browse files
authored
Merge pull request #131 from khorevaa/feature/local-install
Корректная установка в `oscript_modules`
2 parents 6ffeb25 + 835c311 commit 0dd1168

File tree

11 files changed

+449
-16
lines changed

11 files changed

+449
-16
lines changed

.travis.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ install:
3838

3939
script:
4040
- docker version
41-
- docker run -it -e OSCRIPT_VERSION=$OSCRIPT_VERSION -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' | tee /tmp/test.log
41+
- docker run -it -e OSCRIPT_VERSION=$OSCRIPT_VERSION -v $(pwd):/work_dir evilbeaver/onescript:1.0.20 sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' | tee /tmp/test.log
4242
- grep 'Результат прогона тестов <Да>' /tmp/test.log
4343
after_success:
4444
# - bash <(curl -s https://codecov.io/bash)
@@ -54,7 +54,7 @@ jobs:
5454
- stage: Сборка и публикация github & hub.oscript.io
5555
script: skip
5656
before_deploy:
57-
- docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; opm build ./ ; exit'
57+
- docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.20 sh -c 'cd /work_dir; opm build ./ ; exit'
5858
deploy:
5959
- provider: releases
6060
api_key: "$GITHUB_OAUTH_TOKEN"
@@ -66,12 +66,12 @@ jobs:
6666
tags: true
6767
- provider: script
6868
skip_cleanup: true
69-
script: docker run -it -e GITHUB_OAUTH_TOKEN=$GITHUB_OAUTH_TOKEN -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel dev --file ./$PACKAGE_NAME-*.ospx; exit'
69+
script: docker run -it -e GITHUB_OAUTH_TOKEN=$GITHUB_OAUTH_TOKEN -v $(pwd):/work_dir evilbeaver/onescript:1.0.20 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel dev --file ./$PACKAGE_NAME-*.ospx; exit'
7070
on:
7171
branch: develop
7272
- provider: script
7373
skip_cleanup: true
74-
script: docker run -it -e GITHUB_OAUTH_TOKEN=$GITHUB_OAUTH_TOKEN -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel stable --file ./$PACKAGE_NAME-*.ospx; exit'
74+
script: docker run -it -e GITHUB_OAUTH_TOKEN=$GITHUB_OAUTH_TOKEN -v $(pwd):/work_dir evilbeaver/onescript:1.0.20 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel stable --file ./$PACKAGE_NAME-*.ospx; exit'
7575
on:
7676
branch: master
7777
tags: true

features/install-file.feature

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# language: ru
2+
3+
Функциональность: Настройки продукта
4+
5+
Как разработчик
6+
Я хочу иметь устанавливать пакет из файла
7+
Чтобы иметь возможность проверять локальные версии пакетов
8+
9+
10+
Контекст: Тестовый контекст
11+
Допустим Я очищаю параметры команды "opm" в контексте
12+
И Я устанавливаю путь выполнения команды "opm" к текущей библиотеке
13+
И Я создаю временный каталог и сохраняю его в переменной "КаталогСборкиПакета"
14+
И Я создаю временный каталог и сохраняю его в переменной "РабочийКаталог"
15+
И Я выполняю сборку пакета "fixtures/testpackage" в каталог из переменной "КаталогСборкиПакета"
16+
И Я сохраняю файл пакета из каталога "КаталогСборкиПакета" в переменную "ИмяФайлаПакета"
17+
18+
Сценарий: Установка пакета из файла в локальный каталог
19+
Допустим Я установил рабочий каталог из переменной "РабочийКаталог"
20+
И Я добавляю параметр "install" для команды "opm"
21+
И Я добавляю параметр "--local" для команды "opm"
22+
И Я добавляю опцию "-f" для команды "opm" из переменной "ИмяФайлаПакета"
23+
Когда Я выполняю команду "opm"
24+
Тогда Вывод команды "opm" содержит "ИНФОРМАЦИЯ - Установка завершена"
25+
И Вывод команды "opm" не содержит "Внешнее исключение"
26+
И Код возврата команды "opm" равен 0
27+
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules"
28+
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test"
29+
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/opm-metadata.xml"
30+
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/folder"
31+
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/folder/src.os"
32+
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/folder/src.dll"

features/opm-build.feature

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# language: ru
2+
3+
Функционал: Проверка сборки продукта
4+
Как Пользователь
5+
Я хочу автоматически проверять сборку моего продукта
6+
Чтобы гарантировать возможность установку моего продукта у пользователей
7+
8+
Контекст: Отключение отладки в логах
9+
Допустим Я выключаю отладку лога с именем "oscript.lib.gitsync"
10+
И Я очищаю параметры команды "opm" в контексте
11+
12+
Сценарий: Выполнение команды без параметров
13+
Когда Я добавляю параметр "build ." для команды "opm"
14+
И Я выполняю команду "opm"
15+
Тогда Вывод команды "opm" содержит "Сборка пакета завершена"
16+
И Вывод команды "opm" не содержит "Внешнее исключение"
17+
И Код возврата команды "opm" равен 0
18+
19+
Сценарий: Сборка, установка и выполнение пакета
20+
Допустим Я создаю временный каталог и сохраняю его в контекст
21+
Допустим Я собираю пакет во временном каталоге
22+
И Я устанавливаю временный каталог как рабочий каталог
23+
И Я установил рабочий каталог как текущий каталог
24+
Тогда каталог "oscript_modules" не существует
25+
Когда я устанавливаю пакет из файла собранного пакета
26+
Тогда файл "oscript_modules/opm/src/cmd/opm.os" существует
27+
Тогда я выполняю команду получения версии установленного пакета "oscript oscript_modules/opm/src/cmd/opm.os version"
28+
И версия установленного пакета равна версии пакета из контекста
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// заглушка
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// заглушка
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+

2+
Описание.Имя("test")
3+
.Версия("0.3.1")
4+
.ВключитьФайл("folder");
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
2+
3+
Перем БДД; //контекст фреймворка 1bdd
4+
5+
// Метод выдает список шагов, реализованных в данном файле-шагов
6+
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
7+
БДД = КонтекстФреймворкаBDD;
8+
9+
ВсеШаги = Новый Массив;
10+
11+
ВсеШаги.Добавить("ЯВыполняюСборкуПакетаВКаталогИзПеременной");
12+
ВсеШаги.Добавить("ЯСохраняюФайлПакетаИзКаталогаВПеременную");
13+
ВсеШаги.Добавить("ЯУстановилРабочийКаталогИзПеременной");
14+
15+
Возврат ВсеШаги;
16+
КонецФункции
17+
18+
// Реализация шагов
19+
20+
// Процедура выполняется перед запуском каждого сценария
21+
Процедура ПередЗапускомСценария(Знач Узел) Экспорт
22+
23+
КонецПроцедуры
24+
25+
// Процедура выполняется после завершения каждого сценария
26+
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт
27+
28+
КонецПроцедуры
29+
30+
31+
//Я выполняю сборку пакета "fixture/testpackage" в каталог из переменной "КаталогСборкиПакета"
32+
Процедура ЯВыполняюСборкуПакетаВКаталогИзПеременной(Знач ПутьКаталогуПакета, Знач ИмяПеременнойКаталогаСборки) Экспорт
33+
34+
ПутьККаталогуПакета = ОбъединитьПути(ТекущийСценарий().Каталог, ПутьКаталогуПакета);
35+
36+
КаталогСборкиПакета = БДД.ПолучитьИзКонтекста(ИмяПеременнойКаталогаСборки);
37+
38+
СтрокаЗапуска = СтрШаблон("oscript ""%1"" build --out %2 %3", ПутьКИсполняемомуФайлу(), КаталогСборкиПакета, ПутьККаталогуПакета );
39+
КодВозврата = ВыполнитьКоманду(СтрокаЗапуска);
40+
41+
Ожидаем.Что(КодВозврата,
42+
"Ожидали, что сборка пакета (opm build) завершится с кодом возврата 0, а получили другое значение").
43+
Равно(0);
44+
45+
КонецПроцедуры
46+
47+
48+
//Я установил рабочий каталог из переменной "РабочийКаталог"
49+
Процедура ЯУстановилРабочийКаталогИзПеременной(Знач ИмяКаталога) Экспорт
50+
РабочийКаталог = БДД.ПолучитьИзКонтекста(ИмяКаталога);
51+
52+
УстановитьТекущийКаталог(РабочийКаталог);
53+
54+
КонецПроцедуры
55+
56+
//Я сохраняю файл пакета из каталога "КаталогСборкиПакета" в переменную "ИмяФайлаПакета"
57+
Процедура ЯСохраняюФайлПакетаИзКаталогаВПеременную(Знач ИмяПеременнойКаталога, Знач ИмяПеременнойФайла) Экспорт
58+
ПутьВременногоКаталога = БДД.ПолучитьИзКонтекста(ИмяПеременнойКаталога);
59+
МассивФайлов = НайтиФайлы(ПутьВременногоКаталога, "*.ospx", Ложь);
60+
Ожидаем.Что(МассивФайлов.Количество(), "Должны были найти только 1 собранный пакет, а не несколько").Равно(1);
61+
ФайлПакета = МассивФайлов[0];
62+
БДД.СохранитьВКонтекст(ИмяПеременнойФайла, ФайлПакета.ПолноеИмя);
63+
64+
КонецПроцедуры
65+
66+
Функция ВыполнитьКоманду(Знач СтрокаКоманды, ТекстВывода = "")
67+
Команда = Новый Команда;
68+
Команда.ПоказыватьВыводНемедленно(Истина);
69+
70+
Команда.УстановитьСтрокуЗапуска(СтрокаКоманды);
71+
72+
КодВозврата = Команда.Исполнить();
73+
ТекстВывода = Команда.ПолучитьВывод();
74+
75+
Если КодВозврата <> 0 Тогда
76+
// Лог.Информация(ТекстВывода);
77+
Сообщить(ТекстВывода);
78+
КонецЕсли;
79+
Возврат КодВозврата;
80+
КонецФункции
81+
82+
Функция ПутьКИсполняемомуФайлу()
83+
84+
Возврат ОбъединитьПути(КаталогБиблиотеки(), "src", "cmd", "opm.os");
85+
86+
КонецФункции
87+
88+
Функция КаталогFixtures()
89+
Возврат ОбъединитьПути(КаталогБиблиотеки(), "tests", "fixtures");
90+
КонецФункции
91+
92+
Функция КаталогБиблиотеки()
93+
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", "..");
94+
КонецФункции

0 commit comments

Comments
 (0)