diff --git a/README.md b/README.md index f90951c..0fce7f6 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,10 @@ some input and returns a `ParserResult`. ## Running tests - $ ruby -Ilib:test test/test_parser.rb +``` shell +rake test +ruby -Ilib:test test/test_parser.rb # per-file testing +``` # TODO Decent syntax error reporting, eg: Which line, which column failed. diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..c94dfed --- /dev/null +++ b/Rakefile @@ -0,0 +1,5 @@ +require 'rake/testtask' + +Rake::TestTask.new do |t| + t.test_files = FileList["test/test_*.rb"] +end diff --git a/lib/parser_result.rb b/lib/parser_result.rb index 0d6fcfe..844a469 100644 --- a/lib/parser_result.rb +++ b/lib/parser_result.rb @@ -7,7 +7,7 @@ def initialize(success, remaining, matched, output=nil) @output = output.nil? ? [matched] : output end - def self.ok(output=nil, matched:, remaining:) + def self.ok(output=nil, matched: "", remaining: "") # yield matched if block_given? output = [matched] if output.nil? ParserResult.new(true, remaining, matched, output) diff --git a/test/test_base_parsers.rb b/test/test_base_parsers.rb index 2c9b583..41becf5 100644 --- a/test/test_base_parsers.rb +++ b/test/test_base_parsers.rb @@ -132,7 +132,7 @@ start(:letterOrNumber) end - assert_equal ["w", "8"], parser.run("w8").output + assert_equal [["w"], ["8"]], parser.run("w8").output parser = Grammar.build do rule(:letter) { many1 { anyLetter } } @@ -140,7 +140,7 @@ start(:letterOrNumber) end - assert_equal ["w", "8"], parser.run("w8").output + assert_equal [["w"], ["8"]], parser.run("w8").output end it "uses regex" do