Я выполняю следующую команду llvm-cov report
(которая поставляется как часть наборов инструментов Swift) в Docker изображениях (swift:5.1
) в различных средах.
BINARY_PATH="..."
PROF_DATA_PATH="..."
IGNORE_FILENAME_REGEX="..."
llvm-cov report \
$BINARY_PATH \
--format=text \
-instr-profile="$PROF_DATA_PATH" \
-ignore-filename-regex="$IGNORE_FILENAME_REGEX"
Когда docker изображение размещено на любом компьютере, кроме облака GitLab docker бегунов, я получаю ожидаемый результат покрытия кода:
Filename Regions Missed Regions Cover Functions Missed Functions Executed Lines Missed Lines Cover
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ChannelHandlers/RedisByteDecoder.swift 5 0 100.00% 3 0 100.00% 10 0 100.00%
ChannelHandlers/RedisCommandHandler.swift 15 5 66.67% 8 3 62.50% 45 11 75.56%
ChannelHandlers/RedisMessageEncoder.swift 3 1 66.67% 3 1 66.67% 13 6 53.85%
Commands/BasicCommands.swift 28 4 85.71% 16 2 87.50% 99 7 92.93%
Commands/HashCommands.swift 38 4 89.47% 29 1 96.55% 156 1 99.36%
Commands/ListCommands.swift 56 8 85.71% 48 5 89.58% 217 11 94.93%
Commands/SetCommands.swift 46 12 73.91% 30 4 86.67% 147 4 97.28%
Commands/SortedSetCommands.swift 172 19 88.95% 105 6 94.29% 555 18 96.76%
Commands/StringCommands.swift 23 2 91.30% 21 1 95.24% 100 1 99.00%
Extensions/StandardLibrary.swift 10 2 80.00% 6 1 83.33% 21 1 95.24%
Extensions/SwiftNIO.swift 9 1 88.89% 7 0 100.00% 38 1 97.37%
RESP/RESPTranslator.swift 69 7 89.86% 10 2 80.00% 172 10 94.19%
RESP/RESPValue.swift 39 11 71.79% 14 3 78.57% 69 17 75.36%
RESP/RESPValueConvertible.swift 52 19 63.46% 15 3 80.00% 99 22 77.78%
RedisClient.swift 2 0 100.00% 2 0 100.00% 7 0 100.00%
RedisConnection.swift 72 23 68.06% 47 10 78.72% 228 31 86.40%
RedisErrors.swift 12 4 66.67% 6 1 83.33% 23 3 86.96%
RedisKey.swift 15 9 40.00% 12 6 50.00% 38 20 47.37%
RedisMetrics.swift 9 2 77.78% 9 2 77.78% 23 2 91.30%
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL 675 133 80.30% 391 51 86.96% 2060 166 91.94%
Однако, когда те же самые docker изображения, выполняющие те же команды, размещаются с Облачные раннеры GitLab:
Filename Regions Missed Regions Cover Functions Missed Functions Executed Lines Missed Lines Cover
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL 0 0 - 0 0 - 0 0 -
Я проверяю, что данные покрытия кода корректно предоставляются диспетчером пакетов Swift через ls -l
и в каждой среде (включая GitLab CI) Я получаю:
Profdata: -rw-r--r--. 1 root root 575608 Feb 8 19:51 .build/x86_64-unknown-linux/debug/codecov/default.profdata
Test binary: -rwxr-xr-x. 1 root root 16309424 Feb 8 19:51 .build/x86_64-unknown-linux/debug/redi-stackPackageTests.xctest
Это также случается с LLVM-8 и LLVM-9 (корабли LLVM-7 со Swift 5.1)
Для жизни я не могу понять почему.
Среды, которые я тестировал (все работают Docker Engine 19 +):
+----------------+-----------------+----------------+-------------------+
| | | | |
| HOST | OS | CPU | Generates Report? |
| | | | |
+-----------------------------------------------------------------------+
| iMac 2011 | High Sierra | sandybridge | YES |
+-----------------------------------------------------------------------+
| MBP 2019 | Catalina | skylake | YES |
+-----------------------------------------------------------------------+
| mac mini 2018 | Catalina | skylake | YES |
+-----------------------------------------------------------------------+
| GitHub Actions | 'ubuntu|latest' | skylake|avx512 | YES |
+-----------------------------------------------------------------------+
| GitLab CI | 'tags: docker' | haswell | NO |
+----------------+-----------------+----------------+-------------------+