From cf9284c8b47d1d4b3ad7fb99370ded63c6a44235 Mon Sep 17 00:00:00 2001
From: Christian Gram Kalhauge <chrg@dtu.dk>
Date: Mon, 19 Feb 2024 16:13:00 +0100
Subject: [PATCH] Moved glitter test to other repository

---
 flake.lock                                 | 89 +++++++++++++++++++++-
 flake.nix                                  |  8 +-
 rtree/package.yaml                         |  5 +-
 rtree/rtree.cabal                          |  6 +-
 rtree/test/src/Control/Monad/IRTreeSpec.hs |  6 +-
 rtree/test/src/Control/Monad/RTreeSpec.hs  |  6 +-
 rtree/test/src/Test/Hspec/GitGolden.hs     | 67 ----------------
 7 files changed, 97 insertions(+), 90 deletions(-)
 delete mode 100644 rtree/test/src/Test/Hspec/GitGolden.hs

diff --git a/flake.lock b/flake.lock
index cc53bf0..0f0e9ad 100644
--- a/flake.lock
+++ b/flake.lock
@@ -18,6 +18,44 @@
         "type": "github"
       }
     },
+    "flake-utils_2": {
+      "inputs": {
+        "systems": "systems_2"
+      },
+      "locked": {
+        "lastModified": 1705309234,
+        "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "hspec-glitter": {
+      "inputs": {
+        "flake-utils": "flake-utils_2",
+        "nix-filter": "nix-filter",
+        "nixpkgs": "nixpkgs"
+      },
+      "locked": {
+        "lastModified": 1708355228,
+        "narHash": "sha256-UqWqoxTr5cbTSdIPUtVp22xhBMaBy3VbbFrp1SMr424=",
+        "ref": "refs/heads/main",
+        "rev": "80fd7821b0e55ec6706d638a6303c9ead2cd1059",
+        "revCount": 1,
+        "type": "git",
+        "url": "file:///Users/chrg/Develop/repos/hspec-glitter"
+      },
+      "original": {
+        "type": "git",
+        "url": "file:///Users/chrg/Develop/repos/hspec-glitter"
+      }
+    },
     "language-c": {
       "flake": false,
       "locked": {
@@ -49,6 +87,21 @@
         "type": "github"
       }
     },
+    "nix-filter_2": {
+      "locked": {
+        "lastModified": 1705332318,
+        "narHash": "sha256-kcw1yFeJe9N4PjQji9ZeX47jg0p9A0DuU4djKvg1a7I=",
+        "owner": "numtide",
+        "repo": "nix-filter",
+        "rev": "3449dc925982ad46246cfc36469baf66e1b64f17",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "nix-filter",
+        "type": "github"
+      }
+    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1707939175,
@@ -65,12 +118,29 @@
         "type": "github"
       }
     },
+    "nixpkgs_2": {
+      "locked": {
+        "lastModified": 1707939175,
+        "narHash": "sha256-D1xan0lgxbmXDyzVqXTiSYHLmAMrMRdD+alKzEO/p3w=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "f7e8132daca31b1e3859ac0fb49741754375ac3d",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
     "root": {
       "inputs": {
         "flake-utils": "flake-utils",
+        "hspec-glitter": "hspec-glitter",
         "language-c": "language-c",
-        "nix-filter": "nix-filter",
-        "nixpkgs": "nixpkgs"
+        "nix-filter": "nix-filter_2",
+        "nixpkgs": "nixpkgs_2"
       }
     },
     "systems": {
@@ -87,6 +157,21 @@
         "repo": "default",
         "type": "github"
       }
+    },
+    "systems_2": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
     }
   },
   "root": "root",
diff --git a/flake.nix b/flake.nix
index de917a8..17d5a3d 100644
--- a/flake.nix
+++ b/flake.nix
@@ -7,6 +7,7 @@
       url = github:kalhauge/language-c;
       flake = false;
     };
+    hspec-glitter.url = "/Users/chrg/Develop/repos/hspec-glitter";
   };
   outputs = {
     self,
@@ -27,11 +28,6 @@
           (p.callCabal2nixWithOptions "language-c" inputs.language-c "" {}) {
             doCheck = false;
           };
-        # "hspec" = p.hspec_2_11_7;
-        # "hspec-discover" = p.hspec-discover_2_11_7;
-        # "hspec-core" = p.hspec-core_2_11_7;
-        # "hspec-api" = final.haskell.lib.overrideCabal (p.hspec-api) {doCheck = false;};
-        # "tasty-hspec" = p.tasty-hspec_1_2_0_4;
       }
       // load p "rtree"
       // load p "rtree-c";
@@ -47,7 +43,7 @@
       hpkgs =
         (import nixpkgs {
           inherit system;
-          overlays = [overlays];
+          overlays = [inputs.hspec-glitter.overlays.default overlays];
         })
         .haskellPackages;
     in rec {
diff --git a/rtree/package.yaml b/rtree/package.yaml
index c434bf0..88ed882 100644
--- a/rtree/package.yaml
+++ b/rtree/package.yaml
@@ -30,8 +30,5 @@ tests:
       - hspec-discover
       - hspec-expectations-pretty-diff
       - hspec-hedgehog
-      - hspec-core
-      - typed-process
-      - directory
-      - filepath
+      - hspec-glitter
       - bytestring
diff --git a/rtree/rtree.cabal b/rtree/rtree.cabal
index f1bc1b9..8202bde 100644
--- a/rtree/rtree.cabal
+++ b/rtree/rtree.cabal
@@ -38,7 +38,6 @@ test-suite rtree-test
       Control.Monad.RTreeSpec
       Data.Expr
       Spec
-      Test.Hspec.GitGolden
       Paths_rtree
   hs-source-dirs:
       test/src
@@ -47,19 +46,16 @@ test-suite rtree-test
       base >=4.9 && <5
     , bytestring
     , containers
-    , directory
-    , filepath
     , hedgehog
     , hspec
-    , hspec-core
     , hspec-discover
     , hspec-expectations-pretty-diff
+    , hspec-glitter
     , hspec-hedgehog
     , indexed-traversable
     , mtl
     , rtree
     , text
     , transformers
-    , typed-process
     , vector
   default-language: Haskell2010
diff --git a/rtree/test/src/Control/Monad/IRTreeSpec.hs b/rtree/test/src/Control/Monad/IRTreeSpec.hs
index 1674217..dac9332 100644
--- a/rtree/test/src/Control/Monad/IRTreeSpec.hs
+++ b/rtree/test/src/Control/Monad/IRTreeSpec.hs
@@ -12,7 +12,7 @@ import Data.List.NonEmpty (nonEmpty)
 import qualified Data.List.NonEmpty as NE
 import qualified Data.Map.Strict as Map
 import Test.Hspec
-import Test.Hspec.GitGolden
+import Test.Hspec.Glitter
 
 spec :: Spec
 spec = describe "examples" do
@@ -45,12 +45,12 @@ spec = describe "examples" do
     it "should find an opr" do
       (mex, result) <- runWriterT (IRTree.reduce (debugPredicate showString (prettyExprS 0) predicate) me)
       rex `shouldBe` mex
-      pure $ golden ("test/expected/" <> str <> "-red") (appEndo result "")
+      pure $ glitter ("test/expected/" <> str <> "-red") (appEndo result "")
 
     it "should find an opr exponentially" do
       (mex, result) <- runWriterT (IRTree.reduceExp (debugPredicate showString (prettyExprS 0) predicate) me)
       rex `shouldBe` mex
-      pure $ golden ("test/expected/" <> str <> "-red-exp") (appEndo result "")
+      pure $ glitter ("test/expected/" <> str <> "-red-exp") (appEndo result "")
 
     it "should reduce like iinputs" do
       forM_ (RTree.iinputs re) \(ii, e') -> do
diff --git a/rtree/test/src/Control/Monad/RTreeSpec.hs b/rtree/test/src/Control/Monad/RTreeSpec.hs
index 9696c18..657f0e5 100644
--- a/rtree/test/src/Control/Monad/RTreeSpec.hs
+++ b/rtree/test/src/Control/Monad/RTreeSpec.hs
@@ -14,7 +14,7 @@ import Data.Functor
 import qualified Data.Map.Strict as Map
 import Test.Hspec
 import qualified Test.Hspec.Expectations.Pretty as Pretty
-import Test.Hspec.GitGolden
+import Test.Hspec.Glitter
 
 shouldBeString :: String -> String -> Pretty.Expectation
 shouldBeString = Pretty.shouldBe
@@ -81,7 +81,7 @@ rtreeSpec = describe "RTree" do
 
   describe "drawRTree" do
     it "should pretty print it's tree" do
-      golden
+      glitter
         "test/expected/rlist-drawrtree"
         (drawRTree (\() -> id) shows (rList [1, 2, 3 :: Int]))
 
@@ -108,7 +108,7 @@ examplesSpec = describe "example" do
     let re = runReaderT me Map.empty
 
     it "should draw the same" do
-      golden
+      glitter
         ("test/expected/" <> str)
         (drawRTree showString (prettyExprS 0) re)
 
diff --git a/rtree/test/src/Test/Hspec/GitGolden.hs b/rtree/test/src/Test/Hspec/GitGolden.hs
deleted file mode 100644
index c1b2946..0000000
--- a/rtree/test/src/Test/Hspec/GitGolden.hs
+++ /dev/null
@@ -1,67 +0,0 @@
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE OverloadedRecordDot #-}
-
-module Test.Hspec.GitGolden where
-
-import System.Directory
-import System.FilePath
-
-import Data.Function
-import qualified Data.Text.Lazy as Text
-import qualified Data.Text.Lazy.Encoding as Text
-import System.Process.Typed
-import Test.Hspec.Core.Spec
-
-data GitGolden = GitGolden
-  { filename :: !FilePath
-  , content :: !String
-  }
-
-instance Example (IO GitGolden) where
-  evaluateExample e p a c = do
-    e' <- e
-    evaluateExample e' p a c
-
-instance Example GitGolden where
-  evaluateExample e _p _a _c = do
-    createDirectoryIfMissing True (takeDirectory e.filename)
-    writeFile e.filename e.content
-
-    ec <-
-      proc "git" ["ls-files", "--error-unmatch", e.filename]
-        & setStdout nullStream
-        & setStderr nullStream
-        & runProcess
-
-    case ec of
-      ExitFailure _ -> do
-        pure $
-          Result
-            ""
-            ( Failure
-                location
-                ( Reason $
-                    "file "
-                      <> show e.filename
-                      <> " not in index"
-                      <> "\n"
-                      <> e.content
-                )
-            )
-      ExitSuccess -> do
-        (_, diff) <- readProcessStdout (proc "git" ["diff", e.filename])
-
-        pure $ case (ec, Text.unpack (Text.decodeUtf8 diff)) of
-          (ExitSuccess, "") -> Result "" Success
-          (_, df) ->
-            Result
-              "failed"
-              ( Failure
-                  location
-                  ( Reason
-                      (unlines . drop 3 . lines $ df)
-                  )
-              )
-
-golden :: FilePath -> String -> GitGolden
-golden fp str = GitGolden{filename = fp, content = str}
-- 
GitLab