File tree Expand file tree Collapse file tree 2 files changed +68
-10
lines changed Expand file tree Collapse file tree 2 files changed +68
-10
lines changed Original file line number Diff line number Diff line change 5858 fi
5959}
6060
61+ function chruby_ruby_select()
62+ {
63+ local dir
64+ for dir in " ${RUBIES[@]} " ; do
65+ dir=" ${dir%%/ } "
66+ case " ${dir##*/ } " in
67+ " $1 " ) matched_ruby=" $dir " && break ;;
68+ ruby-" $1 " * ) matched_ruby=" $dir " ;;
69+ " $1 " * ) matched_ruby=" $dir " ;;
70+ esac
71+ done
72+ }
73+
74+
6175function chruby()
6276{
6377 case " $1 " in
@@ -80,22 +94,16 @@ function chruby()
8094 ;;
8195 system) chruby_reset ;;
8296 * )
83- local dir match
84- for dir in " ${RUBIES[@]} " ; do
85- dir=" ${dir%%/ } "
86- case " ${dir##*/ } " in
87- " $1 " ) match=" $dir " && break ;;
88- * " $1 " * ) match=" $dir " ;;
89- esac
90- done
97+ local matched_ruby
98+ chruby_ruby_select " $1 "
9199
92- if [[ -z " $match " ]]; then
100+ if [[ -z " $matched_ruby " ]]; then
93101 echo " chruby: unknown Ruby: $1 " >&2
94102 return 1
95103 fi
96104
97105 shift
98- chruby_use " $match " " $* "
106+ chruby_use " $matched_ruby " " $* "
99107 ;;
100108 esac
101109}
Original file line number Diff line number Diff line change @@ -68,4 +68,54 @@ function test_chruby_invalid_ruby()
6868 assertEquals " did not return 1" 1 $?
6969}
7070
71+ function test_chruby_ruby_select_by_major_minor()
72+ {
73+ RUBIES=(
74+ /opt/rubies/ruby-2.0.0-p100
75+ /opt/rubies/ruby-2.1.0
76+ /opt/rubies/ruby-2.2.0
77+ /opt/rubies/ruby-2.2.1
78+ )
79+
80+ chruby_ruby_select " 2.0"
81+ assertEquals " did not match major.minor" " /opt/rubies/ruby-2.0.0-p100" " $matched_ruby "
82+
83+ chruby_ruby_select " 2.1"
84+ assertEquals " did not match major.minor" " /opt/rubies/ruby-2.1.0" " $matched_ruby "
85+ }
86+
87+ function test_chruby_ruby_select_by_implementation()
88+ {
89+ RUBIES=(
90+ /opt/rubies/ruby-2.2.10
91+ /opt/rubies/rbx-2.2.10
92+ )
93+
94+ chruby_ruby_select " rbx"
95+ assertEquals " did not match by implementation" " /opt/rubies/rbx-2.2.10" " $matched_ruby "
96+ }
97+
98+ function test_chruby_ruby_select_exact()
99+ {
100+ RUBIES=(
101+ /opt/rubies/2.1.0
102+ /opt/rubies/ruby-2.1.0
103+ /opt/rubies/ruby-2.1.1
104+ )
105+
106+ chruby_ruby_select " ruby-2.1.0"
107+ assertEquals " did not match exact" " /opt/rubies/ruby-2.1.0" " $matched_ruby "
108+ }
109+
110+ function test_chruby_ruby_select_last()
111+ {
112+ RUBIES=(
113+ /opt/rubies/ruby-1.9.3-p100
114+ /opt/rubies/ruby-1.9.3-p200
115+ )
116+
117+ chruby_ruby_select " 1.9.3"
118+ assertEquals " did not match last version listed" " /opt/rubies/ruby-1.9.3-p200" " $matched_ruby "
119+ }
120+
71121SHUNIT_PARENT=$0 . $SHUNIT2
You can’t perform that action at this time.
0 commit comments