You've already forked precommit4onec
mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2025-07-17 01:32:39 +02:00
#ONECICD-59
bdd и тесты
This commit is contained in:
@ -17,6 +17,8 @@
|
|||||||
ВсеШаги.Добавить("ВКаталогеРепозиторияЕстьФайл");
|
ВсеШаги.Добавить("ВКаталогеРепозиторияЕстьФайл");
|
||||||
ВсеШаги.Добавить("ЯКопируюФайлВКаталогРепозитория");
|
ВсеШаги.Добавить("ЯКопируюФайлВКаталогРепозитория");
|
||||||
ВсеШаги.Добавить("ЯФиксируюИзмененияВРепозиторииСКомментарием");
|
ВсеШаги.Добавить("ЯФиксируюИзмененияВРепозиторииСКомментарием");
|
||||||
|
ВсеШаги.Добавить("КодировкаФайлаИФайлаОдинаковая");
|
||||||
|
ВсеШаги.Добавить("СодержимоеФайлаИФайлаРазное");
|
||||||
|
|
||||||
Возврат ВсеШаги;
|
Возврат ВсеШаги;
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -103,3 +105,74 @@
|
|||||||
РепозиторийGit.Закоммитить(ТекстКомментария, ИСТИНА);
|
РепозиторийGit.Закоммитить(ТекстКомментария, ИСТИНА);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Кодировка файла "ИсходныйФайл" и файла "КонечныйФайл" одинаковая
|
||||||
|
Процедура КодировкаФайлаИФайлаОдинаковая(ИсходныйФайл, КонечныйФайл) Экспорт
|
||||||
|
|
||||||
|
ИсходныйФайл = ОбъединитьПути(БДД.ПолучитьИзКонтекста("КаталогПроекта"), ИсходныйФайл);
|
||||||
|
КонечныйФайл = ОбъединитьПути(БДД.ПолучитьИзКонтекста("РабочийКаталог"), КонечныйФайл);
|
||||||
|
|
||||||
|
КодировкаИсходногоФайла = ОпределитьКодировку(ИсходныйФайл);
|
||||||
|
КодировкаКонечногоФайла = ОпределитьКодировку(КонечныйФайл);
|
||||||
|
|
||||||
|
Ожидаем.Что(КодировкаИсходногоФайла).Равно(КодировкаКонечногоФайла);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Содержимое файла "ИсходныйФайл" и файла "КонечныйФайл" разное
|
||||||
|
Процедура СодержимоеФайлаИФайлаРазное(ИсходныйФайл, КонечныйФайл) Экспорт
|
||||||
|
|
||||||
|
ИсходныйФайл = ОбъединитьПути(БДД.ПолучитьИзКонтекста("КаталогПроекта"), ИсходныйФайл);
|
||||||
|
КонечныйФайл = ОбъединитьПути(БДД.ПолучитьИзКонтекста("РабочийКаталог"), КонечныйФайл);
|
||||||
|
|
||||||
|
СодержимоеКонечногоФайла = ПрочитатьТекстФайла(КонечныйФайл);
|
||||||
|
СодержимоеИсходногоФайла = ПрочитатьТекстФайла(ИсходныйФайл);
|
||||||
|
|
||||||
|
Ожидаем.Что(СодержимоеИсходногоФайла).Не_().Равно(СодержимоеКонечногоФайла);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|
||||||
|
Функция ПрочитатьТекстФайла(ПутьКФайлу) Экспорт
|
||||||
|
|
||||||
|
Кодировка = ОпределитьКодировку(ПутьКФайлу);
|
||||||
|
Текст = Новый ЧтениеТекста();
|
||||||
|
Текст.Открыть(ПутьКФайлу, Кодировка);
|
||||||
|
|
||||||
|
СодержимоеФайла = Текст.Прочитать();
|
||||||
|
|
||||||
|
Текст.Закрыть();
|
||||||
|
|
||||||
|
Возврат СодержимоеФайла;
|
||||||
|
|
||||||
|
КонецФункции // ПрочитатьТекстФайла
|
||||||
|
|
||||||
|
Функция ОпределитьКодировку(ПутьКФайлу)
|
||||||
|
|
||||||
|
МаркерUTFBOM = СтрРазделить("239 187 191", " ");
|
||||||
|
ЧтениеДанных = Новый ЧтениеДанных(ПутьКФайлу);
|
||||||
|
Буфер = Новый БуферДвоичныхДанных(МаркерUTFBOM.Количество());
|
||||||
|
|
||||||
|
ЧтениеДанных.ПрочитатьВБуферДвоичныхДанных(Буфер, , МаркерUTFBOM.Количество());
|
||||||
|
сч = 0;
|
||||||
|
ЕстьBOM = Истина;
|
||||||
|
|
||||||
|
Для Каждого Байт ИЗ Буфер Цикл
|
||||||
|
|
||||||
|
Если МаркерUTFBOM[сч] <> Строка(Байт) Тогда
|
||||||
|
|
||||||
|
ЕстьBOM = Ложь;
|
||||||
|
Прервать;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
сч = сч + 1;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ЧтениеДанных.Закрыть();
|
||||||
|
|
||||||
|
Возврат ?(ЕстьBOM, КодировкаТекста.UTF8, КодировкаТекста.UTF8NoBOM);
|
||||||
|
|
||||||
|
КонецФункции //ОпределитьКодировку
|
||||||
|
|
||||||
|
33
features/ФайловыеОперации.feature
Normal file
33
features/ФайловыеОперации.feature
Normal 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
12
fixtures/BOM.bsl
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Процедура Имя ()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура Имя1 ()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
12
fixtures/NoBom.bsl
Normal file
12
fixtures/NoBom.bsl
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Процедура Имя ()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура Имя1 ()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
77
tests/ТестФайловыеОперации.os
Normal file
77
tests/ТестФайловыеОперации.os
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
#Использовать asserts
|
||||||
|
#Использовать logos
|
||||||
|
#Использовать tempfiles
|
||||||
|
#Использовать "../src"
|
||||||
|
|
||||||
|
Перем юТест;
|
||||||
|
Перем Лог;
|
||||||
|
Перем МенеджерВременныхФайлов;
|
||||||
|
|
||||||
|
// Основная точка входа
|
||||||
|
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
|
||||||
|
|
||||||
|
юТест = ЮнитТестирование;
|
||||||
|
|
||||||
|
ВсеТесты = Новый Массив;
|
||||||
|
|
||||||
|
ВсеТесты.Добавить("ТестДолжен_ПрочитатьФайл");
|
||||||
|
ВсеТесты.Добавить("ТестДолжен_ЗаписатьФайл");
|
||||||
|
|
||||||
|
Возврат ВсеТесты;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ТестДолжен_ПрочитатьФайл() Экспорт
|
||||||
|
|
||||||
|
ПутьКФайлу = ОбъединитьПути(КаталогТестовыхФикстур(), "NoBom.bsl");
|
||||||
|
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ПутьКФайлу);
|
||||||
|
|
||||||
|
Утверждения.ПроверитьЗаполненность(СодержимоеФайла);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ТестДолжен_ЗаписатьФайл() Экспорт
|
||||||
|
|
||||||
|
Файл = Новый Файл(МенеджерВременныхФайлов.СоздатьФайл("bsl"));
|
||||||
|
ФайловыеОперации.ЗаписатьТекстФайла(Файл.ПолноеИмя, Файл.ПолноеИмя);
|
||||||
|
|
||||||
|
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
|
||||||
|
|
||||||
|
Утверждения.ПроверитьРавенство(СодержимоеФайла, Файл.ПолноеИмя);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПередЗапускомТеста() Экспорт
|
||||||
|
|
||||||
|
ВремТестер = Новый Тестер;
|
||||||
|
Лог = Логирование.ПолучитьЛог(ВремТестер.ИмяЛога());
|
||||||
|
|
||||||
|
ВключитьПоказОтладки();
|
||||||
|
|
||||||
|
МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПослеЗапускаТеста() Экспорт
|
||||||
|
|
||||||
|
МенеджерВременныхФайлов.Удалить();
|
||||||
|
МенеджерВременныхФайлов = Неопределено;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|
||||||
|
Процедура ВключитьПоказОтладки()
|
||||||
|
Лог.УстановитьУровень(УровниЛога.Отладка);
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ВыключитьПоказОтладки()
|
||||||
|
Лог.УстановитьУровень(УровниЛога.Информация);
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция КаталогТестовыхФикстур()
|
||||||
|
Возврат ОбъединитьПути(КаталогИсходников(), "fixtures");
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция КаталогИсходников()
|
||||||
|
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..");
|
||||||
|
КонецФункции
|
Reference in New Issue
Block a user