Merge pull request #211 from justinstoller/bug/master/FM-1951-ensure-git
[puppet_vcsrepo.git] / spec / acceptance / create_repo_spec.rb
1 require 'spec_helper_acceptance'
2
3 tmpdir = default.tmpdir('vcsrepo')
4
5 describe 'create a repo' do
6   context 'without a source' do
7     it 'creates a blank repo' do
8       pp = <<-EOS
9       vcsrepo { "#{tmpdir}/testrepo_blank_repo":
10         ensure => present,
11         provider => git,
12       }
13       EOS
14
15       # Run it twice and test for idempotency
16       apply_manifest(pp, :catch_failures => true)
17       apply_manifest(pp, :catch_changes => true)
18     end
19
20     describe file("#{tmpdir}/testrepo_blank_repo/") do
21       it 'should have zero files' do
22         shell("ls -1 #{tmpdir}/testrepo_blank_repo | wc -l") do |r|
23           expect(r.stdout).to match(/^0\n$/)
24         end
25       end
26     end
27
28     describe file("#{tmpdir}/testrepo_blank_repo/.git") do
29       it { should be_directory }
30     end
31   end
32
33   context 'bare repo' do
34     it 'creates a bare repo' do
35       pp = <<-EOS
36       vcsrepo { "#{tmpdir}/testrepo_bare_repo":
37         ensure => bare,
38         provider => git,
39       }
40       EOS
41
42       # Run it twice and test for idempotency
43       apply_manifest(pp, :catch_failures => true)
44       apply_manifest(pp, :catch_changes => true)
45     end
46
47     describe file("#{tmpdir}/testrepo_bare_repo/config") do
48       it { should contain 'bare = true' }
49     end
50
51     describe file("#{tmpdir}/testrepo_bare_repo/.git") do
52       it { should_not be_directory }
53     end
54   end
55
56   context 'bare repo with a revision' do
57     it 'does not create a bare repo when a revision is defined' do
58       pp = <<-EOS
59       vcsrepo { "#{tmpdir}/testrepo_bare_repo_rev":
60         ensure => bare,
61         provider => git,
62         revision => 'master',
63       }
64       EOS
65
66       apply_manifest(pp, :expect_failures => true)
67     end
68
69     describe file("#{tmpdir}/testrepo_bare_repo_rev") do
70       it { should_not be_directory }
71     end
72   end
73 end