sort "CMDTEST_*.rb" files alphabetically

by sorting the result of Dir.glob().
This should make "CMDTEST_*.rb" being run in a well defined order.
This commit is contained in:
Johan Holmberg 2017-02-28 10:24:27 +01:00
parent fe5dbe704e
commit 04c31df479
2 changed files with 62 additions and 3 deletions

View File

@ -492,6 +492,10 @@ module Cmdtest
private
def _sorted_glob(str)
Dir.glob(str).sort
end
def _fs_test_filenames
if ! @argv.empty?
files = _expand_files_or_dirs(@argv)
@ -502,13 +506,13 @@ module Cmdtest
return files
end
try = Dir.glob("t/CMDTEST_*.rb")
try = _sorted_glob("t/CMDTEST_*.rb")
return try if ! try.empty?
try = Dir.glob("test/CMDTEST_*.rb")
try = _sorted_glob("test/CMDTEST_*.rb")
return try if ! try.empty?
try = Dir.glob("CMDTEST_*.rb")
try = _sorted_glob("CMDTEST_*.rb")
return try if ! try.empty?
puts "ERROR: no CMDTEST_*.rb files found"

55
t/CMDTEST_glob_files.rb Normal file
View File

@ -0,0 +1,55 @@
require "selftest_utils"
class CMDTEST_glob_files < Cmdtest::Testcase
include SelftestUtils
def make_file(name)
create_file "t/CMDTEST_#{name}.rb", [
"class CMDTEST_#{name} < Cmdtest::Testcase",
" def setup",
" prepend_path #{BIN.inspect}",
" prepend_path #{PLATFORM_BIN.inspect}",
" end",
"",
" def test_1",
" cmd \"true\" do",
" comment \"#{name}\"",
" end",
" end",
"",
"end",
]
end
def test_1
make_file("aaa")
make_file("ccc")
make_file("bbb")
make_file("ddd")
cmd_cmdtest do
stdout_equal [
"### aaa",
"### bbb",
"### ccc",
"### ddd",
]
end
end
def test_2
# generate "aaa", "aab", "aac", ...
names = (1..30).reduce(["aaa"]) {|acc, i| acc << acc[-1].succ }
for name in names.shuffle(random: Random.new(1234))
make_file(name)
end
cmd_cmdtest do
stdout_equal names.map {|name| "### #{name}" }
end
end
end