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