Skip to content

Обновления команды all #187

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Mar 19, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions TODO

This file was deleted.

55 changes: 55 additions & 0 deletions features/cmd/all.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# language: ru

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

Структура сценария: <Сценарий>
Дано Я очищаю параметры команды "gitsync" в контексте
И Я создаю новый объект ГитРепозиторий
И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке

# Подготовка хранилища 1
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С_1"
И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С_1"
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников_1"
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников_1"
И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_1"
И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_1"

# Подготовка хранилища 2
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С_2"
И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С_2"
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников_2"
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников_2"
И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_2"
И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_2"

# Подготовка хранилища 2
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилищаРасширения"
И я скопировал каталог тестового хранилища конфигурации расширения в каталог из переменной "КаталогХранилищаРасширения"
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходниковРасширения"
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходниковРасширения"
И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходниковРасширения"
И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходниковРасширения"

И Я создаю файл настройки из файла <ПутьКФайлуШаблона> и сохраняю в переменную "FILE"

Допустим Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория"
И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория"
# И Я добавляю параметр "-v" для команды "gitsync"
И Я добавляю параметр "all" для команды "gitsync"
И Я добавляю параметр <ДопПараметрыЗапуска> для команды "gitsync"
И Я добавляю позиционный параметр для команды "gitsync" из переменной "FILE"
Когда Я выполняю команду "gitsync"
Тогда Вывод команды "gitsync" содержит <Результат>
И Вывод команды "gitsync" не содержит "Внешнее исключение"
И Код возврата команды "gitsync" равен 0

Примеры:
| Сценарий | ПутьКФайлуШаблона | ДопПараметрыЗапуска | Результат |
# | Выполнение синхронизации по имени | tests/fixtures/default.yaml | --name ТестовыйРепозиторий | ИНФОРМАЦИЯ - Наименование: <ТестовыйРепозиторий> |
# | Выполнение синхронизации с несколькими хранилищами | tests/fixtures/default.yaml | | ИНФОРМАЦИЯ - Завершено выполнение команды <all>|
| Выполнение синхронизации расширениями | tests/fixtures/ext.yaml | | ИНФОРМАЦИЯ - Завершено выполнение команды <all> |

34 changes: 34 additions & 0 deletions features/cmd/fixtures/default.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
globals:
storage-user: Администратор
storage-pwd: ''
git-path: git
v8version: 8.3
domain-email: localhost
lic-try-count: 5
plugins:
enable:
- test
- test2
disable:
- test3
repositories:
- name: ТестовыйРепозиторий
# disable: false
path: <КаталогХранилища1С_1>
dir: <ПутьКаталогаИсходников_1>
plugins:
more:
- test3
plugins-config:

- name: ТестовыйРепозиторий2
# disable: true
path: <КаталогХранилища1С_2>
dir: <ПутьКаталогаИсходников_2>
storage-user: Администратор
storage-pwd: ''
git-path: git
temp-dir: ""
v8version: 8.3
domain-email: localhost
lic-try-count: 5
148 changes: 148 additions & 0 deletions features/cmd/step_definitions/all.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
#Использовать tempfiles
#Использовать yaml

// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd

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

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

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

ВсеШаги.Добавить("ЯСоздаюТестовойФайлAuthorsВКаталогеИзПеременной");
ВсеШаги.Добавить("ЯЗаписываюВФайлVersionВКаталогеИзПеременной");
ВсеШаги.Добавить("ЯСоздаюФайлНастройкиИзФайлаИСохраняюВПеременную");
ВсеШаги.Добавить("ЯДобавляюПараметр__Параметрдлятаблицы____Параметрстрока__Gitsync");

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

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

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

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

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

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



//Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_1"
Процедура ЯСоздаюТестовойФайлAuthorsВКаталогеИзПеременной(Знач ИмяПеременной) Экспорт
ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста(ИмяПеременной);
ФайлАвторов = Новый ЗаписьТекста;
ФайлАвторов.Открыть(ОбъединитьПути(ПутьКаталогаИсходников, "AUTHORS"), "utf-8");
ФайлАвторов.ЗаписатьСтроку("Администратор=Администратор <admin@localhost>");
ФайлАвторов.ЗаписатьСтроку("Отладка=Отладка <debug@localhost>");
ФайлАвторов.Закрыть();
КонецПроцедуры

//Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_1"
Процедура ЯЗаписываюВФайлVersionВКаталогеИзПеременной(Знач НомерВерсии, Знач ИмяПеременной) Экспорт

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

ПутьКФайлуВерсий = ОбъединитьПути(ПутьКаталогаИсходников,"VERSION");
Попытка
Запись = Новый ЗаписьТекста(ПутьКФайлуВерсий, "utf-8");
Запись.ЗаписатьСтроку("<?xml version=""1.0"" encoding=""UTF-8""?>");
Запись.ЗаписатьСтроку("<VERSION>" + НомерВерсии + "</VERSION>");
Запись.Закрыть();
Исключение
Если Запись <> Неопределено Тогда
ОсвободитьОбъект(Запись);
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры

//Я создаю файл настройки из файла <fixtures/default.yaml> и сохраняю в переменную "FILE"
Процедура ЯСоздаюФайлНастройкиИзФайлаИСохраняюВПеременную(Знач ПутьКФайлу, Знач ИмяПеременной) Экспорт


ПутьКаталогаИсходников_1 = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников_1");
КаталогХранилища1С_1 = БДД.ПолучитьИзКонтекста("КаталогХранилища1С_1");

ПутьКаталогаИсходников_2 = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников_2");
КаталогХранилища1С_2 = БДД.ПолучитьИзКонтекста("КаталогХранилища1С_2");

ПутьКаталогаИсходниковРасширения = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходниковРасширения");
КаталогХранилищаРасширения = БДД.ПолучитьИзКонтекста("КаталогХранилищаРасширения");


ЧтениеТекста = Новый ЧтениеТекста();
ЧтениеТекста.Открыть(ПутьКФайлу, КодировкаТекста.UTF8);
ТекстYaml = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();

ТекстYaml = СтрЗаменить(ТекстYaml, "<ПутьКаталогаИсходников_1>", ПутьКаталогаИсходников_1);
ТекстYaml = СтрЗаменить(ТекстYaml, "<КаталогХранилища1С_1>", КаталогХранилища1С_1);

ТекстYaml = СтрЗаменить(ТекстYaml, "<ПутьКаталогаИсходников_2>", ПутьКаталогаИсходников_2);
ТекстYaml = СтрЗаменить(ТекстYaml, "<КаталогХранилища1С_2>", КаталогХранилища1С_2);

ТекстYaml = СтрЗаменить(ТекстYaml, "<ПутьКаталогаИсходниковРасширения>", ПутьКаталогаИсходниковРасширения);
ТекстYaml = СтрЗаменить(ТекстYaml, "<КаталогХранилищаРасширения>", КаталогХранилищаРасширения);

ВременныйФайл = ВременныеФайлы.СоздатьФайл(".yaml");

ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл);
ЗаписьТекста.Записать(ТекстYaml);
ЗаписьТекста.Закрыть();


ЧтениеТекста = Новый ЧтениеТекста();
ЧтениеТекста.Открыть(ВременныйФайл, КодировкаТекста.UTF8);
ТекстYaml = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();

ПарсерYAml = Новый ПарсерYaml();
Результа = ПарсерYAml.ПрочитатьYaml(ТекстYaml);

ТекстJson = ОБъектВJson(Результа);

ВременныйФайл = ВременныеФайлы.СоздатьФайл(".json");
ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл);
ЗаписьТекста.Записать(ТекстJson);
ЗаписьТекста.Закрыть();

БДД.СохранитьВКонтекст(ИмяПеременной, ВременныйФайл);

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


Функция ОБъектВJson(Знач Объект, ПараметрыЗаписи = Неопределено) Экспорт

Если ПараметрыЗаписи = Неопределено Тогда
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", ,,,,,, Истина);
КонецЕсли;

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);
ЗаписатьJSON(ЗаписьJSON, Объект);

Возврат ЗаписьJSON.Закрыть();

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

Функция ОбъектИзJson(ТекстJSON, ЧитатьВСтруктуру = Ложь, ФорматДаты = Неопределено) Экспорт

Если ФорматДаты = Неопределено Тогда
ФорматДаты = ФорматДатыJSON.ISO;
КонецЕсли;
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТекстJSON);

Объект = ПрочитатьJSON(ЧтениеJSON,
НЕ ЧитатьВСтруктуру,,
ФорматДаты);
ЧтениеJSON.Закрыть();
Возврат Объект;

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