Add missing new files from commit 131e09855e06
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / spec / unit / puppet / provider / file_line / ruby_spec_use_cases.rb
diff --git a/3rdparty/modules/stdlib/spec/unit/puppet/provider/file_line/ruby_spec_use_cases.rb b/3rdparty/modules/stdlib/spec/unit/puppet/provider/file_line/ruby_spec_use_cases.rb
new file mode 100644 (file)
index 0000000..5114dec
--- /dev/null
@@ -0,0 +1,135 @@
+require 'spec_helper'
+
+provider_class = Puppet::Type.type(:file_line).provider(:ruby)
+#  These tests fail on windows when run as part of the rake task. Individually they pass
+describe provider_class, :unless => Puppet::Util::Platform.windows? do
+  include PuppetlabsSpec::Files
+
+  let :tmpfile do
+    tmpfilename('file_line_test')
+  end
+  let :content do
+    ''
+  end
+  let :params do
+    {}
+  end
+  let :resource do
+    Puppet::Type::File_line.new({
+      :name => 'foo',
+      :path => tmpfile,
+      :line => 'foo',
+    }.merge(params))
+  end
+  let :provider do
+    provider_class.new(resource)
+  end
+
+  before :each do
+    File.open(tmpfile, 'w') do |fh|
+      fh.write(content)
+    end
+  end
+
+  describe 'customer use cases - no lines' do
+    describe 'MODULES-5003' do
+      let(:params) do
+        {
+          :line => "*\thard\tcore\t0",
+          :match => "^[ \t]*\\*[ \t]+hard[ \t]+core[ \t]+.*",
+          :multiple => true,
+        }
+      end
+      let(:content) { "*       hard    core    90\n*   hard    core    10\n" }
+
+      it 'requests changes' do
+        expect(provider).not_to be_exists
+      end
+      it 'replaces the matches' do
+        provider.create
+        expect(File.read(tmpfile).chomp).to eq("*      hard    core    0\n*    hard    core    0")
+      end
+    end
+
+    describe 'MODULES-5003 - one match, one line - just ensure the line exists' do
+      let(:params) do
+        {
+          :line => "*\thard\tcore\t0",
+          :match => "^[ \t]*\\*[ \t]+hard[ \t]+core[ \t]+.*",
+          :multiple => true,
+        }
+      end
+      let(:content) { "*       hard    core    90\n*   hard    core    0\n" }
+
+      it 'does not request changes' do
+        expect(provider).to be_exists
+      end
+    end
+
+    describe 'MODULES-5003 - one match, one line - replace all matches, even when line exists' do
+      let(:params) do
+        {
+          :line => "*\thard\tcore\t0",
+          :match => "^[ \t]*\\*[ \t]+hard[ \t]+core[ \t]+.*",
+          :multiple => true,
+
+        }.merge(:replace_all_matches_not_matching_line => true)
+      end
+      let(:content) { "*       hard    core    90\n*   hard    core    0\n" }
+
+      it 'requests changes' do
+        expect(provider).not_to be_exists
+      end
+      it 'replaces the matches' do
+        provider.create
+        expect(File.read(tmpfile).chomp).to eq("*      hard    core    0\n*    hard    core    0")
+      end
+    end
+
+    describe 'MODULES-5651 - match, no line' do
+      let(:params) do
+        {
+          :line => 'LogLevel=notice',
+          :match => '^#LogLevel$',
+        }
+      end
+      let(:content) { "#LogLevel\nstuff" }
+
+      it 'requests changes' do
+        expect(provider).not_to be_exists
+      end
+      it 'replaces the match' do
+        provider.create
+        expect(File.read(tmpfile).chomp).to eq("LogLevel=notice\nstuff")
+      end
+    end
+
+    describe 'MODULES-5651 - match, line' do
+      let(:params) do
+        {
+          :line => 'LogLevel=notice',
+          :match => '^#LogLevel$',
+        }
+      end
+      let(:content) { "#Loglevel\nLogLevel=notice\nstuff" }
+
+      it 'does not request changes' do
+        expect(provider).to be_exists
+      end
+    end
+
+    describe 'MODULES-5651 - no match, line' do
+      let(:params) do
+        {
+          :line => 'LogLevel=notice',
+          :match => '^#LogLevel$',
+        }
+      end
+      let(:content) { "LogLevel=notice\nstuff" }
+
+      it 'does not request changes' do
+        expect(provider).to be_exists
+      end
+    end
+  end
+end