packages feed

git-phoenix-0.0.1: test/Data/Git/Phoenix/Test/UberExtract.hs

module Data.Git.Phoenix.Test.UberExtract where

import Data.Git.Phoenix.CmdArgs
import Data.Git.Phoenix.CmdRun
import Data.Git.Phoenix.Prelude
import Data.Git.Phoenix.Test
import UnliftIO.Process

unit_uber_extract :: IO ()
unit_uber_extract = withUber go
  where
    go :: Tagged Root FilePath -> Tagged Uber FilePath -> IO ()
    go (Tagged rdir) (Tagged uberOut) = do
      let gitOut = rdir </> "git-phoenix"
      runCmd ExtractCommitTreeAsGitRepo { rootCommit = Tagged $ take 15 currentHead
                                        , uberRepoDir = Tagged uberOut
                                        , gitRepoOut = Tagged gitOut
                                        }
      callCommand $ "git -C " <> gitOut <> " fsck --full"
      gotHead <- readBranchCommit (gitOut </> ".git/refs/heads/master")
      when (gotHead /= currentHead) $ do
        fail $ "HEAD commit mismatch\nGot:      [" <> gotHead
                               <> "]\nExpected: [" <> currentHead <> "]"