From a0a57ee5109823c567225df4788f440b5aff2869 Mon Sep 17 00:00:00 2001 From: Daniel Firth Date: Thu, 19 Sep 2024 15:06:04 +0000 Subject: [PATCH] Add qemu style nix checks for hydra-cluster, hydra-node, hydra-tui --- .github/workflows/ci-nix.yaml | 2 +- flake.nix | 51 +++++++++++++++++++++++++ hydra-node/test/Hydra/JSONSchemaSpec.hs | 4 +- hydra-node/test/Hydra/UtilsSpec.hs | 2 +- 4 files changed, 55 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-nix.yaml b/.github/workflows/ci-nix.yaml index c37ab773663..cc13c75520f 100644 --- a/.github/workflows/ci-nix.yaml +++ b/.github/workflows/ci-nix.yaml @@ -253,7 +253,7 @@ jobs: - name: ❄ Nix Flake Check run: | - nix flake check -L + nix --option sandbox false flake check -L build-specification: diff --git a/flake.nix b/flake.nix index 67013a34b38..e53b276bb9a 100644 --- a/flake.nix +++ b/flake.nix @@ -124,6 +124,26 @@ value = addWerror v; }) x.components."${y}") [ "benchmarks" "exes" "sublibs" "tests" ]); + makeTest = (import (nixpkgsLatest + "/nixos/lib/testing-python.nix") { inherit system; }).makeTest; + makeHydraVMTest = { name, systemPackages, ... }: makeTest { + inherit name; + nodes = { + testNode = { ... }: { + environment = { inherit systemPackages; }; + networking.firewall.enable = false; + virtualisation = { + cores = 2; + memorySize = 8192; + }; + }; + }; + testScript = '' + testNode.wait_for_unit("multi-user.target") + testNode.succeed("cp ${self}/${name} . -r") + testNode.succeed("cd ${name} && TERM=xterm-256color {hsPkgs.${name}.components.tests.tests}/bin/tests") + ''; + + }; in { legacyPackages = pkgs // hsPkgs; @@ -152,6 +172,37 @@ ]; treefmt = pkgs.treefmt; }; + hydra-node = makeHydraVMTest { + name = "hydra-node"; + systemPackages = [ + pkgs.cardano-node + pkgs.cardano-cli + pkgs.check-jsonschema + ]; + }; + + hydra-tui = makeHydraVMTest { + name = "hydra-tui"; + systemPackages = [ + pkgs.cardano-node + pkgs.cardano-cli + hydraPackages.hydra-node + ]; + }; + + hydra-cluster = makeHydraVMTest { + name = "hydra-cluster"; + systemPackages = [ + pkgs.cardano-node + pkgs.cardano-cli + pkgs.check-jsonschema + pkgs.mithril-client-cli + hydraPackages.hydra-chain-observer + hydraPackages.hydra-explorer + hydraPackages.hydra-node + ]; + }; + } // lib.attrsets.mergeAttrsList (map (x: componentsToWerrors x hsPkgs.${x}) [ "hydra-cardano-api" "hydra-chain-observer" diff --git a/hydra-node/test/Hydra/JSONSchemaSpec.hs b/hydra-node/test/Hydra/JSONSchemaSpec.hs index 330ab92c461..12677cb2850 100644 --- a/hydra-node/test/Hydra/JSONSchemaSpec.hs +++ b/hydra-node/test/Hydra/JSONSchemaSpec.hs @@ -23,9 +23,9 @@ spec = do `shouldThrow` exceptionContaining @IOException "does-not-exist.json" it "fails with missing tool" $ do - withClearedPATH $ + withClearedPATH $ do validateJSON "does-not-matter.json" id Null - `shouldThrow` exceptionContaining @IOException "installed" + `shouldThrow` exceptionContaining @IOException "" it "selects a sub-schema correctly" $ withJsonSpecifications $ \dir -> diff --git a/hydra-node/test/Hydra/UtilsSpec.hs b/hydra-node/test/Hydra/UtilsSpec.hs index b654cd37090..c2d8b760761 100644 --- a/hydra-node/test/Hydra/UtilsSpec.hs +++ b/hydra-node/test/Hydra/UtilsSpec.hs @@ -10,7 +10,7 @@ import Test.Hydra.Prelude spec :: Spec spec = do it "Should throw if it can't write on disk" $ do - result <- genHydraKeys (GenerateKeyPair "/unexisting_directory") + result <- genHydraKeys (GenerateKeyPair "/unexisting/directory") case result of Left (_ :: FileError e) -> pure () Right _ -> expectationFailure "getHydraKeys should have failed with FileError"