mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-13 06:53:21 +03:00
test(mxl): побайтовый раундтрип макетов, произведённых платформой
До сих пор строгая дорожка кампании жила только в отладочных прогонах, и её некому было защищать: снэпшот сравнивает наш вывод с нашим же прежним выводом, поэтому дрейф от платформы он не ловит. Семь макетов, собранных вручную в Конфигураторе, положены в фикстуры. Кейс декомпилирует такой макет и компилирует обратно, а результат сверяется с исходником побайтово. Проверено, что сеть кусается: подмена одного тега в фикстуре роняет кейс. Раннеру добавлены две ручки: - expect.filesEqual — сравнение двух файлов побайтово. Снэпшот его не заменяет: --update-snapshots молча принял бы расхождение с платформой; - inputFrom — брать вход из файла в рабочем каталоге, а не из case.input. Нужно, когда вход производит preRun: case.input пишется ПОСЛЕ preRun и затёр бы его. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
fc792bfee6
commit
96e8616bb4
+96
@@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<languageSettings>
|
||||
<currentLanguage>ru</currentLanguage>
|
||||
<defaultLanguage>ru</defaultLanguage>
|
||||
<languageInfo>
|
||||
<id>ru</id>
|
||||
<code>Русский</code>
|
||||
<description>Русский</description>
|
||||
</languageInfo>
|
||||
<languageInfo>
|
||||
<id>en</id>
|
||||
<code>Английский</code>
|
||||
<description>Английский</description>
|
||||
</languageInfo>
|
||||
</languageSettings>
|
||||
<columns>
|
||||
<size>1</size>
|
||||
<columnsItem>
|
||||
<index>0</index>
|
||||
<column>
|
||||
<formatIndex>1</formatIndex>
|
||||
</column>
|
||||
</columnsItem>
|
||||
</columns>
|
||||
<columns>
|
||||
<id>eb5ee63c-905d-4d8b-ab55-dc5ec80c067a</id>
|
||||
<size>2</size>
|
||||
<columnsItem>
|
||||
<index>0</index>
|
||||
<column>
|
||||
<formatIndex>1</formatIndex>
|
||||
</column>
|
||||
</columnsItem>
|
||||
<columnsItem>
|
||||
<index>1</index>
|
||||
<column>
|
||||
<formatIndex>1</formatIndex>
|
||||
</column>
|
||||
</columnsItem>
|
||||
</columns>
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Ширина 20</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<columnsID>eb5ee63c-905d-4d8b-ab55-dc5ec80c067a</columnsID>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Ширина 20</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Ширина 20</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<templateMode>true</templateMode>
|
||||
<defaultFormatIndex>2</defaultFormatIndex>
|
||||
<height>2</height>
|
||||
<vgRows>2</vgRows>
|
||||
<format>
|
||||
<width>160</width>
|
||||
</format>
|
||||
<format>
|
||||
<width>72</width>
|
||||
</format>
|
||||
</document>
|
||||
+126
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<languageSettings>
|
||||
<currentLanguage>ru</currentLanguage>
|
||||
<defaultLanguage>ru</defaultLanguage>
|
||||
<languageInfo>
|
||||
<id>ru</id>
|
||||
<code>Русский</code>
|
||||
<description>Русский</description>
|
||||
</languageInfo>
|
||||
<languageInfo>
|
||||
<id>en</id>
|
||||
<code>Английский</code>
|
||||
<description>Английский</description>
|
||||
</languageInfo>
|
||||
</languageSettings>
|
||||
<columns>
|
||||
<size>1</size>
|
||||
</columns>
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>1 строка</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<formatIndex>1</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>2 скрыта</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<rowsItem>
|
||||
<index>2</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>3 строка</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<rowsItem>
|
||||
<index>3</index>
|
||||
<row>
|
||||
<empty>true</empty>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<rowsItem>
|
||||
<index>4</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>2</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>задан полужирный шрифт</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<rowsItem>
|
||||
<index>5</index>
|
||||
<row>
|
||||
<formatIndex>3</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>задан шрифт строки</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<templateMode>true</templateMode>
|
||||
<defaultFormatIndex>4</defaultFormatIndex>
|
||||
<height>6</height>
|
||||
<vgRows>6</vgRows>
|
||||
<font faceName="Arial" height="8" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
|
||||
<font faceName="Arial" height="8" bold="false" italic="false" underline="true" strikeout="false" kind="Absolute" scale="100"/>
|
||||
<format>
|
||||
<hidden>true</hidden>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
</format>
|
||||
<format>
|
||||
<font>1</font>
|
||||
</format>
|
||||
<format>
|
||||
<width>72</width>
|
||||
</format>
|
||||
</document>
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<languageSettings>
|
||||
<currentLanguage>ru</currentLanguage>
|
||||
<defaultLanguage>ru</defaultLanguage>
|
||||
<languageInfo>
|
||||
<id>ru</id>
|
||||
<code>Русский</code>
|
||||
<description>Русский</description>
|
||||
</languageInfo>
|
||||
<languageInfo>
|
||||
<id>en</id>
|
||||
<code>Английский</code>
|
||||
<description>Английский</description>
|
||||
</languageInfo>
|
||||
</languageSettings>
|
||||
<columns>
|
||||
<size>2</size>
|
||||
</columns>
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>1 (Ширина по умолчанию)</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>2 (Ширина по умолчанию)</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<templateMode>true</templateMode>
|
||||
<defaultFormatIndex>1</defaultFormatIndex>
|
||||
<height>1</height>
|
||||
<vgRows>1</vgRows>
|
||||
<format>
|
||||
<width>72</width>
|
||||
</format>
|
||||
</document>
|
||||
@@ -0,0 +1,99 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<languageSettings>
|
||||
<currentLanguage>ru</currentLanguage>
|
||||
<defaultLanguage>ru</defaultLanguage>
|
||||
<languageInfo>
|
||||
<id>ru</id>
|
||||
<code>Русский</code>
|
||||
<description>Русский</description>
|
||||
</languageInfo>
|
||||
<languageInfo>
|
||||
<id>en</id>
|
||||
<code>Английский</code>
|
||||
<description>Английский</description>
|
||||
</languageInfo>
|
||||
</languageSettings>
|
||||
<columns>
|
||||
<size>2</size>
|
||||
<columnsItem>
|
||||
<index>0</index>
|
||||
<column>
|
||||
<formatIndex>1</formatIndex>
|
||||
</column>
|
||||
</columnsItem>
|
||||
<columnsItem>
|
||||
<index>1</index>
|
||||
<column>
|
||||
<formatIndex>2</formatIndex>
|
||||
</column>
|
||||
</columnsItem>
|
||||
</columns>
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>ширина 20</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>шинина 40</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>2. Ширина 20</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>2. Ширина 40</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<templateMode>true</templateMode>
|
||||
<defaultFormatIndex>3</defaultFormatIndex>
|
||||
<height>2</height>
|
||||
<vgRows>2</vgRows>
|
||||
<format>
|
||||
<width>160</width>
|
||||
</format>
|
||||
<format>
|
||||
<width>320</width>
|
||||
</format>
|
||||
<format>
|
||||
<width>72</width>
|
||||
</format>
|
||||
</document>
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<languageSettings>
|
||||
<currentLanguage>ru</currentLanguage>
|
||||
<defaultLanguage>ru</defaultLanguage>
|
||||
<languageInfo>
|
||||
<id>ru</id>
|
||||
<code>Русский</code>
|
||||
<description>Русский</description>
|
||||
</languageInfo>
|
||||
<languageInfo>
|
||||
<id>en</id>
|
||||
<code>Английский</code>
|
||||
<description>Английский</description>
|
||||
</languageInfo>
|
||||
</languageSettings>
|
||||
<columns>
|
||||
<size>3</size>
|
||||
<columnsItem>
|
||||
<index>0</index>
|
||||
<column>
|
||||
<formatIndex>1</formatIndex>
|
||||
</column>
|
||||
</columnsItem>
|
||||
<columnsItem>
|
||||
<index>1</index>
|
||||
<column>
|
||||
<formatIndex>2</formatIndex>
|
||||
</column>
|
||||
</columnsItem>
|
||||
<columnsItem>
|
||||
<index>2</index>
|
||||
<column>
|
||||
<formatIndex>3</formatIndex>
|
||||
</column>
|
||||
</columnsItem>
|
||||
</columns>
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Ширина 10</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Ширина 20</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Ширина 30</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<templateMode>true</templateMode>
|
||||
<defaultFormatIndex>4</defaultFormatIndex>
|
||||
<height>1</height>
|
||||
<vgRows>1</vgRows>
|
||||
<format>
|
||||
<width>80</width>
|
||||
</format>
|
||||
<format>
|
||||
<width>160</width>
|
||||
</format>
|
||||
<format>
|
||||
<width>240</width>
|
||||
</format>
|
||||
<format>
|
||||
<width>72</width>
|
||||
</format>
|
||||
</document>
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<languageSettings>
|
||||
<currentLanguage>ru</currentLanguage>
|
||||
<defaultLanguage>ru</defaultLanguage>
|
||||
<languageInfo>
|
||||
<id>ru</id>
|
||||
<code>Русский</code>
|
||||
<description>Русский</description>
|
||||
</languageInfo>
|
||||
<languageInfo>
|
||||
<id>en</id>
|
||||
<code>Английский</code>
|
||||
<description>Английский</description>
|
||||
</languageInfo>
|
||||
</languageSettings>
|
||||
<columns>
|
||||
<size>3</size>
|
||||
<columnsItem>
|
||||
<index>0</index>
|
||||
<column>
|
||||
<formatIndex>1</formatIndex>
|
||||
</column>
|
||||
</columnsItem>
|
||||
<columnsItem>
|
||||
<index>2</index>
|
||||
<column>
|
||||
<formatIndex>2</formatIndex>
|
||||
</column>
|
||||
</columnsItem>
|
||||
</columns>
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Ширина 20</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Ширина по умолчанию</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Ширина 40</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<templateMode>true</templateMode>
|
||||
<defaultFormatIndex>3</defaultFormatIndex>
|
||||
<height>1</height>
|
||||
<vgRows>1</vgRows>
|
||||
<format>
|
||||
<width>160</width>
|
||||
</format>
|
||||
<format>
|
||||
<width>320</width>
|
||||
</format>
|
||||
<format>
|
||||
<width>72</width>
|
||||
</format>
|
||||
</document>
|
||||
@@ -0,0 +1,90 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<languageSettings>
|
||||
<currentLanguage>ru</currentLanguage>
|
||||
<defaultLanguage>ru</defaultLanguage>
|
||||
<languageInfo>
|
||||
<id>ru</id>
|
||||
<code>Русский</code>
|
||||
<description>Русский</description>
|
||||
</languageInfo>
|
||||
<languageInfo>
|
||||
<id>en</id>
|
||||
<code>Английский</code>
|
||||
<description>Английский</description>
|
||||
</languageInfo>
|
||||
</languageSettings>
|
||||
<columns>
|
||||
<size>1</size>
|
||||
</columns>
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>1</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>рамка</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>2</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>курсив, красный</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<rowsItem>
|
||||
<index>2</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Полужирный</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<templateMode>true</templateMode>
|
||||
<defaultFormatIndex>4</defaultFormatIndex>
|
||||
<height>3</height>
|
||||
<vgRows>3</vgRows>
|
||||
<line width="1" gap="false">
|
||||
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style>
|
||||
</line>
|
||||
<font faceName="Arial" height="8" bold="false" italic="true" underline="false" strikeout="false" kind="Absolute" scale="100"/>
|
||||
<font faceName="Arial" height="8" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<textColor>style:SpecialTextColor</textColor>
|
||||
</format>
|
||||
<format>
|
||||
<font>1</font>
|
||||
</format>
|
||||
<format>
|
||||
<width>72</width>
|
||||
</format>
|
||||
</document>
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Раундтрип макета ПЛАТФОРМЫ байт в байт: Простой2КолонкиШиринаПоУмолчанию",
|
||||
"setup": "fixture:platform-roundtrip",
|
||||
"preRun": [
|
||||
{
|
||||
"script": "mxl-decompile/scripts/mxl-decompile",
|
||||
"args": {
|
||||
"-TemplatePath": "Простой2КолонкиШиринаПоУмолчанию.xml",
|
||||
"-OutputPath": "back.json"
|
||||
},
|
||||
"cwd": "{workDir}"
|
||||
}
|
||||
],
|
||||
"params": {
|
||||
"outputPath": "out.xml"
|
||||
},
|
||||
"noSnapshot": "эталон — файл платформы, сверяется expect.filesEqual",
|
||||
"expect": {
|
||||
"filesEqual": {
|
||||
"actual": "out.xml",
|
||||
"expected": "Простой2КолонкиШиринаПоУмолчанию.xml"
|
||||
}
|
||||
},
|
||||
"inputFrom": "back.json"
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Раундтрип макета ПЛАТФОРМЫ байт в байт: МакетСоскрытойСтрокойИСтрокойСЗаданнымШрифтом",
|
||||
"setup": "fixture:platform-roundtrip",
|
||||
"preRun": [
|
||||
{
|
||||
"script": "mxl-decompile/scripts/mxl-decompile",
|
||||
"args": {
|
||||
"-TemplatePath": "МакетСоскрытойСтрокойИСтрокойСЗаданнымШрифтом.xml",
|
||||
"-OutputPath": "back.json"
|
||||
},
|
||||
"cwd": "{workDir}"
|
||||
}
|
||||
],
|
||||
"params": {
|
||||
"outputPath": "out.xml"
|
||||
},
|
||||
"noSnapshot": "эталон — файл платформы, сверяется expect.filesEqual",
|
||||
"expect": {
|
||||
"filesEqual": {
|
||||
"actual": "out.xml",
|
||||
"expected": "МакетСоскрытойСтрокойИСтрокойСЗаданнымШрифтом.xml"
|
||||
}
|
||||
},
|
||||
"inputFrom": "back.json"
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Раундтрип макета ПЛАТФОРМЫ байт в байт: Простой3КолонкиСмешанный",
|
||||
"setup": "fixture:platform-roundtrip",
|
||||
"preRun": [
|
||||
{
|
||||
"script": "mxl-decompile/scripts/mxl-decompile",
|
||||
"args": {
|
||||
"-TemplatePath": "Простой3КолонкиСмешанный.xml",
|
||||
"-OutputPath": "back.json"
|
||||
},
|
||||
"cwd": "{workDir}"
|
||||
}
|
||||
],
|
||||
"params": {
|
||||
"outputPath": "out.xml"
|
||||
},
|
||||
"noSnapshot": "эталон — файл платформы, сверяется expect.filesEqual",
|
||||
"expect": {
|
||||
"filesEqual": {
|
||||
"actual": "out.xml",
|
||||
"expected": "Простой3КолонкиСмешанный.xml"
|
||||
}
|
||||
},
|
||||
"inputFrom": "back.json"
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Раундтрип макета ПЛАТФОРМЫ байт в байт: КолонкиСТакимЖеРазмером",
|
||||
"setup": "fixture:platform-roundtrip",
|
||||
"preRun": [
|
||||
{
|
||||
"script": "mxl-decompile/scripts/mxl-decompile",
|
||||
"args": {
|
||||
"-TemplatePath": "КолонкиСТакимЖеРазмером.xml",
|
||||
"-OutputPath": "back.json"
|
||||
},
|
||||
"cwd": "{workDir}"
|
||||
}
|
||||
],
|
||||
"params": {
|
||||
"outputPath": "out.xml"
|
||||
},
|
||||
"noSnapshot": "эталон — файл платформы, сверяется expect.filesEqual",
|
||||
"expect": {
|
||||
"filesEqual": {
|
||||
"actual": "out.xml",
|
||||
"expected": "КолонкиСТакимЖеРазмером.xml"
|
||||
}
|
||||
},
|
||||
"inputFrom": "back.json"
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Раундтрип макета ПЛАТФОРМЫ байт в байт: ЯчейкиСОформлением",
|
||||
"setup": "fixture:platform-roundtrip",
|
||||
"preRun": [
|
||||
{
|
||||
"script": "mxl-decompile/scripts/mxl-decompile",
|
||||
"args": {
|
||||
"-TemplatePath": "ЯчейкиСОформлением.xml",
|
||||
"-OutputPath": "back.json"
|
||||
},
|
||||
"cwd": "{workDir}"
|
||||
}
|
||||
],
|
||||
"params": {
|
||||
"outputPath": "out.xml"
|
||||
},
|
||||
"noSnapshot": "эталон — файл платформы, сверяется expect.filesEqual",
|
||||
"expect": {
|
||||
"filesEqual": {
|
||||
"actual": "out.xml",
|
||||
"expected": "ЯчейкиСОформлением.xml"
|
||||
}
|
||||
},
|
||||
"inputFrom": "back.json"
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Раундтрип макета ПЛАТФОРМЫ байт в байт: Простой3КолонкиСРазнойШириной",
|
||||
"setup": "fixture:platform-roundtrip",
|
||||
"preRun": [
|
||||
{
|
||||
"script": "mxl-decompile/scripts/mxl-decompile",
|
||||
"args": {
|
||||
"-TemplatePath": "Простой3КолонкиСРазнойШириной.xml",
|
||||
"-OutputPath": "back.json"
|
||||
},
|
||||
"cwd": "{workDir}"
|
||||
}
|
||||
],
|
||||
"params": {
|
||||
"outputPath": "out.xml"
|
||||
},
|
||||
"noSnapshot": "эталон — файл платформы, сверяется expect.filesEqual",
|
||||
"expect": {
|
||||
"filesEqual": {
|
||||
"actual": "out.xml",
|
||||
"expected": "Простой3КолонкиСРазнойШириной.xml"
|
||||
}
|
||||
},
|
||||
"inputFrom": "back.json"
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Раундтрип макета ПЛАТФОРМЫ байт в байт: Простой2Строки",
|
||||
"setup": "fixture:platform-roundtrip",
|
||||
"preRun": [
|
||||
{
|
||||
"script": "mxl-decompile/scripts/mxl-decompile",
|
||||
"args": {
|
||||
"-TemplatePath": "Простой2Строки.xml",
|
||||
"-OutputPath": "back.json"
|
||||
},
|
||||
"cwd": "{workDir}"
|
||||
}
|
||||
],
|
||||
"params": {
|
||||
"outputPath": "out.xml"
|
||||
},
|
||||
"noSnapshot": "эталон — файл платформы, сверяется expect.filesEqual",
|
||||
"expect": {
|
||||
"filesEqual": {
|
||||
"actual": "out.xml",
|
||||
"expected": "Простой2Строки.xml"
|
||||
}
|
||||
},
|
||||
"inputFrom": "back.json"
|
||||
}
|
||||
+33
-2
@@ -275,7 +275,10 @@ function buildArgs(skillConfig, caseData, workDir, inputFilePath, runtime) {
|
||||
|
||||
switch (mapping.from) {
|
||||
case 'inputFile':
|
||||
args.push(inputFilePath);
|
||||
// inputFrom: взять вход из файла в workDir, а не из case.input. Нужно, когда вход
|
||||
// производит preRun (например, декомпилятор) — case.input пишется ПОСЛЕ preRun и
|
||||
// затёр бы его.
|
||||
args.push(caseData.inputFrom ? join(workDir, caseData.inputFrom) : inputFilePath);
|
||||
break;
|
||||
case 'workDir':
|
||||
args.push(workDir);
|
||||
@@ -407,7 +410,7 @@ function checkFileContains(workDir, spec, expectPresent) {
|
||||
// поэтому он ошибка, а не игнор.
|
||||
const KNOWN_EXPECT_KEYS = new Set([
|
||||
'files', 'stdoutContains', 'stdoutNotContains', 'preserves',
|
||||
'fileContains', 'fileNotContains',
|
||||
'fileContains', 'fileNotContains', 'filesEqual',
|
||||
]);
|
||||
|
||||
function checkExpectKeys(caseData) {
|
||||
@@ -416,6 +419,29 @@ function checkExpectKeys(caseData) {
|
||||
return unknown.map(k => `expect.${k}: раннер такого ключа не знает — кейс ничего не проверяет`);
|
||||
}
|
||||
|
||||
// ─── Побайтовое равенство двух файлов ───────────────────────────────────────
|
||||
// Нужно там, где эталон — не наш снэпшот, а файл, произведённый ПЛАТФОРМОЙ: снэпшот
|
||||
// такую проверку не заменяет, потому что --update-snapshots молча принял бы дрейф.
|
||||
// spec: { actual, expected }. Пути относительно workDir.
|
||||
function checkFilesEqual(workDir, spec) {
|
||||
const errs = [];
|
||||
const a = join(workDir, spec.actual);
|
||||
const b = join(workDir, spec.expected);
|
||||
if (!existsSync(a)) { errs.push(`filesEqual: нет файла ${spec.actual}`); return errs; }
|
||||
if (!existsSync(b)) { errs.push(`filesEqual: нет файла ${spec.expected}`); return errs; }
|
||||
const bufA = readFileSync(a);
|
||||
const bufB = readFileSync(b);
|
||||
if (bufA.equals(bufB)) return errs;
|
||||
const linesA = bufA.toString('utf8').split('\n');
|
||||
const linesB = bufB.toString('utf8').split('\n');
|
||||
let i = 0;
|
||||
while (i < linesA.length && i < linesB.length && linesA[i] === linesB[i]) i++;
|
||||
errs.push(`filesEqual: ${spec.actual} != ${spec.expected}, первое расхождение в строке ${i + 1}`
|
||||
+ `\n ожидалось: ${(linesB[i] ?? '<конец файла>').trim()}`
|
||||
+ `\n получено: ${(linesA[i] ?? '<конец файла>').trim()}`);
|
||||
return errs;
|
||||
}
|
||||
|
||||
// ─── Byte-style preservation check (round-trip #44/#46/#47, канон #57) ──────
|
||||
// Проверяет СЫРЫЕ байты файла (в обход normalizeContent): BOM / EOL / регистр
|
||||
// encoding / финальный перенос / отсутствие / форма пустого элемента.
|
||||
@@ -806,6 +832,11 @@ async function runCaseAsync(testCase, opts) {
|
||||
? caseData.expect.preserves : [caseData.expect.preserves];
|
||||
for (const spec of specs) errors.push(...checkPreserves(workDir, spec));
|
||||
}
|
||||
if (caseData.expect?.filesEqual) {
|
||||
const specs = Array.isArray(caseData.expect.filesEqual)
|
||||
? caseData.expect.filesEqual : [caseData.expect.filesEqual];
|
||||
for (const spec of specs) errors.push(...checkFilesEqual(workDir, spec));
|
||||
}
|
||||
if (caseData.expect?.fileContains) {
|
||||
const specs = Array.isArray(caseData.expect.fileContains)
|
||||
? caseData.expect.fileContains : [caseData.expect.fileContains];
|
||||
|
||||
Reference in New Issue
Block a user