Add beaker tests for git clone
authorJohn Duarte <john.duarte@puppetlabs.com>
Fri, 9 May 2014 18:13:40 +0000 (11:13 -0700)
committerJohn Duarte <john.duarte@puppetlabs.com>
Sun, 18 May 2014 18:38:18 +0000 (11:38 -0700)
spec/acceptance/beaker/clone/clone_over_different_exiting_repo_with_force.rb [new file with mode: 0644]
spec/acceptance/beaker/clone/clone_repo_with_excludes_in_repo.rb [new file with mode: 0644]
spec/acceptance/beaker/clone/clone_repo_with_excludes_not_in_repo.rb [new file with mode: 0644]
spec/acceptance/beaker/clone/negative/clone_over_different_exiting_repo.rb [new file with mode: 0644]
spec/acceptance/beaker/clone/negative/clone_repo_with_hostile_excludes.rb [new file with mode: 0644]

diff --git a/spec/acceptance/beaker/clone/clone_over_different_exiting_repo_with_force.rb b/spec/acceptance/beaker/clone/clone_over_different_exiting_repo_with_force.rb
new file mode 100644 (file)
index 0000000..2d755fc
--- /dev/null
@@ -0,0 +1,44 @@
+test_name 'C3511 - clone over an existing repo with force'
+
+# Globals
+repo_name = 'testrepo_already_exists'
+
+hosts.each do |host|
+  tmpdir = host.tmpdir('vcsrepo')
+  step 'setup - create repo' do
+    install_package(host, 'git')
+    my_root = File.expand_path(File.join(File.dirname(__FILE__), '../../..'))
+    scp_to(host, "#{my_root}/acceptance/files/create_git_repo.sh", tmpdir)
+    on(host, "cd #{tmpdir} && ./create_git_repo.sh")
+    on(host, "mkdir #{tmpdir}/#{repo_name}")
+    on(host, "cd #{tmpdir}/#{repo_name} && git init")
+    on(host, "cd #{tmpdir}/#{repo_name} && touch a && git add a && git commit -m 'a'")
+  end
+
+  teardown do
+    on(host, "rm -fr #{tmpdir}")
+  end
+
+  step 'clone over existing repo with force using puppet' do
+    on(host, "cd #{tmpdir}/#{repo_name} && git log --pretty=format:\"%h\"") do |res|
+      @existing_sha = res.stdout
+    end
+    pp = <<-EOS
+    vcsrepo { "#{tmpdir}/#{repo_name}":
+      ensure => present,
+      source => "file://#{tmpdir}/testrepo.git",
+      provider => git,
+      force => true,
+    }
+    EOS
+
+    apply_manifest_on(host, pp)
+  end
+
+  step 'verify new repo has replaced old one' do
+    on(host, "cd #{tmpdir}/#{repo_name} && git log --pretty=format:\"%h\"") do |res|
+      fail_test('original repo not replaced by force') if res.stdout.include? "#{@existing_sha}"
+    end
+  end
+
+end
diff --git a/spec/acceptance/beaker/clone/clone_repo_with_excludes_in_repo.rb b/spec/acceptance/beaker/clone/clone_repo_with_excludes_in_repo.rb
new file mode 100644 (file)
index 0000000..1252e3b
--- /dev/null
@@ -0,0 +1,42 @@
+test_name 'C3507 - clone repo with excludes in repo'
+
+# Globals
+repo_name = 'testrepo_with_excludes_in_repo'
+exclude1 = 'file1.txt'
+exclude2 ='file2.txt'
+
+hosts.each do |host|
+  tmpdir = host.tmpdir('vcsrepo')
+  step 'setup - create repo' do
+    install_package(host, 'git')
+    my_root = File.expand_path(File.join(File.dirname(__FILE__), '../../..'))
+    scp_to(host, "#{my_root}/acceptance/files/create_git_repo.sh", tmpdir)
+    on(host, "cd #{tmpdir} && ./create_git_repo.sh")
+  end
+
+  teardown do
+    on(host, "rm -fr #{tmpdir}")
+  end
+
+  step 'clone repo with excludes in repo with puppet' do
+    pp = <<-EOS
+    vcsrepo { "#{tmpdir}/#{repo_name}":
+      ensure => present,
+      source => "file://#{tmpdir}/testrepo.git",
+      provider => git,
+      excludes => [ '#{exclude1}', '#{exclude2}' ],
+    }
+    EOS
+
+    apply_manifest_on(host, pp)
+    apply_manifest_on(host, pp)
+  end
+
+  step 'verify exludes are known to git' do
+    on(host, "cat #{tmpdir}/#{repo_name}/.git/info/exclude") do |res|
+      fail_test('exclude not found') unless res.stdout.include? "#{exclude1}"
+      fail_test('exclude not found') unless res.stdout.include? "#{exclude2}"
+    end
+  end
+
+end
diff --git a/spec/acceptance/beaker/clone/clone_repo_with_excludes_not_in_repo.rb b/spec/acceptance/beaker/clone/clone_repo_with_excludes_not_in_repo.rb
new file mode 100644 (file)
index 0000000..ce173fd
--- /dev/null
@@ -0,0 +1,42 @@
+test_name 'C3508 - clone repo with excludes not in repo'
+
+# Globals
+repo_name = 'testrepo_with_excludes_not_in_repo'
+exclude1 = 'worh02o'
+exclude2 ='ho398b'
+
+hosts.each do |host|
+  tmpdir = host.tmpdir('vcsrepo')
+  step 'setup - create repo' do
+    install_package(host, 'git')
+    my_root = File.expand_path(File.join(File.dirname(__FILE__), '../../..'))
+    scp_to(host, "#{my_root}/acceptance/files/create_git_repo.sh", tmpdir)
+    on(host, "cd #{tmpdir} && ./create_git_repo.sh")
+  end
+
+  teardown do
+    on(host, "rm -fr #{tmpdir}")
+  end
+
+  step 'clone repo with excludes not in repo with puppet' do
+    pp = <<-EOS
+    vcsrepo { "#{tmpdir}/#{repo_name}":
+      ensure => present,
+      source => "file://#{tmpdir}/testrepo.git",
+      provider => git,
+      excludes => [ '#{exclude1}', '#{exclude2}' ],
+    }
+    EOS
+
+    apply_manifest_on(host, pp)
+    apply_manifest_on(host, pp)
+  end
+
+  step 'verify exludes are known to git' do
+    on(host, "cat #{tmpdir}/#{repo_name}/.git/info/exclude") do |res|
+      fail_test('exclude not found') unless res.stdout.include? "#{exclude1}"
+      fail_test('exclude not found') unless res.stdout.include? "#{exclude2}"
+    end
+  end
+
+end
diff --git a/spec/acceptance/beaker/clone/negative/clone_over_different_exiting_repo.rb b/spec/acceptance/beaker/clone/negative/clone_over_different_exiting_repo.rb
new file mode 100644 (file)
index 0000000..7821ce2
--- /dev/null
@@ -0,0 +1,43 @@
+test_name 'C3482 - clone over an existing repo'
+
+# Globals
+repo_name = 'testrepo_already_exists'
+
+hosts.each do |host|
+  tmpdir = host.tmpdir('vcsrepo')
+  step 'setup - create repo' do
+    install_package(host, 'git')
+    my_root = File.expand_path(File.join(File.dirname(__FILE__), '../../../..'))
+    scp_to(host, "#{my_root}/acceptance/files/create_git_repo.sh", tmpdir)
+    on(host, "cd #{tmpdir} && ./create_git_repo.sh")
+    on(host, "mkdir #{tmpdir}/#{repo_name}")
+    on(host, "cd #{tmpdir}/#{repo_name} && git init")
+    on(host, "cd #{tmpdir}/#{repo_name} && touch a && git add a && git commit -m 'a'")
+  end
+
+  teardown do
+    on(host, "rm -fr #{tmpdir}")
+  end
+
+  step 'clone over existing repo using puppet' do
+    on(host, "cd #{tmpdir}/#{repo_name} && git log --pretty=format:\"%h\"") do |res|
+      @existing_sha = res.stdout
+    end
+    pp = <<-EOS
+    vcsrepo { "#{tmpdir}/#{repo_name}":
+      ensure => present,
+      source => "file://#{tmpdir}/testrepo.git",
+      provider => git,
+    }
+    EOS
+
+    apply_manifest_on(host, pp)
+  end
+
+  step 'verify original repo was not replaced' do
+    on(host, "cd #{tmpdir}/#{repo_name} && git log --pretty=format:\"%h\"") do |res|
+      fail_test('original repo was replaced without force') unless res.stdout.include? "#{@existing_sha}"
+    end
+  end
+
+end
diff --git a/spec/acceptance/beaker/clone/negative/clone_repo_with_hostile_excludes.rb b/spec/acceptance/beaker/clone/negative/clone_repo_with_hostile_excludes.rb
new file mode 100644 (file)
index 0000000..4e04c78
--- /dev/null
@@ -0,0 +1,40 @@
+test_name 'C3509 - clone repo with excludes not in repo'
+
+# Globals
+repo_name = 'testrepo_with_excludes_not_in_repo'
+exclude1 = 'rm -rf /tmp'
+
+hosts.each do |host|
+  tmpdir = host.tmpdir('vcsrepo')
+  step 'setup - create repo' do
+    install_package(host, 'git')
+    my_root = File.expand_path(File.join(File.dirname(__FILE__), '../../../..'))
+    scp_to(host, "#{my_root}/acceptance/files/create_git_repo.sh", tmpdir)
+    on(host, "cd #{tmpdir} && ./create_git_repo.sh")
+  end
+
+  teardown do
+    on(host, "rm -fr #{tmpdir}")
+  end
+
+  step 'clone repo with excludes not in repo with puppet' do
+    pp = <<-EOS
+    vcsrepo { "#{tmpdir}/#{repo_name}":
+      ensure => present,
+      source => "file://#{tmpdir}/testrepo.git",
+      provider => git,
+      excludes => [ '#{exclude1}' ],
+    }
+    EOS
+
+    apply_manifest_on(host, pp)
+    apply_manifest_on(host, pp)
+  end
+
+  step 'verify excludes are known to git' do
+    on(host, "cat #{tmpdir}/#{repo_name}/.git/info/exclude") do |res|
+      fail_test('exclude not found') unless res.stdout.include? "#{exclude1}"
+    end
+  end
+
+end