aboutsummaryrefslogtreecommitdiff
path: root/test/segments/context.spec
blob: 25c355a7585f179b5c253eeff08eadf7563d430e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/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"

  # Test specific settings
  OLD_DEFAULT_USER=$DEFAULT_USER
  unset DEFAULT_USER

  # Fix leaked state for travis
  OLD_POWERLEVEL9K_CONTEXT_ALWAYS_SHOW=$POWERLEVEL9K_CONTEXT_ALWAYS_SHOW
  unset POWERLEVEL9K_CONTEXT_ALWAYS_SHOW
  OLD_SSH_CLIENT=$SSH_CLIENT
  unset SSH_CLIENT
  OLD_SSH_TTY=$SSH_TTY
  unset SSH_TTY
}

function tearDown() {
  # Restore old variables
  [[ -n "$OLD_DEFAULT_USER" ]] && DEFAULT_USER=$OLD_DEFAULT_USER
  unset OLD_DEFAULT_USER

  [[ -n "$OLD_POWERLEVEL9K_CONTEXT_ALWAYS_SHOW" ]] && POWERLEVEL9K_CONTEXT_ALWAYS_SHOW=$OLD_POWERLEVEL9K_CONTEXT_ALWAYS_SHOW
  unset OLD_POWERLEVEL9K_CONTEXT_ALWAYS_SHOW

  [[ -n "$OLD_SSH_CLIENT" ]] && SSH_CLIENT=$OLD_SSH_CLIENT
  unset OLD_SSH_CLIENT

  [[ -n "$OLD_SSH_TTY" ]] && SSH_TTY=$OLD_SSH_TTY
  unset OLD_SSH_TTY

  return 0
}

function testContextSegmentDoesNotGetRenderedWithDefaultUser() {
    local DEFAULT_USER=$(whoami)
    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context custom_world)

    # Load Powerlevel9k
    source powerlevel9k.zsh-theme

    assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}

function testContextSegmentDoesGetRenderedWhenSshConnectionIsOpen() {
    function sudo() {
        return 0
    }
    local SSH_CLIENT="putty"
    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)

    # Load Powerlevel9k
    source powerlevel9k.zsh-theme

    assertEquals "%K{000} %F{003}%n@%m %k%F{000}%f " "$(build_left_prompt)"

    unfunction sudo
}

function testContextSegmentWithForeignUser() {
    function sudo() {
        return 0
    }
    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)

    # Load Powerlevel9k
    source powerlevel9k.zsh-theme

    assertEquals "%K{000} %F{003}%n@%m %k%F{000}%f " "$(build_left_prompt)"

    unfunction sudo
}

# TODO: How to test root?
function testContextSegmentWithRootUser() {
    startSkipping # Skip test
    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)

    # Load Powerlevel9k
    source powerlevel9k.zsh-theme

    assertEquals "%K{000} %F{003}%n@%m %k%F{000}%f " "$(build_left_prompt)"
}

function testOverridingContextTemplate() {
    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
    local POWERLEVEL9K_CONTEXT_TEMPLATE=xx

    # Load Powerlevel9k
    source powerlevel9k.zsh-theme

    assertEquals "%K{000} %F{003}xx %k%F{000}%f " "$(build_left_prompt)"
}

function testContextSegmentIsShownIfDefaultUserIsSetWhenForced() {
    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
    local POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
    local DEFAULT_USER=$(whoami)

    # Load Powerlevel9k
    source powerlevel9k.zsh-theme

    assertEquals "%K{000} %F{003}%n@%m %k%F{000}%f " "$(build_left_prompt)"
}

function testContextSegmentIsShownIfForced() {
    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
    local POWERLEVEL9K_ALWAYS_SHOW_USER=true
    local DEFAULT_USER=$(whoami)

    # Load Powerlevel9k
    source powerlevel9k.zsh-theme

    assertEquals "%K{000} %F{003}$(whoami) %k%F{000}%f " "$(build_left_prompt)"
}

source shunit2/shunit2