kosmas58-cucumber 0.3.11.3 → 0.3.11.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. data/History.txt +36 -0
  2. data/Manifest.txt +9 -0
  3. data/config/hoe.rb +1 -2
  4. data/examples/i18n/ar/Rakefile +1 -1
  5. data/examples/i18n/ar/features/addition.feature +1 -0
  6. data/examples/i18n/bg/Rakefile +1 -1
  7. data/examples/i18n/bg/features/addition.feature +1 -0
  8. data/examples/i18n/bg/features/consecutive_calculations.feature +1 -0
  9. data/examples/i18n/bg/features/division.feature +1 -0
  10. data/examples/i18n/cat/Rakefile +1 -1
  11. data/examples/i18n/cat/features/suma.feature +1 -0
  12. data/examples/i18n/da/Rakefile +1 -1
  13. data/examples/i18n/da/features/summering.feature +1 -0
  14. data/examples/i18n/de/Rakefile +1 -1
  15. data/examples/i18n/de/features/addition.feature +1 -0
  16. data/examples/i18n/de/features/division.feature +1 -0
  17. data/examples/i18n/en/Rakefile +1 -1
  18. data/examples/i18n/en/features/addition.feature +1 -0
  19. data/examples/i18n/en/features/division.feature +1 -0
  20. data/examples/i18n/en-lol/features/stuffing.feature +1 -1
  21. data/examples/i18n/es/Rakefile +1 -1
  22. data/examples/i18n/es/features/adicion.feature +1 -0
  23. data/examples/i18n/et/Rakefile +1 -1
  24. data/examples/i18n/et/features/jagamine.feature +1 -0
  25. data/examples/i18n/et/features/liitmine.feature +1 -0
  26. data/examples/i18n/fi/Rakefile +1 -1
  27. data/examples/i18n/fi/features/jakolasku.feature +1 -0
  28. data/examples/i18n/fr/Rakefile +1 -1
  29. data/examples/i18n/fr/features/addition.feature +2 -1
  30. data/examples/i18n/he/Rakefile +1 -1
  31. data/examples/i18n/he/features/addition.feature +1 -0
  32. data/examples/i18n/he/features/division.feature +1 -0
  33. data/examples/i18n/hu/Rakefile +1 -1
  34. data/examples/i18n/hu/features/addition.feature +1 -0
  35. data/examples/i18n/hu/features/division.feature +1 -0
  36. data/examples/i18n/id/Rakefile +1 -1
  37. data/examples/i18n/id/features/addition.feature +1 -0
  38. data/examples/i18n/id/features/division.feature +1 -0
  39. data/examples/i18n/it/Rakefile +1 -1
  40. data/examples/i18n/it/features/somma.feature +1 -0
  41. data/examples/i18n/ja/Rakefile +1 -1
  42. data/examples/i18n/ja/features/addition.feature +1 -0
  43. data/examples/i18n/ja/features/division.feature +1 -0
  44. data/examples/i18n/ko/Rakefile +1 -1
  45. data/examples/i18n/ko/features/addition.feature +1 -0
  46. data/examples/i18n/ko/features/division.feature +1 -0
  47. data/examples/i18n/lt/Rakefile +1 -1
  48. data/examples/i18n/lt/features/addition.feature +1 -0
  49. data/examples/i18n/lt/features/division.feature +1 -0
  50. data/examples/i18n/lv/Rakefile +1 -1
  51. data/examples/i18n/lv/features/addition.feature +1 -0
  52. data/examples/i18n/lv/features/division.feature +1 -0
  53. data/examples/i18n/no/Rakefile +1 -1
  54. data/examples/i18n/no/features/summering.feature +1 -0
  55. data/examples/i18n/pl/Rakefile +1 -1
  56. data/examples/i18n/pl/features/addition.feature +1 -0
  57. data/examples/i18n/pl/features/division.feature +1 -0
  58. data/examples/i18n/pt/Rakefile +1 -1
  59. data/examples/i18n/pt/features/adicao.feature +1 -0
  60. data/examples/i18n/ro/Rakefile +1 -1
  61. data/examples/i18n/ro/features/suma.feature +1 -0
  62. data/examples/i18n/ru/Rakefile +1 -1
  63. data/examples/i18n/ru/features/addition.feature +1 -0
  64. data/examples/i18n/ru/features/consecutive_calculations.feature +1 -0
  65. data/examples/i18n/ru/features/division.feature +1 -0
  66. data/examples/i18n/se/Rakefile +1 -1
  67. data/examples/i18n/se/features/summering.feature +1 -0
  68. data/examples/i18n/sk/Rakefile +1 -1
  69. data/examples/i18n/sk/features/addition.feature +1 -0
  70. data/examples/i18n/sk/features/division.feature +1 -0
  71. data/examples/i18n/zh-CN/features/addition.feature +1 -0
  72. data/examples/i18n/zh-TW/features/addition.feature +1 -0
  73. data/examples/i18n/zh-TW/features/division.feature +1 -0
  74. data/examples/sinatra/features/step_definitions/add_steps.rb +1 -1
  75. data/examples/sinatra/features/support/env.rb +13 -5
  76. data/features/after_block_exceptions.feature +4 -1
  77. data/features/after_step_block_exceptions.feature +4 -1
  78. data/features/background.feature +6 -0
  79. data/features/cucumber_cli.feature +11 -1
  80. data/features/cucumber_cli_diff_disabled.feature +7 -1
  81. data/features/drb_server_integration.feature +5 -4
  82. data/features/expand.feature +2 -1
  83. data/features/html_formatter/a.html +12 -14
  84. data/features/junit_formatter.feature +4 -4
  85. data/features/step_definitions/cucumber_steps.rb +2 -2
  86. data/features/support/env.rb +7 -4
  87. data/features/work_in_progress.feature +3 -0
  88. data/lib/cucumber/ast/comment.rb +1 -1
  89. data/lib/cucumber/ast/feature.rb +2 -2
  90. data/lib/cucumber/ast/feature_element.rb +4 -0
  91. data/lib/cucumber/ast/scenario.rb +5 -3
  92. data/lib/cucumber/ast/scenario_outline.rb +6 -1
  93. data/lib/cucumber/ast/step.rb +4 -0
  94. data/lib/cucumber/ast/step_invocation.rb +6 -1
  95. data/lib/cucumber/cli/configuration.rb +37 -26
  96. data/lib/cucumber/cli/main.rb +4 -5
  97. data/lib/cucumber/formatter/console.rb +12 -0
  98. data/lib/cucumber/formatter/html.rb +3 -2
  99. data/lib/cucumber/formatter/junit.rb +3 -6
  100. data/lib/cucumber/formatter/pretty.rb +2 -4
  101. data/lib/cucumber/formatter/profile.rb +1 -1
  102. data/lib/cucumber/languages.yml +3 -3
  103. data/lib/cucumber/parser/feature.rb +12 -16
  104. data/lib/cucumber/parser/feature.tt +1 -3
  105. data/lib/cucumber/parser/i18n.tt +30 -23
  106. data/lib/cucumber/parser/treetop_ext.rb +12 -83
  107. data/lib/cucumber/parser.rb +1 -33
  108. data/lib/cucumber/platform.rb +6 -0
  109. data/lib/cucumber/step_definition.rb +6 -0
  110. data/lib/cucumber/step_mother.rb +3 -3
  111. data/lib/cucumber/version.rb +1 -1
  112. data/lib/cucumber.rb +0 -57
  113. data/rails_generators/cucumber/templates/cucumber.rake +4 -0
  114. data/spec/cucumber/ast/step_collection_spec.rb +5 -4
  115. data/spec/cucumber/cli/configuration_spec.rb +42 -9
  116. data/spec/cucumber/cli/main_spec.rb +2 -10
  117. data/spec/cucumber/parser/feature_parser_spec.rb +11 -9
  118. data/spec/cucumber/parser/table_parser_spec.rb +1 -1
  119. data/spec/spec_helper.rb +0 -1
  120. metadata +3 -13
@@ -4,9 +4,11 @@ require 'rbconfig'
4
4
  require 'yaml'
5
5
 
6
6
  module Cucumber
7
+ # TODO: Move these constants and the file to Language. Update wiki
7
8
  LANGUAGE_FILE = File.expand_path(File.dirname(__FILE__) + '/languages.yml')
8
9
  LANGUAGES = YAML.load_file(LANGUAGE_FILE)
9
10
  BINARY = File.expand_path(File.dirname(__FILE__) + '/../../bin/cucumber')
11
+ LIBDIR = File.expand_path(File.dirname(__FILE__) + '/../../lib')
10
12
  JRUBY = defined?(JRUBY_VERSION)
11
13
  IRONRUBY = Config::CONFIG['sitedir'] =~ /IronRuby/
12
14
  WINDOWS = Config::CONFIG['host_os'] =~ /mswin|mingw/
@@ -14,4 +16,8 @@ module Cucumber
14
16
  RAILS = defined?(Rails)
15
17
  RUBY_BINARY = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
16
18
  RUBY_1_9 = RUBY_VERSION =~ /^1\.9/
19
+
20
+ def self.file_mode(m)
21
+ RUBY_1_9 ? "#{m}:UTF-8" : m
22
+ end
17
23
  end
@@ -86,6 +86,8 @@ module Cucumber
86
86
 
87
87
  include StepDefinitionMethods
88
88
 
89
+ attr_reader :regexp, :proc
90
+
89
91
  def initialize(pattern, &proc)
90
92
  raise MissingProc if proc.nil?
91
93
  if String === pattern
@@ -112,5 +114,9 @@ module Cucumber
112
114
  def file_colon_line
113
115
  @proc.file_colon_line
114
116
  end
117
+
118
+ def file
119
+ @file ||= file_colon_line.split(':')[0]
120
+ end
115
121
  end
116
122
  end
@@ -254,12 +254,12 @@ module Cucumber
254
254
  @snippet_generator.snippet_text(step_keyword, step_name, multiline_arg_class)
255
255
  end
256
256
 
257
- def before_and_after(scenario, skip=false)
258
- before(scenario) unless skip
257
+ def before_and_after(scenario, skip_hooks=false)
258
+ before(scenario) unless skip_hooks
259
259
  @current_scenario = scenario
260
260
  yield scenario
261
261
  @current_scenario = nil
262
- after(scenario) unless skip
262
+ after(scenario) unless skip_hooks
263
263
  scenario_visited(scenario)
264
264
  end
265
265
 
@@ -3,7 +3,7 @@ module Cucumber #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 3
5
5
  TINY = 11
6
- PATCH = 3 # Set to nil for official release
6
+ PATCH = 6 # Set to nil for official release
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, PATCH].compact.join('.')
9
9
  end
data/lib/cucumber.rb CHANGED
@@ -9,60 +9,3 @@ require 'cucumber/step_mother'
9
9
  require 'cucumber/cli/main'
10
10
  require 'cucumber/broadcaster'
11
11
  require 'cucumber/core_ext/exception'
12
-
13
- module Cucumber
14
- KEYWORD_KEYS = %w{name native encoding feature background scenario scenario_outline examples given when then but}
15
-
16
- class << self
17
- # The currently active language
18
- attr_reader :lang
19
-
20
- def load_language(lang) #:nodoc:
21
- return if @lang
22
- @lang = lang
23
- alias_step_definitions(lang)
24
- Parser.load_parser(keyword_hash)
25
- end
26
-
27
- def language_incomplete?(lang=@lang)
28
- KEYWORD_KEYS.detect{|key| keyword_hash(lang)[key].nil?}
29
- end
30
-
31
- # File mode that accounts for Ruby platform and current language
32
- def file_mode(m)
33
- Cucumber::RUBY_1_9 ? "#{m}:#{keyword_hash['encoding']}" : m
34
- end
35
-
36
- # Returns a Hash of the currently active
37
- # language, or for a specific language if +lang+ is
38
- # specified.
39
- def keyword_hash(lang=@lang)
40
- LANGUAGES[lang]
41
- end
42
-
43
- def scenario_keyword
44
- keyword_hash['scenario'].split('|')[0] + ':'
45
- end
46
-
47
- def alias_step_definitions(lang) #:nodoc:
48
- keywords = %w{given when then and but}.map{|keyword| keyword_hash(lang)[keyword].split('|')}
49
- alias_steps(keywords.flatten)
50
- end
51
-
52
- # Sets up additional method aliases for Given, When and Then.
53
- # This does *not* affect how feature files are parsed. If you
54
- # want to create aliases in the parser, you have to do this in
55
- # languages.yml. For example:
56
- #
57
- # and: And|With
58
- def alias_steps(keywords)
59
- keywords.each do |adverb|
60
- StepMother.alias_adverb(adverb)
61
- World.alias_adverb(adverb)
62
- end
63
- end
64
- end
65
-
66
- # Make sure we always have English aliases
67
- alias_step_definitions('en')
68
- end
@@ -1,5 +1,7 @@
1
1
  $LOAD_PATH.unshift(RAILS_ROOT + '/vendor/plugins/cucumber/lib') if File.directory?(RAILS_ROOT + '/vendor/plugins/cucumber/lib')
2
2
 
3
+ unless ARGV.any? {|a| a =~ /^gems/}
4
+
3
5
  begin
4
6
  require 'cucumber/rake/task'
5
7
 
@@ -18,3 +20,5 @@ rescue LoadError
18
20
  abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
19
21
  end
20
22
  end
23
+
24
+ end
@@ -4,10 +4,11 @@ module Cucumber
4
4
  module Ast
5
5
  describe StepCollection do
6
6
  it "should convert And to Given in snippets" do
7
- c = StepCollection.new([
8
- Step.new(1, 'Given', 'cukes'),
9
- Step.new(2, 'And', 'turnips')
10
- ])
7
+ s1 = Step.new(1, 'Given', 'cukes')
8
+ s2 = Step.new(2, 'And', 'turnips')
9
+ s1.stub!(:language).and_return(Parser::I18n::Language['en'])
10
+ s2.stub!(:language).and_return(Parser::I18n::Language['en'])
11
+ c = StepCollection.new([s1, s2])
11
12
  actual_keywords = c.step_invocations.map{|i| i.actual_keyword}
12
13
  actual_keywords.should == %w{Given Given}
13
14
  end
@@ -138,12 +138,22 @@ module Cli
138
138
 
139
139
  end
140
140
 
141
+ context '--drb in the default profile and no arguments specified' do
142
+ it "expands the profile's arguments into the args excpet for --drb" do
143
+ given_cucumber_yml_defined_as({'default' => '--drb features --format pretty'})
144
+ config = Configuration.new(StringIO.new)
145
+ args = []
146
+ config.parse!(args)
147
+ args.should == %w{features --format pretty}
148
+ end
149
+ end
150
+
141
151
  it "should expand args from YAML file" do
142
152
  given_cucumber_yml_defined_as({'bongo' => '--require from/yml'})
143
153
 
144
154
  config = Configuration.new
145
155
  config.parse!(%w{--format progress --profile bongo})
146
- config.options[:formats].should == {'progress' => STDOUT}
156
+ config.options[:formats].should == [['progress', STDOUT]]
147
157
  config.options[:require].should == ['from/yml']
148
158
  end
149
159
 
@@ -255,26 +265,34 @@ END_OF_MESSAGE
255
265
  it "should accept --out option" do
256
266
  config = Configuration.new(StringIO.new)
257
267
  config.parse!(%w{--out jalla.txt})
258
- config.options[:formats]['pretty'].should == 'jalla.txt'
268
+ config.options[:formats].should == [['pretty', 'jalla.txt']]
259
269
  end
260
270
 
261
271
  it "should accept multiple --out options" do
262
272
  config = Configuration.new(StringIO.new)
263
273
  config.parse!(%w{--format progress --out file1 --out file2})
264
- config.options[:formats].should == {'progress' => 'file2'}
274
+ config.options[:formats].should == [['progress', 'file2']]
265
275
  end
266
276
 
267
- it "should accept multiple --format options" do
268
- config = Configuration.new(StringIO.new)
269
- config.parse!(%w{--format pretty --format progress})
270
- config.options[:formats].should have_key('pretty')
271
- config.options[:formats].should have_key('progress')
277
+ it "should accept multiple --format options and put the STDOUT one first so progress is seen" do
278
+ io = StringIO.new
279
+ config = Configuration.new(io)
280
+ config.parse!(%w{--format pretty --out pretty.txt --format progress})
281
+ config.options[:formats].should == [['progress', io], ['pretty', 'pretty.txt']]
282
+ end
283
+
284
+ it "should not accept multiple --format options when both use implicit STDOUT" do
285
+ io = StringIO.new
286
+ config = Configuration.new(io)
287
+ lambda do
288
+ config.parse!(%w{--format pretty --format progress})
289
+ end.should raise_error("All but one formatter must use --out, only one can print to STDOUT")
272
290
  end
273
291
 
274
292
  it "should associate --out to previous --format" do
275
293
  config = Configuration.new(StringIO.new)
276
294
  config.parse!(%w{--format progress --out file1 --format profile --out file2})
277
- config.options[:formats].should == {"profile"=>"file2", "progress"=>"file1"}
295
+ config.options[:formats].should == [["progress", "file1"], ["profile" ,"file2"]]
278
296
  end
279
297
 
280
298
  it "should accept --color option" do
@@ -358,6 +376,21 @@ END_OF_MESSAGE
358
376
  config.feature_files.should == ["cucumber.feature"]
359
377
  end
360
378
 
379
+ it "should allow specifying environment variables on the command line" do
380
+ config = Configuration.new
381
+ config.parse!(["foo=bar"])
382
+ ENV["foo"].should == "bar"
383
+ config.feature_files.should == []
384
+ end
385
+
386
+ it "should allow specifying environment variables in profiles" do
387
+ given_cucumber_yml_defined_as({'selenium' => 'RAILS_ENV=selenium'})
388
+ config = Configuration.new
389
+ config.parse!(["--profile", "selenium"])
390
+ ENV["RAILS_ENV"].should == "selenium"
391
+ config.feature_files.should == []
392
+ end
393
+
361
394
  end
362
395
  end
363
396
  end
@@ -35,7 +35,7 @@ module Cucumber
35
35
  @cli = Main.new(%w{--verbose example.feature}, @out)
36
36
  @cli.stub!(:require)
37
37
 
38
- Parser::FeatureParser.stub!(:new).and_return(mock("feature parser", :parse_file => @empty_feature))
38
+ FeatureFile.stub!(:new).and_return(mock("feature file", :parse => @empty_feature))
39
39
 
40
40
  @cli.execute!(Object.new.extend(StepMother))
41
41
 
@@ -115,10 +115,9 @@ module Cucumber
115
115
  @cli.execute!(@step_mother).should == 'foo'
116
116
  end
117
117
 
118
-
119
118
  it "ceases execution if the DrbClient is able to perform the execution" do
120
119
  DRbClient.stub!(:run).and_return(true)
121
- @configuration.should_not_receive(:load_language)
120
+ @configuration.should_not_receive(:build_formatter_broadcaster)
122
121
  @cli.execute!(@step_mother)
123
122
  end
124
123
 
@@ -134,15 +133,8 @@ module Cucumber
134
133
  @configuration.should_receive(:parse!).exactly(:twice)
135
134
  @cli.execute!(@step_mother)
136
135
  end
137
-
138
- it "proceeds with the execution locally" do
139
- @configuration.should_receive(:load_language)
140
- @cli.execute!(@step_mother)
141
- end
142
136
  end
143
-
144
137
  end
145
-
146
138
  end
147
139
  end
148
140
  end
@@ -1,11 +1,11 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper'
2
- require 'cucumber/parser'
2
+ require 'cucumber/parser/i18n/language'
3
3
 
4
4
  module Cucumber
5
5
  module Parser
6
6
  describe Feature do
7
7
  before do
8
- @parser = FeatureParser.new
8
+ @parser = I18n::Language['en'].parser
9
9
  end
10
10
 
11
11
  def parse(text)
@@ -13,11 +13,11 @@ module Cucumber
13
13
  end
14
14
 
15
15
  def parse_file(file)
16
- @parser.parse_file(File.dirname(__FILE__) + "/../treetop_parser/" + file, {})
16
+ FeatureFile.new(File.dirname(__FILE__) + "/../treetop_parser/" + file).parse
17
17
  end
18
18
 
19
19
  def parse_example_file(file)
20
- @parser.parse_file(File.dirname(__FILE__) + "/../../../examples/" + file, {})
20
+ FeatureFile.new(File.dirname(__FILE__) + "/../../../examples/" + file).parse
21
21
  end
22
22
 
23
23
  describe "Comments" do
@@ -25,7 +25,7 @@ module Cucumber
25
25
  parse(%{# My comment
26
26
  Feature: hi
27
27
  }).to_sexp.should ==
28
- [:feature, nil, "Feature: hi\n",
28
+ [:feature, nil, "Feature: hi",
29
29
  [:comment, "# My comment\n"]]
30
30
  end
31
31
 
@@ -34,13 +34,13 @@ Feature: hi
34
34
  # World
35
35
  Feature: hi
36
36
  }).to_sexp.should ==
37
- [:feature, nil, "Feature: hi\n",
37
+ [:feature, nil, "Feature: hi",
38
38
  [:comment, "# Hello\n# World\n"]]
39
39
  end
40
40
 
41
41
  it "should parse a file with no comments" do
42
42
  parse("Feature: hi\n").to_sexp.should ==
43
- [:feature, nil, "Feature: hi\n"]
43
+ [:feature, nil, "Feature: hi"]
44
44
  end
45
45
 
46
46
  it "should parse a file with only a multiline comment with newlines" do
@@ -61,7 +61,7 @@ Feature: hi
61
61
  describe "Tags" do
62
62
  it "should parse a file with tags on a feature" do
63
63
  parse("# My comment\n@hello @world Feature: hi\n").to_sexp.should ==
64
- [:feature, nil, "Feature: hi\n",
64
+ [:feature, nil, "Feature: hi",
65
65
  [:comment, "# My comment\n"],
66
66
  [:tag, "hello"],
67
67
  [:tag, "world"]]
@@ -352,7 +352,9 @@ Given I am a step
352
352
 
353
353
  describe "Filtering" do
354
354
  it "should filter outline tables" do
355
- f = parse_example_file('self_test/features/outline_sample.feature:12')
355
+ ff = FeatureFile.new(
356
+ File.dirname(__FILE__) + '/../../../examples/self_test/features/outline_sample.feature:12')
357
+ f = ff.parse({:lang => 'en'})
356
358
  f.to_sexp.should ==
357
359
  [:feature,
358
360
  "./spec/cucumber/parser/../../../examples/self_test/features/outline_sample.feature",
@@ -6,7 +6,7 @@ module Cucumber
6
6
  module Parser
7
7
  describe 'Tables' do
8
8
  before do
9
- @parser = FeatureParser.new
9
+ @parser = I18n::EnglishParser.new
10
10
  end
11
11
 
12
12
  def parse(text)
data/spec/spec_helper.rb CHANGED
@@ -6,7 +6,6 @@ require 'spec/autorun'
6
6
  ENV['CUCUMBER_COLORS']=nil
7
7
  $:.unshift(File.dirname(__FILE__) + '/../lib')
8
8
  require 'cucumber'
9
- Cucumber.load_language('en')
10
9
  $:.unshift(File.dirname(__FILE__))
11
10
 
12
11
  ::Term::ANSIColor.coloring = true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kosmas58-cucumber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.11.3
4
+ version: 0.3.11.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Aslak Helles\xC3\xB8y"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-07 00:00:00 -07:00
12
+ date: 2009-06-16 00:00:00 -07:00
13
13
  default_executable: cucumber
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,17 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.2.5
34
- version:
35
- - !ruby/object:Gem::Dependency
36
- name: polyglot
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: 0.2.5
33
+ version: 1.2.6
44
34
  version:
45
35
  - !ruby/object:Gem::Dependency
46
36
  name: diff-lcs