pdqtest 1.1.0 → 1.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b31dcb07b28f856c67946e787ae6c7f738a80cd35094dca5e40945b5d583cb93
4
- data.tar.gz: 8414386c5b910112ed305524e81fa333bca8f0b7c7def8a1af773d259460b921
3
+ metadata.gz: 37530405f473c1f36eda386d84ab94debf584179e52bb55bff2fd1f30e27eaf0
4
+ data.tar.gz: b216fd428e5dc17a4f9d1d395090ae2d0359591693d4bfa9eaef490f9c38e412
5
5
  SHA512:
6
- metadata.gz: 925cf675abe919ae5b63a95be161b27e9d087011480cae06c094b1c07a435a7e59af7e9bc5644255449c9657dc78cdb40bab19c25d935027d5355aa7e0914b5d
7
- data.tar.gz: 51dfde1ed0ffb94309f95c43cf9152f80f534fd7ac6ac600e3d0869ed65d28d5683642373307963a89a6a365d87a636970e6a4033662d3ca5f3c25a9bee8c1ce
6
+ metadata.gz: b1f5cfe1259ef9c487c7c0d05b0d62495e57ad37366b9e6e5de226e30534ec24012aeed6806be02a28816822ffca2d9affc624d9f70108b2b68ff8ffeebda863
7
+ data.tar.gz: ed98f8ca46b59f583b7b8df038ffce1052b21515c3c66fe3224a14f3db938eae908314ca15761367d48b20234e6a5935bf0c63aa2696cdee890656f55526cef6
@@ -18,9 +18,10 @@ repositories:
18
18
 
19
19
 
20
20
  ## .fixtures.yml
21
- There is no need to maintain a `.fixtures.yml` file and the presence of this file when using `pdqtest` is an error.
21
+ There is no need to maintain a `.fixtures.yml` file and the presence of this file when using `pdqtest` is an error (note the leading period)
22
22
 
23
23
  ## Notes:
24
24
  * The filename is for private modules is `fixtures.yml` NOT `.fixtures.yml`. The leading dot had to be removed to avoid `puppetlabs_spec_helper` also detecting the file and trying to use it.
25
25
  * The file format of `.fixtures.yml` and `fixtures.yml` for specifing git repositories is identical
26
26
  * Only the repositories section of the file will be processed as we do not use `puppetlabs_spec_helper` to do this for us.
27
+ * We convert the dependencies from `metadata.json` to a temporary puppetfile store at `.Puppetfile.pdqtes` which is then installed using r10k
@@ -51,8 +51,8 @@ RUN yum -y install https://pm.puppet.com/puppet-agent/2017.3.5/5.3.5/repos/el/7/
51
51
  # bats
52
52
  RUN git clone https://github.com/bats-core/bats-core /usr/local/bats
53
53
 
54
- # librarian
55
- RUN /opt/puppetlabs/puppet/bin/gem install librarian-puppet
54
+ # r10k
55
+ RUN /opt/puppetlabs/puppet/bin/gem install r10k
56
56
 
57
57
  # git refresh (for processing .fixtures.yml git modules)
58
58
  RUN /opt/puppetlabs/puppet/bin/gem install git_refresh
@@ -51,7 +51,7 @@ RUN curl -Lo /tmp/puppet-agent.deb https://pm.puppet.com/puppet-agent/2017.3.5/5
51
51
  RUN git clone https://github.com/bats-core/bats-core /usr/local/bats
52
52
 
53
53
  # librarian
54
- RUN /opt/puppetlabs/puppet/bin/gem install librarian-puppet
54
+ RUN /opt/puppetlabs/puppet/bin/gem install r10k
55
55
 
56
56
  # git refresh (for processing .fixtures.yml git modules)
57
57
  RUN /opt/puppetlabs/puppet/bin/gem install git_refresh
@@ -8,8 +8,8 @@ module PDQTest
8
8
  STATUS = 2
9
9
  ENV='export TERM=xterm LC_ALL=C PATH=/usr/local/bats/bin:/opt/puppetlabs/puppet/bin:$PATH;'
10
10
  IMAGES = {
11
- :DEFAULT => 'declarativesystems/pdqtest-centos:2018-04-13-0',
12
- :UBUNTU => 'declarativesystems/pdqtest-ubuntu:2018-04-13-0',
11
+ :DEFAULT => 'declarativesystems/pdqtest-centos:2018-05-31-0',
12
+ :UBUNTU => 'declarativesystems/pdqtest-ubuntu:2018-05-31-0',
13
13
  }
14
14
  HIERA_YAML_CONTAINER = '/etc/puppetlabs/puppet/hiera.yaml'
15
15
  HIERA_YAML_HOST = '/spec/fixtures/hiera.yaml'
@@ -22,6 +22,8 @@ module PDQTest
22
22
  @@setup_executed = []
23
23
  @@skip_second_run = false
24
24
  FIXTURES = 'fixtures.yml'
25
+ TMP_PUPPETFILE = '.Puppetfile.pdqtest'
26
+
25
27
 
26
28
  def self.skip_second_run(skip_second_run)
27
29
  @@skip_second_run = skip_second_run
@@ -315,5 +317,35 @@ module PDQTest
315
317
  Escort::Logger.output.puts "Parsed module name: #{module_name}"
316
318
  Escort::Logger.output.puts "Link module command: #{link_module}"
317
319
  end
320
+
321
+ # extract a Puppetfile from metadata.json and install modules using r10k
322
+ def self.install_modules()
323
+ json = JSON.parse(File.read(METADATA))
324
+ puppetfile = []
325
+ if json.has_key?("dependencies")
326
+ json["dependencies"].each { |dependency|
327
+ line = "mod '#{dependency['name']}'"
328
+ if dependency.has_key?("version_requirement")
329
+ # R10K supports specifc named version or 'latest', not the rich versions defined in metadata. To make this
330
+ # work we will drop any version that specifies a range and just install the latest
331
+ if dependency['version_requirement'].start_with?(/\d/)
332
+ line += ", '#{dependency['version_requirement']}'"
333
+ end
334
+ end
335
+ puppetfile << line
336
+ }
337
+ end
338
+
339
+ File.open(TMP_PUPPETFILE, "w") do |f|
340
+ f.puts(puppetfile)
341
+ end
342
+
343
+ PDQTest::Emoji.emoji_message("🐌", "I'm downloading The Internet, please hold...")
344
+
345
+ cmd = "bundle exec r10k puppetfile install --verbose --moduledir ./spec/fixtures/modules --config .r10k.yaml --puppetfile #{TMP_PUPPETFILE}"
346
+ status = system(cmd)
347
+
348
+ status
349
+ end
318
350
  end
319
351
  end
data/lib/pdqtest/rspec.rb CHANGED
@@ -5,6 +5,7 @@ require 'pdqtest/emoji'
5
5
  require 'erb'
6
6
  require 'fileutils'
7
7
  require 'pdqtest/util'
8
+ require 'json'
8
9
 
9
10
 
10
11
  module PDQTest
@@ -19,9 +20,8 @@ module PDQTest
19
20
  FileUtils.mkdir_p(MODULE_CACHE_DIR)
20
21
  end
21
22
 
22
- PDQTest::Emoji.emoji_message("🐌", "I'm downloading The Internet, please hold...")
23
- cmd = "LIBRARIAN_PUPPET_TMP=#{MODULE_CACHE_DIR} bundle exec librarian-puppet install --path ./spec/fixtures/modules --destructive"
24
- status = system(cmd)
23
+ status = PDQTest::Puppet.install_modules()
24
+
25
25
  if status
26
26
  PDQTest::Puppet.git_fixtures.each { |extra_mod_install_cmd|
27
27
  if status
@@ -62,9 +62,7 @@ module PDQTest
62
62
  end
63
63
 
64
64
  # process the rspec template into a new file
65
- template = File.read(Util::resource_path(File.join('templates', 'rspec.rb.erb')))
66
- testcase = ERB.new(template, nil, '-').result(binding)
67
- File.write(spec_file, testcase)
65
+ PDQTest::Skeleton.install_template(spec_file, 'rspec.rb.erb', {:classname=>classname})
68
66
  end
69
67
  }
70
68
  end
@@ -41,12 +41,13 @@ module PDQTest
41
41
  end
42
42
  end
43
43
 
44
- def self.install_example(filename)
45
- example_file = File.join(EXAMPLES_DIR, filename)
46
- if ! File.exists?(example_file)
47
- template = File.read(Util::resource_path(File.join('templates', 'examples_init.pp.erb')))
48
- init_pp = ERB.new(template, nil, '-').result(binding)
49
- File.write(example_file, init_pp)
44
+ # vars is a hash of variables that can be accessed in template
45
+ def self.install_template(target, template_file, vars)
46
+ example_file = File.join(EXAMPLES_DIR, template_file)
47
+ if ! File.exists?(target)
48
+ template = File.read(Util::resource_path(File.join('templates', template_file)))
49
+ content = ERB.new(template, nil, '-').result(binding)
50
+ File.write(target, content)
50
51
  end
51
52
  end
52
53
 
@@ -90,11 +91,12 @@ module PDQTest
90
91
  install_skeleton('Makefile', 'Makefile')
91
92
  install_skeleton('bitbucket-pipelines.yml', 'bitbucket-pipelines.yml')
92
93
  install_skeleton('.travis.yml', 'dot_travis.yml')
94
+ install_template('.r10k.yaml', 'r10k.yaml.erb', {})
93
95
  end
94
96
 
95
97
  def self.install_acceptance(example_file ="init.pp")
96
- install_example(File.basename(example_file))
97
98
  example_name = File.basename(example_file).gsub(/\.pp$/, '')
99
+ install_template("#{EXAMPLES_DIR}/#{File.basename(example_file)}",'examples_init.pp.erb', {})
98
100
 
99
101
  install_skeleton(File.join('spec', 'acceptance', "#{example_name}.bats"), 'init.bats', false)
100
102
  install_skeleton(File.join('spec', 'acceptance', "#{example_name}__before.bats"), 'init__before.bats', false)
@@ -1,4 +1,4 @@
1
1
  module PDQTest
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  PUPPET_VERSION = "5.3.5"
4
4
  end
data/pdqtest.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.16"
25
25
  spec.add_development_dependency "coveralls", "0.8.21"
26
- spec.add_development_dependency "fakefs", "0.13.3"
26
+ spec.add_development_dependency "fakefs", "0.14.2"
27
27
  spec.add_development_dependency "puppet", "5.3.5"
28
28
 
29
29
  spec.add_runtime_dependency "rake", "12.3.1"
@@ -35,8 +35,8 @@ Gem::Specification.new do |spec|
35
35
  spec.add_runtime_dependency "docker-api", "1.34.2"
36
36
  spec.add_runtime_dependency "puppet-lint", "2.3.5"
37
37
  spec.add_runtime_dependency "puppet-syntax", "2.4.1"
38
- spec.add_runtime_dependency "puppetlabs_spec_helper", "2.6.2"
39
- spec.add_runtime_dependency "librarian-puppet", "3.0.0"
38
+ spec.add_runtime_dependency "puppetlabs_spec_helper", "2.7.0"
39
+ spec.add_runtime_dependency "r10k", "2.6.2"
40
40
  spec.add_runtime_dependency "git_refresh", "0.1.1"
41
41
  spec.add_runtime_dependency "puppet_factset", "0.5.0"
42
42
  end
@@ -5,3 +5,4 @@ Puppetfile.lock
5
5
  .tmp
6
6
  .yardoc
7
7
  /pkg
8
+ .Puppetfile.pdqtest
@@ -0,0 +1,3 @@
1
+ ---
2
+ :cachedir: <%= PDQTest::Util::app_dir %>/cache/modules
3
+
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'puppet_factset'
3
- describe '<%= classname %>' do
3
+ describe '<%= vars[:classname] %>' do
4
4
  # Uncomment only the factset you would like to use for these tests
5
5
  <%
6
6
  require 'puppet_factset'
@@ -18,6 +18,6 @@ PuppetFactset.factsets.each { |factset|
18
18
  end
19
19
 
20
20
  context 'with default values for all parameters' do
21
- it { should contain_class('<%= classname %>') }
21
+ it { should contain_class('<%= vars[:classname] %>') }
22
22
  end
23
23
  end
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: 1.1.0
4
+ version: 1.2.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: 2018-04-15 00:00:00.000000000 Z
11
+ date: 2018-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 0.13.3
47
+ version: 0.14.2
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 0.13.3
54
+ version: 0.14.2
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: puppet
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -198,28 +198,28 @@ dependencies:
198
198
  requirements:
199
199
  - - '='
200
200
  - !ruby/object:Gem::Version
201
- version: 2.6.2
201
+ version: 2.7.0
202
202
  type: :runtime
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
206
  - - '='
207
207
  - !ruby/object:Gem::Version
208
- version: 2.6.2
208
+ version: 2.7.0
209
209
  - !ruby/object:Gem::Dependency
210
- name: librarian-puppet
210
+ name: r10k
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
213
  - - '='
214
214
  - !ruby/object:Gem::Version
215
- version: 3.0.0
215
+ version: 2.6.2
216
216
  type: :runtime
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - '='
221
221
  - !ruby/object:Gem::Version
222
- version: 3.0.0
222
+ version: 2.6.2
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: git_refresh
225
225
  requirement: !ruby/object:Gem::Requirement
@@ -314,6 +314,7 @@ files:
314
314
  - res/skeleton/spec_helper.rb
315
315
  - res/skeleton/test.yaml
316
316
  - res/templates/examples_init.pp.erb
317
+ - res/templates/r10k.yaml.erb
317
318
  - res/templates/rspec.rb.erb
318
319
  homepage: https://github.com/GeoffWilliams/pdqtest
319
320
  licenses: