Отклоните: Пропуск модульных тестов при установке пакета Haskell

netstat -ape | grep $PortNumber
9
19.03.2015, 17:52
3 ответа

Я вижу, как вы пытаетесь использовать disableTest , найденный в haskell-package.nix, чтобы убрать тестирование из пакетов объективов. Мне пришлось бы провести некоторое тестирование, чтобы точно сказать вам, почему оно не удовлетворяет вашим потребностям.

Я отключил тестирование в целом, переопределив пакет cabal в config.nix на cabalNoTest. Это отменяет пакет cabal, используемый остальными пакетами haskell, отключающими тестирование.

Так я обычно пишу:

{
    packageOverrides = pkgs: with pkgs; {
        # ...other customizations...
        haskellPackages = haskellPackages.override {
            extension = self : super : {
                cabal = pkgs.haskellPackages.cabalNoTest;
            };
        };
    };
}
2
27.01.2020, 20:05

Альтернативный ответ, решение вашей заботы от другого угла, заключается в создании ваших пакетов с тестированием на более мощной машине. Затем, когда необходимо скопировать закрытие на удаленный хост.

Это хорошо работает, если вы находитесь в том же архитектуре, и рассматриваемое программное обеспечение не тесно связано с любым аппаратным обеспечением, которое отличается на двух машинах.

Читайте о том, как Дополнительные пакеты между машинами в руководстве NIX.

Это хорошая особенность, которая включена подход NIX к управлению пакетом. Я часто использовал эту функцию в обратном порядке, используя более мощные удаленные машины для создания обильных объемов программного обеспечения для моей локальной машины.

3
27.01.2020, 20:05

nixpkgs реорганизовал вещи с тех пор, как был опубликован принятый ответ, и появилась новая функция для отключения тестов. Теперь вы можете обернуть любой пакет Haskell функцией pkgs.haskell.lib.dontCheck для отключения тестов. Вот пример выражения Nix из одного из моих проектов на Haskell, где мне нужно было отключить тесты для зависимости shared-memory при сборке на OS X:

{ pkgs ? import <nixpkgs> {}, compiler ? "ghc7103" }:
pkgs.haskell.packages.${compiler}.callPackage ./my-project.nix
    {   shared-memory =
            let shared-memory = pkgs.haskell.packages.${compiler}.shared-memory;
            in  if pkgs.stdenv.isDarwin
                then pkgs.haskell.lib.dontCheck shared-memory
                else shared-memory;
    }
12
27.01.2020, 20:05

Теги

Похожие вопросы