1+ #Использовать 1commands
2+ #Использовать asserts
3+ #Использовать fs
4+ #Использовать json
5+
6+ СистемнаяИнформация = Новый СистемнаяИнформация;
7+ ЭтоWindows = Найти (НРег (СистемнаяИнформация.ВерсияОС), "windows" ) > 0 ;
8+
9+ ФС.ОбеспечитьПустойКаталог("coverage" );
10+ ПутьКСтат = "coverage/stat.json" ;
11+
12+ Команда = Новый Команда;
13+ Команда.УстановитьКоманду("oscript" );
14+ Если НЕ ЭтоWindows Тогда
15+ Команда.ДобавитьПараметр("-encoding=utf-8" );
16+ КонецЕсли ;
17+ Команда.ДобавитьПараметр(СтрШаблон ("-codestat=%1" , ПутьКСтат));
18+ Команда.ДобавитьПараметр("tasks/test.os" );
19+ Команда.ПоказыватьВыводНемедленно(Истина );
20+
21+ КодВозврата = Команда.Исполнить();
22+ Сообщить (Команда.ПолучитьВывод());
23+ Ожидаем.Что(КодВозврата).Равно(0 );
24+
25+ Файл_Стат = Новый Файл(ПутьКСтат);
26+ Ожидаем.Что(Файл_Стат.Существует(), СтрШаблон ("Файл <%1> с результатами покрытия не существует!" , Файл_Стат.ПолноеИмя)).ЭтоИстина();
27+
28+ ЧтениеТекста = Новый ЧтениеТекста(ПутьКСтат, КодировкаТекста.UTF8);
29+
30+ СтрокаJSON = ЧтениеТекста.Прочитать();
31+ ЧтениеТекста.Закрыть();
32+
33+ Парсер = Новый ПарсерJSON();
34+ ДанныеПокрытия = Парсер.ПрочитатьJSON(СтрокаJSON);
35+
36+ ЗаписьXML = Новый ЗаписьXML;
37+ ЗаписьXML.ОткрытьФайл("coverage/genericCoverage.xml" );
38+ ЗаписьXML.ЗаписатьОбъявлениеXML();
39+ ЗаписьXML.ЗаписатьНачалоЭлемента("coverage" );
40+ ЗаписьXML.ЗаписатьАтрибут("version" , "1" );
41+
42+ Для Каждого Файл Из ДанныеПокрытия Цикл
43+
44+ ДанныеФайла = Файл.Значение;
45+
46+ ЗаписьXML.ЗаписатьНачалоЭлемента("file" );
47+ ЗаписьXML.ЗаписатьАтрибут("path" , ДанныеФайла.Получить("#path" ));
48+
49+ Для Каждого КлючИЗначение Из ДанныеФайла Цикл
50+
51+ Если КлючИЗначение.Ключ = "#path" Тогда
52+ Продолжить ;
53+ КонецЕсли ;
54+
55+ ДанныеПроцедуры = КлючИЗначение.Значение;
56+ Для Каждого ДанныеСтроки Из ДанныеПроцедуры Цикл
57+
58+ ЗаписьXML.ЗаписатьНачалоЭлемента("lineToCover" );
59+
60+ ЗаписьXML.ЗаписатьАтрибут("lineNumber" , ДанныеСтроки.Ключ);
61+ Покрыто = Число (ДанныеСтроки.Значение.Получить("count" )) > 0 ;
62+ ЗаписьXML.ЗаписатьАтрибут("covered" , Формат (Покрыто, "БИ=true; БЛ=false" ));
63+
64+ ЗаписьXML.ЗаписатьКонецЭлемента(); // lineToCover
65+ КонецЦикла
66+ КонецЦикла ;
67+
68+ ЗаписьXML.ЗаписатьКонецЭлемента(); // file
69+
70+ КонецЦикла ;
71+
72+ ЗаписьXML.ЗаписатьКонецЭлемента(); // coverage
73+ ЗаписьXML.Закрыть();
0 commit comments