Update stdlib and concat to 6.1.0 both
[mirror/dsa-puppet.git] / 3rdparty / modules / concat / spec / acceptance / fragment_source_spec.rb
index b208979..614bd96 100644 (file)
 require 'spec_helper_acceptance'
 
-case fact('osfamily')
-  when 'AIX'
-    username = 'root'
-    groupname = 'system'
-  when 'Darwin'
-    username = 'root'
-    groupname = 'wheel'
-  when 'windows'
-    username = 'Administrator'
-    groupname = 'Administrators'
-  else
-    username = 'root'
-    groupname = 'root'
+case os[:family]
+when 'aix'
+  username = 'root'
+  groupname = 'system'
+when 'darwin'
+  username = 'root'
+  groupname = 'wheel'
+when 'windows'
+  username = 'Administrator'
+  groupname = 'Administrators'
+else
+  username = 'root'
+  groupname = 'root'
 end
 
 describe 'concat::fragment source' do
-  basedir = default.tmpdir('concat')
-  context 'should read file fragments from local system' do
-    pp = <<-EOS
-      file { '#{basedir}/file1':
-        content => "file1 contents\n"
-      }
-      file { '#{basedir}/file2':
-        content => "file2 contents\n"
-      }
-      concat { '#{basedir}/foo': }
+  before(:all) do
+    @basedir = setup_test_directory
+  end
 
-      concat::fragment { '1':
-        target  => '#{basedir}/foo',
-        source  => '#{basedir}/file1',
-        require => File['#{basedir}/file1'],
-      }
-      concat::fragment { '2':
-        target  => '#{basedir}/foo',
-        content => 'string1 contents',
-      }
-      concat::fragment { '3':
-        target  => '#{basedir}/foo',
-        source  => '#{basedir}/file2',
-        require => File['#{basedir}/file2'],
-      }
-    EOS
+  describe 'when run should read file fragments from local system' do
+    let(:pp) do
+      <<-MANIFEST
+        file { '#{@basedir}/file1':
+          content => "file1 contents\n"
+        }
+        file { '#{@basedir}/file2':
+          content => "file2 contents\n"
+        }
+        concat { '#{@basedir}/foo': }
 
-    it 'applies the manifest twice with no stderr' do
-      apply_manifest(pp, :catch_failures => true)
-      apply_manifest(pp, :catch_changes => true)
+        concat::fragment { '1':
+          target  => '#{@basedir}/foo',
+          source  => '#{@basedir}/file1',
+          require => File['#{@basedir}/file1'],
+        }
+        concat::fragment { '2':
+          target  => '#{@basedir}/foo',
+          content => 'string1 contents',
+        }
+        concat::fragment { '3':
+          target  => '#{@basedir}/foo',
+          source  => '#{@basedir}/file2',
+          require => File['#{@basedir}/file2'],
+        }
+      MANIFEST
     end
 
-    describe file("#{basedir}/foo") do
-      it { should be_file }
-      its(:content) {
-        should match 'file1 contents'
-        should match 'string1 contents'
-        should match 'file2 contents'
-      }
+    it 'idempotent, file matches' do
+      idempotent_apply(pp)
+      expect(file("#{@basedir}/foo")).to be_file
+      expect(file("#{@basedir}/foo").content).to match 'file1 contents'
+      expect(file("#{@basedir}/foo").content).to match 'file2 contents'
     end
-  end # should read file fragments from local system
-
-  context 'should create files containing first match only.' do
-    pp = <<-EOS
-      file { '#{basedir}/file1':
-        content => "file1 contents\n"
-      }
-      file { '#{basedir}/file2':
-        content => "file2 contents\n"
-      }
-      concat { '#{basedir}/result_file1':
-        owner   => '#{username}',
-        group   => '#{groupname}',
-        mode    => '0644',
-      }
-      concat { '#{basedir}/result_file2':
-        owner   => '#{username}',
-        group   => '#{groupname}',
-        mode    => '0644',
-      }
-      concat { '#{basedir}/result_file3':
-        owner   => '#{username}',
-        group   => '#{groupname}',
-        mode    => '0644',
-      }
+  end
 
-      concat::fragment { '1':
-        target  => '#{basedir}/result_file1',
-        source  => [ '#{basedir}/file1', '#{basedir}/file2' ],
-        require => [ File['#{basedir}/file1'], File['#{basedir}/file2'] ],
-        order   => '01',
-      }
-      concat::fragment { '2':
-        target  => '#{basedir}/result_file2',
-        source  => [ '#{basedir}/file2', '#{basedir}/file1' ],
-        require => [ File['#{basedir}/file1'], File['#{basedir}/file2'] ],
-        order   => '01',
-      }
-      concat::fragment { '3':
-        target  => '#{basedir}/result_file3',
-        source  => [ '#{basedir}/file1', '#{basedir}/file2' ],
-        require => [ File['#{basedir}/file1'], File['#{basedir}/file2'] ],
-        order   => '01',
-      }
-    EOS
+  describe 'when run should create files containing first match only.' do
+    let(:pp) do
+      <<-MANIFEST
+        file { '#{@basedir}/file1':
+          content => "file1 contents\n"
+        }
+        file { '#{@basedir}/file2':
+          content => "file2 contents\n"
+        }
+        concat { '#{@basedir}/result_file1':
+          owner   => '#{username}',
+          group   => '#{groupname}',
+          mode    => '0644',
+        }
+        concat { '#{@basedir}/result_file2':
+          owner   => '#{username}',
+          group   => '#{groupname}',
+          mode    => '0644',
+        }
+        concat { '#{@basedir}/result_file3':
+          owner   => '#{username}',
+          group   => '#{groupname}',
+          mode    => '0644',
+        }
 
-    it 'applies the manifest twice with no stderr' do
-      apply_manifest(pp, :catch_failures => true)
-      apply_manifest(pp, :catch_changes => true)
+        concat::fragment { '1':
+          target  => '#{@basedir}/result_file1',
+          source  => [ '#{@basedir}/file1', '#{@basedir}/file2' ],
+          require => [ File['#{@basedir}/file1'], File['#{@basedir}/file2'] ],
+          order   => '01',
+        }
+        concat::fragment { '2':
+          target  => '#{@basedir}/result_file2',
+          source  => [ '#{@basedir}/file2', '#{@basedir}/file1' ],
+          require => [ File['#{@basedir}/file1'], File['#{@basedir}/file2'] ],
+          order   => '01',
+        }
+        concat::fragment { '3':
+          target  => '#{@basedir}/result_file3',
+          source  => [ '#{@basedir}/file1', '#{@basedir}/file2' ],
+          require => [ File['#{@basedir}/file1'], File['#{@basedir}/file2'] ],
+          order   => '01',
+        }
+      MANIFEST
     end
-    describe file("#{basedir}/result_file1") do
-      it { should be_file }
-      its(:content) {
-        should match 'file1 contents'
-        should_not match 'file2 contents'
-      }
-    end
-    describe file("#{basedir}/result_file2") do
-      it { should be_file }
-      its(:content) {
-        should match 'file2 contents'
-        should_not match 'file1 contents'
-      }
-    end
-    describe file("#{basedir}/result_file3") do
-      it { should be_file }
-      its(:content) {
-        should match 'file1 contents'
-        should_not match 'file2 contents'
-      }
+
+    it 'idempotent, files match' do
+      idempotent_apply(pp)
+      expect(file("#{@basedir}/result_file1")).to be_file
+      expect(file("#{@basedir}/result_file1").content).to match 'file1 contents'
+      expect(file("#{@basedir}/result_file1").content).not_to match 'file2 contents'
+
+      expect(file("#{@basedir}/result_file2")).to be_file
+      expect(file("#{@basedir}/result_file2").content).to match 'file2 contents'
+      expect(file("#{@basedir}/result_file2").content).not_to match 'file1 contents'
+
+      expect(file("#{@basedir}/result_file3")).to be_file
+      expect(file("#{@basedir}/result_file3").content).to match 'file1 contents'
+      expect(file("#{@basedir}/result_file3").content).not_to match 'file2 contents'
     end
   end
 
-  context 'should fail if no match on source.' do
-    pp = <<-EOS
-      concat { '#{basedir}/fail_no_source':
-        owner   => '#{username}',
-        group   => '#{groupname}',
-        mode    => '0644',
-      }
+  describe 'when run should fail if no match on source.' do
+    let(:pp) do
+      <<-MANIFEST
+        concat { '#{@basedir}/fail_no_source':
+          owner   => '#{username}',
+          group   => '#{groupname}',
+          mode    => '0644',
+        }
 
-      concat::fragment { '1':
-        target  => '#{basedir}/fail_no_source',
-        source => [ '#{basedir}/nofilehere', '#{basedir}/nothereeither' ],
-        order   => '01',
-      }
-    EOS
+        concat::fragment { '1':
+          target  => '#{@basedir}/fail_no_source',
+          source => [ '#{@basedir}/nofilehere', '#{@basedir}/nothereeither' ],
+          order   => '01',
+        }
+      MANIFEST
+    end
 
     it 'applies the manifest with resource failures' do
-      expect(apply_manifest(pp, :catch_failures => true).stderr).to match(/Failed to generate additional resources using 'eval_generate'/)
-    end
-    describe file("#{basedir}/fail_no_source") do
-      #FIXME: Serverspec::Type::File doesn't support exists? for some reason. so... hack.
-      it { should_not be_directory }
+      expect(apply_manifest(pp, expect_failures: true).stderr).to match(%r{Failed to generate additional resources using 'eval_generate'})
+      expect(file("#{@basedir}/fail_no_source")).not_to be_directory
     end
   end
 end
-