[Groonga-commit] groonga/groonga-test [master] Show test suite name

Back to archive index

null+****@clear***** null+****@clear*****
2012年 3月 13日 (火) 17:27:54 JST


Kouhei Sutou	2012-03-13 17:27:54 +0900 (Tue, 13 Mar 2012)

  New Revision: ef6259853d55280b68c291f2dad0f9c22c9363d9

  Log:
    Show test suite name

  Modified files:
    lib/groonga/tester.rb

  Modified: lib/groonga/tester.rb (+33 -2)
===================================================================
--- lib/groonga/tester.rb    2012-03-09 17:14:49 +0900 (1267f4a)
+++ lib/groonga/tester.rb    2012-03-13 17:27:54 +0900 (39ad275)
@@ -107,8 +107,8 @@ module Groonga
           target_path = Pathname(target)
           next unless target_path.exist?
           if target_path.directory?
-            Pathname.glob(target_path + "**" + "*.test") do |target_file|
-              succeeded = false unless run_test(target_file, reporter, tag)
+            unless run_tests_in_directory(target_path, reporter, tag)
+              succeeded = false
             end
           else
             succeeded = false unless run_test(target_path, reporter, tag)
@@ -120,6 +120,29 @@ module Groonga
     end
 
     private
+    def collect_test_files(test_directory)
+      test_files = Pathname.glob(test_directory + "**" + "*.test")
+      grouped_test_files = test_files.group_by do |test_file|
+        test_file.dirname.relative_path_from(test_directory)
+      end
+      grouped_test_files.sort_by do |directory, test_files|
+        directory.to_s
+      end
+    end
+
+    def run_tests_in_directory(test_directory, reporter, tag)
+      succeeded = true
+      collect_test_files(test_directory).each do |directory, test_files|
+        suite_name = directory.to_s
+        reporter.start_suite(suite_name)
+        test_files.sort.each do |test_file|
+          succeeded = false unless run_test(test_file, reporter, tag)
+        end
+        reporter.finish_suite(suite_name)
+      end
+      succeeded
+    end
+
     def run_test(test_script_path, reporter, tag)
       runner = Runner.new(self, test_script_path)
       succeeded = runner.run(reporter)
@@ -562,6 +585,11 @@ module Groonga
       def start
       end
 
+      def start_suite(suite_name)
+        puts(suite_name)
+        @output.flush
+      end
+
       def start_test(test_script_path)
         @test_name = test_script_path.basename
         print("  #{@test_name}")
@@ -591,6 +619,9 @@ module Groonga
         @n_tests += 1
       end
 
+      def finish_suite(suite_name)
+      end
+
       def finish
         puts
         puts("#{@n_tests} tests, " +




Groonga-commit メーリングリストの案内
Back to archive index