gitHUD 1.3.3 → 1.3.4
raw patch · 4 files changed
+94/−90 lines, 4 filesdep +textPVP ok
version bump matches the API change (PVP)
Dependencies added: text
API changes (from Hackage documentation)
Files
- gitHUD.cabal +2/−1
- src/GitHUD.hs +5/−2
- src/GitHUD/Terminal/Base.hs +1/−1
- test/Test/GitHUD/Terminal/Prompt.hs +86/−86
gitHUD.cabal view
@@ -1,5 +1,5 @@ name: gitHUD-version: 1.3.3+version: 1.3.4 synopsis: More efficient replacement to the great git-radar description: Please see README.md homepage: http://github.com/gbataille/gitHUD#readme@@ -34,6 +34,7 @@ , process , parsec >= 3.1.9 && < 4 , mtl >= 2.2.1 && < 3+ , text >= 1.2 && < 1.3 , unix >= 2.7 && < 3 default-language: Haskell2010
src/GitHUD.hs view
@@ -1,9 +1,12 @@+{-# LANGUAGE OverloadedStrings #-}+ module GitHUD ( githud ) where import Control.Monad (when) import Control.Monad.Reader (runReader)+import Data.Text import System.Environment (getArgs) import System.Posix.Files (fileExist) import System.Posix.User (getRealUserID, getUserEntryForID, UserEntry(..))@@ -27,13 +30,13 @@ let prompt = runReader buildPromptWithConfig $ buildOutputConfig shell repoState config -- Necessary to use putStrLn to properly terminate the output (needs the CR)- putStrLn prompt+ putStrLn $ unpack (strip (pack prompt)) processArguments :: IO [String] -> IO Shell processArguments args = do arguments <- args- if (not (null arguments)) && ((head arguments) == "zsh")+ if (not (Prelude.null arguments)) && ((Prelude.head arguments) == "zsh") then return ZSH else return Other
src/GitHUD/Terminal/Base.hs view
@@ -65,4 +65,4 @@ terminalStartCode NoColor _ = terminalEndCode terminalEndCode :: String-terminalEndCode = "\x1b[0m"+terminalEndCode = "\x1b[39m"
test/Test/GitHUD/Terminal/Prompt.hs view
@@ -30,9 +30,9 @@ testResetPromptAtBeginning :: TestTree testResetPromptAtBeginning = testGroup "#resetPromptAtBeginning" [ testCase "Should start the prompt with a reset color control sequence" $- testWriterWithConfig (zeroOutputConfig ZSH) resetPromptAtBeginning @?= "%{\x1b[0m%}"+ testWriterWithConfig (zeroOutputConfig ZSH) resetPromptAtBeginning @?= "%{\x1b[39m%}" , testCase "Should start the prompt with a reset color control sequence" $- testWriterWithConfig (zeroOutputConfig Other) resetPromptAtBeginning @?= "\x1b[0m"+ testWriterWithConfig (zeroOutputConfig Other) resetPromptAtBeginning @?= "\x1b[39m" ] testAddGitRepoIndicator :: TestTree@@ -87,12 +87,12 @@ , testCase "ZSH: with no upstream" $ testWriterWithConfig (zeroOutputConfig ZSH) addNoTrackedUpstreamIndicator- @?= "%{\x1b[1;31m%}upstream%{\x1b[0m%} %{\x1b[1;31m%}\9889%{\x1b[0m%} "+ @?= "%{\x1b[1;31m%}upstream%{\x1b[39m%} %{\x1b[1;31m%}\9889%{\x1b[39m%} " , testCase "Other: with no upstream" $ testWriterWithConfig (zeroOutputConfig Other) addNoTrackedUpstreamIndicator- @?= "\x1b[1;31mupstream\x1b[0m \x1b[1;31m\9889\x1b[0m "+ @?= "\x1b[1;31mupstream\x1b[39m \x1b[1;31m\9889\x1b[39m " ] , testGroup "Custom Config" [ testCase "ZSH: with an upstream" $@@ -111,13 +111,13 @@ testWriterWithConfig (buildOutputConfig ZSH (zeroGitRepoState) customConfigNoTrackedUpstreamIndicator) addNoTrackedUpstreamIndicator- @?= "%{\x1b[36m%}foo%{\x1b[0m%} %{\x1b[32m%}bar%{\x1b[0m%} "+ @?= "%{\x1b[36m%}foo%{\x1b[39m%} %{\x1b[32m%}bar%{\x1b[39m%} " , testCase "Other: with no upstream" $ testWriterWithConfig (buildOutputConfig Other (zeroGitRepoState) customConfigNoTrackedUpstreamIndicator) addNoTrackedUpstreamIndicator- @?= "\x1b[36mfoo\x1b[0m \x1b[32mbar\x1b[0m "+ @?= "\x1b[36mfoo\x1b[39m \x1b[32mbar\x1b[39m " ] ] @@ -134,53 +134,53 @@ [ testGroup "Default Config" [ testCase "ZSH: commits to pull" $ testMergeBranchCommitsToPull ZSH defaultConfig @?=- "\120366 %{\x1b[1;32m%}\8594%{\x1b[0m%} 2 "+ "\120366 %{\x1b[1;32m%}\8594%{\x1b[39m%} 2 " , testCase "ZSH: commits to push" $ testMergeBranchCommitsToPush ZSH defaultConfig @?=- "\120366 %{\x1b[1;32m%}\8592%{\x1b[0m%} 2 "+ "\120366 %{\x1b[1;32m%}\8592%{\x1b[39m%} 2 " , testCase "ZSH: commits to pull and to push" $ testMergeBranchCommitsToPushAndPull ZSH defaultConfig @?=- "\120366 4%{\x1b[1;32m%}\8644%{\x1b[0m%}4 "+ "\120366 4%{\x1b[1;32m%}\8644%{\x1b[39m%}4 " , testCase "Other: commits to pull" $ testMergeBranchCommitsToPull Other defaultConfig @?=- "\120366 \x1b[1;32m\8594\x1b[0m 2 "+ "\120366 \x1b[1;32m\8594\x1b[39m 2 " , testCase "Other: commits to push" $ testMergeBranchCommitsToPush Other defaultConfig @?=- "\120366 \x1b[1;32m\8592\x1b[0m 2 "+ "\120366 \x1b[1;32m\8592\x1b[39m 2 " , testCase "Other: commits to pull and to push" $ testMergeBranchCommitsToPushAndPull Other defaultConfig @?=- "\120366 4\x1b[1;32m\8644\x1b[0m4 "+ "\120366 4\x1b[1;32m\8644\x1b[39m4 " ] , testGroup "Custom Config" [ testCase "ZSH: commits to pull" $ testMergeBranchCommitsToPull ZSH customConfigMergeBranchCommits @?=- "foo %{\x1b[1;32m%}pull%{\x1b[0m%} 2 "+ "foo %{\x1b[1;32m%}pull%{\x1b[39m%} 2 " , testCase "ZSH: commits to push" $ testMergeBranchCommitsToPush ZSH customConfigMergeBranchCommits @?=- "foo %{\x1b[1;32m%}push%{\x1b[0m%} 2 "+ "foo %{\x1b[1;32m%}push%{\x1b[39m%} 2 " , testCase "ZSH: commits to pull and to push" $ testMergeBranchCommitsToPushAndPull ZSH customConfigMergeBranchCommits @?=- "foo 4%{\x1b[1;32m%}pull-push%{\x1b[0m%}4 "+ "foo 4%{\x1b[1;32m%}pull-push%{\x1b[39m%}4 " , testCase "Other: commits to pull" $ testMergeBranchCommitsToPull Other customConfigMergeBranchCommits @?=- "foo \x1b[1;32mpull\x1b[0m 2 "+ "foo \x1b[1;32mpull\x1b[39m 2 " , testCase "Other: commits to push" $ testMergeBranchCommitsToPush Other customConfigMergeBranchCommits @?=- "foo \x1b[1;32mpush\x1b[0m 2 "+ "foo \x1b[1;32mpush\x1b[39m 2 " , testCase "Other: commits to pull and to push" $ testMergeBranchCommitsToPushAndPull Other customConfigMergeBranchCommits @?=- "foo 4\x1b[1;32mpull-push\x1b[0m4 "+ "foo 4\x1b[1;32mpull-push\x1b[39m4 " ] ] @@ -202,50 +202,50 @@ testWriterWithConfig (buildOutputConfig ZSH (zeroGitRepoState { gitLocalBranch = "foo" }) defaultConfig) addLocalBranchName- @?= "[%{\x1b[0m%}foo%{\x1b[0m%}] "+ @?= "[%{\x1b[39m%}foo%{\x1b[39m%}] " , testCase "Other: should display the name of the current branch if we are at the HEAD of any" $ testWriterWithConfig (buildOutputConfig Other (zeroGitRepoState { gitLocalBranch = "foo" }) defaultConfig) addLocalBranchName- @?= "[\x1b[0mfoo\x1b[0m] "+ @?= "[\x1b[39mfoo\x1b[39m] " , testCase "ZSH: should display the current commit SHA if we are not on a branch's HEAD" $ testWriterWithConfig (buildOutputConfig ZSH (zeroGitRepoState { gitCommitShortSHA = "3d25ef" }) defaultConfig) addLocalBranchName- @?= "[%{\x1b[1;33m%}detached@3d25ef%{\x1b[0m%}] "+ @?= "[%{\x1b[1;33m%}detached@3d25ef%{\x1b[39m%}] " , testCase "Other: should display the current commit SHA if we are not on a branch's HEAD" $ testWriterWithConfig (buildOutputConfig Other (zeroGitRepoState { gitCommitShortSHA = "3d25ef" }) defaultConfig) addLocalBranchName- @?= "[\x1b[1;33mdetached@3d25ef\x1b[0m] "+ @?= "[\x1b[1;33mdetached@3d25ef\x1b[39m] " ] , testGroup "Custom Config" [ testCase "ZSH: should display the name of the current branch if we are at the HEAD of any" $ testWriterWithConfig (buildOutputConfig ZSH (zeroGitRepoState { gitLocalBranch = "foo" }) customConfigLocalBranchName) addLocalBranchName- @?= "{%{\x1b[36m%}foo%{\x1b[0m%}} "+ @?= "{%{\x1b[36m%}foo%{\x1b[39m%}} " , testCase "Other: should display the name of the current branch if we are at the HEAD of any" $ testWriterWithConfig (buildOutputConfig Other (zeroGitRepoState { gitLocalBranch = "foo" }) customConfigLocalBranchName) addLocalBranchName- @?= "{\x1b[36mfoo\x1b[0m} "+ @?= "{\x1b[36mfoo\x1b[39m} " , testCase "ZSH: should display the current commit SHA if we are not on a branch's HEAD" $ testWriterWithConfig (buildOutputConfig ZSH (zeroGitRepoState { gitCommitShortSHA = "3d25ef" }) customConfigLocalBranchName) addLocalBranchName- @?= "{%{\x1b[35m%}det#!3d25ef%{\x1b[0m%}} "+ @?= "{%{\x1b[35m%}det#!3d25ef%{\x1b[39m%}} " , testCase "Other: should display the current commit SHA if we are not on a branch's HEAD" $ testWriterWithConfig (buildOutputConfig Other (zeroGitRepoState { gitCommitShortSHA = "3d25ef" }) customConfigLocalBranchName) addLocalBranchName- @?= "{\x1b[35mdet#!3d25ef\x1b[0m} "+ @?= "{\x1b[35mdet#!3d25ef\x1b[39m} " ] ] @@ -267,52 +267,52 @@ [ testGroup "Default Config" [ testCase "ZSH: commits to pull" $ testCommitsToPull ZSH defaultConfig @?=- "2%{\x1b[1;31m%}\8595%{\x1b[0m%} "+ "2%{\x1b[1;31m%}\8595%{\x1b[39m%} " , testCase "ZSH: commits to push" $ testCommitsToPush ZSH defaultConfig @?=- "2%{\x1b[1;32m%}\8593%{\x1b[0m%} "+ "2%{\x1b[1;32m%}\8593%{\x1b[39m%} " , testCase "ZSH: commits to pull and to push" $ testCommitsToPushAndPull ZSH defaultConfig @?=- "4%{\x1b[1;32m%}⥯%{\x1b[0m%}4 "+ "4%{\x1b[1;32m%}⥯%{\x1b[39m%}4 " , testCase "Other: commits to pull" $ testCommitsToPull Other defaultConfig @?=- "2\x1b[1;31m\8595\x1b[0m "+ "2\x1b[1;31m\8595\x1b[39m " , testCase "Other: commits to push" $ testCommitsToPush Other defaultConfig @?=- "2\x1b[1;32m\8593\x1b[0m "+ "2\x1b[1;32m\8593\x1b[39m " , testCase "Other: commits to pull and to push" $ testCommitsToPushAndPull Other defaultConfig @?=- "4\x1b[1;32m⥯\x1b[0m4 "+ "4\x1b[1;32m⥯\x1b[39m4 " ] , testGroup "Custom Config" [ testCase "ZSH: commits to pull" $ testCommitsToPull ZSH customConfigLocalCommits @?=- "2%{\x1b[35m%}pull%{\x1b[0m%} "+ "2%{\x1b[35m%}pull%{\x1b[39m%} " , testCase "ZSH: commits to push" $ testCommitsToPush ZSH customConfigLocalCommits @?=- "2%{\x1b[36m%}push%{\x1b[0m%} "+ "2%{\x1b[36m%}push%{\x1b[39m%} " , testCase "ZSH: commits to pull and to push" $ testCommitsToPushAndPull ZSH customConfigLocalCommits @?=- "4%{\x1b[37m%}push-pull%{\x1b[0m%}4 "+ "4%{\x1b[37m%}push-pull%{\x1b[39m%}4 " , testCase "Other: commits to pull" $ testCommitsToPull Other customConfigLocalCommits @?=- "2\x1b[35mpull\x1b[0m "+ "2\x1b[35mpull\x1b[39m " , testCase "Other: commits to push" $ testCommitsToPush Other customConfigLocalCommits @?=- "2\x1b[36mpush\x1b[0m "+ "2\x1b[36mpush\x1b[39m " , testCase "Other: commits to pull and to push" $ testCommitsToPushAndPull Other customConfigLocalCommits @?=- "4\x1b[37mpush-pull\x1b[0m4 "+ "4\x1b[37mpush-pull\x1b[39m4 " ] ] @@ -348,113 +348,113 @@ testAddRepoState = testGroup "#addRepoState" [ testGroup "Default Config" [ testCase "ZSH: with Local Add Changes" $- testLocalAddChange ZSH defaultConfig @?= "2%{\x1b[1;37m%}A%{\x1b[0m%} "+ testLocalAddChange ZSH defaultConfig @?= "2%{\x1b[1;37m%}A%{\x1b[39m%} " , testCase "ZSH: with Local Mod Changes" $- testLocalModChange ZSH defaultConfig @?= "2%{\x1b[1;31m%}M%{\x1b[0m%} "+ testLocalModChange ZSH defaultConfig @?= "2%{\x1b[1;31m%}M%{\x1b[39m%} " , testCase "ZSH: with Local Del Changes" $- testLocalDelChange ZSH defaultConfig @?= "2%{\x1b[1;31m%}D%{\x1b[0m%} "+ testLocalDelChange ZSH defaultConfig @?= "2%{\x1b[1;31m%}D%{\x1b[39m%} " , testCase "ZSH: with Index Add Changes" $- testIndexAddChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}A%{\x1b[0m%} "+ testIndexAddChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}A%{\x1b[39m%} " , testCase "ZSH: with Index Mod Changes" $- testIndexModChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}M%{\x1b[0m%} "+ testIndexModChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}M%{\x1b[39m%} " , testCase "ZSH: with Index Del Changes" $- testIndexDelChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}D%{\x1b[0m%} "+ testIndexDelChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}D%{\x1b[39m%} " , testCase "ZSH: with Conflicted Changes" $- testConflictedChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}C%{\x1b[0m%} "+ testConflictedChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}C%{\x1b[39m%} " , testCase "ZSH: with Renamed Changes" $- testRenamedChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}R%{\x1b[0m%} "+ testRenamedChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}R%{\x1b[39m%} " , testCase "Other: with Local Add Changes" $- testLocalAddChange Other defaultConfig @?= "2\x1b[1;37mA\x1b[0m "+ testLocalAddChange Other defaultConfig @?= "2\x1b[1;37mA\x1b[39m " , testCase "Other: with Local Mod Changes" $- testLocalModChange Other defaultConfig @?= "2\x1b[1;31mM\x1b[0m "+ testLocalModChange Other defaultConfig @?= "2\x1b[1;31mM\x1b[39m " , testCase "Other: with Local Del Changes" $- testLocalDelChange Other defaultConfig @?= "2\x1b[1;31mD\x1b[0m "+ testLocalDelChange Other defaultConfig @?= "2\x1b[1;31mD\x1b[39m " , testCase "Other: with Index Add Changes" $- testIndexAddChange Other defaultConfig @?= "2\x1b[1;32mA\x1b[0m "+ testIndexAddChange Other defaultConfig @?= "2\x1b[1;32mA\x1b[39m " , testCase "Other: with Index Mod Changes" $- testIndexModChange Other defaultConfig @?= "2\x1b[1;32mM\x1b[0m "+ testIndexModChange Other defaultConfig @?= "2\x1b[1;32mM\x1b[39m " , testCase "Other: with Index Del Changes" $- testIndexDelChange Other defaultConfig @?= "2\x1b[1;32mD\x1b[0m "+ testIndexDelChange Other defaultConfig @?= "2\x1b[1;32mD\x1b[39m " , testCase "Other: with Conflicted Changes" $- testConflictedChange Other defaultConfig @?= "2\x1b[1;32mC\x1b[0m "+ testConflictedChange Other defaultConfig @?= "2\x1b[1;32mC\x1b[39m " , testCase "Other: with Renamed Changes" $- testRenamedChange Other defaultConfig @?= "2\x1b[1;32mR\x1b[0m "+ testRenamedChange Other defaultConfig @?= "2\x1b[1;32mR\x1b[39m " , testCase "ZSH: with every kind of Changes" $- testEveryRepoChange ZSH defaultConfig @?= "6%{\x1b[1;32m%}A%{\x1b[0m%}8%{\x1b[1;32m%}D%{\x1b[0m%}7%{\x1b[1;32m%}M%{\x1b[0m%}1%{\x1b[1;32m%}R%{\x1b[0m%} 5%{\x1b[1;31m%}D%{\x1b[0m%}4%{\x1b[1;31m%}M%{\x1b[0m%} 3%{\x1b[1;37m%}A%{\x1b[0m%} 2%{\x1b[1;32m%}C%{\x1b[0m%} "+ testEveryRepoChange ZSH defaultConfig @?= "6%{\x1b[1;32m%}A%{\x1b[39m%}8%{\x1b[1;32m%}D%{\x1b[39m%}7%{\x1b[1;32m%}M%{\x1b[39m%}1%{\x1b[1;32m%}R%{\x1b[39m%} 5%{\x1b[1;31m%}D%{\x1b[39m%}4%{\x1b[1;31m%}M%{\x1b[39m%} 3%{\x1b[1;37m%}A%{\x1b[39m%} 2%{\x1b[1;32m%}C%{\x1b[39m%} " , testCase "Other: with every kind of Changes" $- testEveryRepoChange Other defaultConfig @?= "6\x1b[1;32mA\x1b[0m8\x1b[1;32mD\x1b[0m7\x1b[1;32mM\x1b[0m1\x1b[1;32mR\x1b[0m 5\x1b[1;31mD\x1b[0m4\x1b[1;31mM\x1b[0m 3\x1b[1;37mA\x1b[0m 2\x1b[1;32mC\x1b[0m "+ testEveryRepoChange Other defaultConfig @?= "6\x1b[1;32mA\x1b[39m8\x1b[1;32mD\x1b[39m7\x1b[1;32mM\x1b[39m1\x1b[1;32mR\x1b[39m 5\x1b[1;31mD\x1b[39m4\x1b[1;31mM\x1b[39m 3\x1b[1;37mA\x1b[39m 2\x1b[1;32mC\x1b[39m " ] , testGroup "Custom Config" [ testCase "ZSH: with Local Add Changes" $- testLocalAddChange ZSH customChangeConfig @?= "2%{\x1b[35m%}B%{\x1b[0m%} "+ testLocalAddChange ZSH customChangeConfig @?= "2%{\x1b[35m%}B%{\x1b[39m%} " , testCase "ZSH: with Local Mod Changes" $- testLocalModChange ZSH customChangeConfig @?= "2%{\x1b[34m%}N%{\x1b[0m%} "+ testLocalModChange ZSH customChangeConfig @?= "2%{\x1b[34m%}N%{\x1b[39m%} " , testCase "ZSH: with Local Del Changes" $- testLocalDelChange ZSH customChangeConfig @?= "2%{\x1b[34m%}E%{\x1b[0m%} "+ testLocalDelChange ZSH customChangeConfig @?= "2%{\x1b[34m%}E%{\x1b[39m%} " , testCase "ZSH: with Index Add Changes" $- testIndexAddChange ZSH customChangeConfig @?= "2%{\x1b[36m%}B%{\x1b[0m%} "+ testIndexAddChange ZSH customChangeConfig @?= "2%{\x1b[36m%}B%{\x1b[39m%} " , testCase "ZSH: with Index Mod Changes" $- testIndexModChange ZSH customChangeConfig @?= "2%{\x1b[36m%}N%{\x1b[0m%} "+ testIndexModChange ZSH customChangeConfig @?= "2%{\x1b[36m%}N%{\x1b[39m%} " , testCase "ZSH: with Index Del Changes" $- testIndexDelChange ZSH customChangeConfig @?= "2%{\x1b[36m%}E%{\x1b[0m%} "+ testIndexDelChange ZSH customChangeConfig @?= "2%{\x1b[36m%}E%{\x1b[39m%} " , testCase "ZSH: with Conflicted Changes" $- testConflictedChange ZSH customChangeConfig @?= "2%{\x1b[36m%}D%{\x1b[0m%} "+ testConflictedChange ZSH customChangeConfig @?= "2%{\x1b[36m%}D%{\x1b[39m%} " , testCase "ZSH: with Renamed Changes" $- testRenamedChange ZSH customChangeConfig @?= "2%{\x1b[36m%}S%{\x1b[0m%} "+ testRenamedChange ZSH customChangeConfig @?= "2%{\x1b[36m%}S%{\x1b[39m%} " , testCase "Other: with Local Add Changes" $- testLocalAddChange Other customChangeConfig @?= "2\x1b[35mB\x1b[0m "+ testLocalAddChange Other customChangeConfig @?= "2\x1b[35mB\x1b[39m " , testCase "Other: with Local Mod Changes" $- testLocalModChange Other customChangeConfig @?= "2\x1b[34mN\x1b[0m "+ testLocalModChange Other customChangeConfig @?= "2\x1b[34mN\x1b[39m " , testCase "Other: with Local Del Changes" $- testLocalDelChange Other customChangeConfig @?= "2\x1b[34mE\x1b[0m "+ testLocalDelChange Other customChangeConfig @?= "2\x1b[34mE\x1b[39m " , testCase "Other: with Index Add Changes" $- testIndexAddChange Other customChangeConfig @?= "2\x1b[36mB\x1b[0m "+ testIndexAddChange Other customChangeConfig @?= "2\x1b[36mB\x1b[39m " , testCase "Other: with Index Mod Changes" $- testIndexModChange Other customChangeConfig @?= "2\x1b[36mN\x1b[0m "+ testIndexModChange Other customChangeConfig @?= "2\x1b[36mN\x1b[39m " , testCase "Other: with Index Del Changes" $- testIndexDelChange Other customChangeConfig @?= "2\x1b[36mE\x1b[0m "+ testIndexDelChange Other customChangeConfig @?= "2\x1b[36mE\x1b[39m " , testCase "Other: with Conflicted Changes" $- testConflictedChange Other customChangeConfig @?= "2\x1b[36mD\x1b[0m "+ testConflictedChange Other customChangeConfig @?= "2\x1b[36mD\x1b[39m " , testCase "Other: with Renamed Changes" $- testRenamedChange Other customChangeConfig @?= "2\x1b[36mS\x1b[0m "+ testRenamedChange Other customChangeConfig @?= "2\x1b[36mS\x1b[39m " , testCase "ZSH: with every kind of Changes" $- testEveryRepoChange ZSH customChangeConfig @?= "6%{\x1b[36m%}B%{\x1b[0m%}8%{\x1b[36m%}E%{\x1b[0m%}7%{\x1b[36m%}N%{\x1b[0m%}1%{\x1b[36m%}S%{\x1b[0m%} 5%{\x1b[34m%}E%{\x1b[0m%}4%{\x1b[34m%}N%{\x1b[0m%} 3%{\x1b[35m%}B%{\x1b[0m%} 2%{\x1b[36m%}D%{\x1b[0m%} "+ testEveryRepoChange ZSH customChangeConfig @?= "6%{\x1b[36m%}B%{\x1b[39m%}8%{\x1b[36m%}E%{\x1b[39m%}7%{\x1b[36m%}N%{\x1b[39m%}1%{\x1b[36m%}S%{\x1b[39m%} 5%{\x1b[34m%}E%{\x1b[39m%}4%{\x1b[34m%}N%{\x1b[39m%} 3%{\x1b[35m%}B%{\x1b[39m%} 2%{\x1b[36m%}D%{\x1b[39m%} " , testCase "Other: with every kind of Changes" $- testEveryRepoChange Other customChangeConfig @?= "6\x1b[36mB\x1b[0m8\x1b[36mE\x1b[0m7\x1b[36mN\x1b[0m1\x1b[36mS\x1b[0m 5\x1b[34mE\x1b[0m4\x1b[34mN\x1b[0m 3\x1b[35mB\x1b[0m 2\x1b[36mD\x1b[0m "+ testEveryRepoChange Other customChangeConfig @?= "6\x1b[36mB\x1b[39m8\x1b[36mE\x1b[39m7\x1b[36mN\x1b[39m1\x1b[36mS\x1b[39m 5\x1b[34mE\x1b[39m4\x1b[34mN\x1b[39m 3\x1b[35mB\x1b[39m 2\x1b[36mD\x1b[39m " ] ] @@ -471,23 +471,23 @@ [ testCase "ZSH: hardcoded character" $ testWriterWithConfig (buildOutputConfig ZSH (zeroGitRepoState { gitStashCount = 2 }) defaultConfig) addStashes- @?= "2%{\x1b[1;32m%}\8801%{\x1b[0m%} "+ @?= "2%{\x1b[1;32m%}\8801%{\x1b[39m%} " , testCase "Other: hardcoded character" $ testWriterWithConfig (buildOutputConfig Other (zeroGitRepoState { gitStashCount = 2 }) defaultConfig) addStashes- @?= "2\x1b[1;32m\8801\x1b[0m "+ @?= "2\x1b[1;32m\8801\x1b[39m " ] , testGroup "Custom Config" [ testCase "ZSH: hardcoded character" $ testWriterWithConfig (buildOutputConfig ZSH (zeroGitRepoState { gitStashCount = 2 }) customStashConfig) addStashes- @?= "2%{\x1b[36m%}stash%{\x1b[0m%} "+ @?= "2%{\x1b[36m%}stash%{\x1b[39m%} " , testCase "Other: hardcoded character" $ testWriterWithConfig (buildOutputConfig Other (zeroGitRepoState { gitStashCount = 2 }) customStashConfig) addStashes- @?= "2\x1b[36mstash\x1b[0m "+ @?= "2\x1b[36mstash\x1b[39m " ] ] @@ -519,7 +519,7 @@ {- For reference here, the full prompt would be - "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ "%{\ESC[39m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[39m%}1 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} 3%{\ESC[1;32m%}\8801%{\ESC[39m%} " -} testPartialPrompt :: TestTree@@ -528,43 +528,43 @@ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartRepoIndicator = False }) buildPrompt- @?= "%{\ESC[0m%}\120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ @?= "%{\ESC[39m%}\120366 2%{\ESC[1;32m%}\8644%{\ESC[39m%}1 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} 3%{\ESC[1;32m%}\8801%{\ESC[39m%} " , testCase "w/out merge branch commits info" $ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartMergeBranchCommitsDiff = False }) buildPrompt- @?= "%{\ESC[0m%}\5812 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ @?= "%{\ESC[39m%}\5812 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} 3%{\ESC[1;32m%}\8801%{\ESC[39m%} " , testCase "w/out local branch info" $ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartLocalBranch = False }) buildPrompt- @?= "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ @?= "%{\ESC[39m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[39m%}1 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} 3%{\ESC[1;32m%}\8801%{\ESC[39m%} " , testCase "with a branch set to ignore its merge branch" $ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confMergeBranchIgnoreBranches = ["branch"] }) buildPrompt- @?= "%{\ESC[0m%}\5812 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ @?= "%{\ESC[39m%}\5812 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} 3%{\ESC[1;32m%}\8801%{\ESC[39m%} " , testCase "w/out commits push/pull info" $ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartCommitsToOrigin = False }) buildPrompt- @?= "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ @?= "%{\ESC[39m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[39m%}1 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} 3%{\ESC[1;32m%}\8801%{\ESC[39m%} " , testCase "w/out local repo changes" $ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartLocalChangesState = False }) buildPrompt- @?= "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ @?= "%{\ESC[39m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[39m%}1 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 3%{\ESC[1;32m%}\8801%{\ESC[39m%} " , testCase "w/out stashes" $ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartStashes = False }) buildPrompt- @?= "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} "+ @?= "%{\ESC[39m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[39m%}1 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} " ] -- | Utility function to test a ShellOutput function and gets the prompt built