puppetlabs_spec_helper 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b893338e787bafe13cafce81b8513264ef35cd74
4
- data.tar.gz: 4c1bcdbcf336de9486e52ee9c6ddd1ff41d23157
3
+ metadata.gz: 426cd8838d534c5070cb5995d7a985f07870dd68
4
+ data.tar.gz: a1145c2a54a8c44760bf51d731720587a60deba4
5
5
  SHA512:
6
- metadata.gz: 8744098fa158561caf9b31abce27fcbc5fa85106398dba473276cc52660ef4ecc8750388099cadb0845ac23082509fecf7eecd46cd234a2e6f28bab2960dcc42
7
- data.tar.gz: 9ce7bad037d78361d29db6df4ac946cd236dfa7d09c19bff47b83c3d79f881e7f5289ed8f2eac0692ce814f3b01674b4f1939fd2ce1f455775bed86a9dbcf9e9
6
+ metadata.gz: 868efeb2d113293f52366537491a22e29505a7a406332327cae0301734cddd6ca307f7a0217100c271ccac9c1f72348baef6763f5e4132a6e24a645a47c1c500
7
+ data.tar.gz: 2fa3274a70b1ebe0a8ba9284ee685d579de416ae2db87ce3954275758d49402babbfcc535776fabbf89e9b816ffb84ac48f88f828d39d0550372114eacd9ab87
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ before_install:
3
+ # https://github.com/bundler/bundler/issues/3558
4
+ gem update bundler
5
+ script: bundle exec rake spec
6
+ rvm:
7
+ - 1.9.3
8
+ - 2.0
9
+ - 2.1
10
+ notifications:
11
+ email: false
@@ -2,6 +2,20 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
+ ## [1.1.0] - 2015-02-25
6
+ ### Summary:
7
+ This release adds the ability to clone fixtures from git in parallel, speeding
8
+ up the spec\_prep rake task.
9
+
10
+ ### Added:
11
+ - Parallel fixtures cloning
12
+ - Various rake check tasks for module release preparation
13
+
14
+ ### Fixed:
15
+ - Added travis ci
16
+ - Added contributing doc
17
+ - Don't validate metadata if metadata-json-lint gem is not present
18
+
5
19
  ## [1.0.1] - 2015-11-06
6
20
  ### Summary:
7
21
  This bugfix release fixes the Error vs. Errno bug in 1.0.0
@@ -215,7 +229,8 @@ compatible yet.
215
229
  ### Added
216
230
  * Initial release
217
231
 
218
- [unreleased]: https://github.com/puppetlabs/puppetlabs_spec_helper/compare/1.0.1...master
232
+ [unreleased]: https://github.com/puppetlabs/puppetlabs_spec_helper/compare/1.1.0...master
233
+ [1.1.0]: https://github.com/puppetlabs/puppetlabs_spec_helper/compare/1.0.1...1.1.0
219
234
  [1.0.1]: https://github.com/puppetlabs/puppetlabs_spec_helper/compare/1.0.0...1.0.1
220
235
  [1.0.0]: https://github.com/puppetlabs/puppetlabs_spec_helper/compare/0.10.3...1.0.0
221
236
  [0.10.3]: https://github.com/puppetlabs/puppetlabs_spec_helper/compare/0.10.2...0.10.3
@@ -0,0 +1,55 @@
1
+ # DEVELOPMENT NOTES
2
+
3
+ ## Building Gemspec
4
+ The Rakefile includes all the info that the gemspec file will contain. You have to update
5
+ the Rakefile instead of the gemspec.
6
+ To regenerate the gemspec just run `rake gemspec` and a new gemspec will be created
7
+ with everything required.
8
+
9
+ Running `rake build` will build out the gemspec according to the Rakefile parameters.
10
+
11
+ ```ruby
12
+ Jeweler::Tasks.new do |gem|
13
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
14
+ gem.name = "puppetlabs_spec_helper"
15
+ gem.version = "#{PuppetlabsSpecHelper::Version::STRING}"
16
+ gem.homepage = "http://github.com/puppetlabs/puppetlabs_spec_helper"
17
+ gem.license = "Apache-2.0"
18
+ gem.summary = %Q{Standard tasks and configuration for module spec tests}
19
+ gem.description = %Q{Contains rake tasks and a standard spec_helper for running spec tests on puppet modules}
20
+ gem.email = ["modules-dept@puppetlabs.com"]
21
+ gem.authors = ["Puppet Labs"]
22
+ # dependencies defined in Gemfile
23
+ end
24
+
25
+ ```
26
+
27
+ ## Version file
28
+ As part of the `rake gemspec` task, the gemspec will reference the version that is
29
+ defined in the `lib/puppetlabs_spec_helper/version.rb` file.
30
+
31
+
32
+ ## Releasing
33
+ To release the gem just run the following things.
34
+
35
+ ### 1. Update the version
36
+ update the version file : `lib/puppetlabs_spec_helper/version.rb`
37
+
38
+ ```ruby
39
+ module PuppetlabsSpecHelper
40
+ module Version
41
+ STRING = '1.0.1'
42
+ end
43
+ end
44
+ ```
45
+
46
+ ### 2. Generate and push the release to git
47
+ rake gemspec:release
48
+
49
+ ### 3. Tag and release to git
50
+ Since the default behavior of jewler is to use tags like `v1.0.1` we cannot use
51
+ the `git:release` task and will need to use `git:pl_release` which creates a tag
52
+ without the `v` and pushes to master.
53
+
54
+ ### 4. Release to rubygems
55
+ rake release
data/Gemfile CHANGED
@@ -1,9 +1,16 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
- gemspec
3
+ gem 'rake'
4
+ gem 'rspec-puppet'
5
+ gem 'puppet-lint'
6
+ gem 'puppet-syntax'
7
+ gem 'mocha'
4
8
 
5
- if File.exists? "#{__FILE__}.local"
6
- eval(File.read("#{__FILE__}.local"), binding)
9
+ group :development do
10
+ gem 'yard'
11
+ gem 'pry'
12
+ gem 'jeweler'
13
+ gem "puppet", ENV['PUPPET_VERSION'] || '~> 3.8.3'
7
14
  end
8
15
 
9
16
  # vim:filetype=ruby
@@ -43,6 +43,24 @@ And run the spec tests:
43
43
  $ cd $modulename
44
44
  $ rake spec
45
45
 
46
+
47
+ ### Parallel Fixture Downloads
48
+ Fixture downloads will now execute in parallel to speed up the testing process. Which can represent >= 600% speed increase (depending on number of threads). You can control the amount of threads by setting the `MAX_FIXTURE_THREAD_COUNT` environment variable
49
+ to a positive integer, the default is currently 10. We don't suggest going higher than 25 as the gains are marginal due to some repos taking a long time to download. Please be aware that your internal VCS system may not be able to handle a high load in which case the server would fail to clone the repository. Because of this issue, this setting is tunable via `MAX_FIXTURE_THREAD_COUNT`.
50
+
51
+ Additionally, you can also speed up cloning when using the ssh protocol by multiplexing ssh sessions. Add something similar to your ssh config.
52
+ Note: you may need to change the host if your using an internal git server.
53
+
54
+ ```shell
55
+ Host github.com
56
+ ControlMaster auto
57
+ ControlPath ~/.ssh/ssh-%r@%h:%p
58
+ ControlPersist yes
59
+
60
+ ```
61
+
62
+ Note: parallel downloads is only available for repositories and not forge modules.
63
+
46
64
  Issues
47
65
  ======
48
66
 
@@ -142,7 +160,7 @@ Using Fixtures
142
160
  `rake spec_prep` is run. To do so, all required modules should be listed in a
143
161
  file named `.fixtures.yml` in the root of the project.
144
162
 
145
- When specifying the repo source of the fixture you have a few options as to which revision of the codebase you wish to use.
163
+ When specifying the repo source of the fixture you have a few options as to which revision of the codebase you wish to use.
146
164
 
147
165
  * repo - the url to the repo
148
166
  * scm - options include git or hg. This is an optional step as the helper code will figure out which scm is used.
@@ -245,4 +263,29 @@ instances in a manner decoupled from the internal behavior of Puppet:
245
263
  end
246
264
  end
247
265
 
266
+ Some Notes for Windows Users
267
+ ==============
268
+
269
+ A windows users may need to do one of two things to execute 'rake spec'.
270
+
271
+ Although things may appear to work, the init.pp may not transfer to the fixtures folder as needed
272
+ or may transfer as an empty file.
273
+
274
+ This is related to a registry security setting requiring elevated privileges to create symbolic links.
275
+
276
+ Currently, there are two known approaches to get around this problem.
277
+
278
+ - run your windows shell (cmd) as an Administrator
279
+ or
280
+ - modify the registry entry settings to allow symbolic links to be created.
281
+
282
+ The following links may give you some insight into why...
283
+
284
+ [Server Fault Post](http://serverfault.com/questions/582944/puppet-file-link-doesnt-create-target-under-windows)
285
+
286
+ [Stack Overflow Post](http://stackoverflow.com/questions/229643/how-do-i-overcome-the-the-symbolic-link-cannot-be-followed-because-its-type-is)
287
+
288
+ [Microsoft TechNet](https://technet.microsoft.com/en-us/library/cc754077.aspx)
289
+
290
+
248
291
  EOF
data/Rakefile CHANGED
@@ -1,33 +1,50 @@
1
- require 'rake'
2
- require 'rake/packagetask'
3
- require 'rubygems/package_task'
1
+ # encoding: utf-8
4
2
 
5
- task :default do
6
- sh %{rake -T}
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
7
11
  end
12
+ require 'rake'
13
+ require_relative 'lib/puppetlabs_spec_helper/version'
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "puppetlabs_spec_helper"
18
+ gem.version = "#{PuppetlabsSpecHelper::Version::STRING}"
19
+ gem.homepage = "http://github.com/puppetlabs/puppetlabs_spec_helper"
20
+ gem.license = "Apache-2.0"
21
+ gem.summary = %Q{Standard tasks and configuration for module spec tests}
22
+ gem.description = %Q{Contains rake tasks and a standard spec_helper for running spec tests on puppet modules}
23
+ gem.email = ["modules-dept@puppetlabs.com"]
24
+ gem.authors = ["Puppet Labs"]
25
+ # dependencies defined in Gemfile
26
+ end
27
+ Jeweler::RubygemsDotOrgTasks.new
8
28
 
9
- require 'fileutils'
10
-
11
- def version
12
- require 'puppetlabs_spec_helper/version'
13
- PuppetlabsSpecHelper::Version::STRING
29
+ require 'rspec/core'
30
+ require 'rspec/core/rake_task'
31
+ RSpec::Core::RakeTask.new(:spec) do |spec|
32
+ spec.pattern = FileList['spec/**/*_spec.rb'].exclude('spec/fixtures/**/*_spec.rb')
14
33
  end
15
34
 
16
- namespace :package do
17
- desc "Create the gem"
18
- task :gem do
19
- spec = Gem::Specification.load("puppetlabs_spec_helper.gemspec")
20
- Dir.mkdir("pkg") rescue nil
21
- if Gem::Version.new(`gem -v`) >= Gem::Version.new("2.0.0.a")
22
- Gem::Package.build(spec)
23
- else
24
- Gem::Builder.new(spec).build
25
- end
26
- FileUtils.move("puppetlabs_spec_helper-#{version}.gem", "pkg")
35
+ namespace :git do
36
+ desc "Create a new tag that uses #{PuppetlabsSpecHelper::Version::STRING} as the tag"
37
+ task :tag do
38
+ `git tag -m '#{PuppetlabsSpecHelper::Version::STRING}'`
39
+ end
40
+ desc "Tag and push to master"
41
+ task :pl_release do
42
+ Rake::Task["git:tag"].invoke
43
+ `git push origin master --tags`
27
44
  end
28
45
  end
29
46
 
30
- desc "Cleanup pkg directory"
31
- task :clean do
32
- FileUtils.rm_rf("pkg")
33
- end
47
+ task :default => :spec
48
+
49
+ require 'yard'
50
+ YARD::Rake::YardocTask.new
@@ -2,6 +2,13 @@ require 'rake'
2
2
  require 'rspec/core/rake_task'
3
3
  require 'yaml'
4
4
 
5
+ # optional gems
6
+ begin
7
+ require 'metadata-json-lint/rake_task'
8
+ rescue LoadError
9
+ # ignore
10
+ end
11
+
5
12
  task :default => [:help]
6
13
 
7
14
  desc "Run spec tests on an existing fixtures directory"
@@ -27,6 +34,20 @@ def source_dir
27
34
  Dir.pwd
28
35
  end
29
36
 
37
+ # cache the repositories and retruns and hash object
38
+ def repositories
39
+ unless @repositories
40
+ @repositories = fixtures('repositories')
41
+ @repositories.each do |remote, opts|
42
+ if opts.instance_of?(String)
43
+ @repositories[remote] = {"target" => opts} # inject a hash
44
+ end
45
+ end
46
+ end
47
+ @repositories
48
+ end
49
+
50
+
30
51
  def fixtures(category)
31
52
  if File.exists?('.fixtures.yml')
32
53
  fixtures_yaml = '.fixtures.yml'
@@ -77,9 +98,13 @@ def clone_repo(scm, remote, target, ref=nil, branch=nil, flags = nil)
77
98
  args.push(flags) if flags
78
99
  args.push(remote, target)
79
100
  else
80
- fail "Unfortunately #{scm} is not supported yet"
101
+ fail "Unfortunately #{scm} is not supported yet"
102
+ end
103
+ result = system("#{scm} #{args.flatten.join ' '}")
104
+ unless File::exists?(target)
105
+ fail "Failed to clone #{scm} repository #{remote} into #{target}"
81
106
  end
82
- system("#{scm} #{args.flatten.join ' '}")
107
+ result
83
108
  end
84
109
 
85
110
  def revision(scm, target, ref)
@@ -90,11 +115,56 @@ def revision(scm, target, ref)
90
115
  when 'git'
91
116
  args.push('reset', '--hard', ref)
92
117
  else
93
- fail "Unfortunately #{scm} is not supported yet"
118
+ fail "Unfortunately #{scm} is not supported yet"
94
119
  end
95
120
  system("cd #{target} && #{scm} #{args.flatten.join ' '}")
96
121
  end
97
122
 
123
+ # creates a logger so we can log events with certain levels
124
+ def logger
125
+ unless @logger
126
+ require 'logger'
127
+ if ENV['ENABLE_LOGGER']
128
+ level = Logger::DEBUG
129
+ else
130
+ level = Logger::INFO
131
+ end
132
+ @logger = Logger.new(STDOUT)
133
+ @logger.level = level
134
+ end
135
+ @logger
136
+ end
137
+
138
+ # returns the current thread count that is currently active
139
+ # a status of false or nil means the thread completed
140
+ # so when anything else we count that as a active thread
141
+ def current_thread_count(items)
142
+ active_threads = items.find_all do |item, opts|
143
+ if opts[:thread]
144
+ opts[:thread].status
145
+ else
146
+ false
147
+ end
148
+ end
149
+ logger.debug "Current thread count #{active_threads.count}"
150
+ active_threads.count
151
+ end
152
+
153
+ # returns the max_thread_count
154
+ # because we may want to limit ssh or https connections
155
+ def max_thread_limit
156
+ unless @max_thread_limit
157
+ # the default thread count is 10 but can be
158
+ # raised by using environment variable MAX_FIXTURE_THREAD_COUNT
159
+ if ENV['MAX_FIXTURE_THREAD_COUNT'].to_i > 0
160
+ @max_thread_limit = ENV['MAX_FIXTURE_THREAD_COUNT'].to_i
161
+ else
162
+ @max_thread_limit = 10 # the default
163
+ end
164
+ end
165
+ @max_thread_limit
166
+ end
167
+
98
168
  desc "Create the fixtures directory"
99
169
  task :spec_prep do
100
170
  # Ruby only sets File::ALT_SEPARATOR on Windows and Rubys standard library
@@ -107,25 +177,35 @@ task :spec_prep do
107
177
  rescue
108
178
  end
109
179
 
110
-
111
- fixtures("repositories").each do |remote, opts|
180
+ repositories.each do |remote, opts|
112
181
  scm = 'git'
113
- if opts.instance_of?(String)
114
- target = opts
115
- elsif opts.instance_of?(Hash)
116
- target = opts["target"]
117
- ref = opts["ref"]
118
- scm = opts["scm"] if opts["scm"]
119
- branch = opts["branch"] if opts["branch"]
120
- flags = opts["flags"]
121
- end
122
-
123
- unless File::exists?(target) || clone_repo(scm, remote, target, ref, branch, flags)
124
- fail "Failed to clone #{scm} repository #{remote} into #{target}"
182
+ target = opts["target"]
183
+ ref = opts["ref"]
184
+ scm = opts["scm"] if opts["scm"]
185
+ branch = opts["branch"] if opts["branch"]
186
+ flags = opts["flags"]
187
+ # get the current active threads that are alive
188
+ count = current_thread_count(repositories)
189
+ if count < max_thread_limit
190
+ logger.debug "New Thread started for #{remote}"
191
+ # start up a new thread and store it in the opts hash
192
+ opts[:thread] = Thread.new do
193
+ clone_repo(scm, remote, target, ref, branch, flags)
194
+ revision(scm, target, ref) if ref
195
+ end
196
+ else
197
+ # the last thread started should be the longest wait
198
+ item, item_opts = repositories.find_all {|i,o| o.has_key?(:thread)}.last
199
+ logger.debug "Waiting on #{item}"
200
+ item_opts[:thread].join # wait for the thread to finish
201
+ # now that we waited lets try again
202
+ redo
125
203
  end
126
- revision(scm, target, ref) if ref
127
204
  end
128
205
 
206
+ # wait for all the threads to finish
207
+ repositories.each {|remote, opts| opts[:thread].join }
208
+
129
209
  FileUtils::mkdir_p("spec/fixtures/modules")
130
210
  fixtures("symlinks").each do |source, target|
131
211
  if is_windows
@@ -149,9 +229,9 @@ task :spec_prep do
149
229
  next if File::exists?(target)
150
230
 
151
231
  command = "puppet module install" + ref + flags + \
152
- " --ignore-dependencies" \
153
- " --force" \
154
- " --target-dir spec/fixtures/modules #{remote}"
232
+ " --ignore-dependencies" \
233
+ " --force" \
234
+ " --target-dir spec/fixtures/modules #{remote}"
155
235
 
156
236
  unless system(command)
157
237
  fail "Failed to install module #{remote} to #{target}"
@@ -233,11 +313,11 @@ PuppetLint.configuration.relative = true
233
313
  PuppetLint::RakeTask.new(:lint) do |config|
234
314
  config.fail_on_warnings = true
235
315
  config.disable_checks = [
236
- '80chars',
237
- 'class_inherits_from_params_class',
238
- 'class_parameter_defaults',
239
- 'documentation',
240
- 'single_quote_string_with_variables']
316
+ '80chars',
317
+ 'class_inherits_from_params_class',
318
+ 'class_parameter_defaults',
319
+ 'documentation',
320
+ 'single_quote_string_with_variables']
241
321
  config.ignore_paths = ["tests/**/*.pp", "vendor/**/*.pp","examples/**/*.pp", "spec/**/*.pp", "pkg/**/*.pp"]
242
322
  end
243
323
 
@@ -248,23 +328,98 @@ PuppetSyntax.exclude_paths << "pkg/**/*"
248
328
  PuppetSyntax.exclude_paths << "vendor/**/*"
249
329
  PuppetSyntax.future_parser = true if ENV['FUTURE_PARSER'] == 'yes'
250
330
 
251
- desc "Check syntax of Ruby files and call :syntax and :metadata"
331
+ desc "Check syntax of Ruby files and call :syntax and :metadata_lint"
252
332
  task :validate do
253
333
  Dir['lib/**/*.rb'].each do |lib_file|
254
334
  sh "ruby -c #{lib_file}"
255
335
  end
256
336
 
257
337
  Rake::Task[:syntax].invoke
258
- Rake::Task[:metadata].invoke if File.exist?('metadata.json')
338
+ if File.exist?('metadata.json')
339
+ if Rake::Task.task_defined?(:metadata_lint)
340
+ Rake::Task[:metadata_lint].invoke
341
+ else
342
+ warn "Skipping metadata validation; the metadata-json-lint gem was not found"
343
+ end
344
+ end
259
345
  end
260
346
 
261
- desc "Validate metadata.json file"
262
- task :metadata do
263
- begin
264
- require 'metadata_json_lint'
265
- sh "metadata-json-lint metadata.json"
266
- rescue LoadError => e
267
- warn "Skipping metadata validation; the metadata-json-lint gem was not found"
347
+ desc "Print development version of module"
348
+ task :compute_dev_version do
349
+ version = ''
350
+ if File.exists?( 'metadata.json' )
351
+ require 'json'
352
+
353
+ modinfo = JSON.parse(File.read( 'metadata.json' ))
354
+ version = modinfo['version']
355
+ elsif File.exists?( 'Modulefile' )
356
+ modfile = File.read('Modulefile')
357
+ version = modfile.match(/\nversion[ ]+['"](.*)['"]/)[1]
358
+ else
359
+ fail "Could not find a metadata.json or Modulefile! Cannot compute dev version without one or the other!"
360
+ end
361
+
362
+ sha = `git rev-parse HEAD`[0..7]
363
+
364
+ # If we're in a CI environment include our build number
365
+ if build = ENV['BUILD_NUMBER'] || ENV['TRAVIS_BUILD_NUMBER']
366
+ new_version = sprintf('%s-%04d-%s', version, build, sha)
367
+ else
368
+ new_version = "#{version}-#{sha}"
369
+ end
370
+
371
+ print new_version
372
+ end
373
+
374
+ desc "Runs all nessesary checks on a module in preparation for a release"
375
+ task :release_checks do
376
+ Rake::Task[:lint].invoke
377
+ Rake::Task[:validate].invoke
378
+ Rake::Task[:spec].invoke
379
+ Rake::Task["check:symlinks"].invoke
380
+ Rake::Task["check:test_file"].invoke
381
+ Rake::Task["check:dot_underscore"].invoke
382
+ Rake::Task["check:git_ignore"].invoke
383
+ end
384
+
385
+ namespace :check do
386
+ desc "Fails if symlinks are present in directory"
387
+ task :symlinks do
388
+ symlink = `find . -type l -ls`
389
+ unless symlink == ""
390
+ puts symlink
391
+ fail "A symlink exists within this directory"
392
+ end
393
+ end
394
+
395
+ desc "Fails if .pp files present in tests folder"
396
+ task :test_file do
397
+ if Dir.exist?("tests")
398
+ Dir.chdir("tests")
399
+ ppfiles = Dir["*.pp"]
400
+ unless ppfiles.empty?
401
+ puts ppfiles
402
+ fail ".pp files present in tests folder; Move them to an examples folder following the new convention"
403
+ end
404
+ end
405
+ end
406
+
407
+ desc "Fails if any ._ files are present in directory"
408
+ task :dot_underscore do
409
+ dirs = Dir["._*"]
410
+ unless dirs.empty?
411
+ puts dirs
412
+ fail "._ files are present in the directory"
413
+ end
414
+ end
415
+
416
+ desc "Fails if directories contain the files specified in .gitignore"
417
+ task :git_ignore do
418
+ matched = `git ls-files --ignored --exclude-standard`
419
+ unless matched == ""
420
+ puts matched
421
+ fail "File specified in .gitignore has been committed"
422
+ end
268
423
  end
269
424
  end
270
425
 
@@ -1,5 +1,5 @@
1
1
  module PuppetlabsSpecHelper
2
2
  module Version
3
- STRING = '1.0.1'
3
+ STRING = '1.1.0'
4
4
  end
5
5
  end
@@ -1,25 +1,88 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
1
4
  # -*- encoding: utf-8 -*-
2
- $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
3
- require "puppetlabs_spec_helper/version"
5
+ # stub: puppetlabs_spec_helper 1.1.0 ruby lib
4
6
 
5
7
  Gem::Specification.new do |s|
6
- s.name = "puppetlabs_spec_helper"
7
- s.version = PuppetlabsSpecHelper::Version::STRING
8
- s.authors = ["Puppet Labs"]
9
- s.email = ["modules-dept@puppetlabs.com"]
10
- s.homepage = "http://github.com/puppetlabs/puppetlabs_spec_helper"
11
- s.summary = "Standard tasks and configuration for module spec tests"
8
+ s.name = "puppetlabs_spec_helper"
9
+ s.version = "1.1.0"
10
+
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
13
+ s.authors = ["Puppet Labs"]
14
+ s.date = "2016-02-25"
12
15
  s.description = "Contains rake tasks and a standard spec_helper for running spec tests on puppet modules"
13
- s.licenses = 'Apache-2.0'
16
+ s.email = ["modules-dept@puppetlabs.com"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE",
19
+ "README.markdown"
20
+ ]
21
+ s.files = [
22
+ ".noexec.yaml",
23
+ ".travis.yml",
24
+ "CHANGELOG.md",
25
+ "CONTRIBUTING.md",
26
+ "Gemfile",
27
+ "LICENSE",
28
+ "README.markdown",
29
+ "Rakefile",
30
+ "lib/puppetlabs_spec_helper/module_spec_helper.rb",
31
+ "lib/puppetlabs_spec_helper/puppet_spec_helper.rb",
32
+ "lib/puppetlabs_spec_helper/puppetlabs_spec/files.rb",
33
+ "lib/puppetlabs_spec_helper/puppetlabs_spec/fixtures.rb",
34
+ "lib/puppetlabs_spec_helper/puppetlabs_spec/matchers.rb",
35
+ "lib/puppetlabs_spec_helper/puppetlabs_spec/puppet_internals.rb",
36
+ "lib/puppetlabs_spec_helper/puppetlabs_spec_helper.rb",
37
+ "lib/puppetlabs_spec_helper/rake_tasks.rb",
38
+ "lib/puppetlabs_spec_helper/version.rb",
39
+ "puppet_spec_helper.rb",
40
+ "puppetlabs_spec_helper.gemspec",
41
+ "puppetlabs_spec_helper.rb",
42
+ "spec/lib/puppet/type/spechelper.rb",
43
+ "spec/spec_helper.rb",
44
+ "spec/unit/puppetlabs_spec_helper/puppetlabs_spec/puppet_internals_spec.rb",
45
+ "spec/watchr.rb"
46
+ ]
47
+ s.homepage = "http://github.com/puppetlabs/puppetlabs_spec_helper"
48
+ s.licenses = ["Apache-2.0"]
49
+ s.rubygems_version = "2.2.3"
50
+ s.summary = "Standard tasks and configuration for module spec tests"
14
51
 
15
- s.files = `git ls-files`.split("\n")
16
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
52
+ if s.respond_to? :specification_version then
53
+ s.specification_version = 4
18
54
 
19
- # Runtime dependencies, but also probably dependencies of requiring projects
20
- s.add_runtime_dependency 'rake'
21
- s.add_runtime_dependency 'rspec-puppet'
22
- s.add_runtime_dependency 'puppet-lint'
23
- s.add_runtime_dependency 'puppet-syntax'
24
- s.add_runtime_dependency 'mocha'
55
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
56
+ s.add_runtime_dependency(%q<rake>, [">= 0"])
57
+ s.add_runtime_dependency(%q<rspec-puppet>, [">= 0"])
58
+ s.add_runtime_dependency(%q<puppet-lint>, [">= 0"])
59
+ s.add_runtime_dependency(%q<puppet-syntax>, [">= 0"])
60
+ s.add_runtime_dependency(%q<mocha>, [">= 0"])
61
+ s.add_development_dependency(%q<yard>, [">= 0"])
62
+ s.add_development_dependency(%q<pry>, [">= 0"])
63
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
64
+ s.add_development_dependency(%q<puppet>, ["~> 3.8.3"])
65
+ else
66
+ s.add_dependency(%q<rake>, [">= 0"])
67
+ s.add_dependency(%q<rspec-puppet>, [">= 0"])
68
+ s.add_dependency(%q<puppet-lint>, [">= 0"])
69
+ s.add_dependency(%q<puppet-syntax>, [">= 0"])
70
+ s.add_dependency(%q<mocha>, [">= 0"])
71
+ s.add_dependency(%q<yard>, [">= 0"])
72
+ s.add_dependency(%q<pry>, [">= 0"])
73
+ s.add_dependency(%q<jeweler>, [">= 0"])
74
+ s.add_dependency(%q<puppet>, ["~> 3.8.3"])
75
+ end
76
+ else
77
+ s.add_dependency(%q<rake>, [">= 0"])
78
+ s.add_dependency(%q<rspec-puppet>, [">= 0"])
79
+ s.add_dependency(%q<puppet-lint>, [">= 0"])
80
+ s.add_dependency(%q<puppet-syntax>, [">= 0"])
81
+ s.add_dependency(%q<mocha>, [">= 0"])
82
+ s.add_dependency(%q<yard>, [">= 0"])
83
+ s.add_dependency(%q<pry>, [">= 0"])
84
+ s.add_dependency(%q<jeweler>, [">= 0"])
85
+ s.add_dependency(%q<puppet>, ["~> 3.8.3"])
86
+ end
25
87
  end
88
+
@@ -0,0 +1,2 @@
1
+ RSpec.configure do |c|
2
+ end
@@ -1,32 +1,31 @@
1
- #! /usr/bin/env ruby -S rspec
2
-
1
+ require 'spec_helper'
3
2
  require 'puppetlabs_spec_helper/puppet_spec_helper'
4
3
  require 'puppetlabs_spec_helper/puppetlabs_spec/puppet_internals'
5
4
 
6
5
  describe PuppetlabsSpec::PuppetInternals do
6
+ before(:all) do
7
+ Puppet.initialize_settings
8
+ end
7
9
  describe ".scope" do
8
10
  it "should return a Puppet::Parser::Scope instance" do
9
11
  subject.scope.should be_a_kind_of Puppet::Parser::Scope
10
12
  end
11
13
 
12
- it "should be suitable for function testing" do
13
- scope = subject.scope
14
- scope.function_split(["one;two", ";"]).should == [ 'one', 'two' ]
14
+ xit "should be suitable for function testing" do
15
+ # split is now a puppet 4x core function
16
+ subject.scope.function_split(["one;two", ";"]).should == [ 'one', 'two' ]
15
17
  end
16
18
 
17
19
  it "should accept a compiler" do
18
20
  compiler = subject.compiler
19
-
20
21
  scope = subject.scope(:compiler => compiler)
21
-
22
22
  scope.compiler.should == compiler
23
23
  end
24
24
 
25
25
  it "should have a source set" do
26
26
  scope = subject.scope
27
-
28
27
  scope.source.should_not be_nil
29
- scope.source.should_not be_false
28
+ scope.source.name.should eq('foo')
30
29
  end
31
30
  end
32
31
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppetlabs_spec_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-06 00:00:00.000000000 Z
11
+ date: 2016-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -80,17 +80,76 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: yard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: jeweler
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: puppet
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 3.8.3
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 3.8.3
83
139
  description: Contains rake tasks and a standard spec_helper for running spec tests
84
140
  on puppet modules
85
141
  email:
86
142
  - modules-dept@puppetlabs.com
87
143
  executables: []
88
144
  extensions: []
89
- extra_rdoc_files: []
145
+ extra_rdoc_files:
146
+ - LICENSE
147
+ - README.markdown
90
148
  files:
91
- - ".gitignore"
92
149
  - ".noexec.yaml"
150
+ - ".travis.yml"
93
151
  - CHANGELOG.md
152
+ - CONTRIBUTING.md
94
153
  - Gemfile
95
154
  - LICENSE
96
155
  - README.markdown
@@ -108,8 +167,8 @@ files:
108
167
  - puppetlabs_spec_helper.gemspec
109
168
  - puppetlabs_spec_helper.rb
110
169
  - spec/lib/puppet/type/spechelper.rb
170
+ - spec/spec_helper.rb
111
171
  - spec/unit/puppetlabs_spec_helper/puppetlabs_spec/puppet_internals_spec.rb
112
- - spec/unit/spechelper_spec.rb
113
172
  - spec/watchr.rb
114
173
  homepage: http://github.com/puppetlabs/puppetlabs_spec_helper
115
174
  licenses:
@@ -135,8 +194,5 @@ rubygems_version: 2.2.3
135
194
  signing_key:
136
195
  specification_version: 4
137
196
  summary: Standard tasks and configuration for module spec tests
138
- test_files:
139
- - spec/lib/puppet/type/spechelper.rb
140
- - spec/unit/puppetlabs_spec_helper/puppetlabs_spec/puppet_internals_spec.rb
141
- - spec/unit/spechelper_spec.rb
142
- - spec/watchr.rb
197
+ test_files: []
198
+ has_rdoc:
data/.gitignore DELETED
@@ -1,3 +0,0 @@
1
- Gemfile.lock
2
- pkg/
3
- .*.sw*
@@ -1,43 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'puppetlabs_spec_helper/puppet_spec_helper'
3
-
4
- # ensure we can access puppet settings outside of any example group
5
- Puppet[:confdir]
6
-
7
- # set modulepath from which to load custom type
8
- Puppet[:modulepath] = File.join(File.dirname(__FILE__), '..', '..')
9
-
10
- def should_be_able_to_load_types?
11
- return true if Puppet::Test::TestHelper.respond_to?(:initialize)
12
-
13
- case Puppet.version
14
- when /^2\.7\.20/
15
- false
16
- when /^3\.0\./
17
- false
18
- else
19
- true
20
- end
21
- end
22
-
23
- # construct a top-level describe block whose declared_class is a custom type in this module
24
- describe Puppet::Type.type(:spechelper) do
25
- it "should load the type from the modulepath" do
26
- pending("this is only supported on newer versions of puppet", :unless => should_be_able_to_load_types?) do
27
- described_class.should be
28
- end
29
- end
30
-
31
- it "should have a doc string" do
32
- pending("this is only supported on newer versions of puppet", :unless => should_be_able_to_load_types?) do
33
- described_class.doc.should == "This is the spechelper type"
34
- end
35
- end
36
- end
37
-
38
- describe "Setup of settings" do
39
- it "sets confdir and vardir to something not meaningful to force tests to make their choice explicit" do
40
- Puppet[:confdir].should == "/dev/null"
41
- Puppet[:vardir].should == "/dev/null"
42
- end
43
- end