fizzgig 0.1.0 → 0.1.1
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.
- data/.gitignore +1 -0
- data/CHANGELOG.md +11 -0
- data/LICENSE +21 -0
- data/README.asciidoc +151 -0
- data/TODO.org +14 -3
- data/fizzgig.gemspec +1 -1
- data/lib/fizzgig.rb +2 -2
- data/lib/fizzgig/matchers.rb +27 -13
- data/spec/fizzgig_spec.rb +85 -82
- data/spec/modules/facts/manifests/class_test.pp +3 -0
- data/spec/modules/params_test/manifests/init.pp +8 -0
- metadata +7 -4
- data/spec/modules/facts/manifests/template_test.pp +0 -5
data/.gitignore
CHANGED
data/CHANGELOG.md
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Copyright (c) 2013 Philip Potter
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a
|
4
|
+
copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be included
|
12
|
+
in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
15
|
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
17
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
18
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
19
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
20
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
data/README.asciidoc
ADDED
@@ -0,0 +1,151 @@
|
|
1
|
+
Fizzgig
|
2
|
+
-------
|
3
|
+
|
4
|
+
Fizzgig is a library to help write fast unit tests.
|
5
|
+
|
6
|
+
[source,ruby]
|
7
|
+
-------------------------------------------
|
8
|
+
describe 'ganglia::cronjob' do
|
9
|
+
include Fizzgig::CatalogMatchers
|
10
|
+
|
11
|
+
it 'should create ganglia script and cron job' do
|
12
|
+
catalog = Fizzgig.instantiate <<END
|
13
|
+
ganglia::cronjob {'tiger':
|
14
|
+
content => 'tiger content',
|
15
|
+
}
|
16
|
+
END
|
17
|
+
catalog.should contain_file('/etc/ganglia/scripts/tiger')
|
18
|
+
.with_content('tiger content')
|
19
|
+
.with_mode('0755')
|
20
|
+
|
21
|
+
catalog.should contain_cron('ganglia-tiger')
|
22
|
+
.with_command('/etc/ganglia/scripts/tiger')
|
23
|
+
.with_minute('*')
|
24
|
+
.with_user('root')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
-------------------------------------------
|
28
|
+
|
29
|
+
Basic Functionality
|
30
|
+
~~~~~~~~~~~~~~~~~~~
|
31
|
+
|
32
|
+
Fizzgig is based around two functions: +instantiate+ and +include+,
|
33
|
+
which will instantiate a defined type and include a class
|
34
|
+
respectively:
|
35
|
+
|
36
|
+
[source,ruby]
|
37
|
+
catalog = Fizzgig.instantiate %q[ nginx::site {'foo.com': max_age => 300 } ]
|
38
|
+
|
39
|
+
[source,ruby]
|
40
|
+
catalog = Fizzgig.include 'nginx'
|
41
|
+
|
42
|
+
Each of these functions returns a Puppet::Resource::Catalog
|
43
|
+
object. You can use the matchers in Fizzgig::CatalogMatchers to make
|
44
|
+
assertions against the contents of this catalog:
|
45
|
+
|
46
|
+
[source,ruby]
|
47
|
+
catalog.should contain_file('/etc/nginx.conf').with_content(/ssl/)
|
48
|
+
|
49
|
+
Just like in rspec-puppet, you can assert the existence of defined
|
50
|
+
types within your own modules by replacing +::+ with +__+ in the name:
|
51
|
+
|
52
|
+
[source,ruby]
|
53
|
+
catalog.should contain_nginx__site('foo.com')
|
54
|
+
|
55
|
+
Stubbing facts
|
56
|
+
~~~~~~~~~~~~~~
|
57
|
+
|
58
|
+
Facts can be stubbed by passing a hash of fact values to instantiate
|
59
|
+
or include:
|
60
|
+
|
61
|
+
[source,ruby]
|
62
|
+
Fizzgig.include('nginx',:facts => {'lsbdistcodename' => 'precise'})
|
63
|
+
|
64
|
+
Stubbing functions
|
65
|
+
~~~~~~~~~~~~~~~~~~
|
66
|
+
|
67
|
+
Custom functions can also be stubbed. This is very handy for stubbing
|
68
|
+
out extdata or hieradata in tests:
|
69
|
+
|
70
|
+
[source,ruby]
|
71
|
+
-------------
|
72
|
+
Fizzgig.include('nginx',:stubs => {:extlookup => {'site_root' => 'www.foo.com'}})
|
73
|
+
.should contain_file('/etc/nginx/sites-enabled/www.foo.com')
|
74
|
+
-------------
|
75
|
+
|
76
|
+
Rationale
|
77
|
+
~~~~~~~~~
|
78
|
+
|
79
|
+
Fizzgig is designed to be fast, and to test individual units of code,
|
80
|
+
as good unit tests do. However, existing puppet testing libraries such
|
81
|
+
as https://github.com/rodjek/rspec-puppet[rspec-puppet] will compute a
|
82
|
+
complete catalog, expanding out all classes and defined types until it
|
83
|
+
reaches the individual base puppet types. This means that it can spend
|
84
|
+
time computing resources which are wholly unrelated to the test you're
|
85
|
+
writing.
|
86
|
+
|
87
|
+
Fizzgig, by contrast, treats defined types as black box abstractions:
|
88
|
+
it only adds the defined types you declare within the class or define
|
89
|
+
under test to the catalog. Types which are pulled in transitively by
|
90
|
+
other types will not be added to the catalog.
|
91
|
+
|
92
|
+
Defined types
|
93
|
+
~~~~~~~~~~~~~
|
94
|
+
|
95
|
+
To achieve its isolation, fizzgig does not transitively evaluate
|
96
|
+
defined types. Suppose I have these puppet defines:
|
97
|
+
|
98
|
+
[source,puppet]
|
99
|
+
---------------
|
100
|
+
define nginx::ssl_site () {
|
101
|
+
nginx::site {$title:
|
102
|
+
}
|
103
|
+
nginx::ssl_cert {$title:
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
define nginx::site () {
|
108
|
+
file {"/etc/nginx/sites-enabled/$title":
|
109
|
+
# ...
|
110
|
+
}
|
111
|
+
}
|
112
|
+
---------------
|
113
|
+
|
114
|
+
And I write this test:
|
115
|
+
|
116
|
+
[source,ruby]
|
117
|
+
-------------
|
118
|
+
catalog Fizzgig.instantiate %q[ nginx::ssl_site{'foo': } ]
|
119
|
+
catalog.should contain_nginx__site('foo') # ok, will pass
|
120
|
+
catalog.should contain_file('/etc/nginx/sites-enabled/foo') # ERROR, will fail
|
121
|
+
-------------
|
122
|
+
|
123
|
+
Because the file resource is not directly referenced by
|
124
|
+
+nginx::ssl_site+ but only transitively by +nginx::site+, Fizzgig will
|
125
|
+
not add it to the catalog. This means that Fizzgig will only test the
|
126
|
+
direct effects of the type under test, not of its collaborators.
|
127
|
+
|
128
|
+
|
129
|
+
WARNING: Fizzgig makes use of non-public methods in the puppet
|
130
|
+
codebase to enable it to perform this isolation. This means that even
|
131
|
+
a patch release of puppet may, in principle, cause fizzgig to
|
132
|
+
break. Fizzgig is not currently supported in any way by
|
133
|
+
puppetlabs. Use at your own risk.
|
134
|
+
|
135
|
+
Installation
|
136
|
+
~~~~~~~~~~~~
|
137
|
+
|
138
|
+
Add the following to your Gemfile:
|
139
|
+
|
140
|
+
[source,ruby]
|
141
|
+
gem "fizzgig"
|
142
|
+
|
143
|
+
Or just run:
|
144
|
+
|
145
|
+
[source]
|
146
|
+
gem install fizzgig
|
147
|
+
|
148
|
+
Licence
|
149
|
+
~~~~~~~
|
150
|
+
|
151
|
+
MIT. See LICENSE for details.
|
data/TODO.org
CHANGED
@@ -31,7 +31,19 @@ from rspec-puppet?
|
|
31
31
|
node_obj = Puppet::Node.new(nodename) # default to Puppet[:certname]?
|
32
32
|
node_obj.merge(facts_val) # but what is this?
|
33
33
|
|
34
|
-
**
|
34
|
+
** DONE Release it!
|
35
|
+
** DONE Fix bug where multiple with_foo() conditions would be overridden by the last
|
36
|
+
=should contain_file('foo').with_content(/bar/).with_content(/baz/)=
|
37
|
+
would not check =/bar/=, only =/baz/=, for example
|
38
|
+
** DONE Document it!
|
39
|
+
- [X] gem install or gemfile line
|
40
|
+
** DONE Issue with global Puppet settings config & running rspec-puppet simultaneously with puppet...
|
41
|
+
See the fizzgig branch of puppet for an example
|
42
|
+
|
43
|
+
Can we isolate the compiler from the settings?
|
44
|
+
|
45
|
+
Answer seems to be yes -- use puppetlabs_spec_helper or directly
|
46
|
+
Puppet::Test::TestHelper to tear down Puppet.settings after each test.
|
35
47
|
** TODO Ensure that modulepath can take multiple directories
|
36
48
|
- in govuk/puppet, we had trouble having multiple directories on
|
37
49
|
the module path, so we ended up doing this:
|
@@ -56,8 +68,7 @@ node_obj.merge(facts_val) # but what is this?
|
|
56
68
|
|
57
69
|
That's not so cool :(
|
58
70
|
|
59
|
-
**
|
60
|
-
** TODO Release it!
|
71
|
+
** DONE Rename
|
61
72
|
** TODO implementation-independent dependency assertions
|
62
73
|
** TODO Test standalone puppet modules
|
63
74
|
** TODO better test output for files with large content
|
data/fizzgig.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'fizzgig'
|
3
|
-
s.version = '0.1.
|
3
|
+
s.version = '0.1.1'
|
4
4
|
s.homepage = 'https://github.com/philandstuff/fizzgig'
|
5
5
|
s.summary = 'Tools for writing fast unit tests for Puppet'
|
6
6
|
s.description = 'Tools for writing fast unit tests for Puppet'
|
data/lib/fizzgig.rb
CHANGED
@@ -48,10 +48,10 @@ module Fizzgig
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def self.setup_puppet
|
51
|
-
Puppet[:
|
51
|
+
Puppet[:code] = ' ' # hack to suppress puppet from looking at Puppet[:manifest]
|
52
52
|
Puppet[:modulepath] = RSpec.configuration.modulepath
|
53
53
|
# stop template() fn from complaining about missing vardir config
|
54
|
-
Puppet[:
|
54
|
+
Puppet[:vardir] ||= ""
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
data/lib/fizzgig/matchers.rb
CHANGED
@@ -15,11 +15,13 @@ module Fizzgig
|
|
15
15
|
@catalog = catalog
|
16
16
|
resource = catalog.resource(@referenced_type,@expected_title)
|
17
17
|
if resource then
|
18
|
-
(@expected_params || {}).all? do |name,
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
(@expected_params || {}).all? do |name,expected_vals|
|
19
|
+
expected_vals.all? do |expected_val|
|
20
|
+
if expected_val.kind_of?(Regexp)
|
21
|
+
resource[name] =~ expected_val
|
22
|
+
else
|
23
|
+
resource[name] == expected_val
|
24
|
+
end
|
23
25
|
end
|
24
26
|
end
|
25
27
|
else
|
@@ -28,20 +30,19 @@ module Fizzgig
|
|
28
30
|
end
|
29
31
|
|
30
32
|
def failure_message_for_should
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
actual = possible_resource ? possible_resource.inspect : "the catalog"
|
37
|
-
"expected #{actual} to contain #{@referenced_type}[#{@expected_title}]#{param_string}"
|
33
|
+
"expected #{actual_string} to contain #{expected_string}"
|
34
|
+
end
|
35
|
+
|
36
|
+
def failure_message_for_should_not
|
37
|
+
"expected #{actual_string} not to contain #{expected_string}"
|
38
38
|
end
|
39
39
|
|
40
40
|
def method_missing(method, *args, &block)
|
41
41
|
if method.to_s =~ /^with_/
|
42
42
|
param = method.to_s.gsub(/^with_/,'')
|
43
43
|
@expected_params ||= {}
|
44
|
-
@expected_params[param]
|
44
|
+
@expected_params[param] ||= []
|
45
|
+
@expected_params[param] << args[0]
|
45
46
|
self
|
46
47
|
else
|
47
48
|
super
|
@@ -50,6 +51,19 @@ module Fizzgig
|
|
50
51
|
|
51
52
|
private
|
52
53
|
|
54
|
+
def actual_string
|
55
|
+
possible_resource = @catalog.resource(@referenced_type,@expected_title)
|
56
|
+
possible_resource ? possible_resource.inspect : "the catalog"
|
57
|
+
end
|
58
|
+
|
59
|
+
def expected_string
|
60
|
+
param_string = ""
|
61
|
+
if @expected_params
|
62
|
+
param_string = " with parameters #{@expected_params.inspect}"
|
63
|
+
end
|
64
|
+
"#{@referenced_type}[#{@expected_title}]#{param_string}"
|
65
|
+
end
|
66
|
+
|
53
67
|
def referenced_type(type)
|
54
68
|
type.split('__').map { |r| r.capitalize }.join('::')
|
55
69
|
end
|
data/spec/fizzgig_spec.rb
CHANGED
@@ -2,110 +2,113 @@ require 'spec_helper'
|
|
2
2
|
require 'fizzgig'
|
3
3
|
|
4
4
|
describe Fizzgig do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
instance.should contain_file('/etc/nginx/sites-enabled/foo').
|
10
|
-
with_ensure('present').
|
11
|
-
with_mode('0440')
|
12
|
-
end
|
5
|
+
describe '#include' do
|
6
|
+
subject { Fizzgig.include(classname, :stubs => stubs, :facts => facts) }
|
7
|
+
let(:stubs) { {} }
|
8
|
+
let(:facts) { {} }
|
13
9
|
|
14
|
-
|
15
|
-
|
16
|
-
instance = Fizzgig.instantiate(instance_code)
|
17
|
-
instance.should contain_user('www-data')
|
18
|
-
end
|
10
|
+
describe 'webapp' do
|
11
|
+
let(:classname) {'webapp'}
|
19
12
|
|
20
|
-
|
21
|
-
instance_code = %q[nginx::simple_server {'foo':}]
|
22
|
-
instance = Fizzgig.instantiate(instance_code)
|
23
|
-
instance.should contain_nginx__site('foo')
|
13
|
+
it { should contain_nginx__site('webapp') }
|
24
14
|
end
|
25
15
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'should test classes' do
|
35
|
-
catalog = Fizzgig.include 'webapp'
|
36
|
-
catalog.should contain_nginx__site('webapp')
|
37
|
-
end
|
16
|
+
describe 'functions::class_test' do
|
17
|
+
let(:classname) {'functions::class_test'}
|
18
|
+
context 'with extlookup stubbed out' do
|
19
|
+
let(:stubs) { {:extlookup => {'ssh-key-barry' => 'the key of S'}} }
|
20
|
+
it { should contain_ssh_authorized_key('barry').with_key('the key of S') }
|
21
|
+
end
|
38
22
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
23
|
+
context 'with extlookup stubbed with wrong key' do
|
24
|
+
let(:stubs) { {:extlookup => {'bananas' => 'potassium'}} }
|
25
|
+
it 'should throw an exception' do
|
26
|
+
expect { subject }.to raise_error Puppet::Error
|
27
|
+
end
|
28
|
+
end
|
44
29
|
end
|
45
30
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
31
|
+
describe 'functions::recursive_extlookup_test' do
|
32
|
+
let(:classname) {'functions::recursive_extlookup_test'}
|
33
|
+
let(:stubs) {
|
34
|
+
{:extlookup =>
|
35
|
+
{ 'ssh-key-barry' => 'rsa-key-barry',
|
36
|
+
'rsa-key-barry' => 'the key of S'}}
|
37
|
+
}
|
38
|
+
it { should contain_ssh_authorized_key('barry').with_key('the key of S') }
|
50
39
|
end
|
51
40
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
41
|
+
describe 'facts::class_test' do
|
42
|
+
let(:classname) {'facts::class_test'}
|
43
|
+
let(:facts) {
|
44
|
+
{ 'unqualified_fact' => 'F',
|
45
|
+
'qualified_fact' => 'B+',
|
46
|
+
'template_visible_fact' => 'wibble' }}
|
47
|
+
it { should contain_notify('unqualified-fact-test').with_message('F') }
|
48
|
+
it { should contain_notify('qualified-fact-test').with_message('B+') }
|
49
|
+
it { should contain_file('template-test').with_content(/instance_fact:wibble/) }
|
50
|
+
it { should contain_file('template-test').with_content(/accessor_fact:wibble/) }
|
51
|
+
it { should contain_file('template-test').with_content(/scope_lookup_fact:wibble/) }
|
58
52
|
end
|
59
53
|
end
|
60
54
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
'rsa-key-barry' => 'the key of S'}}
|
66
|
-
Fizzgig.include('functions::recursive_extlookup_test', :stubs => stubs).
|
67
|
-
should contain_ssh_authorized_key('barry').with_key('the key of S')
|
68
|
-
end
|
69
|
-
end
|
55
|
+
describe '#instantiate' do
|
56
|
+
subject { Fizzgig.instantiate(code, :stubs => stubs, :facts => facts) }
|
57
|
+
let(:stubs) { {} }
|
58
|
+
let(:facts) { {} }
|
70
59
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
60
|
+
describe 'params' do
|
61
|
+
context 'when specifying one parameter' do
|
62
|
+
let(:code) { %q[params_test {'foo': param => 'bar'}] }
|
63
|
+
it { should contain_file('foo-param').with_source('bar') }
|
64
|
+
it { should contain_notify('foo-default').with_message('default_val') }
|
76
65
|
end
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
66
|
+
context 'when specifying both paramaters' do
|
67
|
+
let(:code) { %q[params_test {'foo': param => 'bar', param_with_default => 'baz'}] }
|
68
|
+
it { should contain_file('foo-param').with_source('bar') }
|
69
|
+
it { should contain_notify('foo-default').with_message('baz') }
|
81
70
|
end
|
82
71
|
end
|
83
72
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
73
|
+
describe 'nginx::site' do
|
74
|
+
context 'basic functionality' do
|
75
|
+
let(:code) { %q[nginx::site {'foo': content => 'dontcare'}] }
|
76
|
+
it { should contain_file('/etc/nginx/sites-enabled/foo').
|
77
|
+
with_ensure('present').
|
78
|
+
with_mode('0440')
|
79
|
+
}
|
80
|
+
it { should_not contain_file('/etc/nginx/sites-enabled/foo').
|
81
|
+
with_ensure(/text not present/). # test that this doesn't get ignored
|
82
|
+
with_ensure(/present/)
|
83
|
+
}
|
84
|
+
it { should contain_user('www-data') }
|
93
85
|
end
|
86
|
+
end
|
94
87
|
|
95
|
-
|
96
|
-
|
97
|
-
|
88
|
+
describe 'nginx::simple_server' do
|
89
|
+
context 'basic functionality' do
|
90
|
+
let(:code) { %q[nginx::simple_server {'foo':}] }
|
91
|
+
it { should contain_nginx__site('foo').
|
92
|
+
with_content(/server_name foo;/)
|
93
|
+
}
|
98
94
|
end
|
95
|
+
end
|
99
96
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
97
|
+
context 'functions::define_test with function stubs' do
|
98
|
+
let(:stubs) { {:extlookup => {'ssh-key-barry' => 'the key of S'}} }
|
99
|
+
let(:code) { %[functions::define_test{'foo': }] }
|
100
|
+
it { should contain_ssh_authorized_key('barry').with_key('the key of S') }
|
101
|
+
end
|
104
102
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
103
|
+
describe 'facts::define_test' do
|
104
|
+
let(:classname) {'facts::define_test'}
|
105
|
+
let(:code) {%q[facts::define_test{'test':}]}
|
106
|
+
let(:facts) {
|
107
|
+
{ 'unqualified_fact' => 'no qualifications',
|
108
|
+
'qualified_fact' => 'cse ungraded in metalwork'}
|
109
|
+
}
|
110
|
+
it { should contain_notify('unqualified-fact-test').with_message('no qualifications') }
|
111
|
+
it { should contain_notify('qualified-fact-test').with_message('cse ungraded in metalwork') }
|
109
112
|
end
|
110
113
|
end
|
111
114
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fizzgig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: puppet
|
@@ -66,7 +66,10 @@ extensions: []
|
|
66
66
|
extra_rdoc_files: []
|
67
67
|
files:
|
68
68
|
- .gitignore
|
69
|
+
- CHANGELOG.md
|
69
70
|
- Gemfile
|
71
|
+
- LICENSE
|
72
|
+
- README.asciidoc
|
70
73
|
- TODO.org
|
71
74
|
- fizzgig.gemspec
|
72
75
|
- lib/fizzgig.rb
|
@@ -75,7 +78,6 @@ files:
|
|
75
78
|
- spec/fizzgig_spec.rb
|
76
79
|
- spec/modules/facts/manifests/class_test.pp
|
77
80
|
- spec/modules/facts/manifests/define_test.pp
|
78
|
-
- spec/modules/facts/manifests/template_test.pp
|
79
81
|
- spec/modules/facts/templates/template-test.erb
|
80
82
|
- spec/modules/functions/manifests/class_test.pp
|
81
83
|
- spec/modules/functions/manifests/define_test.pp
|
@@ -83,6 +85,7 @@ files:
|
|
83
85
|
- spec/modules/nginx/manifests/simple_server.pp
|
84
86
|
- spec/modules/nginx/manifests/site.pp
|
85
87
|
- spec/modules/nginx/templates/vhost.erb
|
88
|
+
- spec/modules/params_test/manifests/init.pp
|
86
89
|
- spec/modules/webapp/manifests/init.pp
|
87
90
|
- spec/spec_helper.rb
|
88
91
|
homepage: https://github.com/philandstuff/fizzgig
|
@@ -113,7 +116,6 @@ test_files:
|
|
113
116
|
- spec/fizzgig_spec.rb
|
114
117
|
- spec/modules/facts/manifests/class_test.pp
|
115
118
|
- spec/modules/facts/manifests/define_test.pp
|
116
|
-
- spec/modules/facts/manifests/template_test.pp
|
117
119
|
- spec/modules/facts/templates/template-test.erb
|
118
120
|
- spec/modules/functions/manifests/class_test.pp
|
119
121
|
- spec/modules/functions/manifests/define_test.pp
|
@@ -121,5 +123,6 @@ test_files:
|
|
121
123
|
- spec/modules/nginx/manifests/simple_server.pp
|
122
124
|
- spec/modules/nginx/manifests/site.pp
|
123
125
|
- spec/modules/nginx/templates/vhost.erb
|
126
|
+
- spec/modules/params_test/manifests/init.pp
|
124
127
|
- spec/modules/webapp/manifests/init.pp
|
125
128
|
- spec/spec_helper.rb
|