diff options
Diffstat (limited to 'spec/unit/module_tool')
-rw-r--r-- | spec/unit/module_tool/applications/builder_spec.rb | 378 | ||||
-rw-r--r-- | spec/unit/module_tool/applications/uninstaller_spec.rb | 22 | ||||
-rw-r--r-- | spec/unit/module_tool/applications/unpacker_spec.rb | 40 | ||||
-rw-r--r-- | spec/unit/module_tool/applications/upgrader_spec.rb | 22 | ||||
-rw-r--r-- | spec/unit/module_tool/installed_modules_spec.rb | 49 | ||||
-rw-r--r-- | spec/unit/module_tool/metadata_spec.rb | 76 | ||||
-rw-r--r-- | spec/unit/module_tool/tar/mini_spec.rb | 3 |
7 files changed, 571 insertions, 19 deletions
diff --git a/spec/unit/module_tool/applications/builder_spec.rb b/spec/unit/module_tool/applications/builder_spec.rb index e2b63c192..291473db9 100644 --- a/spec/unit/module_tool/applications/builder_spec.rb +++ b/spec/unit/module_tool/applications/builder_spec.rb @@ -1,4 +1,5 @@ require 'spec_helper' +require 'puppet/file_system' require 'puppet/module_tool/applications' require 'puppet_spec/modules' @@ -12,6 +13,330 @@ describe Puppet::ModuleTool::Applications::Builder do let(:tarball) { File.join(path, 'pkg', release_name) + ".tar.gz" } let(:builder) { Puppet::ModuleTool::Applications::Builder.new(path) } + shared_examples "a packagable module" do + def target_exists?(file) + File.exist?(File.join(path, "pkg", "#{module_name}-#{version}", file)) + end + + def build + tarrer = mock('tarrer') + Puppet::ModuleTool::Tar.expects(:instance).returns(tarrer) + Dir.expects(:chdir).with(File.join(path, 'pkg')).yields + tarrer.expects(:pack).with(release_name, tarball) + + builder.run + end + + def create_regular_files + Puppet::FileSystem.touch(File.join(path, '.dotfile')) + Puppet::FileSystem.touch(File.join(path, 'file.foo')) + Puppet::FileSystem.touch(File.join(path, 'REVISION')) + Puppet::FileSystem.touch(File.join(path, '~file')) + Puppet::FileSystem.touch(File.join(path, '#file')) + Puppet::FileSystem.mkpath(File.join(path, 'pkg')) + Puppet::FileSystem.mkpath(File.join(path, 'coverage')) + Puppet::FileSystem.mkpath(File.join(path, 'sub')) + Puppet::FileSystem.touch(File.join(path, 'sub/.dotfile')) + Puppet::FileSystem.touch(File.join(path, 'sub/file.foo')) + Puppet::FileSystem.touch(File.join(path, 'sub/REVISION')) + Puppet::FileSystem.touch(File.join(path, 'sub/~file')) + Puppet::FileSystem.touch(File.join(path, 'sub/#file')) + Puppet::FileSystem.mkpath(File.join(path, 'sub/pkg')) + Puppet::FileSystem.mkpath(File.join(path, 'sub/coverage')) + end + + def create_symlinks + Puppet::FileSystem.touch(File.join(path, 'symlinkedfile')) + Puppet::FileSystem.symlink(File.join(path, 'symlinkedfile'), File.join(path, 'symlinkfile')) + end + + def create_ignored_files + Puppet::FileSystem.touch(File.join(path, 'gitignored.foo')) + Puppet::FileSystem.mkpath(File.join(path, 'gitdirectory/sub')) + Puppet::FileSystem.touch(File.join(path, 'gitdirectory/gitartifact')) + Puppet::FileSystem.touch(File.join(path, 'gitdirectory/gitimportantfile')) + Puppet::FileSystem.touch(File.join(path, 'gitdirectory/sub/artifact')) + Puppet::FileSystem.touch(File.join(path, 'pmtignored.foo')) + Puppet::FileSystem.mkpath(File.join(path, 'pmtdirectory/sub')) + Puppet::FileSystem.touch(File.join(path, 'pmtdirectory/pmtimportantfile')) + Puppet::FileSystem.touch(File.join(path, 'pmtdirectory/pmtartifact')) + Puppet::FileSystem.touch(File.join(path, 'pmtdirectory/sub/artifact')) + end + + def create_pmtignore_file + Puppet::FileSystem.open(File.join(path, '.pmtignore'), 0600, 'w') do |f| + f << <<-PMTIGNORE +pmtignored.* +pmtdirectory/sub/** +pmtdirectory/pmt* +!pmtimportantfile +PMTIGNORE + end + end + + def create_gitignore_file + Puppet::FileSystem.open(File.join(path, '.gitignore'), 0600, 'w') do |f| + f << <<-GITIGNORE +gitignored.* +gitdirectory/sub/** +gitdirectory/git* +!gitimportantfile +GITIGNORE + end + end + + def create_symlink_gitignore_file + Puppet::FileSystem.open(File.join(path, '.gitignore'), 0600, 'w') do |f| + f << <<-GITIGNORE +symlinkfile + GITIGNORE + end + end + + shared_examples "regular files are present" do + it "has metadata" do + expect(target_exists?('metadata.json')).to eq true + end + + it "has checksums" do + expect(target_exists?('checksums.json')).to eq true + end + + it "copies regular files" do + expect(target_exists?('file.foo')).to eq true + end + end + + shared_examples "default artifacts are removed in module dir but not in subdirs" do + it "ignores dotfiles" do + expect(target_exists?('.dotfile')).to eq false + expect(target_exists?('sub/.dotfile')).to eq true + end + + it "does not have .gitignore" do + expect(target_exists?('.gitignore')).to eq false + end + + it "does not have .pmtignore" do + expect(target_exists?('.pmtignore')).to eq false + end + + it "does not have pkg" do + expect(target_exists?('pkg')).to eq false + expect(target_exists?('sub/pkg')).to eq true + end + + it "does not have coverage" do + expect(target_exists?('coverage')).to eq false + expect(target_exists?('sub/coverage')).to eq true + end + + it "does not have REVISION" do + expect(target_exists?('REVISION')).to eq false + expect(target_exists?('sub/REVISION')).to eq true + end + + it "does not have ~files" do + expect(target_exists?('~file')).to eq false + expect(target_exists?('sub/~file')).to eq true + end + + it "does not have #files" do + expect(target_exists?('#file')).to eq false + expect(target_exists?('sub/#file')).to eq true + end + end + + shared_examples "gitignored files are present" do + it "leaves regular files" do + expect(target_exists?('gitignored.foo')).to eq true + end + + it "leaves directories" do + expect(target_exists?('gitdirectory')).to eq true + end + + it "leaves files in directories" do + expect(target_exists?('gitdirectory/gitartifact')).to eq true + end + + it "leaves exceptional files" do + expect(target_exists?('gitdirectory/gitimportantfile')).to eq true + end + + it "leaves subdirectories" do + expect(target_exists?('gitdirectory/sub')).to eq true + end + + it "leaves files in subdirectories" do + expect(target_exists?('gitdirectory/sub/artifact')).to eq true + end + end + + shared_examples "gitignored files are not present" do + it "ignores regular files" do + expect(target_exists?('gitignored.foo')).to eq false + end + + it "ignores directories" do + expect(target_exists?('gitdirectory')).to eq true + end + + it "ignores files in directories" do + expect(target_exists?('gitdirectory/gitartifact')).to eq false + end + + it "copies exceptional files" do + expect(target_exists?('gitdirectory/gitimportantfile')).to eq true + end + + it "ignores subdirectories" do + expect(target_exists?('gitdirectory/sub')).to eq false + end + + it "ignores files in subdirectories" do + expect(target_exists?('gitdirectory/sub/artifact')).to eq false + end + end + + shared_examples "pmtignored files are present" do + it "leaves regular files" do + expect(target_exists?('pmtignored.foo')).to eq true + end + + it "leaves directories" do + expect(target_exists?('pmtdirectory')).to eq true + end + + it "ignores files in directories" do + expect(target_exists?('pmtdirectory/pmtartifact')).to eq true + end + + it "leaves exceptional files" do + expect(target_exists?('pmtdirectory/pmtimportantfile')).to eq true + end + + it "leaves subdirectories" do + expect(target_exists?('pmtdirectory/sub')).to eq true + end + + it "leaves files in subdirectories" do + expect(target_exists?('pmtdirectory/sub/artifact')).to eq true + end + end + + shared_examples "pmtignored files are not present" do + it "ignores regular files" do + expect(target_exists?('pmtignored.foo')).to eq false + end + + it "ignores directories" do + expect(target_exists?('pmtdirectory')).to eq true + end + + it "copies exceptional files" do + expect(target_exists?('pmtdirectory/pmtimportantfile')).to eq true + end + + it "ignores files in directories" do + expect(target_exists?('pmtdirectory/pmtartifact')).to eq false + end + + it "ignores subdirectories" do + expect(target_exists?('pmtdirectory/sub')).to eq false + end + + it "ignores files in subdirectories" do + expect(target_exists?('pmtdirectory/sub/artifact')).to eq false + end + end + + context "with no ignore files" do + before :each do + create_regular_files + create_ignored_files + + build + end + + it_behaves_like "regular files are present" + it_behaves_like "default artifacts are removed in module dir but not in subdirs" + it_behaves_like "pmtignored files are present" + it_behaves_like "gitignored files are present" + end + + context "with .gitignore file" do + before :each do + create_regular_files + create_ignored_files + create_gitignore_file + + build + end + + it_behaves_like "regular files are present" + it_behaves_like "default artifacts are removed in module dir but not in subdirs" + it_behaves_like "pmtignored files are present" + it_behaves_like "gitignored files are not present" + end + + context "with .pmtignore file" do + before :each do + create_regular_files + create_ignored_files + create_pmtignore_file + + build + end + + it_behaves_like "regular files are present" + it_behaves_like "default artifacts are removed in module dir but not in subdirs" + it_behaves_like "gitignored files are present" + it_behaves_like "pmtignored files are not present" + end + + context "with .pmtignore and .gitignore file" do + before :each do + create_regular_files + create_ignored_files + create_pmtignore_file + create_gitignore_file + + build + end + + it_behaves_like "regular files are present" + it_behaves_like "default artifacts are removed in module dir but not in subdirs" + it_behaves_like "gitignored files are present" + it_behaves_like "pmtignored files are not present" + end + + context "with unignored symlinks", :if => Puppet.features.manages_symlinks? do + before :each do + create_regular_files + create_symlinks + create_ignored_files + end + + it "give an error about symlinks" do + expect { builder.run }.to raise_error + end + end + + context "with .gitignore file and ignored symlinks", :if => Puppet.features.manages_symlinks? do + before :each do + create_regular_files + create_symlinks + create_ignored_files + create_symlink_gitignore_file + end + + it "does not give an error about symlinks" do + expect { build }.not_to raise_error + end + end + end + context 'with metadata.json' do before :each do File.open(File.join(path, 'metadata.json'), 'w') do |f| @@ -28,16 +353,48 @@ describe Puppet::ModuleTool::Applications::Builder do end end - it "packages the module in a tarball named after the module" do - tarrer = mock('tarrer') - Puppet::ModuleTool::Tar.expects(:instance).returns(tarrer) - Dir.expects(:chdir).with(File.join(path, 'pkg')).yields - tarrer.expects(:pack).with(release_name, tarball) + it_behaves_like "a packagable module" - builder.run + it "does not package with a symlink", :if => Puppet.features.manages_symlinks? do + FileUtils.touch(File.join(path, 'tempfile')) + Puppet::FileSystem.symlink(File.join(path, 'tempfile'), File.join(path, 'tempfile2')) + + expect { + builder.run + }.to raise_error Puppet::ModuleTool::Errors::ModuleToolError, /symlinks/i + end + + it "does not package with a symlink in a subdir", :if => Puppet.features.manages_symlinks? do + FileUtils.mkdir(File.join(path, 'manifests')) + FileUtils.touch(File.join(path, 'manifests/tempfile.pp')) + Puppet::FileSystem.symlink(File.join(path, 'manifests/tempfile.pp'), File.join(path, 'manifests/tempfile2.pp')) + + expect { + builder.run + }.to raise_error Puppet::ModuleTool::Errors::ModuleToolError, /symlinks/i end end + context 'with metadata.json containing checksums' do + before :each do + File.open(File.join(path, 'metadata.json'), 'w') do |f| + f.puts({ + "name" => "#{module_name}", + "version" => "#{version}", + "source" => "http://github.com/testing/#{module_name}", + "author" => "testing", + "license" => "Apache License Version 2.0", + "summary" => "Puppet testing module", + "description" => "This module can be used for basic testing", + "project_page" => "http://github.com/testing/#{module_name}", + "checksums" => {"README.md" => "deadbeef"} + }.to_json) + end + end + + it_behaves_like "a packagable module" + end + context 'with Modulefile' do before :each do File.open(File.join(path, 'Modulefile'), 'w') do |f| @@ -54,13 +411,6 @@ MODULEFILE end end - it "packages the module in a tarball named after the module" do - tarrer = mock('tarrer') - Puppet::ModuleTool::Tar.expects(:instance).returns(tarrer) - Dir.expects(:chdir).with(File.join(path, 'pkg')).yields - tarrer.expects(:pack).with(release_name, tarball) - - builder.run - end + it_behaves_like "a packagable module" end end diff --git a/spec/unit/module_tool/applications/uninstaller_spec.rb b/spec/unit/module_tool/applications/uninstaller_spec.rb index 2a8562ab9..66e71b638 100644 --- a/spec/unit/module_tool/applications/uninstaller_spec.rb +++ b/spec/unit/module_tool/applications/uninstaller_spec.rb @@ -113,6 +113,28 @@ describe Puppet::ModuleTool::Applications::Uninstaller do end end + context 'with --ignore-changes' do + def options + super.merge(:ignore_changes => true) + end + + context 'with local changes' do + before do + mark_changed(File.join(primary_dir, 'stdlib')) + end + + it 'overwrites the installed module with the greatest version matching that range' do + subject.should include :result => :success + end + end + + context 'without local changes' do + it 'overwrites the installed module with the greatest version matching that range' do + subject.should include :result => :success + end + end + end + context "when using the --force flag" do def options diff --git a/spec/unit/module_tool/applications/unpacker_spec.rb b/spec/unit/module_tool/applications/unpacker_spec.rb index 39b0c261f..81557df99 100644 --- a/spec/unit/module_tool/applications/unpacker_spec.rb +++ b/spec/unit/module_tool/applications/unpacker_spec.rb @@ -2,6 +2,7 @@ require 'spec_helper' require 'json' require 'puppet/module_tool/applications' +require 'puppet/file_system' require 'puppet_spec/modules' describe Puppet::ModuleTool::Applications::Unpacker do @@ -31,4 +32,43 @@ describe Puppet::ModuleTool::Applications::Unpacker do Puppet::ModuleTool::Applications::Unpacker.run(filename, :target_dir => target) File.should be_directory(File.join(target, 'mytarball')) end + + it "should warn about symlinks", :if => Puppet.features.manages_symlinks? do + untar = mock('Tar') + untar.expects(:unpack).with(filename, anything()) do |src, dest, _| + FileUtils.mkdir(File.join(dest, 'extractedmodule')) + File.open(File.join(dest, 'extractedmodule', 'metadata.json'), 'w+') do |file| + file.puts JSON.generate('name' => module_name, 'version' => '1.0.0') + end + FileUtils.touch(File.join(dest, 'extractedmodule/tempfile')) + Puppet::FileSystem.symlink(File.join(dest, 'extractedmodule/tempfile'), File.join(dest, 'extractedmodule/tempfile2')) + true + end + + Puppet::ModuleTool::Tar.expects(:instance).returns(untar) + Puppet.expects(:warning).with(regexp_matches(/symlinks/i)) + + Puppet::ModuleTool::Applications::Unpacker.run(filename, :target_dir => target) + File.should be_directory(File.join(target, 'mytarball')) + end + + it "should warn about symlinks in subdirectories", :if => Puppet.features.manages_symlinks? do + untar = mock('Tar') + untar.expects(:unpack).with(filename, anything()) do |src, dest, _| + FileUtils.mkdir(File.join(dest, 'extractedmodule')) + File.open(File.join(dest, 'extractedmodule', 'metadata.json'), 'w+') do |file| + file.puts JSON.generate('name' => module_name, 'version' => '1.0.0') + end + FileUtils.mkdir(File.join(dest, 'extractedmodule/manifests')) + FileUtils.touch(File.join(dest, 'extractedmodule/manifests/tempfile')) + Puppet::FileSystem.symlink(File.join(dest, 'extractedmodule/manifests/tempfile'), File.join(dest, 'extractedmodule/manifests/tempfile2')) + true + end + + Puppet::ModuleTool::Tar.expects(:instance).returns(untar) + Puppet.expects(:warning).with(regexp_matches(/symlinks/i)) + + Puppet::ModuleTool::Applications::Unpacker.run(filename, :target_dir => target) + File.should be_directory(File.join(target, 'mytarball')) + end end diff --git a/spec/unit/module_tool/applications/upgrader_spec.rb b/spec/unit/module_tool/applications/upgrader_spec.rb index 44627f94f..382e45a75 100644 --- a/spec/unit/module_tool/applications/upgrader_spec.rb +++ b/spec/unit/module_tool/applications/upgrader_spec.rb @@ -52,6 +52,16 @@ describe Puppet::ModuleTool::Applications::Upgrader do end context 'for an installed module' do + context 'with only one version' do + before { preinstall('puppetlabs-oneversion', '0.0.1') } + let(:module) { 'puppetlabs-oneversion' } + + it 'declines to upgrade' do + subject.should include :result => :noop + subject[:error][:multiline].should =~ /already the latest version/ + end + end + context 'without dependencies' do before { preinstall('pmtacceptance-stdlib', '1.0.0') } @@ -90,6 +100,7 @@ describe Puppet::ModuleTool::Applications::Upgrader do context 'without options' do it 'declines to upgrade' do subject.should include :result => :noop + subject[:error][:multiline].should =~ /already the latest version/ end end @@ -165,6 +176,17 @@ describe Puppet::ModuleTool::Applications::Upgrader do subject.should include :result => :failure subject[:error].should include :oneline => "Could not upgrade '#{self.module}'; module has had changes made locally" end + + context 'with --ignore-changes' do + def options + super.merge(:ignore_changes => true) + end + + it 'overwrites the installed module with the greatest version matching that range' do + subject.should include :result => :success + graph_should_include 'pmtacceptance-stdlib', v('1.0.0') => v('4.1.0') + end + end end context 'with dependencies' do diff --git a/spec/unit/module_tool/installed_modules_spec.rb b/spec/unit/module_tool/installed_modules_spec.rb new file mode 100644 index 000000000..b9492d986 --- /dev/null +++ b/spec/unit/module_tool/installed_modules_spec.rb @@ -0,0 +1,49 @@ +require 'spec_helper' +require 'puppet/module_tool/installed_modules' +require 'puppet_spec/modules' + +describe Puppet::ModuleTool::InstalledModules do + include PuppetSpec::Files + + around do |example| + dir = tmpdir("deep_path") + + FileUtils.mkdir_p(@modpath = File.join(dir, "modpath")) + + @env = Puppet::Node::Environment.create(:env, [@modpath]) + Puppet.override(:current_environment => @env) do + example.run + end + end + + it 'works when given a semantic version' do + mod = PuppetSpec::Modules.create('goodsemver', @modpath, :metadata => {:version => '1.2.3'}) + installed = described_class.new(@env) + expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq(Semantic::Version.parse('1.2.3')) + end + + it 'defaults when not given a semantic version' do + mod = PuppetSpec::Modules.create('badsemver', @modpath, :metadata => {:version => 'banana'}) + Puppet.expects(:warning).with(regexp_matches(/Semantic Version/)) + installed = described_class.new(@env) + expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq(Semantic::Version.parse('0.0.0')) + end + + it 'defaults when not given a full semantic version' do + mod = PuppetSpec::Modules.create('badsemver', @modpath, :metadata => {:version => '1.2'}) + Puppet.expects(:warning).with(regexp_matches(/Semantic Version/)) + installed = described_class.new(@env) + expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq(Semantic::Version.parse('0.0.0')) + end + + it 'still works if there is an invalid version in one of the modules' do + mod1 = PuppetSpec::Modules.create('badsemver', @modpath, :metadata => {:version => 'banana'}) + mod2 = PuppetSpec::Modules.create('goodsemver', @modpath, :metadata => {:version => '1.2.3'}) + mod3 = PuppetSpec::Modules.create('notquitesemver', @modpath, :metadata => {:version => '1.2'}) + Puppet.expects(:warning).with(regexp_matches(/Semantic Version/)).twice + installed = described_class.new(@env) + expect(installed.modules["puppetlabs-#{mod1.name}"].version).to eq(Semantic::Version.parse('0.0.0')) + expect(installed.modules["puppetlabs-#{mod2.name}"].version).to eq(Semantic::Version.parse('1.2.3')) + expect(installed.modules["puppetlabs-#{mod3.name}"].version).to eq(Semantic::Version.parse('0.0.0')) + end +end diff --git a/spec/unit/module_tool/metadata_spec.rb b/spec/unit/module_tool/metadata_spec.rb index 3b925c644..fce9c8f8d 100644 --- a/spec/unit/module_tool/metadata_spec.rb +++ b/spec/unit/module_tool/metadata_spec.rb @@ -5,6 +5,19 @@ describe Puppet::ModuleTool::Metadata do let(:data) { {} } let(:metadata) { Puppet::ModuleTool::Metadata.new } + describe 'property lookups' do + subject { metadata } + + %w[ name version author summary license source project_page issues_url + dependencies dashed_name release_name description ].each do |prop| + describe "##{prop}" do + it "responds to the property" do + subject.send(prop) + end + end + end + end + describe "#update" do subject { metadata.update(data) } @@ -156,6 +169,61 @@ describe Puppet::ModuleTool::Metadata do end + context "with a valid dependency" do + let(:data) { {'dependencies' => [{'name' => 'puppetlabs-goodmodule'}] }} + + it "adds the dependency" do + subject.dependencies.size.should == 1 + end + end + + context "with a invalid dependency name" do + let(:data) { {'dependencies' => [{'name' => 'puppetlabsbadmodule'}] }} + + it "raises an exception" do + expect { subject }.to raise_error(ArgumentError) + end + end + + context "with a valid dependency version range" do + let(:data) { {'dependencies' => [{'name' => 'puppetlabs-badmodule', 'version_requirement' => '>= 2.0.0'}] }} + + it "adds the dependency" do + subject.dependencies.size.should == 1 + end + end + + context "with a invalid version range" do + let(:data) { {'dependencies' => [{'name' => 'puppetlabsbadmodule', 'version_requirement' => '>= banana'}] }} + + it "raises an exception" do + expect { subject }.to raise_error(ArgumentError) + end + end + + context "with duplicate dependencies" do + let(:data) { {'dependencies' => [{'name' => 'puppetlabs-dupmodule', 'version_requirement' => '1.0.0'}, + {'name' => 'puppetlabs-dupmodule', 'version_requirement' => '0.0.1'}] } + } + + it "raises an exception" do + expect { subject }.to raise_error(ArgumentError) + end + end + + context "adding a duplicate dependency" do + let(:data) { {'dependencies' => [{'name' => 'puppetlabs-origmodule', 'version_requirement' => '1.0.0'}] }} + + it "with a different version raises an exception" do + metadata.add_dependency('puppetlabs-origmodule', '>= 0.0.1') + expect { subject }.to raise_error(ArgumentError) + end + + it "with the same version does not add another dependency" do + metadata.add_dependency('puppetlabs-origmodule', '1.0.0') + subject.dependencies.size.should == 1 + end + end end describe '#dashed_name' do @@ -202,8 +270,8 @@ describe Puppet::ModuleTool::Metadata do describe "#to_hash" do subject { metadata.to_hash } - its(:keys) do - subject.sort.should == %w[ name version author summary license source issues_url project_page dependencies ].sort + it "contains the default set of keys" do + subject.keys.sort.should == %w[ name version author summary license source issues_url project_page dependencies ].sort end describe "['license']" do @@ -213,8 +281,8 @@ describe Puppet::ModuleTool::Metadata do end describe "['dependencies']" do - it "defaults to an empty Array" do - subject['dependencies'].should == [] + it "defaults to an empty set" do + subject['dependencies'].should == Set.new end end diff --git a/spec/unit/module_tool/tar/mini_spec.rb b/spec/unit/module_tool/tar/mini_spec.rb index ef030611b..179952741 100644 --- a/spec/unit/module_tool/tar/mini_spec.rb +++ b/spec/unit/module_tool/tar/mini_spec.rb @@ -54,6 +54,7 @@ describe Puppet::ModuleTool::Tar::Mini, :if => (Puppet.features.minitar? and Pup reader = mock('GzipReader') Zlib::GzipReader.expects(:open).with(sourcefile).yields(reader) - Archive::Tar::Minitar.expects(:unpack).with(reader, destdir).yields(type, name, nil) + minitar.expects(:find_valid_files).with(reader).returns([name]) + Archive::Tar::Minitar.expects(:unpack).with(reader, destdir, [name]).yields(type, name, nil) end end |