pocketknife 0.0.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.
@@ -0,0 +1,94 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Pocketknife" do
4
+ describe "new" do
5
+ before do
6
+ @pocketknife = Pocketknife.new
7
+ end
8
+
9
+ it "should instantiate a Pocketknife" do
10
+ @pocketknife.should be_a_kind_of(Pocketknife)
11
+ end
12
+
13
+ it "should have normal verbosity" do
14
+ @pocketknife.verbosity.should be_nil
15
+ end
16
+
17
+ it "should prompt for installation if needed" do
18
+ @pocketknife.can_install.should be_nil
19
+ end
20
+
21
+ it "should have a NodeManager instance" do
22
+ @pocketknife.node_manager.should be_a_kind_of(Pocketknife::NodeManager)
23
+ end
24
+
25
+ it "should have a NodeManager instance that knows about it" do
26
+ @pocketknife.node_manager.pocketknife.should == @pocketknife
27
+ end
28
+ end
29
+
30
+ describe "cli" do
31
+ describe "create" do
32
+ describe "without name" do
33
+ it "should raise an exception and not create anything" do
34
+ mktmpdircd do |dir|
35
+ lambda { Pocketknife.cli(['-c', '-q']) }.should raise_error(Errno::ENOENT)
36
+ Dir["#{Dir.pwd}/*"].should be_empty
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ describe "create" do
44
+ it "should create a project" do
45
+ mktmpdircd do |dir|
46
+ project = 'myproject'
47
+ Pocketknife.new(:verbosity => false).create(project)
48
+ Dir["#{Dir.pwd}/#{project}/*"].should_not be_empty
49
+ Dir["#{Dir.pwd}/#{project}/cookbooks"].should_not be_empty
50
+ Dir["#{Dir.pwd}/#{project}/nodes"].should_not be_empty
51
+ Dir["#{Dir.pwd}/#{project}/roles"].should_not be_empty
52
+ Dir["#{Dir.pwd}/#{project}/site-cookbooks"].should_not be_empty
53
+ end
54
+ end
55
+ end
56
+
57
+ describe "node" do
58
+ before(:each) do
59
+ @previous_dir = Dir.pwd
60
+ @dir = mkproject
61
+ end
62
+
63
+ after(:each) do
64
+ FileUtils.rm_rf(@dir) if @dir
65
+ Dir.chdir(@previous_dir)
66
+ end
67
+
68
+ it "should fail when asked to return an unknown node" do
69
+ node = "foo"
70
+ pocketknife = Pocketknife.new
71
+ begin
72
+ pocketknife.node(node)
73
+ rescue Pocketknife::NoSuchNode => e
74
+ e.node.should == node
75
+ else
76
+ fail "Exception wasn't thrown"
77
+ end
78
+ end
79
+
80
+ it "should return a known node, that has a name and pocketknife" do
81
+ name = "mynode"
82
+ path = Pathname.new("nodes/#{name}.json")
83
+ path.open("w") do |h|
84
+ h.write("{}")
85
+ end
86
+
87
+ pocketknife = Pocketknife.new
88
+ node = pocketknife.node(name)
89
+
90
+ node.name.should == name
91
+ node.pocketknife.should == pocketknife
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'pocketknife'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+
12
+ end
@@ -0,0 +1,3 @@
1
+ # Standard libraries used in tests.
2
+ require 'fileutils'
3
+ require 'tmpdir'
@@ -0,0 +1,32 @@
1
+ # Creates temporary directory and cd's into it.
2
+ #
3
+ # If a block is supplied, it is executed within this directory, and when done, it cd's back and removes the directory.
4
+ #
5
+ # Without a block, it just creates the directory, cd's into it and returns the directory's path for you to cleanup yourself.
6
+ def mktmpdircd(&block)
7
+ if block
8
+ Dir.mktmpdir do |dir|
9
+ Dir.chdir(dir) do
10
+ yield(dir)
11
+ end
12
+ end
13
+ else
14
+ dir = Dir.mktmpdir
15
+ Dir.chdir(dir)
16
+ return dir
17
+ end
18
+ end
19
+
20
+ def mkproject(&block)
21
+ create = lambda { Pocketknife.new(:verbosity => false).create('.') }
22
+ if block
23
+ mktmpdircd do |dir|
24
+ create.call
25
+ yield(dir)
26
+ end
27
+ else
28
+ dir = mktmpdircd
29
+ create.call
30
+ return dir
31
+ end
32
+ end
metadata ADDED
@@ -0,0 +1,214 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pocketknife
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Igal Koshevoy
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-05-16 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ hash: 11
28
+ segments:
29
+ - 0
30
+ - 5
31
+ - 0
32
+ version: 0.5.0
33
+ requirement: *id001
34
+ prerelease: false
35
+ type: :runtime
36
+ name: archive-tar-minitar
37
+ - !ruby/object:Gem::Dependency
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 59
44
+ segments:
45
+ - 0
46
+ - 9
47
+ - 0
48
+ version: 0.9.0
49
+ requirement: *id002
50
+ prerelease: false
51
+ type: :runtime
52
+ name: rye
53
+ - !ruby/object:Gem::Dependency
54
+ version_requirements: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ hash: 11
60
+ segments:
61
+ - 2
62
+ - 1
63
+ - 0
64
+ version: 2.1.0
65
+ requirement: *id003
66
+ prerelease: false
67
+ type: :development
68
+ name: bluecloth
69
+ - !ruby/object:Gem::Dependency
70
+ version_requirements: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ hash: 3
76
+ segments:
77
+ - 2
78
+ - 3
79
+ - 0
80
+ version: 2.3.0
81
+ requirement: *id004
82
+ prerelease: false
83
+ type: :development
84
+ name: rspec
85
+ - !ruby/object:Gem::Dependency
86
+ version_requirements: &id005 !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ hash: 7
92
+ segments:
93
+ - 0
94
+ - 6
95
+ - 0
96
+ version: 0.6.0
97
+ requirement: *id005
98
+ prerelease: false
99
+ type: :development
100
+ name: yard
101
+ - !ruby/object:Gem::Dependency
102
+ version_requirements: &id006 !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ~>
106
+ - !ruby/object:Gem::Version
107
+ hash: 23
108
+ segments:
109
+ - 1
110
+ - 0
111
+ - 0
112
+ version: 1.0.0
113
+ requirement: *id006
114
+ prerelease: false
115
+ type: :development
116
+ name: bundler
117
+ - !ruby/object:Gem::Dependency
118
+ version_requirements: &id007 !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ~>
122
+ - !ruby/object:Gem::Version
123
+ hash: 15
124
+ segments:
125
+ - 1
126
+ - 6
127
+ - 0
128
+ version: 1.6.0
129
+ requirement: *id007
130
+ prerelease: false
131
+ type: :development
132
+ name: jeweler
133
+ - !ruby/object:Gem::Dependency
134
+ version_requirements: &id008 !ruby/object:Gem::Requirement
135
+ none: false
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ hash: 3
140
+ segments:
141
+ - 0
142
+ version: "0"
143
+ requirement: *id008
144
+ prerelease: false
145
+ type: :development
146
+ name: rcov
147
+ description: pocketknife is a tool for managing chef-solo nodes.
148
+ email: igal+pocketknife@pragmaticraft.com
149
+ executables:
150
+ - pocketknife
151
+ - pocketknife
152
+ extensions: []
153
+
154
+ extra_rdoc_files:
155
+ - LICENSE.txt
156
+ - README.md
157
+ files:
158
+ - .document
159
+ - .yardopts
160
+ - Gemfile
161
+ - Gemfile.lock
162
+ - LICENSE.txt
163
+ - README.md
164
+ - Rakefile
165
+ - bin/pocketknife
166
+ - lib/pocketknife.rb
167
+ - lib/pocketknife/errors.rb
168
+ - lib/pocketknife/node.rb
169
+ - lib/pocketknife/node_manager.rb
170
+ - lib/pocketknife/version.rb
171
+ - pocketknife.gemspec
172
+ - spec/pocketknife_execution_error_spec.rb
173
+ - spec/pocketknife_node_manager_spec.rb
174
+ - spec/pocketknife_node_spec.rb
175
+ - spec/pocketknife_spec.rb
176
+ - spec/spec_helper.rb
177
+ - spec/support/libraries.rb
178
+ - spec/support/mkproject.rb
179
+ has_rdoc: true
180
+ homepage: http://github.com/igal/pocketknife
181
+ licenses:
182
+ - MIT
183
+ post_install_message:
184
+ rdoc_options: []
185
+
186
+ require_paths:
187
+ - lib
188
+ required_ruby_version: !ruby/object:Gem::Requirement
189
+ none: false
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ hash: 3
194
+ segments:
195
+ - 0
196
+ version: "0"
197
+ required_rubygems_version: !ruby/object:Gem::Requirement
198
+ none: false
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ hash: 3
203
+ segments:
204
+ - 0
205
+ version: "0"
206
+ requirements: []
207
+
208
+ rubyforge_project:
209
+ rubygems_version: 1.3.7
210
+ signing_key:
211
+ specification_version: 3
212
+ summary: pocketknife is a tool for managing chef-solo nodes.
213
+ test_files: []
214
+