Skip to content

Commit

Permalink
Merge branch 'release/v1.4.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Aug 23, 2017
2 parents f3c4258 + ab0de26 commit 72a898d
Show file tree
Hide file tree
Showing 9 changed files with 212 additions and 18 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 1.4.0

* Добавлен новый метод `ЭтоРепозиторий` (@realMaxA)

## 1.3.0

* Добавлен новый метод `Извлечь` (@dmpas)
Expand Down
92 changes: 92 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@

pipeline {
agent none
options {
buildDiscarder(logRotator(numToKeepStr: '7'))
skipDefaultCheckout()
}

stages {
stage('Тестирование кода пакета WIN') {

agent { label 'windows' }

steps {
checkout scm

script {
if( fileExists ('tasks/test.os') ){
bat 'chcp 65001 > nul && oscript tasks/test.os'
junit 'junit-*.xml'
}
else
echo 'no testing task'
}

}

}

stage('Тестирование кода пакета LINUX') {

agent { label 'master' }

steps {
echo 'under development'
}

}

stage('Сборка пакета') {

agent { label 'windows' }

steps {
checkout scm

bat 'erase /Q *.ospx'
bat 'chcp 65001 > nul && call opm build .'

stash includes: '*.ospx', name: 'package'
archiveArtifacts '*.ospx'
}

}

stage('Публикация в хабе') {
when {
branch 'master'
}
agent { label 'master' }
steps {
sh 'rm -f *.ospx'
unstash 'package'

sh '''
artifact=`ls -1 *.ospx`
basename=`echo $artifact | sed -r 's/(.+)-.*(.ospx)/\\1/'`
cp $artifact $basename.ospx
sudo rsync -rv *.ospx /var/www/hub.oscript.io/download/$basename/
'''.stripIndent()
}
}

stage('Публикация в нестабильном хабе') {
when {
branch 'develop'
}
agent { label 'master' }
steps {
sh 'rm -f *.ospx'
unstash 'package'

sh '''
artifact=`ls -1 *.ospx`
basename=`echo $artifact | sed -r 's/(.+)-.*(.ospx)/\\1/'`
cp $artifact $basename.ospx
sudo rsync -rv *.ospx /var/www/hub.oscript.io/dev-channel/$basename/
'''.stripIndent()
}
}
}
}
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,12 @@
//
```

#### ЭтоРепозиторий
```bsl
// Возвращает признак того, что РабочийКаталог является репозиторием git
//
```

> Работа с ветками
#### ПолучитьТекущуюВетку
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd

#Использовать tempfiles

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

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

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

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

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

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

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

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

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

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

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

//Результат равен
Процедура РезультатРавен(Знач ОжидаемыйРезультат) Экспорт
Результат = БДД.ПолучитьИзКонтекста("Результат");
Ожидаем.Что(Результат).Равно(Булево(ОжидаемыйРезультат));
КонецПроцедуры

19 changes: 19 additions & 0 deletions features/ПроверкаРепозитория.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# language: ru

Функциональность: Проверка существования репозитория в рабочем каталоге

Как разработчик Я хочу иметь возможность проверить, что рабочий каталог является git-репозиторием
Чтобы не писать такую проверку для каждого скрипта

Сценарий: Проверка каталога с репозиторием
Когда Я создаю новый объект ГитРепозиторий
И Я создаю временный каталог и сохраняю его в контекст
И Я инициализирую репозиторий во временном каталоге
И Я проверяю существование репозитория во временном каталоге и результат сохраняю в контекст
Тогда Результат равен "Истина"

Сценарий: Проверка каталога без репозитория
Когда Я создаю новый объект ГитРепозиторий
И Я создаю временный каталог и сохраняю его в контекст
И Я проверяю существование репозитория во временном каталоге и результат сохраняю в контекст
Тогда Результат равен "Ложь"
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@
Тогда Вывод команды не содержит "test"

Сценарий: Получение списка внешних репозиториев
Допустим Я добавляю внешний репозиторий "test1" по адресу "http://fake1.com"
И Я добавляю внешний репозиторий "test2" по адресу "http://fake2.com"
Допустим Я добавляю внешний репозиторий "origin" по адресу "http://fake1.com/longurl-segment/somerepo.git"
И Я добавляю внешний репозиторий "upstream" по адресу "http://fake2.com/longurl-segment/somerepo.git"
Когда Я получаю список внешних репозиториев
И Я выполняю произвольную команду git "remote -v"
И Я сообщаю вывод команды
Тогда Список внешних репозиториев содержит "test1" с адресом "http://fake1.com"
И Список внешних репозиториев содержит "test2" с адресом "http://fake2.com"
Тогда Список внешних репозиториев содержит "origin" с адресом "http://fake1.com/longurl-segment/somerepo.git"
И Список внешних репозиториев содержит "upstream" с адресом "http://fake2.com/longurl-segment/somerepo.git"

Сценарий: Добавление внешнего репозитория по сохраненному адресу
Допустим Я сохраняю значение временного каталога в переменной "ВнешийРепозиторий"
Expand Down
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Описание.Имя("gitrunner")
.Версия("1.3.0")
.Версия("1.4.0")
.ЗависитОт("1bdd")
.ВерсияСреды("1.0.16")
.ЗависитОт("1commands", "1.2.0")
Expand Down
51 changes: 38 additions & 13 deletions src/ГитРепозиторий.os
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,27 @@

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

// Возвращает признак того, что РабочийКаталог является репозиторием git
//
Функция ЭтоРепозиторий() Экспорт

ПроверитьВозможностьВыполненияКоманды();

Команда = Новый Команда;

Команда.УстановитьКоманду(ПолучитьПутьКГит());
Команда.УстановитьРабочийКаталог(ПолучитьРабочийКаталог());
Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8);

Команда.ДобавитьПараметр("rev-parse");
Команда.ДобавитьПараметр("--show-toplevel");

КодВозврата = Команда.Исполнить();

Возврат (КодВозврата = 0);

КонецФункции // ЭтоРепозиторий()

//////////////////////////////////////////////
// Работа с ветками

Expand Down Expand Up @@ -495,23 +516,27 @@

ЧислоСтрок = СтрЧислоСтрок(ВыводКоманды);

// I know, I'll use regular expressions!
Выражение = Новый РегулярноеВыражение("(\w+)\s+(.+)\s+\((\w+)\)");

Для сч = 1 По ЧислоСтрок Цикл

ВнешнийРепозиторий = ТаблицаВнешнихРепозиториев.Добавить();

Строка = СтрПолучитьСтроку(ВыводКоманды, сч);
СимволТаб = СтрНайти(Строка, Символы.Таб);
СимволПробел = СтрНайти(Строка, " ");

ИмяВнешнегоРепозитория = Лев(Строка, СимволТаб - 1);
АдресВнешнегоРепозитория = Сред(Строка, СимволТаб + 1, СимволПробел - СимволТаб - 1);
РежимВнешнегоРепозитория = Прав(Строка, СтрДлина(Строка) - СимволПробел);
РежимВнешнегоРепозитория = Сред(РежимВнешнегоРепозитория, 2, СтрДлина(РежимВнешнегоРепозитория) - 2);

ВнешнийРепозиторий.Имя = СокрЛП(ИмяВнешнегоРепозитория);
ВнешнийРепозиторий.Адрес = СокрЛП(АдресВнешнегоРепозитория);
ВнешнийРепозиторий.Режим = СокрЛП(РежимВнешнегоРепозитория);


Совпадения = Выражение.НайтиСовпадения(Строка);
Если Совпадения.Количество() = 0 Тогда
Лог.Ошибка("Нестандартный вывод в git remote: '%1'", Строка);
Продолжить;
КонецЕсли;

ВнешнийРепозиторий.Имя = СокрЛП(Совпадения[0].Группы[1].Значение);
ВнешнийРепозиторий.Адрес = СокрЛП(Совпадения[0].Группы[2].Значение);
ВнешнийРепозиторий.Режим = СокрЛП(Совпадения[0].Группы[3].Значение);

Лог.Отладка("%1 %2 %3", ВнешнийРепозиторий.Имя, ВнешнийРепозиторий.Адрес, ВнешнийРепозиторий.Режим);

КонецЦикла;

Возврат ТаблицаВнешнихРепозиториев;
Expand Down Expand Up @@ -992,7 +1017,7 @@
УдалитьСекциюНастроек("bak.user", РежимУстановкиНастроекGit.Локально);

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

// Возвращает имя настройки Гит для имени пользователя
//
Функция ПолучитьИмяНастройкиНаименованияПользователя()
Expand Down
3 changes: 3 additions & 0 deletions tasks/test.os
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
РезультатВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич);
ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатВыполнения);

ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit;
ГенераторОтчетаJUnit.Сформировать(РезультатВыполнения, ИтоговыйРезультатВыполнения, "junit-bdd.xml");

Сообщить(ИтоговыйРезультатВыполнения);
Если ИтоговыйРезультатВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался Тогда
ВызватьИсключение 1;
Expand Down

0 comments on commit 72a898d

Please sign in to comment.