control_spec_helper 0.0.2 → 0.0.3.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.ruby-version +1 -1
  4. data/Gemfile.lock +57 -26
  5. data/Guardfile +1 -0
  6. data/Rakefile +141 -48
  7. data/bin/csh-generate +7 -0
  8. data/config/Guardfile +24 -0
  9. data/control_spec_helper.gemspec +9 -5
  10. data/ext/Rakefile.sample +0 -2
  11. data/ext/spec_helper_control.rb +2 -1
  12. data/lib/control_spec_helper/control_spec_helper.rb +22 -21
  13. data/lib/control_spec_helper/debug.rb +7 -0
  14. data/lib/control_spec_helper/generate.rb +79 -0
  15. data/lib/control_spec_helper/rake_tasks.rb +0 -1
  16. data/lib/{slalom.rb → control_spec_helper/util.rb} +22 -7
  17. data/lib/control_spec_helper/version.rb +1 -1
  18. data/lib/control_spec_helper.rb +2 -0
  19. data/lib/tasks/apply.rake +1 -1
  20. data/lib/tasks/lint.rake +2 -1
  21. data/lib/tasks/r10k.rake +1 -1
  22. data/lib/tasks/spec_prep.rake +0 -1
  23. data/lib/tasks/unit.rake +15 -0
  24. data/spec/spec_helper.rb +2 -2
  25. data/spec/support/shared_contexts/rake.rb +1 -1
  26. data/spec/tasks/apply_debug_spec.rb +72 -0
  27. data/spec/tasks/apply_spec.rb +72 -0
  28. data/spec/tasks/apply_standalone_spec.rb +73 -0
  29. data/spec/tasks/help_spec.rb +54 -0
  30. data/spec/tasks/lint_spec.rb +69 -0
  31. data/spec/tasks/puppet_cmd_spec.rb +55 -0
  32. data/spec/tasks/r10k_spec.rb +69 -0
  33. data/spec/tasks/spec_clean_spec.rb +61 -0
  34. data/spec/tasks/spec_prep_spec.rb +69 -0
  35. data/spec/tasks/unit_spec.rb +70 -0
  36. data/spec/tasks/vplugins_spec.rb +18 -25
  37. data/spec/unit/control_spec_helper_spec.rb +3 -3
  38. data/spec/unit/debug_spec.rb +2 -2
  39. data/spec/unit/profile_fixtures_spec.rb +111 -125
  40. data/spec/unit/r10k_spec.rb +7 -0
  41. metadata +106 -48
  42. data/lib/tasks/git.rake +0 -9
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+
3
+ describe :spec_prep do
4
+ include_context 'rake'
5
+
6
+ before(:all) do
7
+ @original_dir = Dir.pwd
8
+ Dir.chdir('fixtures/puppet-control')
9
+ end
10
+
11
+ after(:all) do
12
+ Dir.chdir(@original_dir)
13
+ end
14
+
15
+ context 'when run on CentOS 7' do
16
+ # rubocop:disable Lint/UselessAssignment
17
+ cached_env_debug = ''
18
+ # rubocop:enable Lint/UselessAssignment
19
+ original_stderr = $stderr
20
+ original_stdout = $stdout
21
+
22
+ before(:each) do
23
+ conf = ssh_config
24
+ @connection = Net::SSH.start(
25
+ conf['HostName'],
26
+ conf['User'],
27
+ port: conf['Port'],
28
+ password: 'vagrant'
29
+ )
30
+ ssh_exec!(@connection, 'cp /vagrant/fixtures/bashrc ~/.bashrc')
31
+ $stderr = File.open(File::NULL, 'w')
32
+ $stdout = File.open(File::NULL, 'w')
33
+ @prep_return = ssh_exec!(@connection,
34
+ 'cd /vagrant ; bundle exec rake spec_prep')
35
+ end
36
+
37
+ after(:each) do
38
+ $stderr = original_stderr
39
+ $stdout = original_stdout
40
+ end
41
+
42
+ it 'should return success' do
43
+ expect(@prep_return[2]).to eq(0)
44
+ end
45
+
46
+ it 'should run r10k' do
47
+ r10k_success = ssh_exec!(@connection,
48
+ 'ls /vagrant/modules/vcsrepo')
49
+ expect(r10k_success[2]).to eq(0)
50
+ end
51
+ it 'should create the fixtures/modules directory' do
52
+ dir_success = ssh_exec!(@connection,
53
+ 'ls /vagrant/site/profile/spec/fixtures/modules')
54
+ expect(dir_success[2]).to eq(0)
55
+ end
56
+ it 'should link the profile path to its link directory' do
57
+ path_link_success = ssh_exec!(@connection,
58
+ 'file /vagrant/site/profile/spec/fixtures/'\
59
+ 'modules/profile')
60
+ expect(path_link_success[0]).to match(/(?!broken) symbolic link/)
61
+ end
62
+ it 'should link each module into the link directory' do
63
+ path_link_success = ssh_exec!(@connection,
64
+ 'file /vagrant/site/profile/spec/fixtures/'\
65
+ 'modules/vcsrepo')
66
+ expect(path_link_success[0]).to match(/(?!broken) symbolic link/)
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ describe :unit do
4
+ include_context 'rake'
5
+
6
+ before(:all) do
7
+ @original_dir = Dir.pwd
8
+ Dir.chdir('fixtures/puppet-control')
9
+ end
10
+
11
+ after(:all) do
12
+ Dir.chdir(@original_dir)
13
+ end
14
+
15
+ context 'when run on CentOS 7' do
16
+ # rubocop:disable Lint/UselessAssignment
17
+ cached_env_debug = ''
18
+ # rubocop:enable Lint/UselessAssignment
19
+ original_stderr = $stderr
20
+ original_stdout = $stdout
21
+
22
+ before(:each) do
23
+ @connection = build_vagrant_connection(vagrant_ssh_config)
24
+ ssh_exec!(@connection, 'cp /vagrant/fixtures/bashrc ~/.bashrc')
25
+ $stderr = File.open(File::NULL, 'w')
26
+ $stdout = File.open(File::NULL, 'w')
27
+ end
28
+
29
+ after(:each) do
30
+ $stderr = original_stderr
31
+ $stdout = original_stdout
32
+ end
33
+
34
+ repo = "#{File.dirname(__FILE__)}/../../fixtures/puppet-control"
35
+
36
+ context 'when all tests pass' do
37
+ before(:each) do
38
+ Git.open(repo).checkout('unit_pass')
39
+ end
40
+
41
+ after(:each) do
42
+ Git.open(repo).checkout('fixture')
43
+ end
44
+
45
+ it 'should run rspec and return successfully' do
46
+ cmd = 'cd /vagrant ; bundle exec rake unit'
47
+ _, _, exit_code, = ssh_exec!(@connection, cmd)
48
+ expect(exit_code).to eq(0)
49
+ end
50
+ end
51
+
52
+ context 'when at least one test fails' do
53
+ before(:context) do
54
+ Git.open(repo).checkout('unit_fail')
55
+ end
56
+
57
+ after(:context) do
58
+ Git.open(repo).checkout('fixture')
59
+ end
60
+
61
+ it 'should run rspec and return an error code & message' do
62
+ cmd = 'cd /vagrant ; bundle exec rake unit'
63
+ msg, _, exit_code, = ssh_exec!(@connection, cmd)
64
+ expect(exit_code).to_not eq(0)
65
+ expect(msg).to match(/Failed examples:/)
66
+ end
67
+ end
68
+ end
69
+ end
70
+
@@ -18,13 +18,22 @@ describe :vplugins do
18
18
  end
19
19
 
20
20
  context 'when run on CentOS 7' do
21
+ # rubocop:disable Lint/UselessAssignment
21
22
  cached_env_debug = ''
23
+ # rubocop:enable Lint/UselessAssignment
22
24
  original_stderr = $stderr
23
25
  original_stdout = $stdout
24
26
 
25
27
  let(:conf) { ssh_config }
26
28
 
27
29
  before(:each) do
30
+ conf = ssh_config
31
+ @connection = Net::SSH.start(
32
+ conf['HostName'],
33
+ conf['User'],
34
+ port: conf['Port'],
35
+ password: 'vagrant'
36
+ )
28
37
  $stderr = File.open(File::NULL, 'w')
29
38
  $stdout = File.open(File::NULL, 'w')
30
39
  end
@@ -32,40 +41,24 @@ describe :vplugins do
32
41
  after(:each) do
33
42
  $stderr = original_stderr
34
43
  $stdout = original_stdout
44
+ @connection.close
35
45
  end
36
46
 
37
47
  it 'should install successfully' do
38
- expect(Net::SSH.start(
39
- conf['HostName'],
40
- conf['User'],
41
- port: conf['Port'],
42
- password: 'vagrant'
43
- ) do |ssh|
44
- ssh_exec!(ssh,
45
- 'cd /vagrant && unset RUBYLIB ; bundle exec rake vplugins')
46
- end[2]).to eq(0)
48
+ response = ssh_exec!(@connection,
49
+ 'cd /vagrant ; bundle exec rake vplugins')
50
+ expect(response[2]).to eq(0)
47
51
  end
48
52
 
49
53
  it 'should install the vagrant-auto_network plugin' do
50
- expect(Net::SSH.start(
51
- conf['HostName'],
52
- conf['User'],
53
- port: conf['Port'],
54
- password: 'vagrant'
55
- ) do |ssh|
56
- ssh_exec!(ssh, 'unset RUBYLIB ; vagrant plugin list')
57
- end[0].split("\n")).to include(/vagrant-auto_network/)
54
+ response = ssh_exec!(@connection, 'unset RUBYLIB ; vagrant plugin list')
55
+ puts response
56
+ expect(response[0].split("\n")).to include(/vagrant-auto_network/)
58
57
  end
59
58
 
60
59
  it 'should install the vagrant-hosts plugin' do
61
- expect(Net::SSH.start(
62
- conf['HostName'],
63
- conf['User'],
64
- port: conf['Port'],
65
- password: 'vagrant'
66
- ) do |ssh|
67
- ssh_exec!(ssh, 'unset RUBYLIB ; vagrant plugin list')
68
- end[0].split("\n")).to include(/vagrant-hosts/)
60
+ response = ssh_exec!(@connection, 'unset RUBYLIB ; vagrant plugin list')
61
+ expect(response[0].split("\n")).to include(/vagrant-hosts/)
69
62
  end
70
63
  end
71
64
  end
@@ -31,7 +31,7 @@ describe 'control_spec_helper' do
31
31
  it 'should print properly-formatted debugging messages' do
32
32
  cached_env_debug = ENV['debug']
33
33
  ENV['debug'] = 'true'
34
- expect { @dummy_class.debug('spec') }.to output("DEBUG: spec\n").to_stderr
34
+ expect { debug('spec') }.to output("DEBUG: spec\n").to_stderr
35
35
  ENV['debug'] = cached_env_debug
36
36
  end
37
37
  end
@@ -40,14 +40,14 @@ describe 'control_spec_helper' do
40
40
  it 'should suppress debugging messages' do
41
41
  cached_env_debug = ENV['debug']
42
42
  ENV.delete('debug')
43
- expect { @dummy_class.debug('spec') }.to_not output('DEBUG: spec')
43
+ expect { debug('spec') }.to_not output('DEBUG: spec')
44
44
  .to_stderr
45
45
  ENV['debug'] = cached_env_debug
46
46
  end
47
47
  end
48
48
 
49
49
  it 'should print the puppet command' do
50
- cmd = "puppet apply manifests/site.pp \\\n --modulepath " \
50
+ cmd = "sudo puppet apply manifests/site.pp \\\n --modulepath " \
51
51
  '$(echo `pwd`/modules:`pwd`/site) --hiera_config hiera.yaml'
52
52
  expect(@dummy_class.puppet_cmd).to eq(cmd)
53
53
  end
@@ -13,7 +13,7 @@ describe 'control_spec_helper' do
13
13
  it 'should print properly-formatted debugging messages' do
14
14
  cached_env_debug = ENV['debug']
15
15
  ENV['debug'] = 'true'
16
- expect { @dummy_class.debug('spec') }.to output("DEBUG: spec\n").to_stderr
16
+ expect { debug('spec') }.to output("DEBUG: spec\n").to_stderr
17
17
  ENV['debug'] = cached_env_debug
18
18
  end
19
19
  end
@@ -22,7 +22,7 @@ describe 'control_spec_helper' do
22
22
  it 'should suppress debugging messages' do
23
23
  cached_env_debug = ENV['debug']
24
24
  ENV.delete('debug')
25
- expect { @dummy_class.debug('spec') }.to_not output('DEBUG: spec')
25
+ expect { debug('spec') }.to_not output('DEBUG: spec')
26
26
  .to_stderr
27
27
  ENV['debug'] = cached_env_debug
28
28
  end
@@ -5,177 +5,163 @@ class DummyClass
5
5
  end
6
6
 
7
7
  describe 'control_spec_helper' do
8
- before do
8
+ before(:each) do
9
9
  @dummy_class = DummyClass.new
10
+ @cached_env_debug = ''
11
+ @original_stderr = $stderr
12
+ @original_stdout = $stdout
13
+ $stderr = File.open(File::NULL, 'w')
14
+ $stdout = File.open(File::NULL, 'w')
15
+ allow(@dummy_class)
16
+ .to receive(:profile_path)
17
+ .and_return("#{Dir.pwd}/fixtures/puppet-control/site/profile")
18
+ FileUtils.rm_rf("#{Dir.pwd}/fixtures/puppet-control/site/profile/spec/"\
19
+ 'fixtures/modules/profile')
20
+ end
21
+ after(:each) do
22
+ $stderr = @original_stderr
23
+ $stdout = @original_stdout
10
24
  end
11
25
 
12
26
  describe 'when profile_fixtures is called' do
13
27
  describe 'when debug environmental variable is set' do
14
- cached_env_debug = ''
15
-
16
28
  before(:each) do
17
- allow(@dummy_class).to receive(:profile_path).and_return('/')
18
- allow(File).to receive(:symlink)
19
- .with('/', '/tmp/spec/fixtures/modules/profile')
29
+ @cached_env_debug = ENV['debug']
30
+ ENV['debug'] = 'true'
31
+ allow(Dir)
32
+ .to receive(:glob)
33
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile/../../modules"\
34
+ '/*')
35
+ .and_return(["#{Dir.pwd}/fixtures/puppet-control/site/profile/../../"\
36
+ 'modules/concat',
37
+ "#{Dir.pwd}/fixtures/puppet-control/site/profile/../../"\
38
+ 'modules/epel'])
39
+ end
40
+
41
+ after(:each) do
42
+ ENV['debug'] = @cached_env_debug
20
43
  end
21
44
 
22
45
  context 'if a profile link already exists' do
23
46
  it 'should not try to symlink the profile path' do
24
- allow(Dir).to receive(:glob).with('/tmp/../../modules/*')
25
- .and_return([])
26
- allow(File).to receive(:exists?)
27
- .with('/tmp/spec/fixtures/modules/profile').and_return(true)
47
+ allow(File).to receive(:exist?)
48
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile/"\
49
+ 'spec/fixtures/modules/profile')
50
+ .and_return(true)
28
51
  expect(File).to_not receive(:symlink)
29
- .with('/', '/tmp/spec/fixtures/modules/profile')
30
- allow(FileUtils).to receive(:mkpath)
31
- .with('/tmp/spec/fixtures/modules/')
32
- expect { @dummy_class.profile_fixtures }
52
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile",
53
+ "#{Dir.pwd}/fixtures/puppet-control/site/profile/spec/"\
54
+ 'fixtures/modules/profile')
55
+ @dummy_class.profile_fixtures
33
56
  end
34
57
  end
35
58
 
36
59
  context 'if a profile link does not already exist' do
37
60
  it 'should symlink the profile path' do
38
- allow(Dir).to receive(:glob).with('/tmp/../../modules/*')
39
- .and_return([])
40
- allow(File).to receive(:exists?)
41
- .with('/tmp/spec/fixtures/modules/profile').and_return(false)
42
- allow(@dummy_class).to receive(:file_name).and_return('/tmp/foo.rb')
61
+ allow(File).to receive(:exist?)
62
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile/"\
63
+ 'spec/fixtures/modules/profile')
64
+ .and_return(false)
43
65
  expect(File).to receive(:symlink)
44
- .with('/', '/tmp/spec/fixtures/modules/profile')
45
- allow(FileUtils).to receive(:mkpath)
46
- .with('/tmp/spec/fixtures/modules/')
66
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile",
67
+ "#{Dir.pwd}/fixtures/puppet-control/site/profile/"\
68
+ 'spec/fixtures/modules/profile')
47
69
  @dummy_class.profile_fixtures
48
70
  end
49
71
  end
50
72
 
51
73
  context 'when iterating through available modules' do
52
74
  before(:each) do
53
- allow(Dir).to receive(:glob).with('/tmp/../../modules/*')
54
- .and_return(%w(foo bar))
55
- allow(File).to receive(:exists?)
56
- .with('/tmp/spec/fixtures/modules/profile').and_return(true)
75
+ allow(Dir).to receive(:glob)
76
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile/../"\
77
+ '../modules/*')
78
+ .and_return([
79
+ "#{Dir.pwd}/fixtures/puppet-control/site/"\
80
+ 'profile/../../modules/concat',
81
+ "#{Dir.pwd}/fixtures/puppet-control/site/"\
82
+ 'profile/../../modules/epel'
83
+ ])
57
84
  end
58
-
59
85
  context 'if discovered file is not a directory' do
60
- it 'should not try to perform module operations on that file' do
86
+ before(:each) do
61
87
  allow(File).to receive(:directory?)
62
- .with('/tmp/spec/fixtures/modules').and_return(true)
63
- allow(File).to receive(:directory?).with('foo').and_return(false)
64
- allow(File).to receive(:directory?).with('bar').and_return(false)
65
- allow(@dummy_class).to receive(:file_name).and_return('/tmp/foo.rb')
66
- expect(File).to_not receive(:symlink)
67
- .with('/tmp/foo', '/tmp/spec/fixtures/modules/foo')
68
- expect(File).to_not receive(:symlink)
69
- .with('/tmp/bar', '/tmp/spec/fixtures/modules/bar')
70
- @dummy_class.profile_fixtures
88
+ .with("#{Dir.pwd}/fixtures/puppet-control/modules/concat")
89
+ .and_return(false)
90
+ allow(File).to receive(:directory?)
91
+ .with("#{Dir.pwd}/fixtures/puppet-control/modules/epel")
92
+ end
93
+ it 'should not try to perform module operations on that file' do
94
+ expect(File).to_not receive(:symlink?)
95
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile"\
96
+ '/../../modules/concat')
71
97
  end
72
98
  end
73
99
 
74
100
  context 'if discovered file is a directory' do
101
+ before(:each) do
102
+ allow(FileUtils)
103
+ .to receive(:mkpath)
104
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile/spec/"\
105
+ 'fixtures/modules/')
106
+ .and_return(true)
107
+ allow(File).to receive(:directory?)
108
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile"\
109
+ '/../../modules/concat')
110
+ .and_return(true)
111
+ allow(File).to receive(:directory?)
112
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile"\
113
+ '/../../modules/epel')
114
+ end
75
115
  context 'if modules directories already are symlinks' do
76
- it 'should not try to symlink the module path' do
77
- allow(File).to receive(:directory?)
78
- .with('/tmp/spec/fixtures/modules').and_return(true)
79
- allow(File).to receive(:directory?).with('foo').and_return(true)
80
- allow(File).to receive(:directory?).with('bar').and_return(true)
81
- allow(@dummy_class).to receive(:file_name)
82
- .and_return('/tmp/foo.rb')
83
- allow(File).to receive(:symlink?)
84
- .with('/tmp/spec/fixtures/modules/foo').and_return(true)
116
+ before(:each) do
85
117
  allow(File).to receive(:symlink?)
86
- .with('/tmp/spec/fixtures/modules/bar').and_return(true)
118
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/"\
119
+ 'profile/../../modules/concat')
120
+ .and_return(true)
121
+ allow(File).to receive(:symlink?).at_least(2).times
122
+ end
123
+ it 'should not try to symlink the module path' do
124
+ expect(File).to_not receive(:symlink)
125
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/"\
126
+ 'profile/../../modules/concat',
127
+ "#{Dir.pwd}/spec/fixtures/modules/concat")
87
128
  @dummy_class.profile_fixtures
88
129
  end
89
130
  end
90
131
 
91
132
  context 'if modules directories do not already have symlinks' do
92
- it 'should symlink the module path' do
93
- allow(@dummy_class).to receive(:file_name)
94
- .and_return('/tmp/control_spec_helper.rb')
95
- allow(File).to receive(:directory?)
96
- .with('/tmp/spec/fixtures/modules').and_return(true)
133
+ before(:each) do
134
+ allow(File).to receive(:symlink?)
135
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/"\
136
+ 'profile/spec/fixtures/modules/concat')
137
+ .and_return(false)
97
138
  allow(File).to receive(:directory?)
98
- .with('foo').and_return(true)
139
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/"\
140
+ 'profile/../../modules/concat')
141
+ .and_return(true)
99
142
  allow(File).to receive(:directory?)
100
- .with('bar').and_return(true)
101
- allow(File).to receive(:symlink?)
102
- .with('/tmp/spec/fixtures/modules/foo').and_return(false)
103
- allow(File).to receive(:symlink?)
104
- .with('/tmp/spec/fixtures/modules/bar').and_return(false)
143
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile/"\
144
+ '../../modules/epel')
145
+ end
146
+ it 'should symlink the module path' do
105
147
  expect(File).to receive(:symlink)
106
- .with('/tmp/foo', '/tmp/spec/fixtures/modules/foo')
148
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile",
149
+ "#{Dir.pwd}/fixtures/puppet-control/site/"\
150
+ 'profile/spec/fixtures/modules/profile')
107
151
  expect(File).to receive(:symlink)
108
- .with('/tmp/bar', '/tmp/spec/fixtures/modules/bar')
152
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/"\
153
+ 'profile/../../modules/concat',
154
+ "#{Dir.pwd}/fixtures/puppet-control/site/"\
155
+ 'profile/spec/fixtures/modules/concat')
109
156
  @dummy_class.profile_fixtures
110
157
  end
111
158
  end
112
159
 
113
- describe 'when debug environmental variable is set' do
114
- before(:each) do
115
- allow(@dummy_class).to receive(:profile_path).and_return('/')
116
- allow(@dummy_class).to receive(:file_name)
117
- .and_return('/tmp/foo.rb')
118
- allow(Dir).to receive(:glob).with('/tmp/../../modules/*')
119
- .and_return([])
120
- allow(Dir).to receive(:pwd).and_return('/foo')
121
- allow(File).to receive(:exists?)
122
- .with('/tmp/spec/fixtures/modules/profile').and_return(true)
123
- allow(FileUtils).to receive(:mkpath)
124
- .with('/tmp/spec/fixtures/modules/')
125
- cached_env_debug = ENV['debug']
126
- ENV['debug'] = 'true'
127
- end
128
-
129
- after(:each) do
130
- ENV['debug'] = cached_env_debug
131
- end
132
-
133
- it 'should print its current profile_path directory' do
134
- expect { @dummy_class.profile_fixtures }
135
- .to output(%r{DEBUG: cd to /}).to_stderr
136
- end
137
-
138
- it 'should print its actual working directory' do
139
- expect { @dummy_class.profile_fixtures }
140
- .to output(%r{DEBUG: cd to /foo}).to_stderr
141
- end
142
- end
143
-
144
- context 'when debug environmental variable is not set' do
145
- before(:each) do
146
- allow(@dummy_class).to receive(:profile_path).and_return('/')
147
- allow(@dummy_class).to receive(:file_name)
148
- .and_return('/tmp/foo.rb')
149
- allow(Dir).to receive(:glob).with('/tmp/../../modules/*')
150
- .and_return([])
151
- allow(Dir).to receive(:pwd).and_return('/foo')
152
- allow(File).to receive(:exists?)
153
- .with('/tmp/spec/fixtures/modules/profile').and_return(true)
154
- allow(FileUtils).to receive(:mkpath)
155
- .with('/tmp/spec/fixtures/modules/')
156
- end
157
-
158
- it 'should not print its current profile_path directory' do
159
- cached_env_debug = ENV['debug']
160
- ENV.delete('debug')
161
- expect { @dummy_class.profile_fixtures }
162
- .to_not output(%r{DEBUG: cd to /}).to_stderr
163
- ENV['debug'] = cached_env_debug
164
- end
165
-
166
- it 'should not print its actual working directory' do
167
- cached_env_debug = ENV['debug']
168
- ENV.delete('debug')
169
- expect { @dummy_class.profile_fixtures }
170
- .to_not output(%r{DEBUG: cd to /foo}).to_stderr
171
- ENV['debug'] = cached_env_debug
172
- end
173
- end
174
-
175
160
  it 'should create a modules directory inside fixtures' do
176
- allow(@dummy_class).to receive(:file_name).and_return('/tmp/foo.rb')
177
- expect(FileUtils).to receive(:mkpath)
178
- .with('/tmp/spec/fixtures/modules/')
161
+ expect(FileUtils)
162
+ .to receive(:mkpath)
163
+ .with("#{Dir.pwd}/fixtures/puppet-control/site/profile/spec/"\
164
+ 'fixtures/modules/')
179
165
  @dummy_class.profile_fixtures
180
166
  end
181
167
  end
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'git'
2
3
 
3
4
  class DummyClass
4
5
  include ControlSpecHelper
@@ -53,6 +54,12 @@ describe 'control_spec_helper' do
53
54
  allow(Dir).to receive(:pwd).and_return('/tmp')
54
55
  expect { @dummy_class.r10k }.to output(%r{cd to /tmp}).to_stderr
55
56
  end
57
+
58
+ context 'when Puppetfile is valid' do
59
+ it 'should return a success code' do
60
+ expect(@dummy_class.r10k[2]).to eq(0)
61
+ end
62
+ end
56
63
  end
57
64
  end
58
65
  end