/
smwwiki
/
OneScript_fork
Обзор
Документация
Войти
/
smwwiki
/
OneScript_fork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
tests/source-licensing.os
131 строка
6 KB
Andrey Ovsiankin
Запущен IoC, требуется отрефакторить предыдущие API инициализации.
05 фев 2021, 17:49
05 фев 2021, 17:49
01377d8
Код
Авторство
О чём код?
#Использовать asserts Перем юТест; Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт юТест = ЮнитТестирование; ВсеТесты = Новый Массив; ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоВсеФайлыИмеютПрефиксЛицензии"); Возврат ВсеТесты; КонецФункции Процедура ТестДолжен_ПроверитьЧтоВсеФайлыИмеютПрефиксЛицензии() Экспорт КаталогИсходников = КаталогИсходниковПроекта(); Если не КаталогИсходников.Существует() Тогда Возврат; // если запустили тесты вне каталога репы GIT, то тест не имеет смысла. КонецЕсли; юТест.ПроверитьИстину(ПротестироватьИсходники(КаталогИсходников.ПолноеИмя), "Какие-то файлы не имеют лицензии. См. полный лог сборки"); КонецПроцедуры Функция КаталогИсходниковПроекта() Возврат Новый Файл(ОбъединитьПути(ТекущийСценарий().Каталог,"../src")); КонецФункции Функция ПротестироватьИсходники(Знач КаталогИсходников, Знач ИсправлятьТутЖе = Ложь) Экспорт ФайлыИсключения = Новый Массив; // чужой код ФайлыИсключения.Добавить("src/GlobalAssemblyInfo.cs"); ФайлыИсключения.Добавить("src/oscript/Web/Multipart/"); ФайлыИсключения.Добавить("src/VSCode.DebugAdapter/DebugSession.cs"); ФайлыИсключения.Добавить("src/VSCode.DebugAdapter/OscriptProtocols/Wcf/ServiceProxy.cs"); ВсеФайлы = НайтиФайлы(КаталогИсходников, ПолучитьМаскуВсеФайлы()); ЕстьОшибки = Ложь; Для Каждого Файл Из ВсеФайлы Цикл Если Файл.Расширение = ".cs" Тогда ЭтоФайлИсключение = Ложь; ПриведенныйПуть = СтрЗаменить(Файл.ПолноеИмя, "\", "/"); Для Каждого ФайлИсключение Из ФайлыИсключения Цикл Если Найти(ПриведенныйПуть, ФайлИсключение) > 0 Тогда ЭтоФайлИсключение = Истина; КонецЕсли; КонецЦикла; Если ЭтоФайлИсключение Тогда Продолжить; КонецЕсли; ЕстьОшибкиСейчас = Не ПроверитьФайл(Файл); ЕстьОшибки = ЕстьОшибки ИЛИ ЕстьОшибкиСейчас; Если ЕстьОшибкиСейчас и ИсправлятьТутЖе Тогда ИсправитьФайл(Файл); КонецЕсли; ИначеЕсли Файл.ЭтоКаталог() и Файл.Имя <> "obj" и Файл.Имя <> "packages" Тогда ЕстьОшибкиСейчас = Не ПротестироватьИсходники(Файл.ПолноеИмя, ИсправлятьТутЖе); ЕстьОшибки = ЕстьОшибки ИЛИ ЕстьОшибкиСейчас; КонецЕсли; КонецЦикла; Возврат Не ЕстьОшибки; КонецФункции Функция ПроверитьФайл(Знач Файл) Префикс = ПрефиксЛицензии(); Документ = Новый ТекстовыйДокумент; Документ.Прочитать(Файл.ПолноеИмя); СтрокаВФайле = СокрП(Документ.ПолучитьСтроку(1)) + " |" + СокрП(Документ.ПолучитьСтроку(2)) + " |" + СокрП(Документ.ПолучитьСтроку(3)) + " |" + СокрП(Документ.ПолучитьСтроку(4)) + " |" + СокрП(Документ.ПолучитьСтроку(5)) + " |" + СокрП(Документ.ПолучитьСтроку(6)); Если СтрНайти(СтрокаВФайле, "<auto-generated>") > 0 или СтрНайти(СтрокаВФайле, "OSCRIPT_SKIP_TESTING_MPL2_PREFIX") > 0 Тогда Возврат Истина; КонецЕсли; Попытка юТест.ПроверитьРавенство(Префикс, СтрокаВФайле, "В файле " + Файл.ПолноеИмя + " должен присутствовать префикс лицензии"); Исключение Сообщить(ИнформацияОбОшибке().Описание); Возврат Ложь; КонецПопытки; Возврат Истина; КонецФункции Процедура ИсправитьФайл(Знач Файл) Сообщить("ИСПРАВЛЯЮ ФАЙЛ: " + Файл.ПолноеИмя); Документ = Новый ТекстовыйДокумент; Документ.Прочитать(Файл.ПолноеИмя); Документ.ВставитьСтроку(1, ПрефиксЛицензии()); Документ.Записать(Файл.ПолноеИмя); КонецПроцедуры Функция ПрефиксЛицензии() Возврат "/*---------------------------------------------------------- |This Source Code Form is subject to the terms of the |Mozilla Public License, v.2.0. If a copy of the MPL |was not distributed with this file, You can obtain one |at http://mozilla.org/MPL/2.0/. |----------------------------------------------------------*/"; КонецФункции Если СтартовыйСценарий().Источник = ТекущийСценарий().Источник Тогда Если АргументыКоманднойСтроки.Количество() и АргументыКоманднойСтроки[0] = "-fix" Тогда юТест = Утверждения; Сообщить("Автофикс"); ПротестироватьИсходники(КаталогИсходниковПроекта().ПолноеИмя, Истина); КонецЕсли; КонецЕсли;