Сохранение файлов журнала в случае успешного набора тестов
Вы можете указать сценарий оболочки, который будет выполняться после запуска набора тестов postCheck
.Это выполняется только в том случае, если набор тестов успешен.
Вызов cabal2nix
с --shell
или без него будет содержать вывод, подобный приведенному в выводе:
{ mkDerivation, base, stdenv }:
mkDerivation {
pname = "sample";
version = "0.0.0.1";
src = ./.;
isLibrary = false;
isExecutable = true;
executableHaskellDepends = [ base ];
testHaskellDepends = [ base ];
license = stdenv.lib.licenses.unfree;
hydraPlatforms = stdenv.lib.platforms.none;
};
Все, что у вас естьдобавить это
postCheck = ''
mkdir -p $out/logs
find dist/test -name \*log -exec cp '{}' $out/logs \;
'';
, и вы найдете ваши файлы журналов в result/logs
.
Весь вывод теперь будет выглядеть так:
{ mkDerivation, base, stdenv }:
mkDerivation {
pname = "sample";
version = "0.0.0.1";
src = ./.;
isLibrary = false;
isExecutable = true;
executableHaskellDepends = [ base ];
testHaskellDepends = [ base ];
license = stdenv.lib.licenses.unfree;
hydraPlatforms = stdenv.lib.platforms.none;
postCheck = ''
mkdir -p $out/logs
find dist/test -name \*log -exec cp '{}' $out/logs \;
'';
};
Ведение журналафайлы в случае сбоя набора тестов
Если вы хотите просмотреть эти файлы журналов в случае сбоя набора тестов, вы можете вызвать nix-build
с параметром --keep-failed
или -K
.Таким образом, он сохранит временный каталог сборки и напечатает сообщение типа
note: keeping build directory '/tmp/nix-build-sample-0.0.0.1.drv-0'
в конце его вывода (для меня третья строка до последней).Вы найдете файлы журнала в этом каталоге.В моем примере они были помещены в
/tmp/nix-build-sample-0.0.0.1.drv-0/sample/dist/test