Skip to content

Commit c2eb5e2

Browse files
committed
Merge pull request #631 from sstephenson/sort-versions
Sort Ruby versions when listing available definitions
2 parents 274838b + 323c2b7 commit c2eb5e2

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

bin/ruby-build

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -936,9 +936,13 @@ list_definitions() {
936936
{ for DEFINITION_DIR in "${RUBY_BUILD_DEFINITIONS[@]}"; do
937937
[ -d "$DEFINITION_DIR" ] && ls "$DEFINITION_DIR"
938938
done
939-
} | sort
939+
} | sort_versions
940940
}
941941

942+
sort_versions() {
943+
sed 'h; s/[+-]/./g; s/.p\([[:digit:]]\)/.z\1/; s/$/.z/; G; s/\n/ /' | \
944+
LC_ALL=C sort -t. -k 1,1 -k 2,2n -k 3,3n -k 4,4n -k 5,5n | awk '{print $2}'
945+
}
942946

943947

944948
unset VERBOSE

test/definitions.bats

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,33 @@ NUM_DEFINITIONS="$(ls "$BATS_TEST_DIRNAME"/../share/ruby-build | wc -l)"
6464
assert [ "$status" -eq 2 ]
6565
assert_output "ruby-build: definition not found: nonexistent"
6666
}
67+
68+
@test "sorting Ruby versions" {
69+
export RUBY_BUILD_ROOT="$TMP"
70+
mkdir -p "${RUBY_BUILD_ROOT}/share/ruby-build"
71+
expected="1.9.3-dev
72+
1.9.3-preview1
73+
1.9.3-rc1
74+
1.9.3-p0
75+
1.9.3-p125
76+
2.1.0-dev
77+
2.1.0-rc1
78+
2.1.0
79+
2.1.1
80+
2.2.0-dev
81+
jruby-1.6.5
82+
jruby-1.6.5.1
83+
jruby-1.7.0-preview1
84+
jruby-1.7.0-rc1
85+
jruby-1.7.0
86+
jruby-1.7.1
87+
jruby-1.7.9
88+
jruby-1.7.10
89+
jruby-9000-dev
90+
jruby-9000"
91+
for ver in "$expected"; do
92+
touch "${RUBY_BUILD_ROOT}/share/ruby-build/$ver"
93+
done
94+
run ruby-build --definitions
95+
assert_success "$expected"
96+
}

0 commit comments

Comments
 (0)