diff --git a/src/haskell/test/Arion/NixSpec.hs b/src/haskell/test/Arion/NixSpec.hs index e20bebf..8f0c25e 100644 --- a/src/haskell/test/Arion/NixSpec.hs +++ b/src/haskell/test/Arion/NixSpec.hs @@ -13,19 +13,34 @@ import qualified Data.Text as T import qualified Data.Text.IO as T spec :: Spec -spec = describe "evaluateComposition" $ it "matches an example" $ do - x <- Arion.Nix.evaluateComposition EvaluationArgs - { evalUid = 123 - , evalModules = NEL.fromList - ["src/haskell/testdata/Arion/NixSpec/arion-compose.nix"] - , evalPkgs = "import { system = \"x86_64-linux\"; }" - , evalWorkDir = Nothing - , evalMode = ReadOnly - , evalUserArgs = ["--show-trace"] - } - let actual = pretty x - expected <- T.readFile "src/haskell/testdata/Arion/NixSpec/arion-compose.json" - censorPaths actual `shouldBe` censorPaths expected +spec = describe "evaluateComposition" $ do + it "matches an example" $ do + x <- Arion.Nix.evaluateComposition EvaluationArgs + { evalUid = 123 + , evalModules = NEL.fromList + ["src/haskell/testdata/Arion/NixSpec/arion-compose.nix"] + , evalPkgs = "import { system = \"x86_64-linux\"; }" + , evalWorkDir = Nothing + , evalMode = ReadOnly + , evalUserArgs = ["--show-trace"] + } + let actual = pretty x + expected <- T.readFile "src/haskell/testdata/Arion/NixSpec/arion-compose.json" + censorPaths actual `shouldBe` censorPaths expected + + it "matches an build.context example" $ do + x <- Arion.Nix.evaluateComposition EvaluationArgs + { evalUid = 1234 + , evalModules = NEL.fromList + ["src/haskell/testdata/Arion/NixSpec/arion-context-compose.nix"] + , evalPkgs = "import { system = \"x86_64-linux\"; }" + , evalWorkDir = Nothing + , evalMode = ReadOnly + , evalUserArgs = ["--show-trace"] + } + let actual = pretty x + expected <- T.readFile "src/haskell/testdata/Arion/NixSpec/arion-context-compose.json" + censorPaths actual `shouldBe` censorPaths expected censorPaths :: Text -> Text censorPaths = censorImages . censorStorePaths diff --git a/src/haskell/test/Spec.hs b/src/haskell/test/Spec.hs index d2da234..06d3acc 100644 --- a/src/haskell/test/Spec.hs +++ b/src/haskell/test/Spec.hs @@ -9,3 +9,4 @@ import qualified Arion.NixSpec spec :: Spec spec = do describe "Arion.Nix" Arion.NixSpec.spec + diff --git a/src/haskell/testdata/Arion/NixSpec/arion-context-compose.json b/src/haskell/testdata/Arion/NixSpec/arion-context-compose.json new file mode 100644 index 0000000..ae67f53 --- /dev/null +++ b/src/haskell/testdata/Arion/NixSpec/arion-context-compose.json @@ -0,0 +1,41 @@ +{ + "networks": { + "default": { + "name": "unit-test-data" + } + }, + "services": { + "webserver": { + "build": { + "context": "" + }, + "environment": {}, + "ports": [ + "8080:80" + ], + "sysctls": {}, + "volumes": [] + } + }, + "version": "3.4", + "volumes": {}, + "x-arion": { + "images": [ + { + "imageExe": "", + "imageName": "localhost/webserver", + "imageTag": "" + } + ], + "project": { + "name": "unit-test-data" + }, + "serviceInfo": { + "webserver": { + "defaultExec": [ + "/bin/sh" + ] + } + } + } +} diff --git a/src/haskell/testdata/Arion/NixSpec/arion-context-compose.nix b/src/haskell/testdata/Arion/NixSpec/arion-context-compose.nix new file mode 100644 index 0000000..a4c5b7c --- /dev/null +++ b/src/haskell/testdata/Arion/NixSpec/arion-context-compose.nix @@ -0,0 +1,9 @@ +{ + project.name = "unit-test-data"; + services.webserver.service = { + build.context = "${./build-context}"; + ports = [ + "8080:80" + ]; + }; +} diff --git a/src/haskell/testdata/Arion/NixSpec/build-context/Dockerfile b/src/haskell/testdata/Arion/NixSpec/build-context/Dockerfile new file mode 100644 index 0000000..d2ba487 --- /dev/null +++ b/src/haskell/testdata/Arion/NixSpec/build-context/Dockerfile @@ -0,0 +1,4 @@ +FROM nginx + +RUN echo this is a dockerfile to be built +