summaryrefslogtreecommitdiff
path: root/spec/acceptance
diff options
context:
space:
mode:
Diffstat (limited to 'spec/acceptance')
-rw-r--r--spec/acceptance/beaker_helper.rb12
-rw-r--r--spec/acceptance/modules_660_spec.rb89
2 files changed, 96 insertions, 5 deletions
diff --git a/spec/acceptance/beaker_helper.rb b/spec/acceptance/beaker_helper.rb
index 05aa4e7..592b15d 100644
--- a/spec/acceptance/beaker_helper.rb
+++ b/spec/acceptance/beaker_helper.rb
@@ -12,11 +12,13 @@ test_name "Installing Puppet and vcsrepo module" do
end
step 'Ensure we can install our module' do
- # We ask the host to interpolate it's distmoduledir because we don't
- # actually know it on Windows until we've let it redirect us (depending
- # on whether we're running as a 32/64 bit process on 32/64 bit Windows
- moduledir = on(host, "echo #{host['distmoduledir']}").stdout.chomp
- on host, "mkdir -p #{moduledir}"
+ hosts.each do |host|
+ # We ask the host to interpolate it's distmoduledir because we don't
+ # actually know it on Windows until we've let it redirect us (depending
+ # on whether we're running as a 32/64 bit process on 32/64 bit Windows
+ moduledir = on(host, "echo #{host['distmoduledir']}").stdout.chomp
+ on host, "mkdir -p #{moduledir}"
+ end
end
step 'install module' do
diff --git a/spec/acceptance/modules_660_spec.rb b/spec/acceptance/modules_660_spec.rb
new file mode 100644
index 0000000..c45aa28
--- /dev/null
+++ b/spec/acceptance/modules_660_spec.rb
@@ -0,0 +1,89 @@
+require 'spec_helper_acceptance'
+
+tmpdir = default.tmpdir('vcsrepo')
+
+describe 'MODULES-660' do
+ before(:all) do
+ # Create testrepo.git
+ my_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
+ shell("mkdir -p #{tmpdir}") # win test
+ scp_to(default, "#{my_root}/acceptance/files/create_git_repo.sh", tmpdir)
+ shell("cd #{tmpdir} && ./create_git_repo.sh")
+
+ # Configure testrepo.git as upstream of testrepo
+ pp = <<-EOS
+ vcsrepo { "#{tmpdir}/testrepo":
+ ensure => present,
+ provider => git,
+ revision => 'a_branch',
+ source => "file://#{tmpdir}/testrepo.git",
+ }
+ EOS
+ apply_manifest(pp, :catch_failures => true)
+ end
+
+ after(:all) do
+ shell("rm -rf #{tmpdir}/testrepo.git")
+ end
+
+ shared_examples 'switch to branch/tag/sha' do
+ it 'pulls the new branch commits' do
+ pp = <<-EOS
+ vcsrepo { "#{tmpdir}/testrepo":
+ ensure => latest,
+ provider => git,
+ revision => 'a_branch',
+ source => "file://#{tmpdir}/testrepo.git",
+ }
+ EOS
+ apply_manifest(pp, :expect_changes => true)
+ apply_manifest(pp, :catch_changes => true)
+ end
+ it 'checks out the tag' do
+ pp = <<-EOS
+ vcsrepo { "#{tmpdir}/testrepo":
+ ensure => latest,
+ provider => git,
+ revision => '0.0.3',
+ source => "file://#{tmpdir}/testrepo.git",
+ }
+ EOS
+ apply_manifest(pp, :expect_changes => true)
+ apply_manifest(pp, :catch_changes => true)
+ end
+ it 'checks out the sha' do
+ sha = shell("cd #{tmpdir}/testrepo && git rev-parse origin/master").stdout.chomp
+ pp = <<-EOS
+ vcsrepo { "#{tmpdir}/testrepo":
+ ensure => latest,
+ provider => git,
+ revision => '#{sha}',
+ source => "file://#{tmpdir}/testrepo.git",
+ }
+ EOS
+ apply_manifest(pp, :expect_changes => true)
+ apply_manifest(pp, :catch_changes => true)
+ end
+ end
+
+ context 'on branch' do
+ before :each do
+ shell("cd #{tmpdir}/testrepo && git checkout a_branch")
+ shell("cd #{tmpdir}/testrepo && git reset --hard 0.0.2")
+ end
+ it_behaves_like 'switch to branch/tag/sha'
+ end
+ context 'on tag' do
+ before :each do
+ shell("cd #{tmpdir}/testrepo && git checkout 0.0.1")
+ end
+ it_behaves_like 'switch to branch/tag/sha'
+ end
+ context 'on detached head' do
+ before :each do
+ shell("cd #{tmpdir}/testrepo && git checkout 0.0.2")
+ shell("cd #{tmpdir}/testrepo && git checkout HEAD~1")
+ end
+ it_behaves_like 'switch to branch/tag/sha'
+ end
+end