diff --git a/bin/cmdtest.rb b/bin/cmdtest.rb index c3006c0..5587cea 100755 --- a/bin/cmdtest.rb +++ b/bin/cmdtest.rb @@ -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" diff --git a/t/CMDTEST_glob_files.rb b/t/CMDTEST_glob_files.rb new file mode 100644 index 0000000..73c0f68 --- /dev/null +++ b/t/CMDTEST_glob_files.rb @@ -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