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:
parent
1f25286139
commit
1a0eddf374
@ -17,6 +17,8 @@
|
||||
ВсеШаги.Добавить("ВКаталогеРепозиторияЕстьФайл");
|
||||
ВсеШаги.Добавить("ЯКопируюФайлВКаталогРепозитория");
|
||||
ВсеШаги.Добавить("ЯФиксируюИзмененияВРепозиторииСКомментарием");
|
||||
ВсеШаги.Добавить("КодировкаФайлаИФайлаОдинаковая");
|
||||
ВсеШаги.Добавить("СодержимоеФайлаИФайлаРазное");
|
||||
|
||||
Возврат ВсеШаги;
|
||||
КонецФункции
|
||||
@ -102,4 +104,75 @@
|
||||
|
||||
Репозиторий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");
|
||||
КонецФункции
|
||||
|
||||
Функция КаталогИсходников()
|
||||
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..");
|
||||
КонецФункции
|
Loading…
Reference in New Issue
Block a user