diff --git a/src/haskell/test/Arion/NixSpec.hs b/src/haskell/test/Arion/NixSpec.hs
index e20bebf..18fc5a8 100644
--- a/src/haskell/test/Arion/NixSpec.hs
+++ b/src/haskell/test/Arion/NixSpec.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 module Arion.NixSpec
   ( spec
+    , contextSpec
   )
 where
 
@@ -27,6 +28,21 @@ spec = describe "evaluateComposition" $ it "matches an example" $ do
   expected <- T.readFile "src/haskell/testdata/Arion/NixSpec/arion-compose.json"
   censorPaths actual `shouldBe` censorPaths expected
 
+contextSpec :: Spec
+contextSpec = describe "evaluateComposition" $ 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 <nixpkgs> { 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..3bcd7df 100644
--- a/src/haskell/test/Spec.hs
+++ b/src/haskell/test/Spec.hs
@@ -9,3 +9,5 @@ import qualified Arion.NixSpec
 spec :: Spec
 spec = do
   describe "Arion.Nix" Arion.NixSpec.spec
+  describe "Arion.Nix" Arion.NixSpec.contextSpec
+
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": "<STOREPATH>"
+            },
+            "environment": {},
+            "ports": [
+                "8080:80"
+            ],
+            "sysctls": {},
+            "volumes": []
+        }
+    },
+    "version": "3.4",
+    "volumes": {},
+    "x-arion": {
+        "images": [
+            {
+                "imageExe": "<STOREPATH>",
+                "imageName": "localhost/webserver",
+                "imageTag": "<HASH>"
+            }
+        ],
+        "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
+