puppet_module_packaging 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data/.gitignore +12 -0
- data/.ruby-version +1 -0
- data/.travis.yml +17 -0
- data/Changelog.md +6 -0
- data/Gemfile +3 -0
- data/LICENSE +22 -0
- data/README.md +90 -0
- data/Rakefile +22 -0
- data/Vagrantfile +11 -0
- data/lib/puppet_module/pkg/tasks/build.rb +120 -0
- data/lib/puppet_module/pkg/tasks/clean.rb +15 -0
- data/lib/puppet_module/pkg/tasks/deb.rb +13 -0
- data/lib/puppet_module/pkg/tasks/install.rb +33 -0
- data/lib/puppet_module/pkg/tasks/modulefile.rb +69 -0
- data/lib/puppet_module/pkg/tasks/rake_tasks.rb +42 -0
- data/lib/puppet_module/pkg/tasks/rpm.rb +13 -0
- data/lib/puppet_module/pkg/tasks/system.rb +25 -0
- data/lib/puppet_module/pkg/tasks.rb +13 -0
- data/lib/puppet_module/pkg/version.rb +5 -0
- data/puppet_module_packaging.gemspec +40 -0
- data/rubygems-stefanozanella.crt +20 -0
- data/test/end_to_end/.gitkeep +0 -0
- data/test/end_to_end/clean_test.rb +14 -0
- data/test/end_to_end/install_test.rb +34 -0
- data/test/end_to_end/pkg_test.rb +33 -0
- data/test/end_to_end/tasks_test.rb +16 -0
- data/test/fixture/testmod/Modulefile +13 -0
- data/test/fixture/testmod/Modulefile.no_name_or_author +2 -0
- data/test/fixture/testmod/Modulefile.no_version +1 -0
- data/test/fixture/testmod/Rakefile +3 -0
- data/test/fixture/testmod/files/example.dat +0 -0
- data/test/fixture/testmod/lib/utils.rb +0 -0
- data/test/fixture/testmod/manifests/init.pp +0 -0
- data/test/fixture/testmod/templates/config.erb +0 -0
- data/test/integration/modulefile_test.rb +50 -0
- data/test/integration/system_test.rb +59 -0
- data/test/test_helper.rb +85 -0
- data/test/test_vm.pp +23 -0
- data/test/unit/.gitkeep +0 -0
- data/test/unit/build_test.rb +81 -0
- data/test/unit/clean_test.rb +13 -0
- data/test/unit/install_test.rb +34 -0
- data.tar.gz.sig +0 -0
- metadata +242 -0
- metadata.gz.sig +2 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 355d955a3532b7fd7bec451b8177c3220247f5f1
|
4
|
+
data.tar.gz: 6d8e077720efe12fe7c556dd77af6cf09a3a62ae
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c19b218cdeafa6f4f11362842c3e4e4198905bf62da25cb415decf44094c8bdcaf03abdc2397719dfa2412b768be61a04ede7815a91fd301b158eabaf65c692c
|
7
|
+
data.tar.gz: 9dac89efa58e82ac8e090f9f8fdc3bcafc8a87f5ffbca2e3875f1045206ee5e4095e9d65d5dd128243b584c9cb6c0073601da3d8270bb50562b71faf2f04db7c
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data/.gitignore
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.0.0-p247
|
data/.travis.yml
ADDED
data/Changelog.md
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Stefano Zanella
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
# Puppet Module Packaging
|
2
|
+
|
3
|
+
[![Build Status](https://travis-ci.org/stefanozanella/puppet_module_packaging.png?branch=master)](https://travis-ci.org/stefanozanella/puppet_module_packaging)
|
4
|
+
|
5
|
+
Provides Rake tasks to ease shipping of Puppet modules as proper system
|
6
|
+
packages.
|
7
|
+
|
8
|
+
Currently, it provides tasks to build Debian and RPM packages. To do that, it
|
9
|
+
uses excellent Jordan Sissel's [fpm](https://github.com/jordansissel/fpm).
|
10
|
+
|
11
|
+
**NOTE**: at this stage, this library lacks a bunch of useful features
|
12
|
+
(particularly, its behavior can't be customized in any way and there's no
|
13
|
+
dependency management). Feel free to
|
14
|
+
submit issues or PRs if there's something that could help you out and you'd
|
15
|
+
like to see integrated.
|
16
|
+
|
17
|
+
## Installation
|
18
|
+
|
19
|
+
Add this line to your application's Gemfile:
|
20
|
+
|
21
|
+
gem 'puppet_module_packaging'
|
22
|
+
|
23
|
+
And then execute:
|
24
|
+
|
25
|
+
$ bundle
|
26
|
+
|
27
|
+
Or install it yourself as:
|
28
|
+
|
29
|
+
$ gem install puppet_module_packaging
|
30
|
+
|
31
|
+
## Usage
|
32
|
+
|
33
|
+
To have the shipped Rake tasks available for your module, just add the
|
34
|
+
following line to your `Rakefile`:
|
35
|
+
|
36
|
+
require 'puppet_module_packaging/rake_task'
|
37
|
+
|
38
|
+
This will add the following tasks to your set:
|
39
|
+
|
40
|
+
* `install`
|
41
|
+
* `clean`
|
42
|
+
* `deb`
|
43
|
+
* `rpm`
|
44
|
+
|
45
|
+
To package your module, you only need to call the `deb` or `rpm` one.
|
46
|
+
The package will be output into the `pkg` folder; you can see the packaged
|
47
|
+
content into the `build` folder. _Package name_ will respect the following
|
48
|
+
format:
|
49
|
+
|
50
|
+
puppet-mod-<author>-<module_name>
|
51
|
+
|
52
|
+
The information needed to build the package are carved out from the
|
53
|
+
`Modulefile`. In particular, there must be a `name` and a `version` field; the
|
54
|
+
first one must be in the form `author/module_name`. All other fields are
|
55
|
+
optional and are mapped into package fields with equivalent meaning.
|
56
|
+
|
57
|
+
**NOTE**: The module will be installed under `/usr/share/puppet/modules`, not
|
58
|
+
into `/etc/puppet`!
|
59
|
+
|
60
|
+
## Compatibility
|
61
|
+
|
62
|
+
OS compatibility resembles the one of FPM; in particular:
|
63
|
+
|
64
|
+
* on **OS X**, only Debian packages can be built
|
65
|
+
* in order to create RPMs on other platforms, the `rpmbuild` command must be
|
66
|
+
present on the system. This can be obtained with:
|
67
|
+
* `apt-get install rpm` (Debian-based)
|
68
|
+
* `yum install rpm-build` (RedHat-based)
|
69
|
+
|
70
|
+
## Contributing
|
71
|
+
|
72
|
+
1. Fork it
|
73
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
74
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
75
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
76
|
+
5. Create new Pull Request
|
77
|
+
|
78
|
+
## Testing
|
79
|
+
|
80
|
+
Executed tests vary depending on tools availability. In particular, end-to-end
|
81
|
+
tests involving generation of an RPM package are not run if `rpmbuild` is not
|
82
|
+
found on the system. To ease development, a `Vagrantfile` is provided, complete
|
83
|
+
with a Puppet manifest to configure the testing host. If you wish to run all
|
84
|
+
the tests without installing `rpmbuild`, you can just do the following:
|
85
|
+
|
86
|
+
vagrant up
|
87
|
+
vagrant ssh
|
88
|
+
cd /vagrant
|
89
|
+
bundle install --path vendor/bundle
|
90
|
+
bundle exec rake test:all
|
data/Rakefile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rake/testtask'
|
2
|
+
require 'rubygems/tasks'
|
3
|
+
|
4
|
+
namespace :test do
|
5
|
+
suites = [:end_to_end, :unit, :integration]
|
6
|
+
|
7
|
+
desc "Run all test suites"
|
8
|
+
task :all => suites
|
9
|
+
|
10
|
+
suites.each do |suite|
|
11
|
+
Rake::TestTask.new suite do |t|
|
12
|
+
t.libs << 'lib'
|
13
|
+
t.libs << 'test'
|
14
|
+
t.pattern = "test/#{suite}/**/*.rb"
|
15
|
+
t.verbose = true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
Gem::Tasks.new
|
21
|
+
|
22
|
+
task :default => "test:all"
|
data/Vagrantfile
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
Vagrant.configure("2") do |config|
|
5
|
+
config.vm.box = "ubuntu-base-oss"
|
6
|
+
config.vm.box_url = "http://vagrantboxes.derecom.it/boxes/ubuntu-base-oss.box"
|
7
|
+
config.vm.provision :puppet do |puppet|
|
8
|
+
puppet.manifests_path = "test"
|
9
|
+
puppet.manifest_file = "test_vm.pp"
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
class Class
|
2
|
+
def type(sym)
|
3
|
+
self.class_eval <<-EOS
|
4
|
+
def type
|
5
|
+
"#{sym.to_s}"
|
6
|
+
end
|
7
|
+
EOS
|
8
|
+
end
|
9
|
+
|
10
|
+
def filename(str)
|
11
|
+
self.class_eval <<-EOS
|
12
|
+
def filename
|
13
|
+
"#{str}"
|
14
|
+
end
|
15
|
+
EOS
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
module PuppetModule
|
20
|
+
module Pkg
|
21
|
+
class Tasks
|
22
|
+
class Build
|
23
|
+
def initialize(system)
|
24
|
+
@sys = system
|
25
|
+
end
|
26
|
+
|
27
|
+
def invoke(mod, opts)
|
28
|
+
self.modinfo = mod
|
29
|
+
self.build_opts = opts
|
30
|
+
|
31
|
+
@sys.mkdir opts.pkg_dir
|
32
|
+
@sys.sh("fpm #{fpm_opts} #{installed_files}")
|
33
|
+
end
|
34
|
+
|
35
|
+
def type
|
36
|
+
raise NotImplementedError
|
37
|
+
end
|
38
|
+
|
39
|
+
def filename
|
40
|
+
raise NotImplementedError
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
attr_accessor :modinfo
|
46
|
+
attr_accessor :build_opts
|
47
|
+
|
48
|
+
def fpm_opts
|
49
|
+
[ src_fmt,
|
50
|
+
dest_fmt,
|
51
|
+
name,
|
52
|
+
version,
|
53
|
+
arch,
|
54
|
+
maintainer,
|
55
|
+
url,
|
56
|
+
description,
|
57
|
+
license,
|
58
|
+
chdir,
|
59
|
+
output ].join " "
|
60
|
+
end
|
61
|
+
|
62
|
+
def pkg_name
|
63
|
+
"puppet-mod-#{modinfo.author}-#{modinfo.name}"
|
64
|
+
end
|
65
|
+
|
66
|
+
def name
|
67
|
+
"-n #{pkg_name}"
|
68
|
+
end
|
69
|
+
|
70
|
+
def version
|
71
|
+
"-v #{modinfo.version}"
|
72
|
+
end
|
73
|
+
|
74
|
+
def arch
|
75
|
+
"-a all"
|
76
|
+
end
|
77
|
+
|
78
|
+
def maintainer
|
79
|
+
optionally('-m', modinfo.author_full)
|
80
|
+
end
|
81
|
+
|
82
|
+
def url
|
83
|
+
optionally('--url', modinfo.project_page)
|
84
|
+
end
|
85
|
+
|
86
|
+
def description
|
87
|
+
optionally('--description', modinfo.summary)
|
88
|
+
end
|
89
|
+
|
90
|
+
def license
|
91
|
+
optionally('--license', modinfo.license)
|
92
|
+
end
|
93
|
+
|
94
|
+
def src_fmt
|
95
|
+
"-s dir"
|
96
|
+
end
|
97
|
+
|
98
|
+
def chdir
|
99
|
+
"-C #{build_opts.install_dir}"
|
100
|
+
end
|
101
|
+
|
102
|
+
def installed_files
|
103
|
+
"."
|
104
|
+
end
|
105
|
+
|
106
|
+
def output
|
107
|
+
"-p #{build_opts.pkg_dir}/#{filename}"
|
108
|
+
end
|
109
|
+
|
110
|
+
def dest_fmt
|
111
|
+
"-t #{type}"
|
112
|
+
end
|
113
|
+
|
114
|
+
def optionally(switch, field)
|
115
|
+
field ? "#{switch} '#{field}'" : ""
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module PuppetModule
|
2
|
+
module Pkg
|
3
|
+
class Tasks
|
4
|
+
class Install
|
5
|
+
def initialize(system)
|
6
|
+
@sys = system
|
7
|
+
end
|
8
|
+
|
9
|
+
def invoke(mod, opts)
|
10
|
+
@mod_name = mod.name
|
11
|
+
@out_dir = opts.install_dir
|
12
|
+
|
13
|
+
@sys.mkdir install_path
|
14
|
+
@sys.cp assets_to_install, install_path
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def install_path
|
20
|
+
File.join(@out_dir, dest_path, @mod_name)
|
21
|
+
end
|
22
|
+
|
23
|
+
def dest_path
|
24
|
+
'/usr/share/puppet/modules'
|
25
|
+
end
|
26
|
+
|
27
|
+
def assets_to_install
|
28
|
+
['manifests','templates','lib','files']
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
module PuppetModule
|
4
|
+
module Pkg
|
5
|
+
class Tasks
|
6
|
+
class Modulefile
|
7
|
+
def self.parse(file)
|
8
|
+
self.new(File.read(file)).metadata
|
9
|
+
end
|
10
|
+
|
11
|
+
attr_reader :metadata
|
12
|
+
|
13
|
+
def initialize(str)
|
14
|
+
@metadata = OpenStruct.new
|
15
|
+
binding.eval str
|
16
|
+
validate_required_fields
|
17
|
+
end
|
18
|
+
|
19
|
+
def method_missing(*args)
|
20
|
+
# TODO: Maybe display an info message about the
|
21
|
+
# unrecognized/unsupported field? (it might be a typo, so the user
|
22
|
+
# might be happy to know what have been ignored)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def name(s)
|
28
|
+
@metadata.author, @metadata.name = s.split '/'
|
29
|
+
end
|
30
|
+
|
31
|
+
def version(s)
|
32
|
+
@metadata.version = s
|
33
|
+
end
|
34
|
+
|
35
|
+
def source(s)
|
36
|
+
@metadata.source = s
|
37
|
+
end
|
38
|
+
|
39
|
+
def author(s)
|
40
|
+
@metadata.author_full = s
|
41
|
+
end
|
42
|
+
|
43
|
+
def license(s)
|
44
|
+
@metadata.license = s
|
45
|
+
end
|
46
|
+
|
47
|
+
def summary(s)
|
48
|
+
@metadata.summary = s
|
49
|
+
end
|
50
|
+
|
51
|
+
def description(s)
|
52
|
+
@metadata.description = s
|
53
|
+
end
|
54
|
+
|
55
|
+
def project_page(s)
|
56
|
+
@metadata.project_page = s
|
57
|
+
end
|
58
|
+
|
59
|
+
def validate_required_fields
|
60
|
+
raise ArgumentError, 'Modulefile doesn`t contain name or author' unless
|
61
|
+
@metadata.name and @metadata.author
|
62
|
+
|
63
|
+
raise ArgumentError, 'Modulefile doesn`t contain version information' unless
|
64
|
+
@metadata.version
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'rake/tasklib'
|
2
|
+
|
3
|
+
require 'puppet_module/pkg/tasks/system'
|
4
|
+
require 'puppet_module/pkg/tasks/deb'
|
5
|
+
require 'puppet_module/pkg/tasks/rpm'
|
6
|
+
require 'puppet_module/pkg/tasks/install'
|
7
|
+
require 'puppet_module/pkg/tasks/clean'
|
8
|
+
|
9
|
+
module PuppetModule
|
10
|
+
module Pkg
|
11
|
+
class Tasks
|
12
|
+
class RakeTasks < Rake::TaskLib
|
13
|
+
def initialize(mod_info)
|
14
|
+
sys = System.new
|
15
|
+
options = OpenStruct.new(
|
16
|
+
:install_dir => 'build',
|
17
|
+
:pkg_dir => 'pkg')
|
18
|
+
|
19
|
+
desc "Install the module in a local temp dir"
|
20
|
+
task :install => :clean do
|
21
|
+
Install.new(sys).invoke(mod_info, options)
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "Clean build artifacts"
|
25
|
+
task :clean do
|
26
|
+
Clean.new(sys).invoke(mod_info, options)
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "Wraps the module into a Debian package"
|
30
|
+
task :deb => :install do
|
31
|
+
Deb.new(sys).invoke(mod_info, options)
|
32
|
+
end
|
33
|
+
|
34
|
+
desc "Wraps the module into a RPM package"
|
35
|
+
task :rpm => :install do
|
36
|
+
RPM.new(sys).invoke(mod_info, options)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module PuppetModule
|
2
|
+
module Pkg
|
3
|
+
class Tasks
|
4
|
+
class System
|
5
|
+
def mkdir(path)
|
6
|
+
FileUtils.mkdir_p path
|
7
|
+
end
|
8
|
+
|
9
|
+
def cp(src, dest)
|
10
|
+
sanitized_src = src.is_a?(Range) ? src.to_a : src
|
11
|
+
|
12
|
+
FileUtils.cp_r sanitized_src, dest
|
13
|
+
end
|
14
|
+
|
15
|
+
def rm(path)
|
16
|
+
FileUtils.rm_rf path
|
17
|
+
end
|
18
|
+
|
19
|
+
def sh(cmd)
|
20
|
+
`#{cmd}`
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$:.unshift(lib) unless $:.include?(lib)
|
4
|
+
|
5
|
+
require 'pathname'
|
6
|
+
require 'puppet_module/pkg/version'
|
7
|
+
|
8
|
+
signing_key_file = ENV['RUBYGEMS_SIGNING_KEY_FILE']
|
9
|
+
|
10
|
+
Gem::Specification.new do |spec|
|
11
|
+
spec.name = "puppet_module_packaging"
|
12
|
+
spec.version = PuppetModule::Pkg::VERSION
|
13
|
+
spec.authors = ["Stefano Zanella"]
|
14
|
+
spec.email = ["zanella.stefano@gmail.com"]
|
15
|
+
spec.summary = %q{Rake tasks for packaging Puppet modules}
|
16
|
+
spec.homepage = "https://github.com/stefanozanella/puppet_module_packaging"
|
17
|
+
spec.license = "MIT"
|
18
|
+
spec.description = <<-EOS
|
19
|
+
puppet_module_packaging provides some Rake tasks to ease wrapping Puppet
|
20
|
+
modules into proper system packages like deb and rpm.
|
21
|
+
EOS
|
22
|
+
|
23
|
+
spec.files = `git ls-files`.split($/)
|
24
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
25
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
26
|
+
spec.require_paths = ["lib"]
|
27
|
+
|
28
|
+
spec.add_runtime_dependency "fpm", "~> 0.4"
|
29
|
+
|
30
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
31
|
+
spec.add_development_dependency "rake"
|
32
|
+
spec.add_development_dependency "rubygems-tasks"
|
33
|
+
spec.add_development_dependency "minitest"
|
34
|
+
spec.add_development_dependency "minitest-filesystem"
|
35
|
+
spec.add_development_dependency "minitest-around"
|
36
|
+
spec.add_development_dependency "mocha"
|
37
|
+
|
38
|
+
spec.signing_key = Pathname.new(signing_key_file).expand_path if signing_key_file
|
39
|
+
spec.cert_chain = ["rubygems-stefanozanella.crt"]
|
40
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDQDCCAiigAwIBAgIBADANBgkqhkiG9w0BAQUFADBGMRgwFgYDVQQDDA96YW5l
|
3
|
+
bGxhLnN0ZWZhbm8xFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixk
|
4
|
+
ARkWA2NvbTAeFw0xMzA4MDcxOTA2MDZaFw0xNDA4MDcxOTA2MDZaMEYxGDAWBgNV
|
5
|
+
BAMMD3phbmVsbGEuc3RlZmFubzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYK
|
6
|
+
CZImiZPyLGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
7
|
+
2JCnJCnjjs62MR/Tw/4WgSG42ruiCEqXV1ECMsXymHPE8xyHkYAwLXvBRzOkZ/IA
|
8
|
+
puJ1XhScduMRcUuE0ZPA5N2HBZI0WsmyyNTYBjOob8m0SNInoRZfIMloj3D8QzB7
|
9
|
+
/6G5HLMWNx60JEpIDgfXvIuSRKNKQ0/0+/G/H4COgj72pd3F4dYltvx+mSwPRq7Q
|
10
|
+
MdZsK3T5Q3d4eLBY1VSlJpq0wkwdEWTXAhR0Mfmbn1D8m9IhJfubgXuXVBY4OPO8
|
11
|
+
KAF/wWqTkzA6guVQlSKdZR4vwms7OpeFkotnivBKa6JwUQSXO8AZEyy53V8cSYDu
|
12
|
+
dbaFi53YbEwOWSMQnW8/kQIDAQABozkwNzAdBgNVHQ4EFgQUcBKkmJAvSTKfDf7z
|
13
|
+
LEu1wE+Rk+swCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwDQYJKoZIhvcNAQEFBQAD
|
14
|
+
ggEBAMeqfk1l4Y0iZ8jNiu0afcQ60DVqBkRtrT/rsZEqGsdOw11bntOE4yWpo4Kd
|
15
|
+
Y0C/kYrVQ/mIN7IGKbCSjES3aYdQftV9SRW77FA25m2KXRbnEYtJDUX35gAqSdRY
|
16
|
+
9IiYivsMq2dr70eKPNFrFOwWvmwhcGyEG8EDvYoXWllke7RGz1Dn/AZx6jPnShO+
|
17
|
+
0ru4OXsM9++md3sGXIugEFNygvo2/1yQoTe6+XiBocS+pWsJd6JZBfkxPRT4Dz4H
|
18
|
+
RigBD0E3/t/ABjCXkmqwp5gnAZmP8JiVUkn8rp5E0FXvC8T7nsPs2TW/TAmUV6rN
|
19
|
+
hK25FX8YWgT9fD9y3PpWjiYcrCo=
|
20
|
+
-----END CERTIFICATE-----
|
File without changes
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe 'clean task' do
|
4
|
+
around do |t|
|
5
|
+
do_into_tmp_module('testmod', t)
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'removes the directories produced by the install task' do
|
9
|
+
`rake install`
|
10
|
+
`rake clean`
|
11
|
+
|
12
|
+
refute directory?('build'), 'expected build dir to have been wiped, but it was still there'
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe 'install task' do
|
4
|
+
around do |t|
|
5
|
+
do_into_tmp_module('testmod', t)
|
6
|
+
end
|
7
|
+
|
8
|
+
describe 'by default' do
|
9
|
+
let(:output_dir) { 'build/usr/share/puppet/modules/testmod' }
|
10
|
+
|
11
|
+
it 'installs all module dirs into the `build` subfolder' do
|
12
|
+
`rake install`
|
13
|
+
|
14
|
+
assert directory?(output_dir), "expected #{output_dir} to exist, but it didn't"
|
15
|
+
filesystem {
|
16
|
+
dir 'manifests' do
|
17
|
+
file 'init.pp'
|
18
|
+
end
|
19
|
+
|
20
|
+
dir 'files' do
|
21
|
+
file 'example.dat'
|
22
|
+
end
|
23
|
+
|
24
|
+
dir 'templates' do
|
25
|
+
file 'config.erb'
|
26
|
+
end
|
27
|
+
|
28
|
+
dir 'lib' do
|
29
|
+
file 'utils.rb'
|
30
|
+
end
|
31
|
+
}.must_exist_within output_dir
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|