summaryrefslogtreecommitdiff
path: root/spec/unit/module_tool/installed_modules_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/module_tool/installed_modules_spec.rb')
-rw-r--r--spec/unit/module_tool/installed_modules_spec.rb49
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