[DRE-commits] [ruby-iniparse] 02/04: Port test suite to RSpec 3
Antonio Terceiro
terceiro at moszumanska.debian.org
Sun Jun 5 13:45:38 UTC 2016
This is an automated email from the git hooks/post-receive script.
terceiro pushed a commit to branch master
in repository ruby-iniparse.
commit 5a0efdecc42e97433db56d4fb9072247801609cc
Author: Antonio Terceiro <terceiro at debian.org>
Date: Sun Jun 5 10:28:12 2016 -0300
Port test suite to RSpec 3
---
debian/changelog | 3 +
.../patches/0001-Port-test-suite-to-RSpec-3.patch | 2352 ++++++++++++++++++++
debian/patches/series | 1 +
3 files changed, 2356 insertions(+)
diff --git a/debian/changelog b/debian/changelog
index 74cdce3..dc2fb8e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,8 @@
ruby-iniparse (1.4.2-1) UNRELEASED; urgency=medium
* Initial release (Closes: #nnnn)
+ * Add debian/patches/0001-Port-test-suite-to-RSpec-3.patch
+ - does what it says on the tin
+ - also sent upstream https://github.com/antw/iniparse/pull/16
-- Antonio Terceiro <terceiro at debian.org> Sun, 05 Jun 2016 10:15:09 -0300
diff --git a/debian/patches/0001-Port-test-suite-to-RSpec-3.patch b/debian/patches/0001-Port-test-suite-to-RSpec-3.patch
new file mode 100644
index 0000000..3b88719
--- /dev/null
+++ b/debian/patches/0001-Port-test-suite-to-RSpec-3.patch
@@ -0,0 +1,2352 @@
+From: Antonio Terceiro <terceiro at debian.org>
+Date: Sun, 5 Jun 2016 10:27:34 -0300
+Subject: Port test suite to RSpec 3
+
+transpec did all the work
+---
+ iniparse.gemspec | 2 +-
+ spec/document_spec.rb | 44 +++---
+ spec/fixture_spec.rb | 105 +++++++-------
+ spec/generator/method_missing_spec.rb | 26 ++--
+ spec/generator/with_section_blocks_spec.rb | 80 +++++------
+ spec/generator/without_section_blocks_spec.rb | 32 ++---
+ spec/iniparse_spec.rb | 8 +-
+ spec/line_collection_spec.rb | 76 +++++-----
+ spec/lines_spec.rb | 200 +++++++++++++-------------
+ spec/parser/document_parsing_spec.rb | 50 +++----
+ spec/parser/line_parsing_spec.rb | 130 ++++++++---------
+ spec/spec_helper.rb | 4 +-
+ spec/spec_helper_spec.rb | 76 +++++-----
+ 13 files changed, 417 insertions(+), 416 deletions(-)
+
+diff --git a/iniparse.gemspec b/iniparse.gemspec
+index 7fec34d..bb54bb9 100644
+--- a/iniparse.gemspec
++++ b/iniparse.gemspec
+@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
+ s.extra_rdoc_files = %w(LICENSE README.rdoc)
+
+ # Dependencies.
+- s.add_development_dependency('rspec', '~> 2.14')
++ s.add_development_dependency('rspec', '~> 3.4')
+
+ # = MANIFEST =
+ s.files = %w[
+diff --git a/spec/document_spec.rb b/spec/document_spec.rb
+index 353a7d8..24081f5 100644
+--- a/spec/document_spec.rb
++++ b/spec/document_spec.rb
+@@ -3,28 +3,28 @@ require 'spec_helper'
+ describe "IniParse::Document" do
+ it 'should have a +lines+ reader' do
+ methods = IniParse::Document.instance_methods.map { |m| m.to_sym }
+- methods.should include(:lines)
++ expect(methods).to include(:lines)
+ end
+
+ it 'should not have a +lines+ writer' do
+ methods = IniParse::Document.instance_methods.map { |m| m.to_sym }
+- methods.should_not include(:lines=)
++ expect(methods).not_to include(:lines=)
+ end
+
+ it 'should delegate #[] to +lines+' do
+ doc = IniParse::Document.new
+- doc.lines.should_receive(:[]).with('key')
++ expect(doc.lines).to receive(:[]).with('key')
+ doc['key']
+ end
+
+ it 'should call #each to +lines+' do
+ doc = IniParse::Document.new
+- doc.lines.should_receive(:each)
++ expect(doc.lines).to receive(:each)
+ doc.each { |l| }
+ end
+
+ it 'should be enumerable' do
+- IniParse::Document.included_modules.should include(Enumerable)
++ expect(IniParse::Document.included_modules).to include(Enumerable)
+
+ sections = [
+ IniParse::Lines::Section.new('first section'),
+@@ -34,7 +34,7 @@ describe "IniParse::Document" do
+ doc = IniParse::Document.new
+ doc.lines << sections[0] << sections[1]
+
+- doc.map { |line| line }.should == sections
++ expect(doc.map { |line| line }).to eq(sections)
+ end
+
+ describe '#has_section?' do
+@@ -45,12 +45,12 @@ describe "IniParse::Document" do
+ end
+
+ it 'should return true if a section with the given key exists' do
+- @doc.should have_section('first section')
+- @doc.should have_section('another section')
++ expect(@doc).to have_section('first section')
++ expect(@doc).to have_section('another section')
+ end
+
+ it 'should return true if no section with the given key exists' do
+- @doc.should_not have_section('second section')
++ expect(@doc).not_to have_section('second section')
+ end
+ end
+
+@@ -70,22 +70,22 @@ describe "IniParse::Document" do
+ end
+
+ it 'removes the section given a key' do
+- lambda { document.delete('first') }.
+- should change { document['first'] }.to(nil)
++ expect { document.delete('first') }.
++ to change { document['first'] }.to(nil)
+ end
+
+ it 'removes the section given a Section' do
+- lambda { document.delete(document['first']) }.
+- should change { document['first'] }.to(nil)
++ expect { document.delete(document['first']) }.
++ to change { document['first'] }.to(nil)
+ end
+
+ it 'removes the lines' do
+- lambda { document.delete('first') }.
+- should change { document.to_ini.match(/alpha/) }.to(nil)
++ expect { document.delete('first') }.
++ to change { document.to_ini.match(/alpha/) }.to(nil)
+ end
+
+ it 'returns the document' do
+- document.delete('first').should eql(document)
++ expect(document.delete('first')).to eql(document)
+ end
+ end
+
+@@ -122,31 +122,31 @@ describe "IniParse::Document" do
+ describe 'when no path is given to save' do
+ it 'should save the INI document if a path was given when initialized' do
+ doc = IniParse::Document.new('/a/path/to/a/file.ini')
+- File.should_receive(:open).with('/a/path/to/a/file.ini', 'w')
++ expect(File).to receive(:open).with('/a/path/to/a/file.ini', 'w')
+ doc.save
+ end
+
+ it 'should raise IniParseError if no path was given when initialized' do
+- lambda { IniParse::Document.new.save }.should \
++ expect { IniParse::Document.new.save }.to \
+ raise_error(IniParse::IniParseError)
+ end
+ end
+
+ describe 'when a path is given to save' do
+ it "should update the document's +path+" do
+- File.stub(:open).and_return(true)
++ allow(File).to receive(:open).and_return(true)
+ doc = IniParse::Document.new('/a/path/to/a/file.ini')
+ doc.save('/a/new/path.ini')
+- doc.path.should == '/a/new/path.ini'
++ expect(doc.path).to eq('/a/new/path.ini')
+ end
+
+ it 'should save the INI document to the given path' do
+- File.should_receive(:open).with('/a/new/path.ini', 'w')
++ expect(File).to receive(:open).with('/a/new/path.ini', 'w')
+ IniParse::Document.new('/a/path/to/a/file.ini').save('/a/new/path.ini')
+ end
+
+ it 'should raise IniParseError if no path was given when initialized' do
+- lambda { IniParse::Document.new.save }.should \
++ expect { IniParse::Document.new.save }.to \
+ raise_error(IniParse::IniParseError)
+ end
+ end
+diff --git a/spec/fixture_spec.rb b/spec/fixture_spec.rb
+index 81eab3c..0c3c8e4 100644
+--- a/spec/fixture_spec.rb
++++ b/spec/fixture_spec.rb
+@@ -7,16 +7,16 @@ describe "IniParse" do
+ end
+
+ it 'should parse without any errors' do
+- lambda { IniParse.parse(@fixture) }.should_not raise_error
++ expect { IniParse.parse(@fixture) }.not_to raise_error
+ end
+
+ it 'should have the correct sections' do
+- IniParse.parse(fixture('openttd.ini')).lines.keys.should == [
++ expect(IniParse.parse(fixture('openttd.ini')).lines.keys).to eq([
+ 'misc', 'music', 'difficulty', 'game_creation', 'vehicle',
+ 'construction', 'station', 'economy', 'pf', 'order', 'gui', 'ai',
+ 'locale', 'network', 'currency', 'servers', 'bans', 'news_display',
+ 'version', 'preset-J', 'newgrf', 'newgrf-static'
+- ]
++ ])
+ end
+
+ it 'should have the correct options' do
+@@ -24,7 +24,7 @@ describe "IniParse" do
+ doc = IniParse.parse(@fixture)
+ section = doc['misc']
+
+- section.lines.keys.should == [
++ expect(section.lines.keys).to eq([
+ 'display_opt', 'news_ticker_sound', 'fullscreen', 'language',
+ 'resolution', 'screenshot_format', 'savegame_format',
+ 'rightclick_emulate', 'small_font', 'medium_font', 'large_font',
+@@ -32,26 +32,26 @@ describe "IniParse" do
+ 'large_aa', 'sprite_cache_size', 'player_face',
+ 'transparency_options', 'transparency_locks', 'invisibility_options',
+ 'keyboard', 'keyboard_caps'
+- ]
++ ])
+
+ # Test some of the options.
+- section['display_opt'].should == 'SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION|FULL_DETAIL|WAYPOINTS'
+- section['news_ticker_sound'].should be_false
+- section['language'].should == 'english_US.lng'
+- section['resolution'].should == '1680,936'
+- section['large_size'].should == 16
++ expect(section['display_opt']).to eq('SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION|FULL_DETAIL|WAYPOINTS')
++ expect(section['news_ticker_sound']).to be_falsey
++ expect(section['language']).to eq('english_US.lng')
++ expect(section['resolution']).to eq('1680,936')
++ expect(section['large_size']).to eq(16)
+
+ # Test some other options.
+- doc['currency']['suffix'].should == '" credits"'
+- doc['news_display']['production_nobody'].should == 'summarized'
+- doc['version']['version_number'].should == '070039B0'
++ expect(doc['currency']['suffix']).to eq('" credits"')
++ expect(doc['news_display']['production_nobody']).to eq('summarized')
++ expect(doc['version']['version_number']).to eq('070039B0')
+
+- doc['preset-J']['gcf/1_other/BlackCC/mauvetoblackw.grf'].should be_nil
+- doc['preset-J']['gcf/1_other/OpenGFX/OpenGFX_-_newFaces_v0.1.grf'].should be_nil
++ expect(doc['preset-J']['gcf/1_other/BlackCC/mauvetoblackw.grf']).to be_nil
++ expect(doc['preset-J']['gcf/1_other/OpenGFX/OpenGFX_-_newFaces_v0.1.grf']).to be_nil
+ end
+
+ it 'should be identical to the original when calling #to_ini' do
+- IniParse.parse(@fixture).to_ini.should == @fixture
++ expect(IniParse.parse(@fixture).to_ini).to eq(@fixture)
+ end
+ end
+
+@@ -61,14 +61,14 @@ describe "IniParse" do
+ end
+
+ it 'should parse without any errors' do
+- lambda { IniParse.parse(@fixture) }.should_not raise_error
++ expect { IniParse.parse(@fixture) }.not_to raise_error
+ end
+
+ it 'should have the correct sections' do
+- IniParse.parse(fixture('race07.ini')).lines.keys.should == [
++ expect(IniParse.parse(fixture('race07.ini')).lines.keys).to eq([
+ 'Header', 'Race', 'Slot010', 'Slot016', 'Slot013', 'Slot018',
+ 'Slot002', 'END'
+- ]
++ ])
+ end
+
+ it 'should have the correct options' do
+@@ -76,24 +76,24 @@ describe "IniParse" do
+ doc = IniParse.parse(@fixture)
+ section = doc['Slot010']
+
+- section.lines.keys.should == [
++ expect(section.lines.keys).to eq([
+ 'Driver', 'SteamUser', 'SteamId', 'Vehicle', 'Team', 'QualTime',
+ 'Laps', 'Lap', 'LapDistanceTravelled', 'BestLap', 'RaceTime'
+- ]
++ ])
+
+ # Test some of the options.
+- section['Driver'].should == 'Mark Voss'
+- section['SteamUser'].should == 'mvoss'
+- section['SteamId'].should == 1865369
+- section['Vehicle'].should == 'Chevrolet Lacetti 2007'
+- section['Team'].should == 'TEMPLATE_TEAM'
+- section['QualTime'].should == '1:37.839'
+- section['Laps'].should == 13
+- section['LapDistanceTravelled'].should == 3857.750244
+- section['BestLap'].should == '1:38.031'
+- section['RaceTime'].should == '0:21:38.988'
+-
+- section['Lap'].should == [
++ expect(section['Driver']).to eq('Mark Voss')
++ expect(section['SteamUser']).to eq('mvoss')
++ expect(section['SteamId']).to eq(1865369)
++ expect(section['Vehicle']).to eq('Chevrolet Lacetti 2007')
++ expect(section['Team']).to eq('TEMPLATE_TEAM')
++ expect(section['QualTime']).to eq('1:37.839')
++ expect(section['Laps']).to eq(13)
++ expect(section['LapDistanceTravelled']).to eq(3857.750244)
++ expect(section['BestLap']).to eq('1:38.031')
++ expect(section['RaceTime']).to eq('0:21:38.988')
++
++ expect(section['Lap']).to eq([
+ '(0, -1.000, 1:48.697)', '(1, 89.397, 1:39.455)',
+ '(2, 198.095, 1:38.060)', '(3, 297.550, 1:38.632)',
+ '(4, 395.610, 1:38.031)', '(5, 494.242, 1:39.562)',
+@@ -101,20 +101,19 @@ describe "IniParse" do
+ '(8, 791.785, 1:39.889)', '(9, 890.151, 1:39.420)',
+ '(10, 990.040, 1:39.401)', '(11, 1089.460, 1:39.506)',
+ '(12, 1188.862, 1:40.017)'
+- ]
++ ])
+
+- doc['Header']['Version'].should == '1.1.1.14'
+- doc['Header']['TimeString'].should == '2008/09/13 23:26:32'
+- doc['Header']['Aids'].should == '0,0,0,0,0,1,1,0,0'
++ expect(doc['Header']['Version']).to eq('1.1.1.14')
++ expect(doc['Header']['TimeString']).to eq('2008/09/13 23:26:32')
++ expect(doc['Header']['Aids']).to eq('0,0,0,0,0,1,1,0,0')
+
+- doc['Race']['AIDB'].should == 'GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.AIW'
+- doc['Race']['Race Length'].should == 0.1
++ expect(doc['Race']['AIDB']).to eq('GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.AIW')
++ expect(doc['Race']['Race Length']).to eq(0.1)
+ end
+
+ it 'should be identical to the original when calling #to_ini' do
+- pending('awaiting presevation (or lack) of whitespace around =') do
+- IniParse.parse(@fixture).to_ini.should == @fixture
+- end
++ pending('awaiting presevation (or lack) of whitespace around =')
++ expect(IniParse.parse(@fixture).to_ini).to eq(@fixture)
+ end
+ end
+
+@@ -124,13 +123,13 @@ describe "IniParse" do
+ end
+
+ it 'should parse without any errors' do
+- lambda { IniParse.parse(@fixture) }.should_not raise_error
++ expect { IniParse.parse(@fixture) }.not_to raise_error
+ end
+
+ it 'should have the correct sections' do
+- IniParse.parse(@fixture).lines.keys.should == [
++ expect(IniParse.parse(@fixture).lines.keys).to eq([
+ 'global', 'printers'
+- ]
++ ])
+ end
+
+ it 'should have the correct options' do
+@@ -138,7 +137,7 @@ describe "IniParse" do
+ doc = IniParse.parse(@fixture)
+ section = doc['global']
+
+- section.lines.keys.should == [
++ expect(section.lines.keys).to eq([
+ 'debug pid', 'log level', 'server string', 'printcap name',
+ 'printing', 'encrypt passwords', 'use spnego', 'passdb backend',
+ 'idmap domains', 'idmap config default: default',
+@@ -152,15 +151,15 @@ describe "IniParse" do
+ 'usershare allow full config', 'com.apple:filter shares by access',
+ 'obey pam restrictions', 'acl check permissions',
+ 'name resolve order', 'include'
+- ]
++ ])
+
+- section['display charset'].should == 'UTF-8-MAC'
+- section['vfs objects'].should == 'darwinacl,darwin_streams'
+- section['usershare path'].should == '/var/samba/shares'
++ expect(section['display charset']).to eq('UTF-8-MAC')
++ expect(section['vfs objects']).to eq('darwinacl,darwin_streams')
++ expect(section['usershare path']).to eq('/var/samba/shares')
+ end
+
+ it 'should be identical to the original when calling #to_ini' do
+- IniParse.parse(@fixture).to_ini.should == @fixture
++ expect(IniParse.parse(@fixture).to_ini).to eq(@fixture)
+ end
+ end
+
+@@ -170,7 +169,7 @@ describe "IniParse" do
+ end
+
+ it 'should be identical to the original when calling #to_ini' do
+- IniParse.parse(@fixture).to_ini.should == @fixture
++ expect(IniParse.parse(@fixture).to_ini).to eq(@fixture)
+ end
+ end
+
+@@ -180,7 +179,7 @@ describe "IniParse" do
+ end
+
+ it 'should be identical to the original when calling #to_ini' do
+- IniParse.parse(@fixture).to_ini.should == @fixture
++ expect(IniParse.parse(@fixture).to_ini).to eq(@fixture)
+ end
+ end
+ end
+diff --git a/spec/generator/method_missing_spec.rb b/spec/generator/method_missing_spec.rb
+index 9fc1540..9370cb1 100644
+--- a/spec/generator/method_missing_spec.rb
++++ b/spec/generator/method_missing_spec.rb
+@@ -23,23 +23,23 @@ describe 'When generating a document using Generator with section blocks using m
+ IniParse::Generator.gen do |doc|
+ doc.a_section do |section|
+ %w( option comment blank ).each do |meth|
+- section.should respond_to(meth)
++ expect(section).to respond_to(meth)
+ end
+ end
+ end
+ end
+
+ it 'should add a Section to the document' do
+- IniParse::Generator.gen do |doc|
++ expect(IniParse::Generator.gen do |doc|
+ doc.a_section { |section| }
+- end.should have_section("a_section")
++ end).to have_section("a_section")
+ end
+
+ it 'should change the Generator context to the section during the section block' do
+ IniParse::Generator.gen do |doc|
+ doc.a_section do |section|
+- section.context.should be_kind_of(IniParse::Lines::Section)
+- section.context.key.should == "a_section"
++ expect(section.context).to be_kind_of(IniParse::Lines::Section)
++ expect(section.context.key).to eq("a_section")
+ end
+ end
+ end
+@@ -47,24 +47,24 @@ describe 'When generating a document using Generator with section blocks using m
+ it 'should reset the Generator context to the document after the section block' do
+ IniParse::Generator.gen do |doc|
+ doc.a_section { |section| }
+- doc.context.should be_kind_of(IniParse::Document)
++ expect(doc.context).to be_kind_of(IniParse::Document)
+ end
+ end
+
+ it 'should append a blank line to the document, after the section' do
+- IniParse::Generator.gen do |doc|
++ expect(IniParse::Generator.gen do |doc|
+ doc.a_section { |section| }
+- end.lines.to_a.last.should be_kind_of(IniParse::Lines::Blank)
++ end.lines.to_a.last).to be_kind_of(IniParse::Lines::Blank)
+ end
+
+ it 'should raise a LineNotAllowed if you attempt to nest a section' do
+- lambda do
++ expect do
+ IniParse::Generator.gen do |doc|
+ doc.a_section do |section_one|
+ section_one.another_section { |section_two| }
+ end
+ end
+- end.should raise_error(IniParse::LineNotAllowed)
++ end.to raise_error(IniParse::LineNotAllowed)
+ end
+ end
+
+@@ -78,7 +78,7 @@ describe 'When generating a document using Generator with section blocks using m
+ describe 'when the context is a Document' do
+ it "adds the option to an __anonymous__ section" do
+ doc = IniParse::Generator.gen { |doc| doc.my_option = "a value" }
+- doc['__anonymous__']['my_option'].should eql('a value')
++ expect(doc['__anonymous__']['my_option']).to eql('a value')
+ end
+ end
+
+@@ -91,8 +91,8 @@ describe 'When generating a document using Generator with section blocks using m
+ end
+
+ section = document["a_section"]
+- section.should have_option("my_option")
+- section["my_option"].should == "a value"
++ expect(section).to have_option("my_option")
++ expect(section["my_option"]).to eq("a value")
+ end
+ end
+ end
+diff --git a/spec/generator/with_section_blocks_spec.rb b/spec/generator/with_section_blocks_spec.rb
+index da82840..4af5009 100644
+--- a/spec/generator/with_section_blocks_spec.rb
++++ b/spec/generator/with_section_blocks_spec.rb
+@@ -13,17 +13,17 @@ require 'spec_helper'
+ describe 'When generating a document using Generator with section blocks,' do
+
+ it 'should be able to compile an empty document' do
+- lambda { IniParse::Generator.gen { |doc| } }.should_not raise_error
++ expect { IniParse::Generator.gen { |doc| } }.not_to raise_error
+ end
+
+ it 'should raise LocalJumpError if no block is given' do
+- lambda { IniParse::Generator.gen }.should raise_error(LocalJumpError)
++ expect { IniParse::Generator.gen }.to raise_error(LocalJumpError)
+ end
+
+ it "should yield an object with generator methods" do
+ IniParse::Generator.gen do |doc|
+ %w( section option comment blank ).each do |meth|
+- doc.should respond_to(meth)
++ expect(doc).to respond_to(meth)
+ end
+ end
+ end
+@@ -39,23 +39,23 @@ describe 'When generating a document using Generator with section blocks,' do
+ IniParse::Generator.gen do |doc|
+ doc.section("a section") do |section|
+ %w( option comment blank ).each do |meth|
+- section.should respond_to(meth)
++ expect(section).to respond_to(meth)
+ end
+ end
+ end
+ end
+
+ it 'should add a Section to the document' do
+- IniParse::Generator.gen do |doc|
++ expect(IniParse::Generator.gen do |doc|
+ doc.section("a section") { |section| }
+- end.should have_section("a section")
++ end).to have_section("a section")
+ end
+
+ it 'should change the Generator context to the section during the section block' do
+ IniParse::Generator.gen do |doc|
+ doc.section("a section") do |section|
+- section.context.should be_kind_of(IniParse::Lines::Section)
+- section.context.key.should == "a section"
++ expect(section.context).to be_kind_of(IniParse::Lines::Section)
++ expect(section.context.key).to eq("a section")
+ end
+ end
+ end
+@@ -63,7 +63,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ it 'should reset the Generator context to the document after the section block' do
+ IniParse::Generator.gen do |doc|
+ doc.section("a section") { |section| }
+- doc.context.should be_kind_of(IniParse::Document)
++ expect(doc.context).to be_kind_of(IniParse::Document)
+ end
+ end
+
+@@ -72,7 +72,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ doc.section("a section") { |section| }
+ end
+
+- document["a section"].to_ini.should match(/\A /)
++ expect(document["a section"].to_ini).to match(/\A /)
+ end
+
+ it 'should pass extra options to the Section instance' do
+@@ -80,23 +80,23 @@ describe 'When generating a document using Generator with section blocks,' do
+ doc.section("a section", :indent => ' ') { |section| }
+ end
+
+- document["a section"].to_ini.should match(/\A /)
++ expect(document["a section"].to_ini).to match(/\A /)
+ end
+
+ it 'should append a blank line to the document, after the section' do
+- IniParse::Generator.gen do |doc|
++ expect(IniParse::Generator.gen do |doc|
+ doc.section("a section") { |section| }
+- end.lines.to_a.last.should be_kind_of(IniParse::Lines::Blank)
++ end.lines.to_a.last).to be_kind_of(IniParse::Lines::Blank)
+ end
+
+ it 'should raise a LineNotAllowed if you attempt to nest a section' do
+- lambda do
++ expect do
+ IniParse::Generator.gen do |doc|
+ doc.section("a section") do |section_one|
+ section_one.section("another_section") { |section_two| }
+ end
+ end
+- end.should raise_error(IniParse::LineNotAllowed)
++ end.to raise_error(IniParse::LineNotAllowed)
+ end
+ end
+
+@@ -114,7 +114,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ doc.option("my option", "a value")
+ end
+
+- document['__anonymous__']['my option'].should eql('a value')
++ expect(document['__anonymous__']['my option']).to eql('a value')
+ end
+ end
+
+@@ -127,8 +127,8 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+
+ section = document["a section"]
+- section.should have_option("my option")
+- section["my option"].should == "a value"
++ expect(section).to have_option("my option")
++ expect(section["my option"]).to eq("a value")
+ end
+
+ it 'should pass extra options to the Option instance' do
+@@ -138,7 +138,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+ end
+
+- document["a section"].option("my option").to_ini.should match(/^ /)
++ expect(document["a section"].option("my option").to_ini).to match(/^ /)
+ end
+
+ it "should use the parent document's options as a base" do
+@@ -148,7 +148,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+ end
+
+- document["a section"].option("my option").to_ini.should match(/^ /)
++ expect(document["a section"].option("my option").to_ini).to match(/^ /)
+ end
+
+ it "should use the parent section's options as a base" do
+@@ -158,7 +158,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+ end
+
+- document["a section"].option("my option").to_ini.should match(/^ /)
++ expect(document["a section"].option("my option").to_ini).to match(/^ /)
+ end
+
+ it "should allow customisation of the parent's options" do
+@@ -171,8 +171,8 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+
+ option_ini = document["a section"].option("my option").to_ini
+- option_ini.should match(/^ /)
+- option_ini.should match(/ # a comment/)
++ expect(option_ini).to match(/^ /)
++ expect(option_ini).to match(/ # a comment/)
+ end
+
+ it "should not use the parent section's comment when setting line options" do
+@@ -182,7 +182,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+ end
+
+- document["a section"].option("my option").to_ini.should_not match(/My section$/)
++ expect(document["a section"].option("my option").to_ini).not_to match(/My section$/)
+ end
+ end
+ end
+@@ -199,7 +199,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ doc.comment("My comment", :indent => ' ')
+ end
+
+- document.lines.to_a.first.to_ini.should match(/\A /)
++ expect(document.lines.to_a.first.to_ini).to match(/\A /)
+ end
+
+ it 'should ignore any extra :comment option' do
+@@ -207,8 +207,8 @@ describe 'When generating a document using Generator with section blocks,' do
+ doc.comment("My comment", :comment => 'Ignored')
+ end
+
+- document.lines.to_a.first.to_ini.should match(/My comment/)
+- document.lines.to_a.first.to_ini.should_not match(/Ignored/)
++ expect(document.lines.to_a.first.to_ini).to match(/My comment/)
++ expect(document.lines.to_a.first.to_ini).not_to match(/Ignored/)
+ end
+
+ describe 'when the context is a Document' do
+@@ -218,8 +218,8 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+
+ comment = document.lines.to_a.first
+- comment.should be_kind_of(IniParse::Lines::Comment)
+- comment.to_ini.should match(/My comment/)
++ expect(comment).to be_kind_of(IniParse::Lines::Comment)
++ expect(comment.to_ini).to match(/My comment/)
+ end
+
+ it 'should use the default line options as a base' do
+@@ -230,7 +230,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ comment_ini = document.lines.to_a.first.to_ini
+
+ # Match separator (;) and offset (0).
+- comment_ini.should == '; My comment'
++ expect(comment_ini).to eq('; My comment')
+ end
+ end
+
+@@ -243,8 +243,8 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+
+ comment = document['a section'].lines.to_a.first
+- comment.should be_kind_of(IniParse::Lines::Comment)
+- comment.to_ini.should match(/My comment/)
++ expect(comment).to be_kind_of(IniParse::Lines::Comment)
++ expect(comment.to_ini).to match(/My comment/)
+ end
+
+ it "should use the parent document's line options as a base" do
+@@ -254,7 +254,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+ end
+
+- document['a section'].lines.to_a.first.to_ini.should match(/^ ;/)
++ expect(document['a section'].lines.to_a.first.to_ini).to match(/^ ;/)
+ end
+
+ it "should use the parent section's line options as a base" do
+@@ -264,7 +264,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+ end
+
+- document['a section'].lines.to_a.first.to_ini.should match(/^ ;/)
++ expect(document['a section'].lines.to_a.first.to_ini).to match(/^ ;/)
+ end
+
+ it "should allow customisation of the parent's options" do
+@@ -275,8 +275,8 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+
+ # Match separator (#) and offset (5)
+- document['a section'].lines.to_a.first.to_ini.should \
+- == ' # My comment'
++ expect(document['a section'].lines.to_a.first.to_ini).to \
++ eq(' # My comment')
+ end
+
+ it "should not use the parent section's comment when setting line options" do
+@@ -287,8 +287,8 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+
+ comment_ini = document['a section'].lines.to_a.first.to_ini
+- comment_ini.should match(/My comment/)
+- comment_ini.should_not match(/My section/)
++ expect(comment_ini).to match(/My comment/)
++ expect(comment_ini).not_to match(/My section/)
+ end
+ end
+ end
+@@ -305,7 +305,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ doc.blank
+ end
+
+- document.lines.to_a.first.should be_kind_of(IniParse::Lines::Blank)
++ expect(document.lines.to_a.first).to be_kind_of(IniParse::Lines::Blank)
+ end
+
+ it 'should add a blank line to the section when it is the context' do
+@@ -315,7 +315,7 @@ describe 'When generating a document using Generator with section blocks,' do
+ end
+ end
+
+- document['a section'].lines.to_a.first.should be_kind_of(IniParse::Lines::Blank)
++ expect(document['a section'].lines.to_a.first).to be_kind_of(IniParse::Lines::Blank)
+ end
+ end
+
+diff --git a/spec/generator/without_section_blocks_spec.rb b/spec/generator/without_section_blocks_spec.rb
+index 00e0cea..1aba308 100644
+--- a/spec/generator/without_section_blocks_spec.rb
++++ b/spec/generator/without_section_blocks_spec.rb
+@@ -29,17 +29,17 @@ describe 'When generating a document using Generator without section blocks,' do
+ describe 'adding a section' do
+ it 'should add a Section to the document' do
+ @gen.section("a section")
+- @gen.document.should have_section("a section")
++ expect(@gen.document).to have_section("a section")
+ end
+
+ it 'should change the Generator context to the section' do
+ @gen.section("a section")
+- @gen.context.should == @gen.document['a section']
++ expect(@gen.context).to eq(@gen.document['a section'])
+ end
+
+ it 'should pass extra options to the Section instance' do
+ @gen.section("a section", :indent => ' ')
+- @gen.document["a section"].to_ini.should match(/\A /)
++ expect(@gen.document["a section"].to_ini).to match(/\A /)
+ end
+ end
+
+@@ -53,13 +53,13 @@ describe 'When generating a document using Generator without section blocks,' do
+ it 'should pass extra options to the Option instance' do
+ @gen.section("a section")
+ @gen.option("my option", "a value", :indent => ' ')
+- @gen.document["a section"].option("my option").to_ini.should match(/^ /)
++ expect(@gen.document["a section"].option("my option").to_ini).to match(/^ /)
+ end
+
+ describe 'when the context is a Document' do
+ it "should add the option to an __anonymous__ section" do
+ @gen.option("key", "value")
+- @gen.document['__anonymous__']['key'].should eql('value')
++ expect(@gen.document['__anonymous__']['key']).to eql('value')
+ end
+ end
+
+@@ -67,8 +67,8 @@ describe 'When generating a document using Generator without section blocks,' do
+ it 'should add the option to the section' do
+ @gen.section("a section")
+ @gen.option("my option", "a value")
+- @gen.document["a section"].should have_option("my option")
+- @gen.document["a section"]["my option"].should == "a value"
++ expect(@gen.document["a section"]).to have_option("my option")
++ expect(@gen.document["a section"]["my option"]).to eq("a value")
+ end
+ end
+ end
+@@ -82,22 +82,22 @@ describe 'When generating a document using Generator without section blocks,' do
+ describe 'adding a comment' do
+ it 'should pass extra options to the Option instance' do
+ @gen.comment("My comment", :indent => ' ')
+- @gen.document.lines.to_a.first.to_ini.should match(/^ /)
++ expect(@gen.document.lines.to_a.first.to_ini).to match(/^ /)
+ end
+
+ it 'should ignore any extra :comment option' do
+ @gen.comment("My comment", :comment => 'Ignored')
+ comment_ini = @gen.document.lines.to_a.first.to_ini
+- comment_ini.should match(/My comment/)
+- comment_ini.should_not match(/Ignored/)
++ expect(comment_ini).to match(/My comment/)
++ expect(comment_ini).not_to match(/Ignored/)
+ end
+
+ describe 'when the context is a Document' do
+ it 'should add a comment to the document' do
+ @gen.comment('My comment')
+ comment = @gen.document.lines.to_a.first
+- comment.should be_kind_of(IniParse::Lines::Comment)
+- comment.to_ini.should match(/; My comment/)
++ expect(comment).to be_kind_of(IniParse::Lines::Comment)
++ expect(comment.to_ini).to match(/; My comment/)
+ end
+ end
+
+@@ -106,8 +106,8 @@ describe 'When generating a document using Generator without section blocks,' do
+ @gen.section('a section')
+ @gen.comment('My comment')
+ comment = @gen.document['a section'].lines.to_a.first
+- comment.should be_kind_of(IniParse::Lines::Comment)
+- comment.to_ini.should match(/My comment/)
++ expect(comment).to be_kind_of(IniParse::Lines::Comment)
++ expect(comment.to_ini).to match(/My comment/)
+ end
+ end
+ end
+@@ -122,14 +122,14 @@ describe 'When generating a document using Generator without section blocks,' do
+ it 'should add a blank line to the document when it is the context' do
+ @gen.blank
+ comment = @gen.document.lines.to_a.first
+- comment.should be_kind_of(IniParse::Lines::Blank)
++ expect(comment).to be_kind_of(IniParse::Lines::Blank)
+ end
+
+ it 'should add a blank line to the section when it is the context' do
+ @gen.section('a section')
+ @gen.blank
+ comment = @gen.document['a section'].lines.to_a.first
+- comment.should be_kind_of(IniParse::Lines::Blank)
++ expect(comment).to be_kind_of(IniParse::Lines::Blank)
+ end
+ end
+
+diff --git a/spec/iniparse_spec.rb b/spec/iniparse_spec.rb
+index 0735660..6acebc9 100644
+--- a/spec/iniparse_spec.rb
++++ b/spec/iniparse_spec.rb
+@@ -45,18 +45,18 @@ describe "IniParse" do
+ end
+
+ describe '.open' do
+- before(:each) { File.stub(:read).and_return('[section]') }
++ before(:each) { allow(File).to receive(:read).and_return('[section]') }
+
+ it 'should return an IniParse::Document' do
+- IniParse.open('/my/path.ini').should be_kind_of(IniParse::Document)
++ expect(IniParse.open('/my/path.ini')).to be_kind_of(IniParse::Document)
+ end
+
+ it 'should set the path on the returned Document' do
+- IniParse.open('/my/path.ini').path.should == '/my/path.ini'
++ expect(IniParse.open('/my/path.ini').path).to eq('/my/path.ini')
+ end
+
+ it 'should read the file at the given path' do
+- File.should_receive(:read).with('/my/path.ini').and_return('[section]')
++ expect(File).to receive(:read).with('/my/path.ini').and_return('[section]')
+ IniParse.open('/my/path.ini')
+ end
+ end
+diff --git a/spec/line_collection_spec.rb b/spec/line_collection_spec.rb
+index fa0554c..85a0924 100644
+--- a/spec/line_collection_spec.rb
++++ b/spec/line_collection_spec.rb
+@@ -4,7 +4,7 @@ require 'spec_helper'
+ # Shared specs for all Collection types...
+ # ----------------------------------------------------------------------------
+
+-share_examples_for "LineCollection" do
++shared_examples_for "LineCollection" do
+ before(:each) do
+ @collection << (@c1 = IniParse::Lines::Comment.new)
+ @collection << @i1
+@@ -16,7 +16,7 @@ share_examples_for "LineCollection" do
+
+ describe '#each' do
+ it 'should remove blanks and comments by default' do
+- @collection.each { |l| l.should be_kind_of(@i1.class) }
++ @collection.each { |l| expect(l).to be_kind_of(@i1.class) }
+ end
+
+ it 'should not remove blanks and comments if true is given' do
+@@ -27,121 +27,121 @@ share_examples_for "LineCollection" do
+ arr << line
+ end
+
+- arr.should == [@c1, @i1, @i2, @b1, @i3, @b2]
++ expect(arr).to eq([@c1, @i1, @i2, @b1, @i3, @b2])
+ end
+ end
+
+ describe '#[]' do
+ it 'should fetch the correct value' do
+- @collection['first'].should == @i1
+- @collection['second'].should == @i2
+- @collection['third'].should == @i3
++ expect(@collection['first']).to eq(@i1)
++ expect(@collection['second']).to eq(@i2)
++ expect(@collection['third']).to eq(@i3)
+ end
+
+ it 'should return nil if the given key does not exist' do
+- @collection['does not exist'].should be_nil
++ expect(@collection['does not exist']).to be_nil
+ end
+ end
+
+ describe '#[]=' do
+ it 'should successfully add a new key' do
+ @collection['fourth'] = @new
+- @collection['fourth'].should == @new
++ expect(@collection['fourth']).to eq(@new)
+ end
+
+ it 'should successfully update an existing key' do
+ @collection['second'] = @new
+- @collection['second'].should == @new
++ expect(@collection['second']).to eq(@new)
+
+ # Make sure the old data is gone.
+- @collection.detect { |s| s.key == 'second' }.should be_nil
++ expect(@collection.detect { |s| s.key == 'second' }).to be_nil
+ end
+
+ it 'should typecast given keys to a string' do
+ @collection[:a_symbol] = @new
+- @collection['a_symbol'].should == @new
++ expect(@collection['a_symbol']).to eq(@new)
+ end
+ end
+
+ describe '#<<' do
+ it 'should set the key correctly if given a new item' do
+- @collection.should_not have_key(@new.key)
++ expect(@collection).not_to have_key(@new.key)
+ @collection << @new
+- @collection.should have_key(@new.key)
++ expect(@collection).to have_key(@new.key)
+ end
+
+ it 'should append Blank lines' do
+ @collection << IniParse::Lines::Blank.new
+- @collection.instance_variable_get(:@lines).last.should \
++ expect(@collection.instance_variable_get(:@lines).last).to \
+ be_kind_of(IniParse::Lines::Blank)
+ end
+
+ it 'should append Comment lines' do
+ @collection << IniParse::Lines::Comment.new
+- @collection.instance_variable_get(:@lines).last.should \
++ expect(@collection.instance_variable_get(:@lines).last).to \
+ be_kind_of(IniParse::Lines::Comment)
+ end
+
+ it 'should return self' do
+- (@collection << @new).should == @collection
++ expect(@collection << @new).to eq(@collection)
+ end
+ end
+
+ describe '#delete' do
+ it 'should remove the given value and adjust the indicies' do
+- @collection['second'].should_not be_nil
++ expect(@collection['second']).not_to be_nil
+ @collection.delete('second')
+- @collection['second'].should be_nil
+- @collection['first'].should == @i1
+- @collection['third'].should == @i3
++ expect(@collection['second']).to be_nil
++ expect(@collection['first']).to eq(@i1)
++ expect(@collection['third']).to eq(@i3)
+ end
+
+ it "should do nothing if the supplied key does not exist" do
+ @collection.delete('does not exist')
+- @collection['first'].should == @i1
+- @collection['third'].should == @i3
++ expect(@collection['first']).to eq(@i1)
++ expect(@collection['third']).to eq(@i3)
+ end
+ end
+
+ describe '#to_a' do
+ it 'should return an array' do
+- @collection.to_a.should be_kind_of(Array)
++ expect(@collection.to_a).to be_kind_of(Array)
+ end
+
+ it 'should include all lines' do
+- @collection.to_a.should == [@c1, @i1, @i2, @b1, @i3, @b2]
++ expect(@collection.to_a).to eq([@c1, @i1, @i2, @b1, @i3, @b2])
+ end
+
+ it 'should include references to the same line objects as the collection' do
+ @collection << @new
+- @collection.to_a.last.object_id.should == @new.object_id
++ expect(@collection.to_a.last.object_id).to eq(@new.object_id)
+ end
+ end
+
+ describe '#to_hash' do
+ it 'should return a hash' do
+- @collection.to_hash.should be_kind_of(Hash)
++ expect(@collection.to_hash).to be_kind_of(Hash)
+ end
+
+ it 'should have the correct keys' do
+ hash = @collection.to_hash
+- hash.keys.length.should == 3
+- hash.should have_key('first')
+- hash.should have_key('second')
+- hash.should have_key('third')
++ expect(hash.keys.length).to eq(3)
++ expect(hash).to have_key('first')
++ expect(hash).to have_key('second')
++ expect(hash).to have_key('third')
+ end
+
+ it 'should have the correct values' do
+ hash = @collection.to_hash
+- hash['first'].should == @i1
+- hash['second'].should == @i2
+- hash['third'].should == @i3
++ expect(hash['first']).to eq(@i1)
++ expect(hash['second']).to eq(@i2)
++ expect(hash['third']).to eq(@i3)
+ end
+ end
+
+ describe '#keys' do
+ it 'should return an array of strings' do
+- @collection.keys.should == ['first', 'second', 'third']
++ expect(@collection.keys).to eq(['first', 'second', 'third'])
+ end
+ end
+ end
+@@ -163,7 +163,7 @@ describe 'IniParse::OptionCollection' do
+
+ describe '#<<' do
+ it 'should raise a LineNotAllowed exception if a Section is pushed' do
+- lambda { @collection << IniParse::Lines::Section.new('s') }.should \
++ expect { @collection << IniParse::Lines::Section.new('s') }.to \
+ raise_error(IniParse::LineNotAllowed)
+ end
+
+@@ -174,7 +174,7 @@ describe 'IniParse::OptionCollection' do
+ @collection << option_one
+ @collection << option_two
+
+- @collection['k'].should == [option_one, option_two]
++ expect(@collection['k']).to eq([option_one, option_two])
+ end
+ end
+
+@@ -182,7 +182,7 @@ describe 'IniParse::OptionCollection' do
+ it 'should handle duplicates' do
+ @collection << @i1 << @i2 << @i3
+ @collection << IniParse::Lines::Option.new('first', 'v5')
+- @collection.keys.should == ['first', 'second', 'third']
++ expect(@collection.keys).to eq(['first', 'second', 'third'])
+ end
+ end
+ end
+@@ -202,7 +202,7 @@ describe 'IniParse::SectionCollection' do
+ it 'should add merge Section with the other, if it is a duplicate' do
+ new_section = IniParse::Lines::Section.new('first')
+ @collection << @i1
+- @i1.should_receive(:merge!).with(new_section).once
++ expect(@i1).to receive(:merge!).with(new_section).once
+ @collection << new_section
+ end
+ end
+diff --git a/spec/lines_spec.rb b/spec/lines_spec.rb
+index ec64945..c34a8cf 100644
+--- a/spec/lines_spec.rb
++++ b/spec/lines_spec.rb
+@@ -13,44 +13,44 @@ end
+ describe "IniParse::Lines::Line module" do
+ describe '#to_ini' do
+ it 'should return +line_contents+' do
+- IniParse::Test::FakeLine.new.to_ini.should == 'fake line'
++ expect(IniParse::Test::FakeLine.new.to_ini).to eq('fake line')
+ end
+
+ it 'should preserve line indents' do
+- IniParse::Test::FakeLine.new(
++ expect(IniParse::Test::FakeLine.new(
+ :indent => ' '
+- ).to_ini.should == ' fake line'
++ ).to_ini).to eq(' fake line')
+ end
+
+ describe 'when a comment is set' do
+ it 'should correctly include the comment' do
+- IniParse::Test::FakeLine.new(
++ expect(IniParse::Test::FakeLine.new(
+ :comment => 'comment', :comment_sep => ';', :comment_offset => 10
+- ).to_ini.should == 'fake line ; comment'
++ ).to_ini).to eq('fake line ; comment')
+ end
+
+ it 'should correctly indent the comment' do
+- IniParse::Test::FakeLine.new(
++ expect(IniParse::Test::FakeLine.new(
+ :comment => 'comment', :comment_sep => ';', :comment_offset => 15
+- ).to_ini.should == 'fake line ; comment'
++ ).to_ini).to eq('fake line ; comment')
+ end
+
+ it 'should use ";" as a default comment seperator' do
+- IniParse::Test::FakeLine.new(
++ expect(IniParse::Test::FakeLine.new(
+ :comment => 'comment'
+- ).to_ini.should == 'fake line ; comment'
++ ).to_ini).to eq('fake line ; comment')
+ end
+
+ it 'should use the correct seperator' do
+- IniParse::Test::FakeLine.new(
++ expect(IniParse::Test::FakeLine.new(
+ :comment => 'comment', :comment_sep => '#'
+- ).to_ini.should == 'fake line # comment'
++ ).to_ini).to eq('fake line # comment')
+ end
+
+ it 'should use the ensure a space is added before the comment seperator' do
+- IniParse::Test::FakeLine.new(
++ expect(IniParse::Test::FakeLine.new(
+ :comment => 'comment', :comment_sep => ';', :comment_offset => 0
+- ).to_ini.should == 'fake line ; comment'
++ ).to_ini).to eq('fake line ; comment')
+ end
+
+ it 'should not add an extra space if the line is blank' do
+@@ -58,34 +58,34 @@ describe "IniParse::Lines::Line module" do
+ :comment => 'comment', :comment_sep => ';', :comment_offset => 0
+ )
+
+- line.stub(:line_contents).and_return('')
+- line.to_ini.should == '; comment'
++ allow(line).to receive(:line_contents).and_return('')
++ expect(line.to_ini).to eq('; comment')
+ end
+ end
+
+ describe 'when no comment is set' do
+ it 'should not add trailing space if :comment_offset has a value' do
+- IniParse::Test::FakeLine.new(:comment_offset => 10).to_ini.should == 'fake line'
++ expect(IniParse::Test::FakeLine.new(:comment_offset => 10).to_ini).to eq('fake line')
+ end
+
+ it 'should not add a comment seperator :comment_sep has a value' do
+- IniParse::Test::FakeLine.new(:comment_sep => ';').to_ini.should == 'fake line'
++ expect(IniParse::Test::FakeLine.new(:comment_sep => ';').to_ini).to eq('fake line')
+ end
+ end
+ end
+
+ describe '#has_comment?' do
+ it 'should return true if :comment has a non-blank value' do
+- IniParse::Test::FakeLine.new(:comment => 'comment').should have_comment
++ expect(IniParse::Test::FakeLine.new(:comment => 'comment')).to have_comment
+ end
+
+ it 'should return true if :comment has a blank value' do
+- IniParse::Test::FakeLine.new(:comment => '').should have_comment
++ expect(IniParse::Test::FakeLine.new(:comment => '')).to have_comment
+ end
+
+ it 'should return false if :comment has a nil value' do
+- IniParse::Test::FakeLine.new.should_not have_comment
+- IniParse::Test::FakeLine.new(:comment => nil).should_not have_comment
++ expect(IniParse::Test::FakeLine.new).not_to have_comment
++ expect(IniParse::Test::FakeLine.new(:comment => nil)).not_to have_comment
+ end
+ end
+ end
+@@ -98,20 +98,20 @@ describe 'IniParse::Lines::Section' do
+ before(:each) { @section = IniParse::Lines::Section.new('a section') }
+
+ it 'should respond_to +lines+' do
+- @section.should respond_to(:lines)
++ expect(@section).to respond_to(:lines)
+ end
+
+ it 'should not respond_to +lines=+' do
+- @section.should_not respond_to(:lines=)
++ expect(@section).not_to respond_to(:lines=)
+ end
+
+ it 'should include Enumerable' do
+- IniParse::Lines::Section.included_modules.should include(Enumerable)
++ expect(IniParse::Lines::Section.included_modules).to include(Enumerable)
+ end
+
+ describe '#initialize' do
+ it 'should typecast the given key to a string' do
+- IniParse::Lines::Section.new(:symbol).key.should == 'symbol'
++ expect(IniParse::Lines::Section.new(:symbol).key).to eq('symbol')
+ end
+ end
+
+@@ -119,68 +119,68 @@ describe 'IniParse::Lines::Section' do
+ it 'should retrieve the line identified by the given key' do
+ option = IniParse::Lines::Option.new('k', 'value one')
+ @section.lines << option
+- @section.option('k').should == option
++ expect(@section.option('k')).to eq(option)
+ end
+
+ it 'should return nil if the given key does not exist' do
+- @section.option('does_not_exist').should be_nil
++ expect(@section.option('does_not_exist')).to be_nil
+ end
+ end
+
+ describe '#each' do
+ it 'should call #each on +lines+' do
+- @section.lines.should_receive(:each)
++ expect(@section.lines).to receive(:each)
+ @section.each { |l| }
+ end
+ end
+
+ describe '#[]' do
+ it 'should return nil if the given key does not exist' do
+- @section['k'].should be_nil
++ expect(@section['k']).to be_nil
+ end
+
+ it 'should return a value if the given key exists' do
+ @section.lines << IniParse::Lines::Option.new('k', 'v')
+- @section['k'].should == 'v'
++ expect(@section['k']).to eq('v')
+ end
+
+ it 'should return an array of values if the key is a duplicate' do
+ @section.lines << IniParse::Lines::Option.new('k', 'v1')
+ @section.lines << IniParse::Lines::Option.new('k', 'v2')
+ @section.lines << IniParse::Lines::Option.new('k', 'v3')
+- @section['k'].should == ['v1', 'v2', 'v3']
++ expect(@section['k']).to eq(['v1', 'v2', 'v3'])
+ end
+
+ it 'should typecast the key to a string' do
+ @section.lines << IniParse::Lines::Option.new('k', 'v')
+- @section[:k].should == 'v'
++ expect(@section[:k]).to eq('v')
+ end
+ end
+
+ describe '#[]=' do
+ it 'should add a new Option with the given key and value' do
+ @section['k'] = 'a value'
+- @section.option('k').should be_kind_of(IniParse::Lines::Option)
+- @section['k'].should == 'a value'
++ expect(@section.option('k')).to be_kind_of(IniParse::Lines::Option)
++ expect(@section['k']).to eq('a value')
+ end
+
+ it 'should update the Option if one already exists' do
+ @section.lines << IniParse::Lines::Option.new('k', 'orig value')
+ @section['k'] = 'new value'
+- @section['k'].should == 'new value'
++ expect(@section['k']).to eq('new value')
+ end
+
+ it 'should replace the existing Option if it is an array' do
+ @section.lines << IniParse::Lines::Option.new('k', 'v1')
+ @section.lines << IniParse::Lines::Option.new('k', 'v2')
+ @section['k'] = 'new value'
+- @section.option('k').should be_kind_of(IniParse::Lines::Option)
+- @section['k'].should == 'new value'
++ expect(@section.option('k')).to be_kind_of(IniParse::Lines::Option)
++ expect(@section['k']).to eq('new value')
+ end
+
+ it 'should typecast the key to a string' do
+ @section[:k] = 'a value'
+- @section['k'].should == 'a value'
++ expect(@section['k']).to eq('a value')
+ end
+ end
+
+@@ -199,16 +199,16 @@ describe 'IniParse::Lines::Section' do
+ @new_section.lines << IniParse::Lines::Option.new('d', 'val4')
+
+ @section.merge!(@new_section)
+- @section['a'].should == 'val1'
+- @section['b'].should == 'val2'
+- @section['c'].should == 'val3'
+- @section['d'].should == 'val4'
++ expect(@section['a']).to eq('val1')
++ expect(@section['b']).to eq('val2')
++ expect(@section['c']).to eq('val3')
++ expect(@section['d']).to eq('val4')
+ end
+
+ it 'should handle duplicates' do
+ @new_section.lines << IniParse::Lines::Option.new('a', 'val2')
+ @section.merge!(@new_section)
+- @section['a'].should == ['val1', 'val2']
++ expect(@section['a']).to eq(['val1', 'val2'])
+ end
+
+ it 'should handle duplicates on both sides' do
+@@ -217,7 +217,7 @@ describe 'IniParse::Lines::Section' do
+ @new_section.lines << IniParse::Lines::Option.new('a', 'val4')
+
+ @section.merge!(@new_section)
+- @section['a'].should == ['val1', 'val2', 'val3', 'val4']
++ expect(@section['a']).to eq(['val1', 'val2', 'val3', 'val4'])
+ end
+
+ it 'should copy blank lines' do
+@@ -225,7 +225,7 @@ describe 'IniParse::Lines::Section' do
+ @section.merge!(@new_section)
+ line = nil
+ @section.each(true) { |l| line = l }
+- line.should be_kind_of(IniParse::Lines::Blank)
++ expect(line).to be_kind_of(IniParse::Lines::Blank)
+ end
+
+ it 'should copy comments' do
+@@ -233,7 +233,7 @@ describe 'IniParse::Lines::Section' do
+ @section.merge!(@new_section)
+ line = nil
+ @section.each(true) { |l| line = l }
+- line.should be_kind_of(IniParse::Lines::Comment)
++ expect(line).to be_kind_of(IniParse::Lines::Comment)
+ end
+ end
+
+@@ -247,27 +247,27 @@ describe 'IniParse::Lines::Section' do
+ end
+
+ it 'removes the option given a key' do
+- lambda { @section.delete('a') }.
+- should change { @section['a'] }.to(nil)
++ expect { @section.delete('a') }.
++ to change { @section['a'] }.to(nil)
+ end
+
+ it 'removes the option given an Option' do
+- lambda { @section.delete(opt_one) }.
+- should change { @section['a'] }.to(nil)
++ expect { @section.delete(opt_one) }.
++ to change { @section['a'] }.to(nil)
+ end
+
+ it 'should not remove non-matching lines' do
+- lambda { @section.delete('a') }.should_not change { @section['c'] }
++ expect { @section.delete('a') }.not_to change { @section['c'] }
+ end
+
+ it 'returns the section' do
+- @section.delete('a').should eql(@section)
++ expect(@section.delete('a')).to eql(@section)
+ end
+ end
+
+ describe '#to_ini' do
+ it 'should include the section key' do
+- IniParse::Lines::Section.new('a section').to_ini.should == '[a section]'
++ expect(IniParse::Lines::Section.new('a section').to_ini).to eq('[a section]')
+ end
+
+ it 'should include lines belonging to the section' do
+@@ -278,22 +278,24 @@ describe 'IniParse::Lines::Section' do
+ )
+ @section.lines << IniParse::Lines::Option.new('b', 'val2')
+
+- @section.to_ini.should ==
++ expect(@section.to_ini).to eq(
+ "[a section]\n" \
+ "a = val1\n" \
+ "\n" \
+ "; my comment\n" \
+ "b = val2"
++ )
+ end
+
+ it 'should include duplicate lines' do
+ @section.lines << IniParse::Lines::Option.new('a', 'val1')
+ @section.lines << IniParse::Lines::Option.new('a', 'val2')
+
+- @section.to_ini.should ==
++ expect(@section.to_ini).to eq(
+ "[a section]\n" \
+ "a = val1\n" \
+ "a = val2"
++ )
+ end
+ end
+
+@@ -303,11 +305,11 @@ describe 'IniParse::Lines::Section' do
+ end
+
+ it 'should return true if an option with the given key exists' do
+- @section.should have_option('first')
++ expect(@section).to have_option('first')
+ end
+
+ it 'should return true if no option with the given key exists' do
+- @section.should_not have_option('second')
++ expect(@section).not_to have_option('second')
+ end
+ end
+ end
+@@ -319,13 +321,13 @@ end
+ describe 'Iniparse::Lines::Option' do
+ describe '#initialize' do
+ it 'should typecast the given key to a string' do
+- IniParse::Lines::Option.new(:symbol, '').key.should == 'symbol'
++ expect(IniParse::Lines::Option.new(:symbol, '').key).to eq('symbol')
+ end
+ end
+
+ describe '#to_ini' do
+ it 'should include the key and value' do
+- IniParse::Lines::Option.new('key', 'value').to_ini.should == 'key = value'
++ expect(IniParse::Lines::Option.new('key', 'value').to_ini).to eq('key = value')
+ end
+ end
+
+@@ -335,70 +337,70 @@ describe 'Iniparse::Lines::Option' do
+ end
+
+ it 'should typecast empty values to nil' do
+- parse('key =').should be_option_tuple('key', nil)
+- parse('key = ').should be_option_tuple('key', nil)
+- parse('key = ').should be_option_tuple('key', nil)
++ expect(parse('key =')).to be_option_tuple('key', nil)
++ expect(parse('key = ')).to be_option_tuple('key', nil)
++ expect(parse('key = ')).to be_option_tuple('key', nil)
+ end
+
+ it 'should not typecast "true" if true is part of a word' do
+- parse('key = TestTrueTest').should be_option_tuple('key', 'TestTrueTest')
+- parse('key = TrueTest').should be_option_tuple('key', 'TrueTest')
+- parse('key = TestTrue').should be_option_tuple('key', 'TestTrue')
++ expect(parse('key = TestTrueTest')).to be_option_tuple('key', 'TestTrueTest')
++ expect(parse('key = TrueTest')).to be_option_tuple('key', 'TrueTest')
++ expect(parse('key = TestTrue')).to be_option_tuple('key', 'TestTrue')
+ end
+
+ it 'should not typecast "false" if false is part of a word' do
+- parse('key = TestFalseTest').should be_option_tuple('key', 'TestFalseTest')
+- parse('key = FalseTest').should be_option_tuple('key', 'FalseTest')
+- parse('key = TestFalse').should be_option_tuple('key', 'TestFalse')
++ expect(parse('key = TestFalseTest')).to be_option_tuple('key', 'TestFalseTest')
++ expect(parse('key = FalseTest')).to be_option_tuple('key', 'FalseTest')
++ expect(parse('key = TestFalse')).to be_option_tuple('key', 'TestFalse')
+ end
+
+ it 'should typecast "true" to TrueClass' do
+- parse('key = true').should be_option_tuple('key', true)
+- parse('key = TRUE').should be_option_tuple('key', true)
++ expect(parse('key = true')).to be_option_tuple('key', true)
++ expect(parse('key = TRUE')).to be_option_tuple('key', true)
+ end
+
+ it 'should typecast "false" to FalseClass' do
+- parse('key = false').should be_option_tuple('key', false)
+- parse('key = FALSE').should be_option_tuple('key', false)
++ expect(parse('key = false')).to be_option_tuple('key', false)
++ expect(parse('key = FALSE')).to be_option_tuple('key', false)
+ end
+
+ it 'should typecast integer values to Integer' do
+- parse('key = 1').should be_option_tuple('key', 1)
+- parse('key = 10').should be_option_tuple('key', 10)
++ expect(parse('key = 1')).to be_option_tuple('key', 1)
++ expect(parse('key = 10')).to be_option_tuple('key', 10)
+ end
+
+ it 'should not typecast integers with a leading 0 to Integer' do
+- parse('key = 0700').should be_option_tuple('key', '0700')
++ expect(parse('key = 0700')).to be_option_tuple('key', '0700')
+ end
+
+ it 'should typecast negative integer values to Integer' do
+- parse('key = -1').should be_option_tuple('key', -1)
++ expect(parse('key = -1')).to be_option_tuple('key', -1)
+ end
+
+ it 'should typecast float values to Float' do
+- parse('key = 3.14159265').should be_option_tuple('key', 3.14159265)
++ expect(parse('key = 3.14159265')).to be_option_tuple('key', 3.14159265)
+ end
+
+ it 'should typecast negative float values to Float' do
+- parse('key = -3.14159265').should be_option_tuple('key', -3.14159265)
++ expect(parse('key = -3.14159265')).to be_option_tuple('key', -3.14159265)
+ end
+
+ it 'should typecast scientific notation numbers to Float' do
+- parse('key = 10e5').should be_option_tuple('key', 10e5)
+- parse('key = 10e+5').should be_option_tuple('key', 10e5)
+- parse('key = 10e-5').should be_option_tuple('key', 10e-5)
++ expect(parse('key = 10e5')).to be_option_tuple('key', 10e5)
++ expect(parse('key = 10e+5')).to be_option_tuple('key', 10e5)
++ expect(parse('key = 10e-5')).to be_option_tuple('key', 10e-5)
+
+- parse('key = -10e5').should be_option_tuple('key', -10e5)
+- parse('key = -10e+5').should be_option_tuple('key', -10e5)
+- parse('key = -10e-5').should be_option_tuple('key', -10e-5)
++ expect(parse('key = -10e5')).to be_option_tuple('key', -10e5)
++ expect(parse('key = -10e+5')).to be_option_tuple('key', -10e5)
++ expect(parse('key = -10e-5')).to be_option_tuple('key', -10e-5)
+
+- parse('key = 3.14159265e5').should be_option_tuple('key', 3.14159265e5)
+- parse('key = 3.14159265e+5').should be_option_tuple('key', 3.14159265e5)
+- parse('key = 3.14159265e-5').should be_option_tuple('key', 3.14159265e-5)
++ expect(parse('key = 3.14159265e5')).to be_option_tuple('key', 3.14159265e5)
++ expect(parse('key = 3.14159265e+5')).to be_option_tuple('key', 3.14159265e5)
++ expect(parse('key = 3.14159265e-5')).to be_option_tuple('key', 3.14159265e-5)
+
+- parse('key = -3.14159265e5').should be_option_tuple('key', -3.14159265e5)
+- parse('key = -3.14159265e+5').should be_option_tuple('key', -3.14159265e5)
+- parse('key = -3.14159265e-5').should be_option_tuple('key', -3.14159265e-5)
++ expect(parse('key = -3.14159265e5')).to be_option_tuple('key', -3.14159265e5)
++ expect(parse('key = -3.14159265e+5')).to be_option_tuple('key', -3.14159265e5)
++ expect(parse('key = -3.14159265e-5')).to be_option_tuple('key', -3.14159265e-5)
+ end
+ end
+ end
+@@ -414,34 +416,34 @@ end
+ describe 'IniParse::Lines::Comment' do
+ describe '#has_comment?' do
+ it 'should return true if :comment has a non-blank value' do
+- IniParse::Lines::Comment.new(:comment => 'comment').should have_comment
++ expect(IniParse::Lines::Comment.new(:comment => 'comment')).to have_comment
+ end
+
+ it 'should return true if :comment has a blank value' do
+- IniParse::Lines::Comment.new(:comment => '').should have_comment
++ expect(IniParse::Lines::Comment.new(:comment => '')).to have_comment
+ end
+
+ it 'should return true if :comment has a nil value' do
+- IniParse::Lines::Comment.new.should have_comment
+- IniParse::Lines::Comment.new(:comment => nil).should have_comment
++ expect(IniParse::Lines::Comment.new).to have_comment
++ expect(IniParse::Lines::Comment.new(:comment => nil)).to have_comment
+ end
+ end
+
+ describe '#to_ini' do
+ it 'should return the comment' do
+- IniParse::Lines::Comment.new(
++ expect(IniParse::Lines::Comment.new(
+ :comment => 'a comment'
+- ).to_ini.should == '; a comment'
++ ).to_ini).to eq('; a comment')
+ end
+
+ it 'should preserve comment offset' do
+- IniParse::Lines::Comment.new(
++ expect(IniParse::Lines::Comment.new(
+ :comment => 'a comment', :comment_offset => 10
+- ).to_ini.should == ' ; a comment'
++ ).to_ini).to eq(' ; a comment')
+ end
+
+ it 'should return just the comment_sep if the comment is blank' do
+- IniParse::Lines::Comment.new.to_ini.should == ';'
++ expect(IniParse::Lines::Comment.new.to_ini).to eq(';')
+ end
+ end
+ end
+diff --git a/spec/parser/document_parsing_spec.rb b/spec/parser/document_parsing_spec.rb
+index 4636aae..c882542 100644
+--- a/spec/parser/document_parsing_spec.rb
++++ b/spec/parser/document_parsing_spec.rb
+@@ -9,53 +9,53 @@ describe 'Parsing a document' do
+ end
+
+ it 'should have a comment as the first line' do
+- @doc.lines.to_a.first.should be_kind_of(IniParse::Lines::Comment)
++ expect(@doc.lines.to_a.first).to be_kind_of(IniParse::Lines::Comment)
+ end
+
+ it 'should have one section' do
+- @doc.lines.keys.should == ['first_section']
++ expect(@doc.lines.keys).to eq(['first_section'])
+ end
+
+ it 'should have one option belonging to `first_section`' do
+- @doc['first_section']['key'].should == 'value'
++ expect(@doc['first_section']['key']).to eq('value')
+ end
+ end
+
+ it 'should allow blank lines to preceed the first section' do
+- lambda {
++ expect {
+ @doc = IniParse::Parser.new(fixture(:blank_before_section)).parse
+- }.should_not raise_error
++ }.not_to raise_error
+
+- @doc.lines.to_a.first.should be_kind_of(IniParse::Lines::Blank)
++ expect(@doc.lines.to_a.first).to be_kind_of(IniParse::Lines::Blank)
+ end
+
+ it 'should allow a blank line to belong to a section' do
+- lambda {
++ expect {
+ @doc = IniParse::Parser.new(fixture(:blank_in_section)).parse
+- }.should_not raise_error
++ }.not_to raise_error
+
+- @doc['first_section'].lines.to_a.first.should be_kind_of(IniParse::Lines::Blank)
++ expect(@doc['first_section'].lines.to_a.first).to be_kind_of(IniParse::Lines::Blank)
+ end
+
+ it 'should permit comments on their own line' do
+- lambda {
++ expect {
+ @doc = IniParse::Parser.new(fixture(:comment_line)).parse
+- }.should_not raise_error
++ }.not_to raise_error
+
+ line = @doc['first_section'].lines.to_a.first
+- line.comment.should eql('; block comment ;')
++ expect(line.comment).to eql('; block comment ;')
+ end
+
+ it 'should permit options before the first section' do
+ doc = IniParse::Parser.new(fixture(:option_before_section)).parse
+
+- doc.lines.should have_key('__anonymous__')
+- doc['__anonymous__']['foo'].should eql('bar')
+- doc['foo']['another'].should eql('thing')
++ expect(doc.lines).to have_key('__anonymous__')
++ expect(doc['__anonymous__']['foo']).to eql('bar')
++ expect(doc['foo']['another']).to eql('thing')
+ end
+
+ it 'should raise ParseError if a line could not be parsed' do
+- lambda { IniParse::Parser.new(fixture(:invalid_line)).parse }.should \
++ expect { IniParse::Parser.new(fixture(:invalid_line)).parse }.to \
+ raise_error(IniParse::ParseError)
+ end
+
+@@ -65,20 +65,20 @@ describe 'Parsing a document' do
+ end
+
+ it 'should have two sections' do
+- @doc.lines.to_a.length.should == 2
++ expect(@doc.lines.to_a.length).to eq(2)
+ end
+
+ it 'should have one section' do
+- @doc.lines.keys.should == ['first_section = name',
+- 'another_section = a name']
++ expect(@doc.lines.keys).to eq(['first_section = name',
++ 'another_section = a name'])
+ end
+
+ it 'should have one option belonging to `first_section = name`' do
+- @doc['first_section = name']['key'].should == 'value'
++ expect(@doc['first_section = name']['key']).to eq('value')
+ end
+
+ it 'should have one option belonging to `another_section = a name`' do
+- @doc['another_section = a name']['another'].should == 'thing'
++ expect(@doc['another_section = a name']['another']).to eq('thing')
+ end
+ end
+
+@@ -89,19 +89,19 @@ describe 'Parsing a document' do
+
+ it 'should only add the section once' do
+ # "first_section" and "second_section".
+- @doc.lines.to_a.length.should == 2
++ expect(@doc.lines.to_a.length).to eq(2)
+ end
+
+ it 'should retain values from the first time' do
+- @doc['first_section']['key'].should == 'value'
++ expect(@doc['first_section']['key']).to eq('value')
+ end
+
+ it 'should add new keys' do
+- @doc['first_section']['third'].should == 'fourth'
++ expect(@doc['first_section']['third']).to eq('fourth')
+ end
+
+ it 'should merge in duplicate keys' do
+- @doc['first_section']['another'].should == %w( thing again )
++ expect(@doc['first_section']['another']).to eq(%w( thing again ))
+ end
+ end
+ end
+diff --git a/spec/parser/line_parsing_spec.rb b/spec/parser/line_parsing_spec.rb
+index 3183bc5..818da81 100644
+--- a/spec/parser/line_parsing_spec.rb
++++ b/spec/parser/line_parsing_spec.rb
+@@ -4,12 +4,12 @@ require 'spec_helper'
+
+ describe 'Parsing a line' do
+ it 'should strip leading whitespace and set the :indent option' do
+- IniParse::Parser.parse_line(' [section]').should \
++ expect(IniParse::Parser.parse_line(' [section]')).to \
+ be_section_tuple(:any, {:indent => ' '})
+ end
+
+ it 'should raise an error if the line could not be matched' do
+- lambda { IniParse::Parser.parse_line('invalid line') }.should \
++ expect { IniParse::Parser.parse_line('invalid line') }.to \
+ raise_error(IniParse::ParseError)
+ end
+
+@@ -17,7 +17,7 @@ describe 'Parsing a line' do
+ begin
+ # Remove last type.
+ type = IniParse::Parser.parse_types.pop
+- type.should_not_receive(:parse)
++ expect(type).not_to receive(:parse)
+ IniParse::Parser.parse_line('[section]')
+ ensure
+ IniParse::Parser.parse_types << type
+@@ -36,20 +36,20 @@ describe 'Parsing a line' do
+ end
+
+ it 'should return an option tuple' do
+- @tuple.should be_option_tuple('k', 'v')
++ expect(@tuple).to be_option_tuple('k', 'v')
+ end
+
+ it 'should set no indent, comment, offset or separator' do
+- @tuple.last[:indent].should be_nil
+- @tuple.last[:comment].should be_nil
+- @tuple.last[:comment_offset].should be_nil
+- @tuple.last[:comment_sep].should be_nil
++ expect(@tuple.last[:indent]).to be_nil
++ expect(@tuple.last[:comment]).to be_nil
++ expect(@tuple.last[:comment_offset]).to be_nil
++ expect(@tuple.last[:comment_sep]).to be_nil
+ end
+ end
+
+ describe 'with "k = a value with spaces"' do
+ it 'should return an option tuple' do
+- IniParse::Parser.parse_line('k = a value with spaces').should \
++ expect(IniParse::Parser.parse_line('k = a value with spaces')).to \
+ be_option_tuple('k', 'a value with spaces')
+ end
+ end
+@@ -60,19 +60,19 @@ describe 'Parsing a line' do
+ end
+
+ it 'should return an option tuple' do
+- @tuple.should be_option_tuple('k', 'v')
++ expect(@tuple).to be_option_tuple('k', 'v')
+ end
+
+ it 'should set the comment to "a comment"' do
+- @tuple.should be_option_tuple(:any, :any, :comment => 'a comment')
++ expect(@tuple).to be_option_tuple(:any, :any, :comment => 'a comment')
+ end
+
+ it 'should set the comment separator to ";"' do
+- @tuple.should be_option_tuple(:any, :any, :comment_sep => ';')
++ expect(@tuple).to be_option_tuple(:any, :any, :comment_sep => ';')
+ end
+
+ it 'should set the comment offset to 6' do
+- @tuple.should be_option_tuple(:any, :any, :comment_offset => 6)
++ expect(@tuple).to be_option_tuple(:any, :any, :comment_offset => 6)
+ end
+ end
+
+@@ -82,13 +82,13 @@ describe 'Parsing a line' do
+ end
+
+ it 'should return an option tuple with the correct value' do
+- @tuple.should be_option_tuple(:any, 'v;w;x y;z')
++ expect(@tuple).to be_option_tuple(:any, 'v;w;x y;z')
+ end
+
+ it 'should not set a comment' do
+- @tuple.last[:comment].should be_nil
+- @tuple.last[:comment_offset].should be_nil
+- @tuple.last[:comment_sep].should be_nil
++ expect(@tuple.last[:comment]).to be_nil
++ expect(@tuple.last[:comment_offset]).to be_nil
++ expect(@tuple.last[:comment_sep]).to be_nil
+ end
+ end
+
+@@ -98,58 +98,58 @@ describe 'Parsing a line' do
+ end
+
+ it 'should return an option tuple with the correct value' do
+- @tuple.should be_option_tuple(:any, 'v;w')
++ expect(@tuple).to be_option_tuple(:any, 'v;w')
+ end
+
+ it 'should set the comment to "a comment"' do
+- @tuple.should be_option_tuple(:any, :any, :comment => 'a comment')
++ expect(@tuple).to be_option_tuple(:any, :any, :comment => 'a comment')
+ end
+
+ it 'should set the comment separator to ";"' do
+- @tuple.should be_option_tuple(:any, :any, :comment_sep => ';')
++ expect(@tuple).to be_option_tuple(:any, :any, :comment_sep => ';')
+ end
+
+ it 'should set the comment offset to 8' do
+- @tuple.should be_option_tuple(:any, :any, :comment_offset => 8)
++ expect(@tuple).to be_option_tuple(:any, :any, :comment_offset => 8)
+ end
+ end
+
+ describe 'with "key=value"' do
+ it 'should return an option tuple with the correct key and value' do
+- IniParse::Parser.parse_line('key=value').should \
++ expect(IniParse::Parser.parse_line('key=value')).to \
+ be_option_tuple('key', 'value')
+ end
+ end
+
+ describe 'with "key= value"' do
+ it 'should return an option tuple with the correct key and value' do
+- IniParse::Parser.parse_line('key= value').should \
++ expect(IniParse::Parser.parse_line('key= value')).to \
+ be_option_tuple('key', 'value')
+ end
+ end
+
+ describe 'with "key =value"' do
+ it 'should return an option tuple with the correct key and value' do
+- IniParse::Parser.parse_line('key =value').should \
++ expect(IniParse::Parser.parse_line('key =value')).to \
+ be_option_tuple('key', 'value')
+ end
+ end
+
+ describe 'with "key = value"' do
+ it 'should return an option tuple with the correct key and value' do
+- IniParse::Parser.parse_line('key = value').should \
++ expect(IniParse::Parser.parse_line('key = value')).to \
+ be_option_tuple('key', 'value')
+ end
+ end
+
+ describe 'with "key ="' do
+ it 'should return an option tuple with the correct key' do
+- IniParse::Parser.parse_line('key =').should \
++ expect(IniParse::Parser.parse_line('key =')).to \
+ be_option_tuple('key')
+ end
+
+ it 'should set the option value to nil' do
+- IniParse::Parser.parse_line('key =').should \
++ expect(IniParse::Parser.parse_line('key =')).to \
+ be_option_tuple(:any, nil)
+ end
+ end
+@@ -157,49 +157,49 @@ describe 'Parsing a line' do
+
+ describe 'with "key = EEjDDJJjDJDJD233232=="' do
+ it 'should include the "equals" in the option value' do
+- IniParse::Parser.parse_line('key = EEjDDJJjDJDJD233232==').should \
++ expect(IniParse::Parser.parse_line('key = EEjDDJJjDJDJD233232==')).to \
+ be_option_tuple('key', 'EEjDDJJjDJDJD233232==')
+ end
+ end
+
+ describe 'with "key = ==EEjDDJJjDJDJD233232"' do
+ it 'should include the "equals" in the option value' do
+- IniParse::Parser.parse_line('key = ==EEjDDJJjDJDJD233232').should \
++ expect(IniParse::Parser.parse_line('key = ==EEjDDJJjDJDJD233232')).to \
+ be_option_tuple('key', '==EEjDDJJjDJDJD233232')
+ end
+ end
+
+ describe 'with "key.two = value"' do
+ it 'should return an option tuple with the correct key' do
+- IniParse::Parser.parse_line('key.two = value').should \
++ expect(IniParse::Parser.parse_line('key.two = value')).to \
+ be_option_tuple('key.two')
+ end
+ end
+
+ describe 'with "key/with/slashes = value"' do
+ it 'should return an option tuple with the correct key' do
+- IniParse::Parser.parse_line('key/with/slashes = value').should \
++ expect(IniParse::Parser.parse_line('key/with/slashes = value')).to \
+ be_option_tuple('key/with/slashes', 'value')
+ end
+ end
+
+ describe 'with "key_with_underscores = value"' do
+ it 'should return an option tuple with the correct key' do
+- IniParse::Parser.parse_line('key_with_underscores = value').should \
++ expect(IniParse::Parser.parse_line('key_with_underscores = value')).to \
+ be_option_tuple('key_with_underscores', 'value')
+ end
+ end
+
+ describe 'with "key-with-dashes = value"' do
+ it 'should return an option tuple with the correct key' do
+- IniParse::Parser.parse_line('key-with-dashes = value').should \
++ expect(IniParse::Parser.parse_line('key-with-dashes = value')).to \
+ be_option_tuple('key-with-dashes', 'value')
+ end
+ end
+
+ describe 'with "key with spaces = value"' do
+ it 'should return an option tuple with the correct key' do
+- IniParse::Parser.parse_line('key with spaces = value').should \
++ expect(IniParse::Parser.parse_line('key with spaces = value')).to \
+ be_option_tuple('key with spaces', 'value')
+ end
+ end
+@@ -216,27 +216,27 @@ describe 'Parsing a line' do
+ end
+
+ it 'should return a section tuple' do
+- @tuple.should be_section_tuple('section')
++ expect(@tuple).to be_section_tuple('section')
+ end
+
+ it 'should set no indent, comment, offset or separator' do
+- @tuple.last[:indent].should be_nil
+- @tuple.last[:comment].should be_nil
+- @tuple.last[:comment_offset].should be_nil
+- @tuple.last[:comment_sep].should be_nil
++ expect(@tuple.last[:indent]).to be_nil
++ expect(@tuple.last[:comment]).to be_nil
++ expect(@tuple.last[:comment_offset]).to be_nil
++ expect(@tuple.last[:comment_sep]).to be_nil
+ end
+ end
+
+ describe 'with "[section with whitespace]"' do
+ it 'should return a section tuple with the correct key' do
+- IniParse::Parser.parse_line('[section with whitespace]').should \
++ expect(IniParse::Parser.parse_line('[section with whitespace]')).to \
+ be_section_tuple('section with whitespace')
+ end
+ end
+
+ describe 'with "[ section with surounding whitespace ]"' do
+ it 'should return a section tuple with the correct key' do
+- IniParse::Parser.parse_line('[ section with surounding whitespace ]').should \
++ expect(IniParse::Parser.parse_line('[ section with surounding whitespace ]')).to \
+ be_section_tuple(' section with surounding whitespace ')
+ end
+ end
+@@ -247,19 +247,19 @@ describe 'Parsing a line' do
+ end
+
+ it 'should return a section tuple' do
+- @tuple.should be_section_tuple('section')
++ expect(@tuple).to be_section_tuple('section')
+ end
+
+ it 'should set the comment to "a comment"' do
+- @tuple.should be_section_tuple(:any, :comment => 'a comment')
++ expect(@tuple).to be_section_tuple(:any, :comment => 'a comment')
+ end
+
+ it 'should set the comment separator to ";"' do
+- @tuple.should be_section_tuple(:any, :comment_sep => ';')
++ expect(@tuple).to be_section_tuple(:any, :comment_sep => ';')
+ end
+
+ it 'should set the comment offset to 10' do
+- @tuple.should be_section_tuple(:any, :comment_offset => 10)
++ expect(@tuple).to be_section_tuple(:any, :comment_offset => 10)
+ end
+ end
+
+@@ -269,14 +269,14 @@ describe 'Parsing a line' do
+ end
+
+ it 'should return a section tuple with the correct key' do
+- @tuple.should be_section_tuple('section;with#comment;chars')
++ expect(@tuple).to be_section_tuple('section;with#comment;chars')
+ end
+
+ it 'should not set a comment' do
+- @tuple.last[:indent].should be_nil
+- @tuple.last[:comment].should be_nil
+- @tuple.last[:comment_offset].should be_nil
+- @tuple.last[:comment_sep].should be_nil
++ expect(@tuple.last[:indent]).to be_nil
++ expect(@tuple.last[:comment]).to be_nil
++ expect(@tuple.last[:comment_offset]).to be_nil
++ expect(@tuple.last[:comment_sep]).to be_nil
+ end
+ end
+
+@@ -286,19 +286,19 @@ describe 'Parsing a line' do
+ end
+
+ it 'should return a section tuple with the correct key' do
+- @tuple.should be_section_tuple('section;with#comment;chars')
++ expect(@tuple).to be_section_tuple('section;with#comment;chars')
+ end
+
+ it 'should set the comment to "a comment"' do
+- @tuple.should be_section_tuple(:any, :comment => 'a comment')
++ expect(@tuple).to be_section_tuple(:any, :comment => 'a comment')
+ end
+
+ it 'should set the comment separator to ";"' do
+- @tuple.should be_section_tuple(:any, :comment_sep => ';')
++ expect(@tuple).to be_section_tuple(:any, :comment_sep => ';')
+ end
+
+ it 'should set the comment offset to 29' do
+- @tuple.should be_section_tuple(:any, :comment_offset => 29)
++ expect(@tuple).to be_section_tuple(:any, :comment_offset => 29)
+ end
+ end
+
+@@ -314,15 +314,15 @@ describe 'Parsing a line' do
+ end
+
+ it 'should return a comment tuple with the correct comment' do
+- @tuple.should be_comment_tuple('a comment')
++ expect(@tuple).to be_comment_tuple('a comment')
+ end
+
+ it 'should set the comment separator to ";"' do
+- @tuple.should be_comment_tuple(:any, :comment_sep => ';')
++ expect(@tuple).to be_comment_tuple(:any, :comment_sep => ';')
+ end
+
+ it 'should set the comment offset to 0' do
+- @tuple.should be_comment_tuple(:any, :comment_offset => 0)
++ expect(@tuple).to be_comment_tuple(:any, :comment_offset => 0)
+ end
+ end
+
+@@ -332,15 +332,15 @@ describe 'Parsing a line' do
+ end
+
+ it 'should return a comment tuple with the correct comment' do
+- @tuple.should be_comment_tuple('a comment')
++ expect(@tuple).to be_comment_tuple('a comment')
+ end
+
+ it 'should set the comment separator to ";"' do
+- @tuple.should be_comment_tuple(:any, :comment_sep => ';')
++ expect(@tuple).to be_comment_tuple(:any, :comment_sep => ';')
+ end
+
+ it 'should set the comment offset to 1' do
+- @tuple.should be_comment_tuple(:any, :comment_offset => 1)
++ expect(@tuple).to be_comment_tuple(:any, :comment_offset => 1)
+ end
+ end
+
+@@ -350,15 +350,15 @@ describe 'Parsing a line' do
+ end
+
+ it 'should return a comment tuple with an empty value' do
+- @tuple.should be_comment_tuple('')
++ expect(@tuple).to be_comment_tuple('')
+ end
+
+ it 'should set the comment separator to ";"' do
+- @tuple.should be_comment_tuple(:any, :comment_sep => ';')
++ expect(@tuple).to be_comment_tuple(:any, :comment_sep => ';')
+ end
+
+ it 'should set the comment offset to 0' do
+- @tuple.should be_comment_tuple(:any, :comment_offset => 0)
++ expect(@tuple).to be_comment_tuple(:any, :comment_offset => 0)
+ end
+ end
+
+@@ -370,13 +370,13 @@ describe 'Parsing a line' do
+
+ describe 'with ""' do
+ it 'should return a blank tuple' do
+- IniParse::Parser.parse_line('').should be_blank_tuple
++ expect(IniParse::Parser.parse_line('')).to be_blank_tuple
+ end
+ end
+
+ describe 'with " "' do
+ it 'should return a blank tuple' do
+- IniParse::Parser.parse_line(' ').should be_blank_tuple
++ expect(IniParse::Parser.parse_line(' ')).to be_blank_tuple
+ end
+ end
+ end
+diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
+index 78e812d..891234d 100644
+--- a/spec/spec_helper.rb
++++ b/spec/spec_helper.rb
+@@ -26,7 +26,7 @@ module IniParse
+ "expected #{@expected} but got #{@target.class}"
+ end
+
+- def negative_failure_message
++ def failure_message_when_negated
+ "expected #{@expected} to not be #{@target.class}"
+ end
+
+@@ -68,7 +68,7 @@ module IniParse
+ "expected #{@expected_type} tuple #{@failure_message}"
+ end
+
+- def negative_failure_message
++ def failure_message_when_negated
+ "expected #{@tuple.inspect} to not be #{@expected_type} tuple"
+ end
+
+diff --git a/spec/spec_helper_spec.rb b/spec/spec_helper_spec.rb
+index 178db71..141c5fb 100644
+--- a/spec/spec_helper_spec.rb
++++ b/spec/spec_helper_spec.rb
+@@ -8,19 +8,19 @@ require 'spec_helper'
+
+ describe 'An empty array' do
+ it 'should not pass be_section_tuple' do
+- [].should_not be_section_tuple
++ expect([]).not_to be_section_tuple
+ end
+
+ it 'should not pass be_option_tuple' do
+- [].should_not be_option_tuple
++ expect([]).not_to be_option_tuple
+ end
+
+ it 'should not pass be_blank_tuple' do
+- [].should_not be_blank_tuple
++ expect([]).not_to be_blank_tuple
+ end
+
+ it 'should not pass be_comment_tuple' do
+- [].should_not be_comment_tuple
++ expect([]).not_to be_comment_tuple
+ end
+ end
+
+@@ -34,39 +34,39 @@ describe 'Line tuple [:section, "key", {:opt => "val"}]' do
+ before(:all) { @tuple = [:section, "key", {:opt => "val"}] }
+
+ it 'should pass be_section_tuple' do
+- @tuple.should be_section_tuple
++ expect(@tuple).to be_section_tuple
+ end
+
+ it 'should pass be_section_tuple("key")' do
+- @tuple.should be_section_tuple("key")
++ expect(@tuple).to be_section_tuple("key")
+ end
+
+ it 'should fail be_section_tuple("invalid")' do
+- @tuple.should_not be_section_tuple("invalid")
++ expect(@tuple).not_to be_section_tuple("invalid")
+ end
+
+ it 'should pass be_section_tuple("key", {:opt => "val"})' do
+- @tuple.should be_section_tuple("key", {:opt => "val"})
++ expect(@tuple).to be_section_tuple("key", {:opt => "val"})
+ end
+
+ it 'should not pass be_section_tuple("key", {:invalid => "val"})' do
+- @tuple.should_not be_section_tuple("key", {:invalid => "val"})
++ expect(@tuple).not_to be_section_tuple("key", {:invalid => "val"})
+ end
+
+ it 'should not pass be_section_tuple("key", {:opt => "invalid"})' do
+- @tuple.should_not be_section_tuple("key", {:opt => "invalid"})
++ expect(@tuple).not_to be_section_tuple("key", {:opt => "invalid"})
+ end
+
+ it 'should fail be_option_tuple' do
+- @tuple.should_not be_option_tuple
++ expect(@tuple).not_to be_option_tuple
+ end
+
+ it 'should fail be_blank_tuple' do
+- @tuple.should_not be_blank_tuple
++ expect(@tuple).not_to be_blank_tuple
+ end
+
+ it 'should fail be_comment_tuple' do
+- @tuple.should_not be_comment_tuple
++ expect(@tuple).not_to be_comment_tuple
+ end
+ end
+
+@@ -80,51 +80,51 @@ describe 'Line tuple [:option, "key", "val", {:opt => "val"}]' do
+ before(:all) { @tuple = [:option, "key", "val", {:opt => "val"}] }
+
+ it 'should fail be_section_tuple' do
+- @tuple.should_not be_section_tuple
++ expect(@tuple).not_to be_section_tuple
+ end
+
+ it 'should pass be_option_tuple' do
+- @tuple.should be_option_tuple
++ expect(@tuple).to be_option_tuple
+ end
+
+ it 'should pass be_option_tuple("key")' do
+- @tuple.should be_option_tuple("key")
++ expect(@tuple).to be_option_tuple("key")
+ end
+
+ it 'should fail be_option_tuple("invalid")' do
+- @tuple.should_not be_option_tuple("invalid")
++ expect(@tuple).not_to be_option_tuple("invalid")
+ end
+
+ it 'should pass be_option_tuple("key", "val")' do
+- @tuple.should be_option_tuple("key", "val")
++ expect(@tuple).to be_option_tuple("key", "val")
+ end
+
+ it 'should pass be_option_tuple(:any, "val")' do
+- @tuple.should be_option_tuple(:any, "val")
++ expect(@tuple).to be_option_tuple(:any, "val")
+ end
+
+ it 'should fail be_option_tuple("key", "invalid")' do
+- @tuple.should_not be_option_tuple("key", "invalid")
++ expect(@tuple).not_to be_option_tuple("key", "invalid")
+ end
+
+ it 'should pass be_option_tuple("key", "val", { :opt => "val" })' do
+- @tuple.should be_option_tuple("key", "val", { :opt => "val" })
++ expect(@tuple).to be_option_tuple("key", "val", { :opt => "val" })
+ end
+
+ it 'should fail be_option_tuple("key", "val", { :invalid => "val" })' do
+- @tuple.should_not be_option_tuple("key", "val", { :invalid => "val" })
++ expect(@tuple).not_to be_option_tuple("key", "val", { :invalid => "val" })
+ end
+
+ it 'should fail be_option_tuple("key", "val", { :opt => "invalid" })' do
+- @tuple.should_not be_option_tuple("key", "val", { :opt => "invalid" })
++ expect(@tuple).not_to be_option_tuple("key", "val", { :opt => "invalid" })
+ end
+
+ it 'should fail be_blank_tuple' do
+- @tuple.should_not be_blank_tuple
++ expect(@tuple).not_to be_blank_tuple
+ end
+
+ it 'should fail be_comment_tuple' do
+- @tuple.should_not be_comment_tuple
++ expect(@tuple).not_to be_comment_tuple
+ end
+ end
+
+@@ -138,19 +138,19 @@ describe 'Line tuple [:blank]' do
+ before(:all) { @tuple = [:blank] }
+
+ it 'should fail be_section_tuple' do
+- @tuple.should_not be_section_tuple
++ expect(@tuple).not_to be_section_tuple
+ end
+
+ it 'should fail be_option_tuple' do
+- @tuple.should_not be_option_tuple
++ expect(@tuple).not_to be_option_tuple
+ end
+
+ it 'should pass be_blank_tuple' do
+- @tuple.should be_blank_tuple
++ expect(@tuple).to be_blank_tuple
+ end
+
+ it 'should fail be_comment_tuple' do
+- @tuple.should_not be_comment_tuple
++ expect(@tuple).not_to be_comment_tuple
+ end
+ end
+
+@@ -164,38 +164,38 @@ describe 'Line tuple [:comment, "A comment", {:opt => "val"}]' do
+ before(:all) { @tuple = [:comment, "A comment", {:opt => "val"}] }
+
+ it 'should fail be_section_tuple' do
+- @tuple.should_not be_section_tuple
++ expect(@tuple).not_to be_section_tuple
+ end
+
+ it 'should fail be_option_tuple' do
+- @tuple.should_not be_option_tuple
++ expect(@tuple).not_to be_option_tuple
+ end
+
+ it 'should fail be_blank_tuple' do
+- @tuple.should_not be_blank_tuple
++ expect(@tuple).not_to be_blank_tuple
+ end
+
+ it 'should pass be_comment_tuple' do
+- @tuple.should be_comment_tuple
++ expect(@tuple).to be_comment_tuple
+ end
+
+ it 'should pass be_comment_tuple("A comment")' do
+- @tuple.should be_comment_tuple("A comment")
++ expect(@tuple).to be_comment_tuple("A comment")
+ end
+
+ it 'should fail be_comment_tuple("Invalid")' do
+- @tuple.should_not be_comment_tuple("Invalid")
++ expect(@tuple).not_to be_comment_tuple("Invalid")
+ end
+
+ it 'should pass be_comment_tuple("A comment", {:opt => "val"})' do
+- @tuple.should be_comment_tuple("A comment", {:opt => "val"})
++ expect(@tuple).to be_comment_tuple("A comment", {:opt => "val"})
+ end
+
+ it 'should fail be_comment_tuple("A comment", {:invalid => "val"})' do
+- @tuple.should_not be_comment_tuple("A comment", {:invalid => "val"})
++ expect(@tuple).not_to be_comment_tuple("A comment", {:invalid => "val"})
+ end
+
+ it 'should fail be_comment_tuple("A comment", {:opt => "invalid"})' do
+- @tuple.should_not be_comment_tuple("A comment", {:opt => "invalid"})
++ expect(@tuple).not_to be_comment_tuple("A comment", {:opt => "invalid"})
+ end
+ end
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..81be0ff
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+0001-Port-test-suite-to-RSpec-3.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-iniparse.git
More information about the Pkg-ruby-extras-commits
mailing list