Skip to content

Commit

Permalink
Подсчет покрытия кода #27
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Oct 18, 2017
1 parent 7073faf commit 883230b
Showing 1 changed file with 73 additions and 0 deletions.
73 changes: 73 additions & 0 deletions tasks/coverage.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#Использовать 1commands
#Использовать asserts
#Использовать fs
#Использовать json

СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;

ФС.ОбеспечитьПустойКаталог("coverage");
ПутьКСтат = "coverage/stat.json";

Команда = Новый Команда;
Команда.УстановитьКоманду("oscript");
Если НЕ ЭтоWindows Тогда
Команда.ДобавитьПараметр("-encoding=utf-8");
КонецЕсли;
Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат));
Команда.ДобавитьПараметр("tasks/test.os");
Команда.ПоказыватьВыводНемедленно(Истина);

КодВозврата = Команда.Исполнить();
Сообщить(Команда.ПолучитьВывод());
Ожидаем.Что(КодВозврата).Равно(0);

Файл_Стат = Новый Файл(ПутьКСтат);
Ожидаем.Что(Файл_Стат.Существует(), СтрШаблон("Файл <%1> с результатами покрытия не существует!", Файл_Стат.ПолноеИмя)).ЭтоИстина();

ЧтениеТекста = Новый ЧтениеТекста(ПутьКСтат, КодировкаТекста.UTF8);

СтрокаJSON = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();

Парсер = Новый ПарсерJSON();
ДанныеПокрытия = Парсер.ПрочитатьJSON(СтрокаJSON);

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("coverage/genericCoverage.xml");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("coverage");
ЗаписьXML.ЗаписатьАтрибут("version", "1");

Для Каждого Файл Из ДанныеПокрытия Цикл

ДанныеФайла = Файл.Значение;

ЗаписьXML.ЗаписатьНачалоЭлемента("file");
ЗаписьXML.ЗаписатьАтрибут("path", ДанныеФайла.Получить("#path"));

Для Каждого КлючИЗначение Из ДанныеФайла Цикл

Если КлючИЗначение.Ключ = "#path" Тогда
Продолжить;
КонецЕсли;

ДанныеПроцедуры = КлючИЗначение.Значение;
Для Каждого ДанныеСтроки Из ДанныеПроцедуры Цикл

ЗаписьXML.ЗаписатьНачалоЭлемента("lineToCover");

ЗаписьXML.ЗаписатьАтрибут("lineNumber", ДанныеСтроки.Ключ);
Покрыто = Число(ДанныеСтроки.Значение.Получить("count")) > 0;
ЗаписьXML.ЗаписатьАтрибут("covered", Формат(Покрыто, "БИ=true; БЛ=false"));

ЗаписьXML.ЗаписатьКонецЭлемента(); // lineToCover
КонецЦикла
КонецЦикла;

ЗаписьXML.ЗаписатьКонецЭлемента(); // file

КонецЦикла;

ЗаписьXML.ЗаписатьКонецЭлемента(); // coverage
ЗаписьXML.Закрыть();

0 comments on commit 883230b

Please sign in to comment.