diff --git a/packagedef b/packagedef index 172a616..fcc6b13 100644 --- a/packagedef +++ b/packagedef @@ -3,4 +3,5 @@ .Версия("1.0.0") .ВключитьФайл("Модули") .ВключитьФайл("LICENSE") - .ВключитьФайл("README.md"); + .ВключитьФайл("README.md") + .ЗависитОт("1commands", "1.5.0"); diff --git a/tests/resources/NoValidSum.txt b/tests/resources/NoValidSum.txt new file mode 100644 index 0000000..9f3c1e1 --- /dev/null +++ b/tests/resources/NoValidSum.txt @@ -0,0 +1 @@ +1234567890_ \ No newline at end of file diff --git a/tests/resources/ValidSum.txt b/tests/resources/ValidSum.txt new file mode 100644 index 0000000..6a537b5 --- /dev/null +++ b/tests/resources/ValidSum.txt @@ -0,0 +1 @@ +1234567890 \ No newline at end of file diff --git a/tests/resources/ValidSum2.txt b/tests/resources/ValidSum2.txt new file mode 100644 index 0000000..6a537b5 --- /dev/null +++ b/tests/resources/ValidSum2.txt @@ -0,0 +1 @@ +1234567890 \ No newline at end of file diff --git "a/tests/\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262.os" "b/tests/\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262.os" new file mode 100644 index 0000000..7a8a8e6 --- /dev/null +++ "b/tests/\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262.os" @@ -0,0 +1,45 @@ +#Использовать asserts +#Использовать tempfiles + +#Использовать ".." + +Перем мМенеджерВременныхФайлов; + +Функция ПолучитьСписокТестов(Знач ЮнитТестирование) Экспорт + + МассивТестов = Новый Массив; + МассивТестов.Добавить("Тест_ПроверитьХешСумму"); + МассивТестов.Добавить("Тест_ФайлыРавны"); + МассивТестов.Добавить("Тест_ФайлыНеРавны"); + + Возврат МассивТестов; + +КонецФункции + +Процедура ПередЗапускомТеста() Экспорт +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт +КонецПроцедуры + + +Процедура Тест_ПроверитьХешСумму() Экспорт + + ХешьСуммаSHA1 = "01b307acba4f54f55aafc33bb06bbbf6ca803e9a"; + + ПутьКФайлу = ОбъединитьПути(ТекущийКаталог(), "tests", "resources", "ValidSum.txt"); + Ожидаем.Что(ФС.ПолучитьСуммуФайлаSHA1(ПутьКФайлу)).Равно(ХешьСуммаSHA1); + +КонецПроцедуры + +Процедура Тест_ФайлыРавны() Экспорт + ПервыйФайл = ОбъединитьПути(ТекущийКаталог(), "tests", "resources", "ValidSum.txt"); + ВторойФайл = ОбъединитьПути(ТекущийКаталог(), "tests", "resources", "ValidSum2.txt"); + Ожидаем.Что(ФС.СравнитьФайлы(ПервыйФайл, ВторойФайл)).Равно(Истина); +КонецПроцедуры + +Процедура Тест_ФайлыНеРавны() Экспорт + ПервыйФайл = ОбъединитьПути(ТекущийКаталог(), "tests", "resources", "ValidSum.txt"); + ВторойФайл = ОбъединитьПути(ТекущийКаталог(), "tests", "resources", "NoValidSum.txt"); + Ожидаем.Что(ФС.СравнитьФайлы(ПервыйФайл, ВторойФайл)).Равно(Ложь); +КонецПроцедуры diff --git "a/\320\234\320\276\320\264\321\203\320\273\320\270/\320\244\320\241.os" "b/\320\234\320\276\320\264\321\203\320\273\320\270/\320\244\320\241.os" index 6cc514f..c85624b 100644 --- "a/\320\234\320\276\320\264\321\203\320\273\320\270/\320\244\320\241.os" +++ "b/\320\234\320\276\320\264\321\203\320\273\320\270/\320\244\320\241.os" @@ -6,6 +6,7 @@ // ///////////////////////////////////////////////////////////////////// +#Использовать 1commands // Проверяет существование файла или каталога // @@ -218,3 +219,51 @@ Возврат Шаблон; КонецФункции + + +// Вычиcлсяет значение хеш-суммы (контрольной суммы) для указанного файлов по алгоритму SHA-1. +// +// Параметры: +// <ПутьКФайлу> - Строка - Путь к файлу, сумму котрого необходимо вычислить +// +// Возвращаемое значение: +// Строка - Контрольная сумма файла +// +Функция ПолучитьСуммуФайлаSHA1(ПутьКФайлу) Экспорт + + Если НЕ ФайлСуществует(ПутьКФайлу) Тогда + ВызватьИсключение "Выбран каталог или файла не существует"; + КонецЕсли; + + Команда = Новый Команда; + СистемнаяИнформация = Новый СистемнаяИнформация; + ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; + Если ЭтоWindows Тогда + Команда.УстановитьКоманду("certutil"); + Команда.ДобавитьПараметр("-hashfile"); + Команда.ДобавитьПараметр(ПутьКФайлу); + Команда.Исполнить(); + Ответ = Команда.ПолучитьВывод(); + Возврат СокрЛП(СтрПолучитьСтроку(СтрЗаменить(Ответ, " ", ""), 2)); + Иначе + Команда.УстановитьКоманду("sha1sum"); + Команда.ДобавитьПараметр(ПутьКФайлу); + Команда.Исполнить(); + Возврат СтрРазделить(Команда.ПолучитьВывод(), " ")[0]; + КонецЕсли; + +КонецФункции + +// Сравнивает хеш-суммы 2-х переданных файлов +// +// Параметры: +// <ПервыйФайл> - Строка - Путь к первому файлу. +// +// <ПервыйФайл> - Строка - Путь ко второму файлу. +// +// Возвращаемое значение: +// Булево - Результат сравнения +// +Функция СравнитьФайлы(ПервыйФайл , ВторойФайл) Экспорт + Возврат ПолучитьСуммуФайлаSHA1(ПервыйФайл) = ПолучитьСуммуФайлаSHA1(ВторойФайл); +КонецФункции