pdqtest 0.3.5 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -2
- data/docker_images/centos/Dockerfile +6 -1
- data/lib/pdqtest/docker.rb +3 -1
- data/lib/pdqtest/instance.rb +1 -1
- data/lib/pdqtest/puppet.rb +52 -19
- data/lib/pdqtest/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac2a8fe5df5117bb7d74fb011f0f857fb07df03e
|
4
|
+
data.tar.gz: 11bc05363b086d465cd7598d17446d05a31c9d3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 640a8be2625c579bf0a461d1c6f894d18bc339ae641afe8aafbce00dd46b8f07420ede16f6fe97388c753effdeb1cecdef681ae0fda237975ab5be5279387324
|
7
|
+
data.tar.gz: 1f9775686e4b5aea26b2a7e21c7db4a6559b9fd10cac9a95c486e7f96e1927784b52f9a5a690a7a48ecc43090f651cf70dc24d029f66b5435b3dc363398e581d
|
data/README.md
CHANGED
@@ -76,6 +76,8 @@ spec/merge_facts
|
|
76
76
|
|
77
77
|
Inside the module being tested will result in all JSON files contained being merged into all OS specific factsets used for testing as generated by `pdqtest generate_rspec`. To put it simply, drop `.json` file(s) in this directory to add them to every factset.
|
78
78
|
|
79
|
+
These facts will be made automatically avaialable to facter when running acceptance testing
|
80
|
+
|
79
81
|
### All tests
|
80
82
|
If you just want to run all tests:
|
81
83
|
|
@@ -96,14 +98,14 @@ pdqtest shell
|
|
96
98
|
```
|
97
99
|
|
98
100
|
* Open a shell inside the docker container that would be used to run tests
|
99
|
-
* Your code is available at `/
|
101
|
+
* Your code is available at `/testcase`
|
100
102
|
|
101
103
|
```shell
|
102
104
|
pdqtest --keep-container all
|
103
105
|
```
|
104
106
|
* Run all tests, report pass/fail status
|
105
107
|
* Keep the container Running
|
106
|
-
* After testing, the container used to run tests will be left running and a message will be printed showing how to enter the container used for testing. Your code is avaiable at `/
|
108
|
+
* After testing, the container used to run tests will be left running and a message will be printed showing how to enter the container used for testing. Your code is avaiable at `/testcase`
|
107
109
|
|
108
110
|
## About acceptance tests
|
109
111
|
* Acceptance tests run within a Docker container managed by PDQTest
|
@@ -240,6 +242,7 @@ You should use pdqtest if you find it increases your productivity and enriches y
|
|
240
242
|
* If you need a private key to access private repositories, set this up for your regular git command/ssh and `pdqtest` will reuse the settings
|
241
243
|
* Be sure to annotate the examples you wish to acceptance test with the magic marker comment `#@PDQTest`
|
242
244
|
* Sometimes you might get an error: `Could not resolve the dependencies.` when executing tests. This message is from librarian puppet and usually indicates a conflict between the `metadata.json` files somewhere in the set of modules you are attempting to use. Running the command `librarian-puppet install --path spec/fixtures/ --destructive --verbose` should give you enough information to resolve the error
|
245
|
+
* Be sure to run `make` or `bundle exec pdqtest all` to download dependencies when running acceptance tests. Previous versions (re)downloaded modules as required from inside docker but this step has been replaced with a simple symlink.
|
243
246
|
|
244
247
|
## Support
|
245
248
|
This software is not supported by Puppet, Inc. Use at your own risk.
|
@@ -247,6 +250,9 @@ This software is not supported by Puppet, Inc. Use at your own risk.
|
|
247
250
|
## Contributing
|
248
251
|
Bug reports and pull requests are welcome on GitHub at https://github.com/declarativesystems/pdqtest.
|
249
252
|
|
253
|
+
## Upgrade notes
|
254
|
+
* Previous versions of PDQTest mounted code at `/cut` (Code Under Test), this will still work for a few versions but the preferred mountpoint is now the more obvious `/testcase`
|
255
|
+
|
250
256
|
### Running tests
|
251
257
|
* PDQTest includes a comprehensive tests for core library functions. Please ensure tests pass before and after any PRs
|
252
258
|
* Run all tests `bundle exec rake spec`
|
@@ -61,9 +61,14 @@ RUN /opt/puppetlabs/puppet/bin/gem install librarian-puppet
|
|
61
61
|
# git refresh (for processing .fixtures.yml git modules)
|
62
62
|
RUN /opt/puppetlabs/puppet/bin/gem install git_refresh
|
63
63
|
|
64
|
-
#
|
64
|
+
# testcase (our module)
|
65
|
+
RUN mkdir /testcase
|
66
|
+
VOLUME /testcase
|
67
|
+
|
68
|
+
# code under test (deprecated)
|
65
69
|
RUN mkdir /cut
|
66
70
|
VOLUME /cut
|
67
71
|
|
72
|
+
|
68
73
|
# alternate shudown for systemd
|
69
74
|
STOPSIGNAL SIGRTMIN+3
|
data/lib/pdqtest/docker.rb
CHANGED
@@ -4,7 +4,7 @@ module PDQTest
|
|
4
4
|
ERR = 1
|
5
5
|
STATUS = 2
|
6
6
|
ENV='export TERM=xterm LC_ALL=C PATH=/usr/local/bats/bin:/opt/puppetlabs/puppet/bin:$PATH;'
|
7
|
-
IMAGE_NAME='geoffwilliams/pdqtest-centos:2017-
|
7
|
+
IMAGE_NAME='geoffwilliams/pdqtest-centos:2017-05-04-0'
|
8
8
|
|
9
9
|
|
10
10
|
def self.wrap_cmd(cmd)
|
@@ -21,11 +21,13 @@ module PDQTest
|
|
21
21
|
'Image' => IMAGE_NAME,
|
22
22
|
'Volumes' => {
|
23
23
|
test_dir => {pwd => 'rw'},
|
24
|
+
'/cut' => {pwd => 'rw'}, # DEPRECATED -FOR REMOVAL
|
24
25
|
'/sys/fs/cgroup' => {'/sys/fs/cgroup' => 'ro'},
|
25
26
|
},
|
26
27
|
'HostConfig' => {
|
27
28
|
"Binds": [
|
28
29
|
"/sys/fs/cgroup:/sys/fs/cgroup:ro",
|
30
|
+
"#{pwd}:/cut:rw", # DEPRECATED -FOR REMOVAL
|
29
31
|
"#{pwd}:#{test_dir}:rw",
|
30
32
|
],
|
31
33
|
},
|
data/lib/pdqtest/instance.rb
CHANGED
data/lib/pdqtest/puppet.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'pdqtest/puppet'
|
2
2
|
require 'pdqtest/docker'
|
3
3
|
require 'pdqtest/instance'
|
4
|
+
require 'pdqtest/emoji'
|
4
5
|
require 'escort'
|
5
6
|
require 'yaml'
|
6
7
|
|
@@ -47,7 +48,20 @@ module PDQTest
|
|
47
48
|
end
|
48
49
|
|
49
50
|
def self.link_module
|
50
|
-
"mkdir -p #{MODULE_DIR} && ln -s #{PDQTest::Instance::TEST_DIR} #{MODULE_DIR}/#{module_name}"
|
51
|
+
"test -e #{MODULE_DIR} || mkdir -p #{MODULE_DIR} && ln -s #{PDQTest::Instance::TEST_DIR} #{MODULE_DIR}/#{module_name}"
|
52
|
+
end
|
53
|
+
|
54
|
+
# Link all modules - this also saves re-downloading in the acceptance test
|
55
|
+
# environment. Of course it means that you must have already run `make` to
|
56
|
+
# download the modules on your host computer
|
57
|
+
def self.link_deps
|
58
|
+
"test -e #{MODULE_DIR} || mkdir -p #{MODULE_DIR} && ln -s #{PDQTest::Instance::TEST_DIR}/spec/fixtures/modules/* #{MODULE_DIR}"
|
59
|
+
end
|
60
|
+
|
61
|
+
# link /etc/facter/facts.d to /testcase/spec/merge_facts to allow additional
|
62
|
+
# facts supplied by user to work automatically
|
63
|
+
def self.link_merge_facts
|
64
|
+
"mkdir -p /etc/facter/ && ln -s #{PDQTest::Instance::TEST_DIR}/spec/merge_facts /etc/facter/facts.d"
|
51
65
|
end
|
52
66
|
|
53
67
|
def self.install_deps
|
@@ -228,40 +242,59 @@ module PDQTest
|
|
228
242
|
end
|
229
243
|
|
230
244
|
def self.run(container, example=nil)
|
245
|
+
# we must always have ./spec/fixtures/modules because we need to create a
|
246
|
+
# symlink back to the main module inside here...
|
247
|
+
# (spec/fixtures/modules/foo -> /testcase)
|
248
|
+
if ! Dir.exists?('spec/fixtures/modules')
|
249
|
+
Escort::Logger.output.puts
|
250
|
+
"creating empty spec/fixtures/modules, if you module fails to run due "
|
251
|
+
"to missing dependencies run `make` or `pdqtest all` to retrieve them"
|
252
|
+
FileUtils.mkdir_p('spec/fixtures/modules')
|
253
|
+
end
|
254
|
+
|
231
255
|
status = true
|
232
|
-
Escort::Logger.output.puts "...
|
233
|
-
cmd =
|
256
|
+
Escort::Logger.output.puts "...linking dependencies"
|
257
|
+
cmd = link_deps
|
234
258
|
res = PDQTest::Docker.exec(container, cmd)
|
235
259
|
status &= PDQTest::Docker.exec_status(res)
|
236
260
|
if status
|
237
|
-
Escort::Logger.output.puts "...linking"
|
261
|
+
Escort::Logger.output.puts "...linking testcase (this module)"
|
238
262
|
cmd = link_module
|
239
263
|
res = PDQTest::Docker.exec(container, cmd)
|
240
264
|
status &= PDQTest::Docker.exec_status(res)
|
241
265
|
if status
|
242
|
-
Escort::Logger.output.puts "...
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
266
|
+
Escort::Logger.output.puts "...linking spec/merge_facts"
|
267
|
+
cmd = link_merge_facts
|
268
|
+
res = PDQTest::Docker.exec(container, cmd)
|
269
|
+
status &= PDQTest::Docker.exec_status(res)
|
270
|
+
if status
|
271
|
+
Escort::Logger.output.puts "...run tests"
|
272
|
+
if example
|
273
|
+
status &= run_example(container, example)
|
274
|
+
if ! status
|
275
|
+
Escort::Logger.error.error "Example #{example} failed!"
|
276
|
+
end
|
277
|
+
else
|
278
|
+
find_examples.each { |e|
|
279
|
+
if status
|
280
|
+
status &= run_example(container, e)
|
281
|
+
if ! status
|
282
|
+
Escort::Logger.error.error "Example #{e} failed! - skipping rest of tests"
|
283
|
+
end
|
284
|
+
end
|
285
|
+
}
|
247
286
|
end
|
248
287
|
else
|
249
|
-
|
250
|
-
|
251
|
-
status &= run_example(container, e)
|
252
|
-
if ! status
|
253
|
-
Escort::Logger.error.error "Example #{e} failed! - skipping rest of tests"
|
254
|
-
end
|
255
|
-
end
|
256
|
-
}
|
288
|
+
PDQTest::Docker.log_all(res)
|
289
|
+
Escort::Logger.error.error "Error linking ./spec/merge_facts directory, see previous error, command was: #{cmd}"
|
257
290
|
end
|
258
291
|
else
|
259
292
|
PDQTest::Docker.log_all(res)
|
260
|
-
Escort::Logger.error.error "Error linking module, see previous error, command was: #{cmd}"
|
293
|
+
Escort::Logger.error.error "Error linking testcase (this) module, see previous error, command was: #{cmd}"
|
261
294
|
end
|
262
295
|
else
|
263
296
|
PDQTest::Docker.log_all(res)
|
264
|
-
Escort::Logger.error.error "Error
|
297
|
+
Escort::Logger.error.error "Error linking module, see previous error, command was: #{cmd}"
|
265
298
|
end
|
266
299
|
|
267
300
|
PDQTest::Emoji.partial_status(status, 'Puppet')
|
data/lib/pdqtest/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdqtest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geoff Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04
|
11
|
+
date: 2017-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|