[Groonga-commit] droonga/drntest at 8d0ce60 [master] Support merging custom catalog.json for each test

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Mar 20 00:23:30 JST 2014


Kouhei Sutou	2014-03-20 00:23:30 +0900 (Thu, 20 Mar 2014)

  New Revision: 8d0ce60bbbb34ea5785deedca6598115c26c1e24
  https://github.com/droonga/drntest/commit/8d0ce60bbbb34ea5785deedca6598115c26c1e24

  Message:
    Support merging custom catalog.json for each test

  Modified files:
    lib/drntest/engine.rb
    lib/drntest/test-runner.rb

  Modified: lib/drntest/engine.rb (+28 -3)
===================================================================
--- lib/drntest/engine.rb    2014-03-19 23:48:53 +0900 (a410803)
+++ lib/drntest/engine.rb    2014-03-20 00:23:30 +0900 (4551a49)
@@ -24,8 +24,8 @@ module Drntest
       @config = config
     end
 
-    def start
-      prepare
+    def start(target_path)
+      prepare(target_path)
       setup
     end
 
@@ -42,7 +42,7 @@ module Drntest
     end
 
     private
-    def prepare
+    def prepare(target_path)
       return unless catalog_file.exist?
 
       catalog_json = JSON.parse(catalog_file.read)
@@ -51,6 +51,14 @@ module Drntest
       when 1
         prepare_catalog_v1(catalog_json)
       when 2
+        custom_catalog_json_file = target_path.sub_ext(".catalog.json")
+        if custom_catalog_json_file.exist?
+          custom_catalog_json = JSON.parse(custom_catalog_json_file.read)
+          merge_catalog_v2!(catalog_json, custom_catalog_json)
+          catalog_file.open("w") do |output|
+            output.puts(JSON.generate(catalog_json))
+          end
+        end
         prepare_catalog_v2(catalog_json)
       end
     end
@@ -63,6 +71,23 @@ module Drntest
       @config.tag  = $3
     end
 
+    def merge_catalog_v2!(catalog_json, custom_catalog_json)
+      base_datasets = catalog_json["datasets"]
+      custom_catalog_json["datasets"].each do |name, dataset|
+        base_dataset = base_datasets[name]
+        if base_dataset
+          base_dataset["schema"] = dataset["schema"] || base_dataset["schema"]
+          replicas = dataset["replicas"] || []
+          base_replicas = base_dataset["replicas"]
+          replicas.each_with_index do |replica, i|
+            base_replicas[i].merge!(replica)
+          end
+        else
+          base_datasets[name] = dataset
+        end
+      end
+    end
+
     def prepare_catalog_v2(catalog_json)
       catch do |tag|
         datasets = catalog_json["datasets"]

  Modified: lib/drntest/test-runner.rb (+1 -1)
===================================================================
--- lib/drntest/test-runner.rb    2014-03-19 23:48:53 +0900 (130118f)
+++ lib/drntest/test-runner.rb    2014-03-20 00:23:30 +0900 (66c280a)
@@ -35,7 +35,7 @@ module Drntest
 
     def run
       print "#{@target_path}: "
-      @engine.start
+      @engine.start(@target_path)
       begin
         results = process_requests
       ensure
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index