diff options
Diffstat (limited to 'test/segments/vcs-git.spec')
-rwxr-xr-x | test/segments/vcs-git.spec | 535 |
1 files changed, 0 insertions, 535 deletions
diff --git a/test/segments/vcs-git.spec b/test/segments/vcs-git.spec deleted file mode 100755 index 81a934e9..00000000 --- a/test/segments/vcs-git.spec +++ /dev/null @@ -1,535 +0,0 @@ -#!/usr/bin/env zsh -#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8 - -# Required for shunit2 to run correctly -setopt shwordsplit -SHUNIT_PARENT=$0 - -function setUp() { - export TERM="xterm-256color" - - P9K_HOME=$(pwd) - ### Test specific - # Create default folder and git init it. - FOLDER=/tmp/powerlevel9k-test/vcs-test - mkdir -p "${FOLDER}" - cd $FOLDER - - # Set username and email - OLD_GIT_AUTHOR_NAME=$GIT_AUTHOR_NAME - GIT_AUTHOR_NAME="Testing Tester" - OLD_GIT_AUTHOR_EMAIL=$GIT_AUTHOR_EMAIL - GIT_AUTHOR_EMAIL="test@powerlevel9k.theme" - - # Set default username if not already set! - if [[ -z $(git config user.name) ]]; then - GIT_AUTHOR_NAME_SET_BY_TEST=true - git config --global user.name "${GIT_AUTHOR_NAME}" - fi - # Set default email if not already set! - if [[ -z $(git config user.email) ]]; then - GIT_AUTHOR_EMAIL_SET_BY_TEST=true - git config --global user.email "${GIT_AUTHOR_EMAIL}" - fi - - # Initialize FOLDER as git repository - git init 1>/dev/null -} - -function tearDown() { - if [[ -n "${OLD_GIT_AUTHOR_NAME}" ]]; then - GIT_AUTHOR_NAME=$OLD_GIT_AUTHOR - unset OLD_GIT_AUTHOR_NAME - else - unset GIT_AUTHOR_NAME - fi - - if [[ -n "${OLD_GIT_AUTHOR_EMAIL}" ]]; then - GIT_AUTHOR_EMAIL=$OLD_GIT_AUTHOR_EMAIL - unset OLD_GIT_AUTHOR_EMAIL - else - unset GIT_AUTHOR_EMAIL - fi - - if [[ "${GIT_AUTHOR_NAME_SET_BY_TEST}" == "true" ]]; then - git config --global --unset user.name - fi - if [[ "${GIT_AUTHOR_EMAIL_SET_BY_TEST}" == "true" ]]; then - git config --global --unset user.email - fi - - # Go back to powerlevel9k folder - cd "${P9K_HOME}" - # Remove eventually created test-specific folder - rm -fr "${FOLDER}" - # At least remove test folder completely - rm -fr /tmp/powerlevel9k-test - unset FOLDER -} - -function testColorOverridingForCleanStateWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_CLEAN_FOREGROUND='cyan' - local POWERLEVEL9K_VCS_CLEAN_BACKGROUND='white' - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{007} %F{006} master %k%F{007}%f " "$(build_left_prompt)" -} - -function testColorOverridingForModifiedStateWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_MODIFIED_FOREGROUND='red' - local POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='yellow' - - touch testfile - git add testfile - git commit -m "test" 1>/dev/null - echo "test" > testfile - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{003} %F{001} master ● %k%F{003}%f " "$(build_left_prompt)" -} - -function testColorOverridingForUntrackedStateWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND='cyan' - local POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND='yellow' - - touch testfile - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{003} %F{006} master ? %k%F{003}%f " "$(build_left_prompt)" -} - -function testGitIconWorks() { - local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_GIT_ICON='Git-Icon' - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000}Git-Icon %F{000} master %k%F{002}%f " "$(build_left_prompt)" -} - -function testGitlabIconWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_GIT_GITLAB_ICON='GL-Icon' - - # Add a GitLab project as remote origin. This is - # sufficient to show the GitLab-specific icon. - git remote add origin https://gitlab.com/dritter/gitlab-test-project.git - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000}GL-Icon %F{000} master %k%F{002}%f " "$(build_left_prompt)" -} - -function testBitbucketIconWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_GIT_BITBUCKET_ICON='BB-Icon' - - # Add a BitBucket project as remote origin. This is - # sufficient to show the BitBucket-specific icon. - git remote add origin https://dritter@bitbucket.org/dritter/dr-test.git - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000}BB-Icon %F{000} master %k%F{002}%f " "$(build_left_prompt)" -} - -function testGitHubIconWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_GIT_GITHUB_ICON='GH-Icon' - - # Add a GitHub project as remote origin. This is - # sufficient to show the GitHub-specific icon. - git remote add origin https://github.com/dritter/test.git - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000}GH-Icon %F{000} master %k%F{002}%f " "$(build_left_prompt)" -} - -function testUntrackedFilesIconWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_UNTRACKED_ICON='?' - - # Create untracked file - touch "i-am-untracked.txt" - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000} master ? %k%F{002}%f " "$(build_left_prompt)" -} - -function testStagedFilesIconWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_STAGED_ICON='+' - - # Create staged file - touch "i-am-added.txt" - git add i-am-added.txt &>/dev/null - git commit -m "initial commit" &>/dev/null - echo "xx" >> i-am-added.txt - git add i-am-added.txt &>/dev/null - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{003} %F{000} master + %k%F{003}%f " "$(build_left_prompt)" -} - -function testUnstagedFilesIconWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_UNSTAGED_ICON='M' - - # Create unstaged (modified, but not added to index) file - touch "i-am-modified.txt" - git add i-am-modified.txt - git commit -m "Add File" 1>/dev/null - echo "xx" > i-am-modified.txt - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{003} %F{000} master M %k%F{003}%f " "$(build_left_prompt)" -} - -function testStashIconWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_STASH_ICON='S' - - # Create modified file - touch "i-am-modified.txt" - git add i-am-modified.txt - git commit -m "Add File" 1>/dev/null - echo "xx" > i-am-modified.txt - git stash 1>/dev/null - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000} master S1 %k%F{002}%f " "$(build_left_prompt)" -} - -function testTagIconWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_TAG_ICON='T' - - touch "file.txt" - git add file.txt - git commit -m "Add File" 1>/dev/null - git tag "v0.0.1" - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000} master Tv0.0.1 %k%F{002}%f " "$(build_left_prompt)" -} - -function testTagIconInDetachedHeadState() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_TAG_ICON='T' - - touch "file.txt" - git add file.txt - git commit -m "Add File" &>/dev/null - git tag "v0.0.1" - touch "file2.txt" - git add file2.txt - git commit -m "Add File2" &>/dev/null - git checkout v0.0.1 &>/dev/null - local hash=$(git rev-list -n 1 --abbrev-commit --abbrev=8 HEAD) - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000} ${hash} Tv0.0.1 %k%F{002}%f " "$(build_left_prompt)" -} - -function testActionHintWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - - touch "i-am-modified.txt" - git add i-am-modified.txt - git commit -m "Add File" &>/dev/null - - git clone . ../vcs-test2 &>/dev/null - echo "xx" >> i-am-modified.txt - git commit -a -m "Modified file" &>/dev/null - - cd ../vcs-test2 - echo "yy" >> i-am-modified.txt - git commit -a -m "Provoke conflict" &>/dev/null - git pull &>/dev/null - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{003} %F{000} master %F{red}| merge%f %k%F{003}%f " "$(build_left_prompt)" -} - -function testIncomingHintWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON='I' - - touch "i-am-modified.txt" - git add i-am-modified.txt - git commit -m "Add File" &>/dev/null - - git clone . ../vcs-test2 &>/dev/null - echo "xx" >> i-am-modified.txt - git commit -a -m "Modified file" &>/dev/null - - cd ../vcs-test2 - git fetch &>/dev/null - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000} master I1 %k%F{002}%f " "$(build_left_prompt)" -} - -function testOutgoingHintWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON='o' - - touch "i-am-modified.txt" - git add i-am-modified.txt - git commit -m "Add File" &>/dev/null - - git clone . ../vcs-test2 &>/dev/null - - cd ../vcs-test2 - - echo "xx" >> i-am-modified.txt - git commit -a -m "Modified file" &>/dev/null - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000} master o1 %k%F{002}%f " "$(build_left_prompt)" -} - -function testShorteningCommitHashWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_SHOW_CHANGESET=true - local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4' - - touch "file.txt" - git add file.txt - git commit -m "Add File" 1>/dev/null - local hash=$(git rev-list -n 1 --abbrev-commit --abbrev=3 HEAD) - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - # This test needs to call powerlevel9k_vcs_init, where - # the changeset is truncated. - powerlevel9k_vcs_init - assertEquals "%K{002} %F{000}${hash} master %k%F{002}%f " "$(build_left_prompt)" -} - -function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_SHOW_CHANGESET=false - local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4' - - touch "file.txt" - git add file.txt - git commit -m "Add File" 1>/dev/null - - # Load Powerlevel9k - source ${P9K_HOME}/powerlevel9k.zsh-theme - - # This test needs to call powerlevel9k_vcs_init, where - # the changeset is truncated. - powerlevel9k_vcs_init - assertEquals "%K{002} %F{000} master %k%F{002}%f " "$(build_left_prompt)" -} - -function testDetectingUntrackedFilesInSubmodulesWork() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY="true" - unset POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND - - mkdir ../submodule - cd ../submodule - git init 1>/dev/null - touch "i-am-tracked.txt" - git add . 1>/dev/null && git commit -m "Initial Commit" 1>/dev/null - - local submodulePath="${PWD}" - - cd - - git submodule add "${submodulePath}" 2>/dev/null - git commit -m "Add submodule" 1>/dev/null - - # Go into checked-out submodule path - cd submodule - # Create untracked file - touch "i-am-untracked.txt" - cd - - - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000} master ? %k%F{002}%f " "$(build_left_prompt)" -} - -function testDetectinUntrackedFilesInMainRepoWithDirtySubmodulesWork() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY="true" - unset POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND - - mkdir ../submodule - cd ../submodule - git init 1>/dev/null - touch "i-am-tracked.txt" - git add . 1>/dev/null && git commit -m "Initial Commit" 1>/dev/null - - local submodulePath="${PWD}" - - cd - - git submodule add "${submodulePath}" 2>/dev/null - git commit -m "Add submodule" 1>/dev/null - - # Create untracked file - touch "i-am-untracked.txt" - - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000} master ? %k%F{002}%f " "$(build_left_prompt)" -} - -function testDetectingUntrackedFilesInNestedSubmodulesWork() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY="true" - unset POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND - - local mainRepo="${PWD}" - - mkdir ../submodule - cd ../submodule - git init 1>/dev/null - touch "i-am-tracked.txt" - git add . 1>/dev/null && git commit -m "Initial Commit" 1>/dev/null - - local submodulePath="${PWD}" - - mkdir ../subsubmodule - cd ../subsubmodule - git init 1>/dev/null - touch "i-am-tracked-too.txt" - git add . 1>/dev/null && git commit -m "Initial Commit" 1>/dev/null - - local subsubmodulePath="${PWD}" - - cd "${submodulePath}" - git submodule add "${subsubmodulePath}" 2>/dev/null - git commit -m "Add subsubmodule" 1>/dev/null - cd "${mainRepo}" - git submodule add "${submodulePath}" 2>/dev/null - git commit -m "Add submodule" 1>/dev/null - - git submodule update --init --recursive 2>/dev/null - - cd submodule/subsubmodule - # Create untracked file - touch "i-am-untracked.txt" - cd - - - source ${P9K_HOME}/powerlevel9k.zsh-theme - - assertEquals "%K{002} %F{000} master ? %k%F{002}%f " "$(build_left_prompt)" -} - -function testDetectingUntrackedFilesInCleanSubdirectoryWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY="true" - unset POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND - mkdir clean-folder - touch clean-folder/file.txt - mkdir dirty-folder - touch dirty-folder/file.txt - git add . 2>/dev/null - git commit -m "Initial commit" >/dev/null - touch dirty-folder/new-file.txt - cd clean-folder - source ${P9K_HOME}/powerlevel9k.zsh-theme - assertEquals "%K{002} %F{000} master ? %k%F{002}%f " "$(build_left_prompt)" -} - -function testBranchNameScriptingVulnerability() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - echo "#!/bin/sh\n\necho 'hacked'\n" > evil_script.sh - chmod +x evil_script.sh - - git checkout -b '$(./evil_script.sh)' 2>/dev/null - git add . 2>/dev/null - git commit -m "Initial commit" >/dev/null - - assertEquals '%K{002} %F{000} $(./evil_script.sh) %k%F{002}%f ' "$(build_left_prompt)" -} - -function testGitSubmoduleWorks() { - local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS - POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs) - local POWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY="true" - unset POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND - - mkdir ../submodule - cd ../submodule - git init 1>/dev/null - touch "i-am-tracked.txt" - git add . 1>/dev/null && git commit -m "Initial Commit" 1>/dev/null - - local submodulePath="${PWD}" - - cd - - git submodule add "${submodulePath}" 2>/dev/null - git commit -m "Add submodule" 1>/dev/null - - cd submodule - - source "${P9K_HOME}/powerlevel9k.zsh-theme" - - local result="$(build_left_prompt)" - [[ "$result" =~ ".*(is outside repository)+" ]] && return 1 - - assertEquals "%K{002} %F{000} master %k%F{002}%f " "$result" -} - - -source shunit2/shunit2 |