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