Skip to content

Commit

Permalink
Merge pull request #162 from artbear/develop
Browse files Browse the repository at this point in the history
Релиз 1.13 - новые шаги
  • Loading branch information
artbear authored Sep 16, 2021
2 parents c6eac65 + 494b806 commit 408e906
Show file tree
Hide file tree
Showing 12 changed files with 276 additions and 17 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/qa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
oscript_version: ['1.4.0']
oscript_version: ['1.5.0']

steps:
# Загрузка проекта
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
oscript_version: ['1.4.0']
oscript_version: ['1.5.0']

steps:
# Загрузка проекта
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Copyright (C) 2020 Tymko Oleg <[email protected]> and contributors
# All rights reserved.

name: Тестирование
name: _Тестирование
# Любой пуш и pr в проекте
on: [push, pull_request]

Expand All @@ -13,7 +13,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
oscript_version: ['1.4.0']
oscript_version: ['1.5.0']

steps:
# Загрузка проекта
Expand All @@ -34,4 +34,4 @@ jobs:
# Задача тестирования, в результате ожидается успешное выполнение
- name: Тестирование
run: oscript ./tasks/test.os
run: oscript ./tasks/test.os
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@


[![GitHub release](https://img.shields.io/github/release/artbear/1bdd.svg)](https://github.com/artbear/1bdd/releases)
[![Тестирование](https://github.com/artbear/1bdd/actions/workflows/testing.yml/badge.svg?branch=develop)](https://github.com/artbear/1bdd/actions/workflows/testing.yml)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/artbear/1bdd/%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5?style=flat-square)](https://github.com/artbear/1bdd/actions)
[![Статус Порога Качества](https://sonar.openbsl.ru/api/project_badges/measure?project=1bdd&metric=alert_status)](https://sonar.openbsl.ru/dashboard?id=1bdd)
[![Покрытие](https://sonar.openbsl.ru/api/project_badges/measure?project=1bdd&metric=coverage)](https://sonar.openbsl.ru/dashboard?id=1bdd)
Expand Down
34 changes: 34 additions & 0 deletions docs/readme.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
Описание публичного интерфейса библиотеки
========================

<!-- TOC -->

- [Описание публичного интерфейса библиотеки](#описание-публичного-интерфейса-библиотеки)
Expand All @@ -19,6 +20,8 @@
- [Проверка значений](#проверка-значений)
- [Управление переменными окружения](#управление-переменными-окружения)
- [Пропуск сценария](#пропуск-сценария)
- [Подготовка рабочего каталога и тестовой ИБ](#подготовка-рабочего-каталога-и-тестовой-иб)
- [Сборка пакета](#сборка-пакета)
- [API фреймворка](#api-фреймворка)
- [Программный контекст](#программный-контекст)
- [Программный вызов любого шага сценария - БДД.ВыполнитьШаг(Наименование)](#программный-вызов-любого-шага-сценария---бддвыполнитьшагнаименование)
Expand Down Expand Up @@ -286,6 +289,37 @@
- `Я пропускаю этот сценарий в Linux`
- `Я пропускаю этот сценарий в Windows`

### Подготовка рабочего каталога и тестовой ИБ

- `я подготовил репозиторий и рабочий каталог проекта`

фактически выполняются следующие шаги
- `Дано я выключаю отладку лога с именем "oscript.app.vanessa-runner"`
- `И Я очищаю параметры команды "oscript" в контексте`
- `И Я создаю временный каталог и сохраняю его в контекст`
- `И Я устанавливаю временный каталог как рабочий каталог`
- `И Я создаю каталог "build/out" в рабочем каталоге`
- `И Я установил рабочий каталог как текущий каталог`
- `И Я сохраняю каталог проекта в контекст`

- `я подготовил рабочую базу проекта "./build/ib" по умолчанию`

фактически выполняются следующие шаги
- `я подготовил репозиторий и рабочий каталог проекта` - шаг расшифрован выше
- `И Я копирую каталог "cf" из каталога "tests/fixtures" проекта в рабочий каталог`
- `Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os init-dev --src ./cf --nocacheuse --ibconnection /F%1"`
- где `%1` заменяется на путь к ИБ, указанный в параметре шага "./build/ib"
- `Я очищаю параметры команды "oscript" в контексте`

- `я инициализирую репозиторий git в рабочем каталоге`

### Сборка пакета

- `я собираю пакет во временном каталоге`
- `я устанавливаю пакет из файла собранного пакета`
- `я выполняю команду получения версии установленного пакета "oscript src\main.os version"`
- `версия установленного пакета равна версии пакета из контекста`

<a id="markdown-api-фреймворка" name="api-фреймворка"></a>
## API фреймворка

Expand Down
2 changes: 1 addition & 1 deletion features/core/ТаблицыДанных.feature
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
| Строка с датой внутри: 21.11.2020 |

Тогда в таблице в ячейке "0:0" значение имеет тип "Строка"
и в таблице в ячейке "0:0" указано значение "Строка с датой внутри: 21.11.2020"
И в таблице в ячейке "0:0" указано значение "Строка с датой внутри: 21.11.2020"

Сценарий: Строка с числовым литералом в ячейке таблицы
Когда я передаю таблицу
Expand Down
119 changes: 119 additions & 0 deletions features/lib/step_definitions/opm-build.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
// Реализация шагов BDD-фич/сценариев с помощью фреймворка https://github.com/artbear/1bdd
#Использовать tempfiles

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

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

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

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

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

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

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

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

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

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

// Я собираю пакет во временном каталоге
Процедура ЯСобираюПакетВоВременномКаталоге() Экспорт
ПутьВременногоКаталога = БДД.ПолучитьИзКонтекста("ВременныйКаталог");
СтрокаЗапуска = СтрШаблон("opm build --out %2 %1", ТекущийКаталог(), ПутьВременногоКаталога);
КодВозврата = ВыполнитьКоманду(СтрокаЗапуска);

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

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

СтрокаЗапуска = СтрШаблон("opm install -f %1 -l", ФайлСобранногоПакета.Имя);
КодВозврата = ВыполнитьКоманду(СтрокаЗапуска);

Ожидаем.Что(КодВозврата, "ВыполнитьЛокальнуюУстановкуСобранногоПакета КодВозврата").Равно(0);

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

// я выполняю команду получения версии установленного пакета "oscript src\main.os version"
Процедура ЯВыполняюКомандуПолученияВерсииУстановленногоПакета(Знач СтрокаЗапуска) Экспорт
УстановленнаяВерсияПакета = "";
КодВозврата = ВыполнитьКоманду(СтрокаЗапуска, УстановленнаяВерсияПакета);
Ожидаем.Что(КодВозврата, "Должны были получить код возврата 0, а это не так").Равно(0);
УстановленнаяВерсияПакета = СокрЛП(УстановленнаяВерсияПакета);
БДД.СохранитьВКонтекст("УстановленнаяВерсияПакета", УстановленнаяВерсияПакета);

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

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

ВерсияСобранногоПакета = СокрЛП(ВерсияСобранногоПакета);

СообщениеОшибки = СтрШаблон("Ожидали, что установленная версия <%1> равна версии из исходников проекта");
Если УстановленнаяВерсияПакета <> ВерсияСобранногоПакета И
Найти(УстановленнаяВерсияПакета, ВерсияСобранногоПакета) = Неопределено Тогда

ВызватьИсключение СообщениеОшибки;

КонецЕсли;
КонецПроцедуры

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

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

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

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

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

// я выполняю команду получения версии установленного пакета
Процедура ЗапоминаюВерсиюСобранногоПакетаВКонтексте() // Экспорт
ФайлПакета = БДД.ПолучитьИзКонтекста("ФайлСобранногоПакета");
РегулярноеВыражение = Новый РегулярноеВыражение("([^-]+-[^-]+|[^-]+)-(\d+\.(\d+\.)*\d+)\.ospx");
Совпадения = РегулярноеВыражение.НайтиСовпадения(ФайлПакета.Имя);
СообщениеОшибки = СтрШаблон("Должны были файл пакета с правильным форматом имени, а это не так. <%1>", ФайлПакета.Имя);
Ожидаем.Что(Совпадения.Количество(), СообщениеОшибки).Равно(1);
Ожидаем.Что(Совпадения[0].Группы.Количество(), "Количество групп должно быть 1").БольшеИлиРавно(3);
ИмяСобранногоПакета = Совпадения[0].Группы[1].Значение;
ВерсияПакета = Совпадения[0].Группы[2].Значение;

БДД.СохранитьВКонтекст("ИмяСобранногоПакета", ИмяСобранногоПакета);
БДД.СохранитьВКонтекст("ВерсияСобранногоПакета", ВерсияПакета);
КонецПроцедуры
Loading

0 comments on commit 408e906

Please sign in to comment.