(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"test git-specific bash prompt functions">)} spids: [13] ) ] spids: [13] ) (C {(.)} {(./lib-bash.sh)}) (C {(.)} {(DQ ($ VSub_Name "$GIT_BUILD_DIR") (/contrib/completion/git-prompt.sh))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:actual) op: Equal rhs: {(DQ ($ VSub_Name "$TRASH_DIRECTORY") (/actual))} spids: [32] ) ] spids: [32] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:c_red) op: Equal rhs: {(SQ <"\\\\[\\\\e[31m\\\\]">)} spids: [38] ) ] spids: [38] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:c_green) op: Equal rhs: {(SQ <"\\\\[\\\\e[32m\\\\]">)} spids: [43] ) ] spids: [43] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:c_lblue) op: Equal rhs: {(SQ <"\\\\[\\\\e[1;34m\\\\]">)} spids: [48] ) ] spids: [48] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:c_clear) op: Equal rhs: {(SQ <"\\\\[\\\\e[0m\\\\]">)} spids: [53] ) ] spids: [53] ) (C {(test_expect_success)} {(SQ <"setup for prompt tests">)} { (SQ <"\n"> <"\tgit init otherrepo &&\n"> <"\techo 1 >file &&\n"> <"\tgit add file &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m initial &&\n"> <"\tgit tag -a -m msg1 t1 &&\n"> <"\tgit checkout -b b1 &&\n"> <"\techo 2 >file &&\n"> <"\tgit commit -m \"second b1\" file &&\n"> <"\techo 3 >file &&\n"> <"\tgit commit -m \"third b1\" file &&\n"> <"\tgit tag -a -m msg2 t2 &&\n"> <"\tgit checkout -b b2 master &&\n"> <"\techo 0 >file &&\n"> <"\tgit commit -m \"second b2\" file &&\n"> <"\techo 00 >file &&\n"> <"\tgit commit -m \"another b2\" file &&\n"> <"\techo 000 >file &&\n"> <"\tgit commit -m \"yet another b2\" file &&\n"> <"\tmkdir ignored_dir &&\n"> <"\techo \"ignored_dir/\" >>.gitignore &&\n"> <"\tgit checkout master\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - branch name">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\t__git_ps1 >\"$actual\" &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ <"prompt - branch name - symlink symref">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\ttest_config core.preferSymlinkRefs true &&\n"> <"\tgit checkout master &&\n"> <"\t__git_ps1 >\"$actual\" &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - unborn branch">)} { (SQ <"\n"> <"\tprintf \" (unborn)\" >expected &&\n"> <"\tgit checkout --orphan unborn &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\t__git_ps1 >\"$actual\" &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:repo_with_newline) op: Equal rhs: {(SQ <"repo\n"> <"with\n"> <newline>)} spids: [141] ) ] spids: [141] ) (If arms: [ (if_arm cond: [ (AndOr children: [ (C {(test_have_prereq)} {(KW_Bang "!") (MINGW)}) (SimpleCommand words: [{(mkdir)} {(DQ ($ VSub_Name "$repo_with_newline"))}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[164])] ) ] op_id: Op_DAmp ) ] action: [(C {(test_set_prereq)} {(FUNNYNAMES)})] spids: [-1 167] ) ] else_action: [(C {(say)} {(SQ <"Your filesystem does not allow newlines in filenames.">)})] spids: [174 183] ) (C {(test_expect_success)} {(FUNNYNAMES)} {(SQ <"prompt - with newline in path">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\tgit init \"$repo_with_newline\" &&\n"> <"\ttest_when_finished \"rm -rf \\\"$repo_with_newline\\\"\" &&\n"> <"\tmkdir \"$repo_with_newline\"/subdir &&\n"> <"\t(\n"> <"\t\tcd \"$repo_with_newline/subdir\" &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - detached head">)} { (SQ <"\n"> <"\tprintf \" ((%s...))\" $(git log -1 --format=\"%h\" --abbrev=13 b1^) >expected &&\n"> <"\ttest_config core.abbrev 13 &&\n"> <"\tgit checkout b1^ &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\t__git_ps1 >\"$actual\" &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - describe detached head - contains">)} { (SQ <"\n"> <"\tprintf \" ((t2~1))\" >expected &&\n"> <"\tgit checkout b1^ &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\t(\n"> <"\t\tGIT_PS1_DESCRIBE_STYLE=contains &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - describe detached head - branch">)} { (SQ <"\n"> <"\tprintf \" ((tags/t2~1))\" >expected &&\n"> <"\tgit checkout b1^ &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\t(\n"> <"\t\tGIT_PS1_DESCRIBE_STYLE=branch &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - describe detached head - describe">)} { (SQ <"\n"> <"\tprintf \" ((t1-1-g%s))\" $(git log -1 --format=\"%h\" b1^) >expected &&\n"> <"\tgit checkout b1^ &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\t(\n"> <"\t\tGIT_PS1_DESCRIBE_STYLE=describe &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - describe detached head - default">)} { (SQ <"\n"> <"\tprintf \" ((t2))\" >expected &&\n"> <"\tgit checkout --detach b1 &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\t__git_ps1 >\"$actual\" &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - inside .git directory">)} { (SQ <"\n"> <"\tprintf \" (GIT_DIR!)\" >expected &&\n"> <"\t(\n"> <"\t\tcd .git &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - deep inside .git directory">)} { (SQ <"\n"> <"\tprintf \" (GIT_DIR!)\" >expected &&\n"> <"\t(\n"> <"\t\tcd .git/refs/heads &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - inside bare repository">)} { (SQ <"\n"> <"\tprintf \" (BARE:master)\" >expected &&\n"> <"\tgit init --bare bare.git &&\n"> <"\ttest_when_finished \"rm -rf bare.git\" &&\n"> <"\t(\n"> <"\t\tcd bare.git &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - interactive rebase">)} { (SQ <"\n"> <"\tprintf \" (b1|REBASE-i 2/3)\" >expected &&\n"> <"\twrite_script fake_editor.sh <<-\\EOF &&\n"> <"\t\techo \"exec echo\" >\"$1\"\n"> <"\t\techo \"edit $(git log -1 --format=\"%h\")\" >>\"$1\"\n"> <"\t\techo \"exec echo\" >>\"$1\"\n"> <"\tEOF\n"> <"\ttest_when_finished \"rm -f fake_editor.sh\" &&\n"> <"\ttest_set_editor \"$TRASH_DIRECTORY/fake_editor.sh\" &&\n"> <"\tgit checkout b1 &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\tgit rebase -i HEAD^ &&\n"> <"\ttest_when_finished \"git rebase --abort\" &&\n"> <"\t__git_ps1 >\"$actual\" &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - rebase merge">)} { (SQ <"\n"> <"\tprintf \" (b2|REBASE-m 1/3)\" >expected &&\n"> <"\tgit checkout b2 &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\ttest_must_fail git rebase --merge b1 b2 &&\n"> <"\ttest_when_finished \"git rebase --abort\" &&\n"> <"\t__git_ps1 >\"$actual\" &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - rebase">)} { (SQ <"\n"> <"\tprintf \" (b2|REBASE 1/3)\" >expected &&\n"> <"\tgit checkout b2 &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\ttest_must_fail git rebase b1 b2 &&\n"> <"\ttest_when_finished \"git rebase --abort\" &&\n"> <"\t__git_ps1 >\"$actual\" &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - merge">)} { (SQ <"\n"> <"\tprintf \" (b1|MERGING)\" >expected &&\n"> <"\tgit checkout b1 &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\ttest_must_fail git merge b2 &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\t__git_ps1 >\"$actual\" &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - cherry-pick">)} { (SQ <"\n"> <"\tprintf \" (master|CHERRY-PICKING)\" >expected &&\n"> <"\ttest_must_fail git cherry-pick b1 &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\t__git_ps1 >\"$actual\" &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - bisect">)} { (SQ <"\n"> <"\tprintf \" (master|BISECTING)\" >expected &&\n"> <"\tgit bisect start &&\n"> <"\ttest_when_finished \"git bisect reset\" &&\n"> <"\t__git_ps1 >\"$actual\" &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - dirty status indicator - clean">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - dirty status indicator - dirty worktree">)} { (SQ <"\n"> <"\tprintf \" (master *)\" >expected &&\n"> <"\techo \"dirty\" >file &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - dirty status indicator - dirty index">)} { (SQ <"\n"> <"\tprintf \" (master +)\" >expected &&\n"> <"\techo \"dirty\" >file &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\tgit add -u &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - dirty status indicator - dirty index and worktree">)} { (SQ <"\n"> <"\tprintf \" (master *+)\" >expected &&\n"> <"\techo \"dirty index\" >file &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\tgit add -u &&\n"> <"\techo \"dirty worktree\" >file &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - dirty status indicator - orphan branch - clean">)} { (SQ <"\n"> <"\tprintf \" (orphan #)\" >expected &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\tgit checkout --orphan orphan &&\n"> <"\tgit reset --hard &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - dirty status indicator - orphan branch - dirty index">)} { (SQ <"\n"> <"\tprintf \" (orphan +)\" >expected &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\tgit checkout --orphan orphan &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - dirty status indicator - orphan branch - dirty index and worktree">)} { (SQ <"\n"> <"\tprintf \" (orphan *+)\" >expected &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\tgit checkout --orphan orphan &&\n"> <"\t>file &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - dirty status indicator - shell variable unset with config disabled">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\techo \"dirty\" >file &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\ttest_config bash.showDirtyState false &&\n"> <"\t(\n"> <"\t\tsane_unset GIT_PS1_SHOWDIRTYSTATE &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - dirty status indicator - shell variable unset with config enabled">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\techo \"dirty\" >file &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\ttest_config bash.showDirtyState true &&\n"> <"\t(\n"> <"\t\tsane_unset GIT_PS1_SHOWDIRTYSTATE &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - dirty status indicator - shell variable set with config disabled">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\techo \"dirty\" >file &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\ttest_config bash.showDirtyState false &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - dirty status indicator - shell variable set with config enabled">)} { (SQ <"\n"> <"\tprintf \" (master *)\" >expected &&\n"> <"\techo \"dirty\" >file &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\ttest_config bash.showDirtyState true &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - dirty status indicator - not shown inside .git directory">)} { (SQ <"\n"> <"\tprintf \" (GIT_DIR!)\" >expected &&\n"> <"\techo \"dirty\" >file &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\tcd .git &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - stash status indicator - no stash">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWSTASHSTATE=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - stash status indicator - stash">)} { (SQ <"\n"> <"\tprintf \" (master $)\" >expected &&\n"> <"\techo 2 >file &&\n"> <"\tgit stash &&\n"> <"\ttest_when_finished \"git stash drop\" &&\n"> <"\tgit pack-refs --all &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWSTASHSTATE=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - stash status indicator - not shown inside .git directory">)} { (SQ <"\n"> <"\tprintf \" (GIT_DIR!)\" >expected &&\n"> <"\techo 2 >file &&\n"> <"\tgit stash &&\n"> <"\ttest_when_finished \"git stash drop\" &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWSTASHSTATE=y &&\n"> <"\t\tcd .git &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - untracked files status indicator - no untracked files">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWUNTRACKEDFILES=y &&\n"> <"\t\tcd otherrepo &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - untracked files status indicator - untracked files">)} { (SQ <"\n"> <"\tprintf \" (master %%)\" >expected &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWUNTRACKEDFILES=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - untracked files status indicator - empty untracked dir">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\tmkdir otherrepo/untracked-dir &&\n"> <"\ttest_when_finished \"rm -rf otherrepo/untracked-dir\" &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWUNTRACKEDFILES=y &&\n"> <"\t\tcd otherrepo &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - untracked files status indicator - non-empty untracked dir">)} { (SQ <"\n"> <"\tprintf \" (master %%)\" >expected &&\n"> <"\tmkdir otherrepo/untracked-dir &&\n"> <"\ttest_when_finished \"rm -rf otherrepo/untracked-dir\" &&\n"> <"\t>otherrepo/untracked-dir/untracked-file &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWUNTRACKEDFILES=y &&\n"> <"\t\tcd otherrepo &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - untracked files status indicator - untracked files outside cwd">)} { (SQ <"\n"> <"\tprintf \" (master %%)\" >expected &&\n"> <"\t(\n"> <"\t\tmkdir -p ignored_dir &&\n"> <"\t\tcd ignored_dir &&\n"> <"\t\tGIT_PS1_SHOWUNTRACKEDFILES=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} { (SQ <"prompt - untracked files status indicator - shell variable unset with config disabled">) } { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\ttest_config bash.showUntrackedFiles false &&\n"> <"\t(\n"> <"\t\tsane_unset GIT_PS1_SHOWUNTRACKEDFILES &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - untracked files status indicator - shell variable unset with config enabled">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\ttest_config bash.showUntrackedFiles true &&\n"> <"\t(\n"> <"\t\tsane_unset GIT_PS1_SHOWUNTRACKEDFILES &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - untracked files status indicator - shell variable set with config disabled">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\ttest_config bash.showUntrackedFiles false &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWUNTRACKEDFILES=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - untracked files status indicator - shell variable set with config enabled">)} { (SQ <"\n"> <"\tprintf \" (master %%)\" >expected &&\n"> <"\ttest_config bash.showUntrackedFiles true &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWUNTRACKEDFILES=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - untracked files status indicator - not shown inside .git directory">)} { (SQ <"\n"> <"\tprintf \" (GIT_DIR!)\" >expected &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWUNTRACKEDFILES=y &&\n"> <"\t\tcd .git &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - format string starting with dash">)} { (SQ <"\n"> <"\tprintf -- \"-master\" >expected &&\n"> <"\t__git_ps1 \"-%s\" >\"$actual\" &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - pc mode">)} { (SQ <"\n"> <"\tprintf \"BEFORE: (\\${__git_ps1_branch_name}):AFTER\\\\nmaster\" >expected &&\n"> <"\tprintf \"\" >expected_output &&\n"> <"\t(\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" >\"$actual\" &&\n"> <"\t\ttest_cmp expected_output \"$actual\" &&\n"> <"\t\tprintf \"%s\\\\n%s\" \"$PS1\" \"${__git_ps1_branch_name}\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - bash color pc mode - branch name">)} { (SQ <"\n"> < "\tprintf \"BEFORE: (${c_green}\\${__git_ps1_branch_name}${c_clear}):AFTER\\\\nmaster\" >expected &&\n" > <"\t(\n"> <"\t\tGIT_PS1_SHOWCOLORHINTS=y &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" >\"$actual\"\n"> <"\t\tprintf \"%s\\\\n%s\" \"$PS1\" \"${__git_ps1_branch_name}\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - bash color pc mode - detached head">)} { (SQ <"\n"> < "\tprintf \"BEFORE: (${c_red}\\${__git_ps1_branch_name}${c_clear}):AFTER\\\\n(%s...)\" $(git log -1 --format=\"%h\" b1^) >expected &&\n" > <"\tgit checkout b1^ &&\n"> <"\ttest_when_finished \"git checkout master\" &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWCOLORHINTS=y &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\\\\n%s\" \"$PS1\" \"${__git_ps1_branch_name}\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - bash color pc mode - dirty status indicator - dirty worktree">)} { (SQ <"\n"> < "\tprintf \"BEFORE: (${c_green}\\${__git_ps1_branch_name}${c_clear} ${c_red}*${c_clear}):AFTER\\\\nmaster\" >expected &&\n" > <"\techo \"dirty\" >file &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\tGIT_PS1_SHOWCOLORHINTS=y &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\\\\n%s\" \"$PS1\" \"${__git_ps1_branch_name}\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - bash color pc mode - dirty status indicator - dirty index">)} { (SQ <"\n"> < "\tprintf \"BEFORE: (${c_green}\\${__git_ps1_branch_name}${c_clear} ${c_green}+${c_clear}):AFTER\\\\nmaster\" >expected &&\n" > <"\techo \"dirty\" >file &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\tgit add -u &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\tGIT_PS1_SHOWCOLORHINTS=y &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\\\\n%s\" \"$PS1\" \"${__git_ps1_branch_name}\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - bash color pc mode - dirty status indicator - dirty index and worktree">)} { (SQ <"\n"> < "\tprintf \"BEFORE: (${c_green}\\${__git_ps1_branch_name}${c_clear} ${c_red}*${c_green}+${c_clear}):AFTER\\\\nmaster\" >expected &&\n" > <"\techo \"dirty index\" >file &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\tgit add -u &&\n"> <"\techo \"dirty worktree\" >file &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWCOLORHINTS=y &&\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\\\\n%s\" \"$PS1\" \"${__git_ps1_branch_name}\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - bash color pc mode - dirty status indicator - before root commit">)} { (SQ <"\n"> < "\tprintf \"BEFORE: (${c_green}\\${__git_ps1_branch_name}${c_clear} ${c_green}#${c_clear}):AFTER\\\\nmaster\" >expected &&\n" > <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\tGIT_PS1_SHOWCOLORHINTS=y &&\n"> <"\t\tcd otherrepo &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\\\\n%s\" \"$PS1\" \"${__git_ps1_branch_name}\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - bash color pc mode - inside .git directory">)} { (SQ <"\n"> < "\tprintf \"BEFORE: (${c_green}\\${__git_ps1_branch_name}${c_clear}):AFTER\\\\nGIT_DIR!\" >expected &&\n" > <"\techo \"dirty\" >file &&\n"> <"\ttest_when_finished \"git reset --hard\" &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWDIRTYSTATE=y &&\n"> <"\t\tGIT_PS1_SHOWCOLORHINTS=y &&\n"> <"\t\tcd .git &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\\\\n%s\" \"$PS1\" \"${__git_ps1_branch_name}\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - bash color pc mode - stash status indicator">)} { (SQ <"\n"> < "\tprintf \"BEFORE: (${c_green}\\${__git_ps1_branch_name}${c_clear} ${c_lblue}\\$${c_clear}):AFTER\\\\nmaster\" >expected &&\n" > <"\techo 2 >file &&\n"> <"\tgit stash &&\n"> <"\ttest_when_finished \"git stash drop\" &&\n"> <"\t(\n"> <"\t\tGIT_PS1_SHOWSTASHSTATE=y &&\n"> <"\t\tGIT_PS1_SHOWCOLORHINTS=y &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\\\\n%s\" \"$PS1\" \"${__git_ps1_branch_name}\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - bash color pc mode - untracked files status indicator">)} { (SQ <"\n"> < "\tprintf \"BEFORE: (${c_green}\\${__git_ps1_branch_name}${c_clear} ${c_red}%%${c_clear}):AFTER\\\\nmaster\" >expected &&\n" > <"\t(\n"> <"\t\tGIT_PS1_SHOWUNTRACKEDFILES=y &&\n"> <"\t\tGIT_PS1_SHOWCOLORHINTS=y &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\\\\n%s\" \"$PS1\" \"${__git_ps1_branch_name}\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - zsh color pc mode">)} { (SQ <"\n"> <"\tprintf \"BEFORE: (%%F{green}master%%f):AFTER\" >expected &&\n"> <"\t(\n"> <"\t\tZSH_VERSION=5.0.0 &&\n"> <"\t\tGIT_PS1_SHOWCOLORHINTS=y &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\" \"$PS1\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - hide if pwd ignored - env var unset, config disabled">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\ttest_config bash.hideIfPwdIgnored false &&\n"> <"\t(\n"> <"\t\tcd ignored_dir &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - hide if pwd ignored - env var unset, config disabled, pc mode">)} { (SQ <"\n"> <"\tprintf \"BEFORE: (\\${__git_ps1_branch_name}):AFTER\" >expected &&\n"> <"\ttest_config bash.hideIfPwdIgnored false &&\n"> <"\t(\n"> <"\t\tcd ignored_dir &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\" \"$PS1\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - hide if pwd ignored - env var unset, config unset">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\t(\n"> <"\t\tcd ignored_dir &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - hide if pwd ignored - env var unset, config unset, pc mode">)} { (SQ <"\n"> <"\tprintf \"BEFORE: (\\${__git_ps1_branch_name}):AFTER\" >expected &&\n"> <"\t(\n"> <"\t\tcd ignored_dir &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\" \"$PS1\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - hide if pwd ignored - env var set, config disabled">)} { (SQ <"\n"> <"\tprintf \" (master)\" >expected &&\n"> <"\ttest_config bash.hideIfPwdIgnored false &&\n"> <"\t(\n"> <"\t\tcd ignored_dir &&\n"> <"\t\tGIT_PS1_HIDE_IF_PWD_IGNORED=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - hide if pwd ignored - env var set, config disabled, pc mode">)} { (SQ <"\n"> <"\tprintf \"BEFORE: (\\${__git_ps1_branch_name}):AFTER\" >expected &&\n"> <"\ttest_config bash.hideIfPwdIgnored false &&\n"> <"\t(\n"> <"\t\tcd ignored_dir &&\n"> <"\t\tGIT_PS1_HIDE_IF_PWD_IGNORED=y &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\" \"$PS1\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - hide if pwd ignored - env var set, config unset">)} { (SQ <"\n"> <"\tprintf \"\" >expected &&\n"> <"\t(\n"> <"\t\tcd ignored_dir &&\n"> <"\t\tGIT_PS1_HIDE_IF_PWD_IGNORED=y &&\n"> <"\t\t__git_ps1 >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - hide if pwd ignored - env var set, config unset, pc mode">)} { (SQ <"\n"> <"\tprintf \"BEFORE::AFTER\" >expected &&\n"> <"\t(\n"> <"\t\tcd ignored_dir &&\n"> <"\t\tGIT_PS1_HIDE_IF_PWD_IGNORED=y &&\n"> <"\t\t__git_ps1 \"BEFORE:\" \":AFTER\" &&\n"> <"\t\tprintf \"%s\" \"$PS1\" >\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - hide if pwd ignored - inside gitdir (stdout)">)} { (SQ <"\n"> <"\tprintf \" (GIT_DIR!)\" >expected &&\n"> <"\t(\n"> <"\t\tGIT_PS1_HIDE_IF_PWD_IGNORED=y &&\n"> <"\t\tcd .git &&\n"> <"\t\t__git_ps1 >\"$actual\" 2>/dev/null\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"prompt - hide if pwd ignored - inside gitdir (stderr)">)} { (SQ <"\n"> <"\tprintf \"\" >expected &&\n"> <"\t(\n"> <"\t\tGIT_PS1_HIDE_IF_PWD_IGNORED=y &&\n"> <"\t\tcd .git &&\n"> <"\t\t__git_ps1 >/dev/null 2>\"$actual\"\n"> <"\t) &&\n"> <"\ttest_cmp expected \"$actual\"\n"> ) } ) (C {(test_done)}) ] )