Skip to content

Commit 61d986e

Browse files
committed
Merge branch 'release/0.15.0'
2 parents ce97544 + 5ae7d1d commit 61d986e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1100
-579
lines changed

.gitignore

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
oscript_modules/
2-
test-reports/
3-
coverage/
1+
oscript_modules/*
2+
tests-reports/*
3+
coverage/*
4+
bdd-*.xml
45
*.ospx
56
src/oscript.cfg
67

78
src/cmd/oscript\.cfg
9+
exec.log
10+
test-reports/tests.xml

.travis.yml

+63-17
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,77 @@
11
sudo: required
2+
language: generic
23

3-
dist: trusty
4+
notifications:
5+
email: false
6+
env:
7+
global:
8+
- CHANNEL=dev
9+
- PACKAGE_NAME=opm
10+
matrix:
11+
- OSCRIPT_VERSION=1_0_20
12+
- OSCRIPT_VERSION=night-build
13+
matrix:
14+
allow_failures:
15+
- env: OSCRIPT_VERSION=night-build
416

5-
addons:
6-
sonarqube: true
17+
services:
18+
- docker
719

20+
addons:
21+
sonarqube: true
22+
823
jdk:
924
- oraclejdk8
1025

11-
before_install:
12-
- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
13-
- echo "deb http://download.mono-project.com/repo/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/mono-official.list
14-
- sudo apt-get update
15-
- sudo apt-get install mono-complete mono-devel
16-
- wget -O os.deb http://oscript.io/downloads/night-build/deb
17-
- sudo dpkg -i os.deb; sudo apt install -f
18-
- oscript
19-
- sudo opm install 1testrunner
20-
- sudo opm install 1bdd
26+
before_install:
27+
# Load cached docker images
28+
- if [[ -d $HOME/docker ]]; then ls $HOME/docker/*.tar.gz | xargs -I {file} sh -c "zcat {file} | docker load"; fi
29+
30+
before_cache:
31+
# Save tagged docker images
32+
- >
33+
mkdir -p $HOME/docker && docker images -a --filter='dangling=false' --format '{{.Repository}}:{{.Tag}} {{.ID}}'
34+
| xargs -n 2 -t sh -c 'test -e $HOME/docker/$1.tar.gz || docker save $0 | gzip -2 > $HOME/docker/$1.tar.gz'
2135
2236
install:
23-
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install -l
37+
- docker pull evilbeaver/onescript:1.0.19
38+
39+
script:
40+
- docker version
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
42+
- grep 'Результат прогона тестов <Да>' /tmp/test.log
43+
after_success:
44+
# - bash <(curl -s https://codecov.io/bash)
45+
- ./sonar-qube.sh
2446

2547
cache:
2648
directories:
2749
- '$HOME/.m2/repository'
2850
- '$HOME/.sonar/cache'
29-
30-
script:
31-
- ./travis.sh
51+
- '$HOME/docker'
52+
jobs:
53+
include:
54+
- stage: Сборка и публикация github & hub.oscript.io
55+
script: skip
56+
before_deploy:
57+
- docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.20 sh -c 'cd /work_dir; opm build ./ ; exit'
58+
deploy:
59+
- provider: releases
60+
api_key: "$GITHUB_OAUTH_TOKEN"
61+
file_glob: true
62+
file: $PACKAGE_NAME*.ospx
63+
skip_cleanup: true
64+
on:
65+
branch: master
66+
tags: true
67+
- provider: script
68+
skip_cleanup: true
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'
70+
on:
71+
branch: develop
72+
- provider: script
73+
skip_cleanup: true
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'
75+
on:
76+
branch: master
77+
tags: true

features/install-file.feature

+32
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

+28
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+
И версия установленного пакета равна версии пакета из контекста
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// заглушка
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// заглушка
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+

2+
Описание.Имя("test")
3+
.Версия("0.3.1")
4+
.ВключитьФайл("folder");
+94
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)