diff options
Diffstat (limited to 'spec/unit/module_tool/installed_modules_spec.rb')
-rw-r--r-- | spec/unit/module_tool/installed_modules_spec.rb | 49 |
1 files changed, 49 insertions, 0 deletions
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 |