File: init.bats

package info (click to toggle)
rbenv 1.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 400 kB
  • sloc: sh: 1,259; ruby: 40; makefile: 15
file content (164 lines) | stat: -rwxr-xr-x 4,193 bytes parent folder | download
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#!/usr/bin/env bats

load test_helper

@test "creates shims and versions directories" {
  assert [ ! -d "${RBENV_ROOT}/shims" ]
  assert [ ! -d "${RBENV_ROOT}/versions" ]
  run rbenv-init -
  assert_success
  assert [ -d "${RBENV_ROOT}/shims" ]
  assert [ -d "${RBENV_ROOT}/versions" ]
}

@test "auto rehash" {
  run rbenv-init -
  assert_success
  assert_line "command rbenv rehash 2>/dev/null"
}

@test "setup shell completions" {
  root="$(cd $BATS_TEST_DIRNAME/.. && pwd)"
  run rbenv-init - bash
  assert_success
  assert_line "source '${root}/test/../completions/rbenv.bash'"
}

@test "detect parent shell" {
  SHELL=/bin/false run rbenv-init -
  assert_success
  assert_line "export RBENV_SHELL=bash"
}

@test "detect parent shell from script" {
  mkdir -p "$RBENV_TEST_DIR"
  cd "$RBENV_TEST_DIR"
  cat > myscript.sh <<OUT
#!/bin/sh
eval "\$(rbenv-init -)"
echo \$RBENV_SHELL
OUT
  chmod +x myscript.sh
  run ./myscript.sh
  assert_success "sh"
}

@test "skip shell completions (fish)" {
  root="$(cd $BATS_TEST_DIRNAME/.. && pwd)"
  run rbenv-init - fish
  assert_success
  local line="$(grep '^source' <<<"$output")"
  [ -z "$line" ] || flunk "did not expect line: $line"
}

@test "set up bash" {
  assert [ ! -e ~/.bash_profile ]
  run rbenv-init bash
  assert_success "writing ~/.bash_profile: now configured for rbenv."
  run cat ~/.bash_profile
  # shellcheck disable=SC2016
  assert_line 'eval "$(rbenv init - --no-rehash bash)"'
}

@test "set up bash (bashrc)" {
  mkdir -p "$HOME"
  touch ~/.bashrc
  assert [ ! -e ~/.bash_profile ]
  run rbenv-init bash
  assert_success "writing ~/.bashrc: now configured for rbenv."
  run cat ~/.bashrc
  # shellcheck disable=SC2016
  assert_line 'eval "$(rbenv init - --no-rehash bash)"'
}

@test "set up zsh" {
  unset ZDOTDIR
  assert [ ! -e ~/.zprofile ]
  run rbenv-init zsh
  assert_success "writing ~/.zprofile: now configured for rbenv."
  run cat ~/.zprofile
  # shellcheck disable=SC2016
  assert_line 'eval "$(rbenv init - --no-rehash zsh)"'
}

@test "set up zsh (zshrc)" {
  unset ZDOTDIR
  mkdir -p "$HOME"
  cat > ~/.zshrc <<<"# rbenv"
  run rbenv-init zsh
  assert_success "writing ~/.zshrc: now configured for rbenv."
  run cat ~/.zshrc
  # shellcheck disable=SC2016
  assert_line 'eval "$(rbenv init - --no-rehash zsh)"'
}

@test "set up fish" {
  unset XDG_CONFIG_HOME
  run rbenv-init fish
  assert_success "writing ~/.config/fish/config.fish: now configured for rbenv."
  run cat ~/.config/fish/config.fish
  assert_line 'status --is-interactive; and rbenv init - --no-rehash fish | source'
}

@test "set up multiple shells at once" {
  unset ZDOTDIR
  unset XDG_CONFIG_HOME
  run rbenv-init bash zsh fish
  assert_success
  assert_output <<OUT
writing ~/.bash_profile: now configured for rbenv.
writing ~/.zprofile: now configured for rbenv.
writing ~/.config/fish/config.fish: now configured for rbenv.
OUT
}

@test "option to skip rehash" {
  run rbenv-init - --no-rehash
  assert_success
  refute_line "rbenv rehash 2>/dev/null"
}

@test "adds shims to PATH" {
  export PATH="${BATS_TEST_DIRNAME}/../libexec:/usr/bin:/bin:/usr/local/bin"
  run rbenv-init - bash
  assert_success
  assert_line 0 'export PATH="'${RBENV_ROOT}'/shims:${PATH}"'
}

@test "adds shims to PATH (fish)" {
  export PATH="${BATS_TEST_DIRNAME}/../libexec:/usr/bin:/bin:/usr/local/bin"
  run rbenv-init - fish
  assert_success
  assert_line 0 "set -gx PATH '${RBENV_ROOT}/shims' \$PATH"
}

@test "can add shims to PATH more than once" {
  export PATH="${RBENV_ROOT}/shims:$PATH"
  run rbenv-init - bash
  assert_success
  assert_line 0 'export PATH="'${RBENV_ROOT}'/shims:${PATH}"'
}

@test "can add shims to PATH more than once (fish)" {
  export PATH="${RBENV_ROOT}/shims:$PATH"
  run rbenv-init - fish
  assert_success
  assert_line 0 "set -gx PATH '${RBENV_ROOT}/shims' \$PATH"
}

@test "outputs sh-compatible syntax" {
  run rbenv-init - bash
  assert_success
  assert_line '  case "$command" in'

  run rbenv-init - zsh
  assert_success
  assert_line '  case "$command" in'
}

@test "outputs fish-specific syntax (fish)" {
  run rbenv-init - fish
  assert_success
  assert_line '  switch "$command"'
  refute_line '  case "$command" in'
}