-
Notifications
You must be signed in to change notification settings - Fork 16
/
coverage.os
74 lines (52 loc) · 3.49 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
#Использовать 1commands
#Использовать asserts
#Использовать fs
#Использовать json
СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;
ФС.ОбеспечитьПустойКаталог("coverage");
ПутьКСтат = "coverage/stat.json";
Команда = Новый Команда;
Команда.УстановитьКоманду("oscript");
Если НЕ ЭтоWindows Тогда
Команда.ДобавитьПараметр("-encoding=utf-8");
КонецЕсли;
Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат));
Команда.ДобавитьПараметр("tasks/test.os");
Команда.ПоказыватьВыводНемедленно(Истина);
КодВозврата = Команда.Исполнить();
Файл_Стат = Новый Файл(ПутьКСтат);
Ожидаем.Что(Файл_Стат.Существует(),
СтрШаблон("Файл <%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.Закрыть();
ЗавершитьРаботу(КодВозврата);