1
0
mirror of https://github.com/bia-technologies/precommit4onec.git synced 2025-01-03 22:52:10 +02:00

#ONECICD-59

bdd и тесты
This commit is contained in:
Medvedev Dmitriy 2019-03-19 17:25:57 +03:00
parent 1f25286139
commit 1a0eddf374
5 changed files with 208 additions and 1 deletions

View File

@ -17,6 +17,8 @@
ВсеШаги.Добавить("ВКаталогеРепозиторияЕстьФайл");
ВсеШаги.Добавить("ЯКопируюФайлВКаталогРепозитория");
ВсеШаги.Добавить("ЯФиксируюИзмененияВРепозиторииСКомментарием");
ВсеШаги.Добавить("КодировкаФайлаИФайлаОдинаковая");
ВсеШаги.Добавить("СодержимоеФайлаИФайлаРазное");
Возврат ВсеШаги;
КонецФункции
@ -102,4 +104,75 @@
РепозиторийGit.Закоммитить(ТекстКомментария, ИСТИНА);
КонецПроцедуры
КонецПроцедуры
// Кодировка файла "ИсходныйФайл" и файла "КонечныйФайл" одинаковая
Процедура КодировкаФайлаИФайлаОдинаковая(ИсходныйФайл, КонечныйФайл) Экспорт
ИсходныйФайл = ОбъединитьПути(БДД.ПолучитьИзКонтекста("КаталогПроекта"), ИсходныйФайл);
КонечныйФайл = ОбъединитьПути(БДД.ПолучитьИзКонтекста("РабочийКаталог"), КонечныйФайл);
КодировкаИсходногоФайла = ОпределитьКодировку(ИсходныйФайл);
КодировкаКонечногоФайла = ОпределитьКодировку(КонечныйФайл);
Ожидаем.Что(КодировкаИсходногоФайла).Равно(КодировкаКонечногоФайла);
КонецПроцедуры
// Содержимое файла "ИсходныйФайл" и файла "КонечныйФайл" разное
Процедура СодержимоеФайлаИФайлаРазное(ИсходныйФайл, КонечныйФайл) Экспорт
ИсходныйФайл = ОбъединитьПути(БДД.ПолучитьИзКонтекста("КаталогПроекта"), ИсходныйФайл);
КонечныйФайл = ОбъединитьПути(БДД.ПолучитьИзКонтекста("РабочийКаталог"), КонечныйФайл);
СодержимоеКонечногоФайла = ПрочитатьТекстФайла(КонечныйФайл);
СодержимоеИсходногоФайла = ПрочитатьТекстФайла(ИсходныйФайл);
Ожидаем.Что(СодержимоеИсходногоФайла).Не_().Равно(СодержимоеКонечногоФайла);
КонецПроцедуры
Функция ПрочитатьТекстФайла(ПутьКФайлу) Экспорт
Кодировка = ОпределитьКодировку(ПутьКФайлу);
Текст = Новый ЧтениеТекста();
Текст.Открыть(ПутьКФайлу, Кодировка);
СодержимоеФайла = Текст.Прочитать();
Текст.Закрыть();
Возврат СодержимоеФайла;
КонецФункции // ПрочитатьТекстФайла
Функция ОпределитьКодировку(ПутьКФайлу)
МаркерUTFBOM = СтрРазделить("239 187 191", " ");
ЧтениеДанных = Новый ЧтениеДанных(ПутьКФайлу);
Буфер = Новый БуферДвоичныхДанных(МаркерUTFBOM.Количество());
ЧтениеДанных.ПрочитатьВБуферДвоичныхДанных(Буфер, , МаркерUTFBOM.Количество());
сч = 0;
ЕстьBOM = Истина;
Для Каждого Байт ИЗ Буфер Цикл
Если МаркерUTFBOM[сч] <> Строка(Байт) Тогда
ЕстьBOM = Ложь;
Прервать;
КонецЕсли;
сч = сч + 1;
КонецЦикла;
ЧтениеДанных.Закрыть();
Возврат ?(ЕстьBOM, КодировкаТекста.UTF8, КодировкаТекста.UTF8NoBOM);
КонецФункции //ОпределитьКодировку

View File

@ -0,0 +1,33 @@
# language: ru
Функциональность: Работа с файлами в прекоммите
Как разработчик
Я хочу иметь возможность коммитить свой код и при выполнении прекоммита кодировка
файла с исходником не должна измениться
Контекст:
Допустим Я очищаю параметры команды "oscript" в контексте
И я включаю отладку лога с именем "oscript.app.precommit4onec"
И я создаю временный каталог и запоминаю его как "КаталогРепозиториев"
И я переключаюсь во временный каталог "КаталогРепозиториев"
И я создаю новый репозиторий "rep1" в каталоге "КаталогРепозиториев" и запоминаю его как "РабочийКаталог"
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1"
И Я установил рабочий каталог как текущий каталог
Сценарий: Файл с кодировкой UTF-8Bom изменился после коммита и кодировка осталась прежней
Когда Я копирую файл "fixtures\Bom.bsl" в каталог репозитория "РабочийКаталог"
И я фиксирую изменения в репозитории "РабочийКаталог" с комментарием "Добавил файл процедур"
Тогда Кодировка файла "fixtures\Bom.bsl" и файла "Bom.bsl" одинаковая
И Содержимое файла "fixtures\Bom.bsl" и файла "Bom.bsl" разное
Сценарий: Файл с кодировкой UTF-8NoBom изменился после коммита и кодировка осталась прежней
Когда Я копирую файл "fixtures\NoBom.bsl" в каталог репозитория "РабочийКаталог"
И я фиксирую изменения в репозитории "РабочийКаталог" с комментарием "Добавил файл процедур"
Тогда Кодировка файла "fixtures\NoBom.bsl" и файла "NoBom.bsl" одинаковая
И cодержимое файла "fixtures\NoBom.bsl" и файла "NoBom.bsl" разное

12
fixtures/BOM.bsl Normal file
View File

@ -0,0 +1,12 @@
Процедура Имя ()
КонецПроцедуры
Процедура Имя1 ()
КонецПроцедуры

12
fixtures/NoBom.bsl Normal file
View File

@ -0,0 +1,12 @@
Процедура Имя ()
КонецПроцедуры
Процедура Имя1 ()
КонецПроцедуры

View File

@ -0,0 +1,77 @@
#Использовать asserts
#Использовать logos
#Использовать tempfiles
#Использовать "../src"
Перем юТест;
Перем Лог;
Перем МенеджерВременныхФайлов;
// Основная точка входа
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
юТест = ЮнитТестирование;
ВсеТесты = Новый Массив;
ВсеТесты.Добавить("ТестДолжен_ПрочитатьФайл");
ВсеТесты.Добавить("ТестДолжен_ЗаписатьФайл");
Возврат ВсеТесты;
КонецФункции
Процедура ТестДолжен_ПрочитатьФайл() Экспорт
ПутьКФайлу = ОбъединитьПути(КаталогТестовыхФикстур(), "NoBom.bsl");
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ПутьКФайлу);
Утверждения.ПроверитьЗаполненность(СодержимоеФайла);
КонецПроцедуры
Процедура ТестДолжен_ЗаписатьФайл() Экспорт
Файл = Новый Файл(МенеджерВременныхФайлов.СоздатьФайл("bsl"));
ФайловыеОперации.ЗаписатьТекстФайла(Файл.ПолноеИмя, Файл.ПолноеИмя);
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
Утверждения.ПроверитьРавенство(СодержимоеФайла, Файл.ПолноеИмя);
КонецПроцедуры
Процедура ПередЗапускомТеста() Экспорт
ВремТестер = Новый Тестер;
Лог = Логирование.ПолучитьЛог(ВремТестер.ИмяЛога());
ВключитьПоказОтладки();
МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов;
КонецПроцедуры
Процедура ПослеЗапускаТеста() Экспорт
МенеджерВременныхФайлов.Удалить();
МенеджерВременныхФайлов = Неопределено;
КонецПроцедуры
Процедура ВключитьПоказОтладки()
Лог.УстановитьУровень(УровниЛога.Отладка);
КонецПроцедуры
Процедура ВыключитьПоказОтладки()
Лог.УстановитьУровень(УровниЛога.Информация);
КонецПроцедуры
Функция КаталогТестовыхФикстур()
Возврат ОбъединитьПути(КаталогИсходников(), "fixtures");
КонецФункции
Функция КаталогИсходников()
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..");
КонецФункции