Kouhei Sutou
null+****@clear*****
Tue Dec 17 22:25:06 JST 2013
Kouhei Sutou 2013-12-17 22:25:06 +0900 (Tue, 17 Dec 2013) New Revision: 551b7ee4e8f7c2488daad7b0fd60644c583f6733 https://github.com/droonga/drntest/commit/551b7ee4e8f7c2488daad7b0fd60644c583f6733 Message: Extract test load code Copied files: lib/drntest/test-loader.rb (from lib/drntest/test-executor.rb) Modified files: lib/drntest/test-executor.rb Modified: lib/drntest/test-executor.rb (+4 -59) =================================================================== --- lib/drntest/test-executor.rb 2013-12-17 22:16:51 +0900 (baf2b40) +++ lib/drntest/test-executor.rb 2013-12-17 22:25:06 +0900 (8ad2550) @@ -15,7 +15,7 @@ require "droonga/client" -require "drntest/json-loader" +require "drntest/test-loader" require "drntest/response-normalizer" module Drntest @@ -34,7 +34,7 @@ module Drntest port: owner.port) do |client| requests = [] test_commands.each do |test_command| - if test_command.is_a?(Directive) + if test_command.is_a?(TestLoader::Directive) case test_command.type when :enable_logging logging = true @@ -64,69 +64,14 @@ module Drntest end private - def resolve_relative_path(path) - path = path.to_s - path = path[2..-1] if path[0..1] == "./" - Pathname(path).expand_path(@owner.base_path) - end - def normalize_response(request, response) normalizer = ResponseNormalizer.new(request, response) normalizer.normalize end def test_commands - load_jsons(@test_path) - end - - def load_jsons(path) - parser = Yajl::Parser.new - objects = [] - parser.on_parse_complete = lambda do |object| - objects << object - end - data = "" - Pathname(path).read.each_line do |line| - data << line - if line[0] == "#" - if Directive.directive?(line) - directive = Directive.new(line) - if directive.type == :include - included = resolve_relative_path(directive.value) - included_objects = load_jsons(included) - objects += included_objects - else - objects << directive - end - end - else - begin - parser << line - rescue Yajl::ParseError => error - JSONLoader.report_error(path, data, error) - raise error - end - end - end - objects - end - - class Directive - MATCHER = /\A\#\@([^\s]+)(?:\s+(.+))?\z/.freeze - - class << self - def directive?(source) - MATCHER =~ source.strip - end - end - - attr_reader :type, :value - - def initialize(source) - MATCHER =~ source.strip - @value = $2 - @type = $1.gsub("-", "_").to_sym - end + loader = TestLoader.new(@owner, @test_path) + loader.load end end end Copied: lib/drntest/test-loader.rb (+5 -44) 64% =================================================================== --- lib/drntest/test-executor.rb 2013-12-17 22:16:51 +0900 (baf2b40) +++ lib/drntest/test-loader.rb 2013-12-17 22:25:06 +0900 (f0ff57c) @@ -13,13 +13,10 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -require "droonga/client" - require "drntest/json-loader" -require "drntest/response-normalizer" module Drntest - class TestExecutor + class TestLoader attr_reader :owner, :test_path def initialize(owner, test_path) @@ -27,40 +24,8 @@ module Drntest @test_path = test_path end - def execute - actuals = [] - logging = true - client = Droonga::Client.open(tag: owner.tag, - port: owner.port) do |client| - requests = [] - test_commands.each do |test_command| - if test_command.is_a?(Directive) - case test_command.type - when :enable_logging - logging = true - requests.each do |request| - request.wait - end - requests.clear - when :disable_logging - logging = false - end - next - end - if logging - response = client.connection.execute(test_command) - actuals << normalize_response(test_command, response) - else - requests << client.connection.execute(test_command, - :connect_timeout => 2) do - end - end - end - requests.each do |request| - request.wait - end - end - actuals + def load + load_test_file(@test_path) end private @@ -75,11 +40,7 @@ module Drntest normalizer.normalize end - def test_commands - load_jsons(@test_path) - end - - def load_jsons(path) + def load_test_file(path) parser = Yajl::Parser.new objects = [] parser.on_parse_complete = lambda do |object| @@ -93,7 +54,7 @@ module Drntest directive = Directive.new(line) if directive.type == :include included = resolve_relative_path(directive.value) - included_objects = load_jsons(included) + included_objects = load_test_file(included) objects += included_objects else objects << directive -------------- next part -------------- HTML����������������������������...下載