[Groonga-commit] groonga/grntest [master] Translater: Update translate_command to translate a single command only

アーカイブの一覧に戻る

null+****@clear***** null+****@clear*****
2012年 6月 5日 (火) 16:28:03 JST


Haruka Yoshihara	2012-06-05 16:28:03 +0900 (Tue, 05 Jun 2012)

  New Revision: 9ad74196a3649ca246a7ccd9f8d52d4ec4585580

  Log:
    Translater: Update translate_command to translate a single command only

  Modified files:
    lib/groonga/tester.rb
    test/test-executor.rb

  Modified: lib/groonga/tester.rb (+14 -38)
===================================================================
--- lib/groonga/tester.rb    2012-06-05 15:41:27 +0900 (bc1f41a)
+++ lib/groonga/tester.rb    2012-06-05 16:28:03 +0900 (0b12d00)
@@ -616,49 +616,25 @@ module Groonga
     end
 
     class Translater
-      def translate_command(commands)
-        translated_commands = []
-        now_command = ""
-        translated_values = []
-        loading = false
-        load_values = ""
-
-        commands.each_line do |_command|
-          command = _command.chomp
-          next if command.empty?
-
-          if command =~ /\A\s*\#/
-            translated_commands << "#{command}\n"
-            next
-          end
+      def translate_command(command)
+        command = command.chomp
+        return "" if command.empty?
 
-          if loading
-            load_values << command
-            if command == "]"
-              translated_values =
-                translated_values.merge("values" => load_values)
-              loading = false
-              load_values = ""
-            end
-          else
-            command = command.gsub(/,\s/, ",")
-            arguments = command.split(/(\s'.+?'\s|\s)/).collect(&:strip)
-            now_command = arguments.shift
+        return command if command =~ /\A(?!\s+)\W/
 
-            if now_command == "load"
-              loading = true
-              load_values = ""
-            end
+        command = command.gsub(/,\s/, ",")
+        arguments = command.split(/(\s'.+?'\s|\s)/).collect(&:strip)
+        now_command = arguments.shift
 
-            translated_values = translate_arguments(now_command, arguments)
-          end
+        translated_values = translate_arguments(now_command, arguments)
+        translated_command =
+          build_http_command(now_command, translated_values)
 
-          unless loading
-            translated_commands <<
-              build_http_command(now_command, translated_values)
-          end
+        if now_command == "load"
+          translated_command << "&values="
         end
-        translated_commands.join
+
+        translated_command
       end
 
       private

  Modified: test/test-executor.rb (+23 -22)
===================================================================
--- test/test-executor.rb    2012-06-05 15:41:27 +0900 (49c2daa)
+++ test/test-executor.rb    2012-06-05 16:28:03 +0900 (760f09b)
@@ -83,36 +83,41 @@ class TestExecutor < Test::Unit::TestCase
     end
 
     def test_load_command
-      command = <<EOF
-load --table Sites
+      load_command = "load --table Sites"
+      load_values = <<EOF
 [
 ["_key","uri"],
 ["groonga","http://groonga.org/"],
 ["razil","http://razil.jp/"]
 ]
 EOF
-      expected_command =
-        "/d/load?table=Sites&values=[[\"_key\",\"uri\"]," +
-          "[\"groonga\",\"http://groonga.org/\"]," +
-          "[\"razil\",\"http://razil.jp/\"]]"
-      actual_command = translate(command)
+      load_values = load_values.chomp
+      commands = "#{load_command}\n#{load_values}"
 
-      assert_equal(expected_command, actual_command)
+      expected_command = "/d/load?table=Sites&values=\n#{load_values}"
+      actual_commands = commands.lines.collect do |line|
+        translate(line)
+      end
+
+      assert_equal(expected_command, actual_commands.join("\n"))
     end
 
     def test_load_command_with_json_value
-      command = <<EOF
-load --table Sites
+      load_command = "load --table Sites"
+      load_values = <<EOF
 [
 {"_key": "ruby", "uri": "http://ruby-lang.org/"}
 ]
 EOF
-      expected_command =
-        "/d/load?table=Sites&values=[{\"_key\": \"ruby\", " +
-          "\"uri\": \"http://ruby-lang.org/\"}]"
-      actual_command = translate(command)
+      load_values = load_values.chomp
+      commands = "#{load_command}\n#{load_values}"
 
-      assert_equal(expected_command, actual_command)
+      expected_command = "/d/load?table=Sites&values=\n#{load_values}"
+      actual_commands = commands.lines.collect do |line|
+        translate(line)
+      end
+
+      assert_equal(expected_command, actual_commands.join("\n"))
     end
 
     def test_command_with_single_quote
@@ -123,14 +128,10 @@ EOF
       assert_equal(expected_command, actual_command)
     end
 
-    def test_command_with_comment
+    def test_comment
       comment = "#this is comment."
-      command = "#{comment}\n" +
-        "select --table Sites"
-      expected_command = "#{comment}\n" +
-        "/d/select?table=Sites"
-      actual_command = translate(command)
-
+      expected_command = comment
+      actual_command = translate(comment)
       assert_equal(expected_command, actual_command)
     end
 




Groonga-commit メーリングリストの案内
アーカイブの一覧に戻る