Skip to content

Commit

Permalink
Merge branch 'release/0.15.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Sep 17, 2018
2 parents ce97544 + 5ae7d1d commit 61d986e
Show file tree
Hide file tree
Showing 46 changed files with 1,100 additions and 579 deletions.
9 changes: 6 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
oscript_modules/
test-reports/
coverage/
oscript_modules/*
tests-reports/*
coverage/*
bdd-*.xml
*.ospx
src/oscript.cfg

src/cmd/oscript\.cfg
exec.log
test-reports/tests.xml
80 changes: 63 additions & 17 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,77 @@
sudo: required
language: generic

dist: trusty
notifications:
email: false
env:
global:
- CHANNEL=dev
- PACKAGE_NAME=opm
matrix:
- OSCRIPT_VERSION=1_0_20
- OSCRIPT_VERSION=night-build
matrix:
allow_failures:
- env: OSCRIPT_VERSION=night-build

addons:
sonarqube: true
services:
- docker

addons:
sonarqube: true

jdk:
- oraclejdk8

before_install:
- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
- echo "deb http://download.mono-project.com/repo/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/mono-official.list
- sudo apt-get update
- sudo apt-get install mono-complete mono-devel
- wget -O os.deb http://oscript.io/downloads/night-build/deb
- sudo dpkg -i os.deb; sudo apt install -f
- oscript
- sudo opm install 1testrunner
- sudo opm install 1bdd
before_install:
# Load cached docker images
- if [[ -d $HOME/docker ]]; then ls $HOME/docker/*.tar.gz | xargs -I {file} sh -c "zcat {file} | docker load"; fi

before_cache:
# Save tagged docker images
- >
mkdir -p $HOME/docker && docker images -a --filter='dangling=false' --format '{{.Repository}}:{{.Tag}} {{.ID}}'
| xargs -n 2 -t sh -c 'test -e $HOME/docker/$1.tar.gz || docker save $0 | gzip -2 > $HOME/docker/$1.tar.gz'
install:
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install -l
- docker pull evilbeaver/onescript:1.0.19

script:
- docker version
- 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
- grep 'Результат прогона тестов <Да>' /tmp/test.log
after_success:
# - bash <(curl -s https://codecov.io/bash)
- ./sonar-qube.sh

cache:
directories:
- '$HOME/.m2/repository'
- '$HOME/.sonar/cache'

script:
- ./travis.sh
- '$HOME/docker'
jobs:
include:
- stage: Сборка и публикация github & hub.oscript.io
script: skip
before_deploy:
- docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.20 sh -c 'cd /work_dir; opm build ./ ; exit'
deploy:
- provider: releases
api_key: "$GITHUB_OAUTH_TOKEN"
file_glob: true
file: $PACKAGE_NAME*.ospx
skip_cleanup: true
on:
branch: master
tags: true
- provider: script
skip_cleanup: true
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'
on:
branch: develop
- provider: script
skip_cleanup: true
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'
on:
branch: master
tags: true
32 changes: 32 additions & 0 deletions features/install-file.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# language: ru

Функциональность: Настройки продукта

Как разработчик
Я хочу иметь устанавливать пакет из файла
Чтобы иметь возможность проверять локальные версии пакетов


Контекст: Тестовый контекст
Допустим Я очищаю параметры команды "opm" в контексте
И Я устанавливаю путь выполнения команды "opm" к текущей библиотеке
И Я создаю временный каталог и сохраняю его в переменной "КаталогСборкиПакета"
И Я создаю временный каталог и сохраняю его в переменной "РабочийКаталог"
И Я выполняю сборку пакета "fixtures/testpackage" в каталог из переменной "КаталогСборкиПакета"
И Я сохраняю файл пакета из каталога "КаталогСборкиПакета" в переменную "ИмяФайлаПакета"

Сценарий: Установка пакета из файла в локальный каталог
Допустим Я установил рабочий каталог из переменной "РабочийКаталог"
И Я добавляю параметр "install" для команды "opm"
И Я добавляю параметр "--local" для команды "opm"
И Я добавляю опцию "-f" для команды "opm" из переменной "ИмяФайлаПакета"
Когда Я выполняю команду "opm"
Тогда Вывод команды "opm" содержит "ИНФОРМАЦИЯ - Установка завершена"
И Вывод команды "opm" не содержит "Внешнее исключение"
И Код возврата команды "opm" равен 0
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules"
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test"
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/opm-metadata.xml"
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/folder"
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/folder/src.os"
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/folder/src.dll"
28 changes: 28 additions & 0 deletions features/opm-build.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# language: ru

Функционал: Проверка сборки продукта
Как Пользователь
Я хочу автоматически проверять сборку моего продукта
Чтобы гарантировать возможность установку моего продукта у пользователей

Контекст: Отключение отладки в логах
Допустим Я выключаю отладку лога с именем "oscript.lib.gitsync"
И Я очищаю параметры команды "opm" в контексте

Сценарий: Выполнение команды без параметров
Когда Я добавляю параметр "build ." для команды "opm"
И Я выполняю команду "opm"
Тогда Вывод команды "opm" содержит "Сборка пакета завершена"
И Вывод команды "opm" не содержит "Внешнее исключение"
И Код возврата команды "opm" равен 0

Сценарий: Сборка, установка и выполнение пакета
Допустим Я создаю временный каталог и сохраняю его в контекст
Допустим Я собираю пакет во временном каталоге
И Я устанавливаю временный каталог как рабочий каталог
И Я установил рабочий каталог как текущий каталог
Тогда каталог "oscript_modules" не существует
Когда я устанавливаю пакет из файла собранного пакета
Тогда файл "oscript_modules/opm/src/cmd/opm.os" существует
Тогда я выполняю команду получения версии установленного пакета "oscript oscript_modules/opm/src/cmd/opm.os version"
И версия установленного пакета равна версии пакета из контекста
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// заглушка
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// заглушка
4 changes: 4 additions & 0 deletions features/step_definitions/fixtures/testpackage/packagedef
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

Описание.Имя("test")
.Версия("0.3.1")
.ВключитьФайл("folder");
94 changes: 94 additions & 0 deletions features/step_definitions/install-file.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd

Перем БДД; //контекст фреймворка 1bdd

// Метод выдает список шагов, реализованных в данном файле-шагов
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
БДД = КонтекстФреймворкаBDD;

ВсеШаги = Новый Массив;

ВсеШаги.Добавить("ЯВыполняюСборкуПакетаВКаталогИзПеременной");
ВсеШаги.Добавить("ЯСохраняюФайлПакетаИзКаталогаВПеременную");
ВсеШаги.Добавить("ЯУстановилРабочийКаталогИзПеременной");

Возврат ВсеШаги;
КонецФункции

// Реализация шагов

// Процедура выполняется перед запуском каждого сценария
Процедура ПередЗапускомСценария(Знач Узел) Экспорт

КонецПроцедуры

// Процедура выполняется после завершения каждого сценария
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт

КонецПроцедуры


//Я выполняю сборку пакета "fixture/testpackage" в каталог из переменной "КаталогСборкиПакета"
Процедура ЯВыполняюСборкуПакетаВКаталогИзПеременной(Знач ПутьКаталогуПакета, Знач ИмяПеременнойКаталогаСборки) Экспорт

ПутьККаталогуПакета = ОбъединитьПути(ТекущийСценарий().Каталог, ПутьКаталогуПакета);

КаталогСборкиПакета = БДД.ПолучитьИзКонтекста(ИмяПеременнойКаталогаСборки);

СтрокаЗапуска = СтрШаблон("oscript ""%1"" build --out %2 %3", ПутьКИсполняемомуФайлу(), КаталогСборкиПакета, ПутьККаталогуПакета );
КодВозврата = ВыполнитьКоманду(СтрокаЗапуска);

Ожидаем.Что(КодВозврата,
"Ожидали, что сборка пакета (opm build) завершится с кодом возврата 0, а получили другое значение").
Равно(0);

КонецПроцедуры


//Я установил рабочий каталог из переменной "РабочийКаталог"
Процедура ЯУстановилРабочийКаталогИзПеременной(Знач ИмяКаталога) Экспорт
РабочийКаталог = БДД.ПолучитьИзКонтекста(ИмяКаталога);

УстановитьТекущийКаталог(РабочийКаталог);

КонецПроцедуры

//Я сохраняю файл пакета из каталога "КаталогСборкиПакета" в переменную "ИмяФайлаПакета"
Процедура ЯСохраняюФайлПакетаИзКаталогаВПеременную(Знач ИмяПеременнойКаталога, Знач ИмяПеременнойФайла) Экспорт
ПутьВременногоКаталога = БДД.ПолучитьИзКонтекста(ИмяПеременнойКаталога);
МассивФайлов = НайтиФайлы(ПутьВременногоКаталога, "*.ospx", Ложь);
Ожидаем.Что(МассивФайлов.Количество(), "Должны были найти только 1 собранный пакет, а не несколько").Равно(1);
ФайлПакета = МассивФайлов[0];
БДД.СохранитьВКонтекст(ИмяПеременнойФайла, ФайлПакета.ПолноеИмя);

КонецПроцедуры

Функция ВыполнитьКоманду(Знач СтрокаКоманды, ТекстВывода = "")
Команда = Новый Команда;
Команда.ПоказыватьВыводНемедленно(Истина);

Команда.УстановитьСтрокуЗапуска(СтрокаКоманды);

КодВозврата = Команда.Исполнить();
ТекстВывода = Команда.ПолучитьВывод();

Если КодВозврата <> 0 Тогда
// Лог.Информация(ТекстВывода);
Сообщить(ТекстВывода);
КонецЕсли;
Возврат КодВозврата;
КонецФункции

Функция ПутьКИсполняемомуФайлу()

Возврат ОбъединитьПути(КаталогБиблиотеки(), "src", "cmd", "opm.os");

КонецФункции

Функция КаталогFixtures()
Возврат ОбъединитьПути(КаталогБиблиотеки(), "tests", "fixtures");
КонецФункции

Функция КаталогБиблиотеки()
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", "..");
КонецФункции
Loading

0 comments on commit 61d986e

Please sign in to comment.