tdd_deploy 0.1.5 → 0.1.6

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.
@@ -19,7 +19,7 @@ class TddDeployEnv
19
19
 
20
20
  def show_env
21
21
  puts "============================================="
22
- self.env_types.keys.each do |k|
22
+ self.env_types.keys.sort.each do |k|
23
23
  v = self.send(k.to_sym)
24
24
  printf "%-20s: %s\n", k, v
25
25
  end
@@ -0,0 +1,40 @@
1
+ require 'capistrano/configuration'
2
+
3
+ module TddDeploy
4
+ # == TddDeploy::Capfile - interface to capistrano capfile
5
+ #
6
+ # uses Capistrano to parse recipe file(s) and provides convenient access to server
7
+ # definitions
8
+ class Capfile
9
+ # creates a Capfile::Configuration object to use, but does not read any Capistrano Recipe files
10
+ def initialize
11
+ @capfile_config = Capistrano::Configuration.new
12
+ end
13
+
14
+ # returns the Capistrano::Configuration::Roles object
15
+ def roles
16
+ @capfile_config.roles
17
+ end
18
+
19
+ # returns list of host strings defined for specified 'role'
20
+ def role_to_host_list role
21
+ servers(role).map { |srv| srv.to_s }
22
+ end
23
+
24
+ # returns list of host strings which are in the 'db' role and for which 'primary' is true
25
+ def migration_host_list
26
+ servers(:db).select { |srv| srv.options[:primary] == true }.map { |x| x.to_s }
27
+ end
28
+
29
+ # returns the array of Capistrano::ServerDefinition objects defined for 'role'
30
+ def servers role
31
+ @capfile_config.roles[role].servers
32
+ end
33
+
34
+ # loads the specified recipie file. Defaults to './config/deploy.rb' which is standard
35
+ # for rails apps. May be called multiple times
36
+ def load_recipes(path = './config/deploy.rb')
37
+ @capfile_config.load path
38
+ end
39
+ end
40
+ end
@@ -1,3 +1,5 @@
1
+ require 'tdd_deploy/capfile'
2
+
1
3
  module TddDeploy
2
4
 
3
5
  # == module TddDeploy::Environ
@@ -37,14 +39,23 @@ module TddDeploy
37
39
  # know how to included globbed paths]
38
40
  #
39
41
  # === List Variables
42
+ # * 'app_hosts' - hosts running a ruby app which must have a ruby available and will be served
43
+ #via a reverse proxy
40
44
  # * 'balance_hosts' - load balancing servers [may be empty, in which case 'hosts' is used]
41
45
  # * 'db_hosts' - hosts which run the database server [may be empty, in which case 'hosts' is used]
42
46
  # * 'web_hosts' - hosts which run the web server [may be empty, in which case 'hosts' is used]
47
+ # * 'capfile_paths' - relative paths to capistrano recipe files. Defaults to './config/deploy.rb'
43
48
  #
44
- # === Pseudo Variable
49
+ # === Pseudo Variables
45
50
  # * 'hosts' - list of all hosts - always returns balance_hosts + db_hosts + web_hosts.
46
51
  #may be assigned to if all three host lists are identical, otherwise raises an exception.
47
- # 'tdd_deploy_context' hides it from view unless it can be assigned
52
+ #'tdd_deploy_context' hides it from view unless it can be assigned
53
+ # * 'app' - list of all hosts in the :app role of the Capistrano recipes
54
+ # * 'db' - list of all hosts in the :db role of the Capistrano recipes
55
+ # * 'migration_hosts' - list of all hosts in the :db role with option :primary => true
56
+ #of the Capistrano recipes
57
+ # * 'web' - list of all hosts in the :web role of the Capistrano recipes
58
+
48
59
 
49
60
  module Environ
50
61
 
@@ -54,7 +65,7 @@ module TddDeploy
54
65
  # include TddDeploy::Environ
55
66
  class DataCache
56
67
  class << self
57
- attr_accessor :env_hash, :env_types, :env_defaults
68
+ attr_accessor :env_hash, :env_types, :env_defaults, :capfile
58
69
  end
59
70
  end
60
71
 
@@ -77,6 +88,17 @@ module TddDeploy
77
88
  DataCache.env_hash = hash
78
89
  end
79
90
  end
91
+
92
+ def capfile
93
+ raise RuntimeError.new('Attempt to access capfile data w/o capfile_paths defined') unless DataCache.env_hash['capfile_paths']
94
+ unless DataCache.capfile
95
+ DataCache.capfile = TddDeploy::Capfile.new
96
+ DataCache.env_hash['capfile_paths'].each do |path|
97
+ DataCache.capfile.load_recipes path
98
+ end
99
+ end
100
+ DataCache.capfile
101
+ end
80
102
 
81
103
  DataCache.env_types = {
82
104
  'ssh_timeout' => :int,
@@ -93,10 +115,17 @@ module TddDeploy
93
115
  'site_path' => :string,
94
116
  'site_user' => :string,
95
117
 
96
- # 'hosts' => :list,
118
+ 'app_hosts' => :list,
97
119
  'balance_hosts' => :list,
120
+ 'capfile_paths' => :list,
98
121
  'db_hosts' => :list,
99
122
  'web_hosts' => :list,
123
+
124
+ 'hosts' => :pseudo,
125
+ 'app' => :pseudo,
126
+ 'db' => :pseudo,
127
+ 'migration_hosts' => :pseudo,
128
+ 'web' => :pseudo,
100
129
  }
101
130
 
102
131
  DataCache.env_defaults ||= {
@@ -114,7 +143,10 @@ module TddDeploy
114
143
  'site_path' => '/home/site_user/site.d/current', # default for Capistrano
115
144
  'site_user' => "site_user",
116
145
 
146
+ 'capfile_paths' => './config/deploy.rb',
147
+
117
148
  # 'hosts' => "bar,foo",
149
+ 'app_hosts' => 'arch',
118
150
  'balance_hosts' => 'arch',
119
151
  'db_hosts' => 'arch',
120
152
  'web_hosts' => 'arch',
@@ -140,19 +172,24 @@ module TddDeploy
140
172
  when :int then DataCache.env_hash[k] = v.to_i
141
173
  when :string then DataCache.env_hash[k] = v.to_s
142
174
  when :list then DataCache.env_hash[k] = self.str_to_list(v)
143
- else
175
+ when :pseudo then
144
176
  if k == 'hosts'
145
- if DataCache.env_hash['web_hosts'] == DataCache.env_hash['db_hosts'] && DataCache.env_hash['web_hosts'] == DataCache.env_hash['balance_hosts']
177
+ if (tmp = DataCache.env_hash['web_hosts']) == DataCache.env_hash['db_hosts'] \
178
+ && tmp == DataCache.env_hash['balance_hosts'] \
179
+ && tmp == DataCache.env_hash['app_hosts']
146
180
  DataCache.env_hash['web_hosts'] =
147
181
  DataCache.env_hash['db_hosts'] =
148
- DataCache.env_hash['balance_hosts'] = self.str_to_list(v)
182
+ DataCache.env_hash['balance_hosts'] =
183
+ DataCache.env_hash['app_hosts'] = self.str_to_list(v)
149
184
  else
150
185
  raise RuntimeError.new("#{self}#reset_env(): Cannot assign value to 'hosts' if web_hosts &/or db_hosts already set.\n web_hosts: #{DataCache.env_hash['web_hosts']}\n db_hosts: #{DataCache.env_hash['db_hosts']}")
151
186
  # raise RuntimeError.new("Cannot change hosts key if web_hosts != db_hosts")
152
187
  end
153
188
  else
154
- raise ArgumentError.new("#{self}#reset_env(): Illegal environment key: #{k}")
189
+ next
155
190
  end
191
+ else
192
+ raise ArgumentError.new("#{self}#reset_env(): Illegal environment key: #{k}")
156
193
  end
157
194
  end
158
195
  end
@@ -198,7 +235,13 @@ module TddDeploy
198
235
  end
199
236
  # add any missing env keys
200
237
  (self.env_types.keys - self.env_hash.keys).each do |key|
201
- self.env_hash[key] = self.env_defaults[key]
238
+ case self.env_types[key]
239
+ when :pseudo then next
240
+ when :list
241
+ self.env_hash[key] = str_to_list(self.env_defaults[key])
242
+ else
243
+ self.env_hash[key] = self.env_defaults[key]
244
+ end
202
245
  end
203
246
  return self.env_hash
204
247
  else
@@ -243,31 +286,19 @@ module TddDeploy
243
286
  when :string then f.write "#{k}=#{v}\n"
244
287
  when :list then
245
288
  f.write "#{k}=#{self.list_to_str(k)}\n" unless k == 'hosts'
289
+ when :pseudo then next
246
290
  else
247
291
  raise RuntimeError("unknown key: #{k}")
248
292
  end
249
293
  end
250
294
  f.close
251
295
  end
252
-
253
- # accessors for all defined env variables
254
- def hosts
255
- (self.web_hosts.to_a + self.db_hosts.to_a + self.balance_hosts.to_a).uniq.sort
256
- end
257
296
 
258
- def hosts=(list)
259
- if (self.web_hosts.nil? && self.db_hosts.nil?) || self.web_hosts == self.db_hosts
260
- self.web_hosts =
261
- self.db_hosts =
262
- self.balance_hosts = self.str_to_list(list)
263
- else
264
- raise RuntimeError.new("Cannot assign value to 'hosts' if web_hosts &/or db_hosts already set.\n web_hosts: #{self.web_hosts}\n db_hosts: #{self.db_hosts}")
265
- end
266
- end
267
-
268
- # create accessors for all keys in env_types
297
+ # create accessors for all keys in env_types which are not :pseudo variables
269
298
  tmp = ''
270
299
  DataCache.env_types.each do |k, t|
300
+ next if t == :pseudo
301
+
271
302
  tmp +=<<-EOF
272
303
  def #{k}
273
304
  self.env_hash['#{k}']
@@ -290,11 +321,40 @@ module TddDeploy
290
321
  tmp +=<<-EOF
291
322
  def #{k}=(v)
292
323
  self.env_hash['#{k}'] = self.str_to_list(v)
324
+ DataCache.capfile = nil if '#{k}' == 'capfile_paths'
293
325
  end
294
326
  EOF
295
327
  end
296
328
  end
329
+
330
+ ['app', 'db', 'web'].each do |k|
331
+ tmp +=<<-EOF
332
+ def #{k}
333
+ self.capfile.role_to_host_list :#{k}
334
+ end
335
+ EOF
336
+ end
297
337
 
298
338
  class_eval tmp
339
+
340
+ # accessors for all defined env variables
341
+ def hosts
342
+ (self.web_hosts.to_a + self.db_hosts.to_a + self.balance_hosts.to_a + self.app_hosts.to_a).uniq.sort
343
+ end
344
+
345
+ def hosts=(list)
346
+ if (self.web_hosts.nil? && self.db_hosts.nil?) || self.web_hosts == self.db_hosts
347
+ self.web_hosts =
348
+ self.db_hosts =
349
+ self.balance_hosts =
350
+ self.app_hosts = self.str_to_list(list)
351
+ else
352
+ raise RuntimeError.new("Cannot assign value to 'hosts' if web_hosts &/or db_hosts already set.\n web_hosts: #{self.web_hosts}\n db_hosts: #{self.db_hosts}")
353
+ end
354
+ end
355
+
356
+ def migration_hosts
357
+ self.capfile.migration_host_list
358
+ end
299
359
  end
300
360
  end
@@ -11,7 +11,7 @@ end
11
11
  <html lang="en">
12
12
  <head>
13
13
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
14
- <title>TddDeploy for <%= site %></title>
14
+ <title>TddDeploy (<%= TddDeploy::VERSION %>) for <%= site %></title>
15
15
  <meta name="generator" content="TextMate http://macromates.com/">
16
16
  <meta name="author" content="Mike">
17
17
  <style type="text/css" media="screen">
@@ -74,7 +74,7 @@ end
74
74
  </head>
75
75
  <body>
76
76
  <div id="test-summary">
77
- <h1>TddDeloy Test Results: site: <%= site %> / hosts: <%= hosts %></h1>
77
+ <h1>TddDeploy (<%= TddDeploy::VERSION %>) Test Results: site: <%= site %> / hosts: <%= hosts %></h1>
78
78
 
79
79
  <% if (failures = total_failures) == 0 %>
80
80
  <p id="test-summary-passed">All Tests Passed</p>
@@ -1,3 +1,3 @@
1
1
  module TddDeploy
2
- VERSION = '0.1.5'
2
+ VERSION = '0.1.6'
3
3
  end
data/lib/tdd_deploy.rb CHANGED
@@ -2,6 +2,7 @@ $:.unshift File.expand_path('..', __FILE__)
2
2
 
3
3
  require 'tdd_deploy/base'
4
4
  require 'tdd_deploy/assertions'
5
+ require 'tdd_deploy/capfile'
5
6
  require 'tdd_deploy/deploy_test_methods'
6
7
  require 'tdd_deploy/environ'
7
8
  require 'tdd_deploy/run_methods'
@@ -0,0 +1,51 @@
1
+ $:.unshift File.expand_path('..', __FILE__)
2
+ require 'test_helpers'
3
+ require 'tdd_deploy/capfile'
4
+
5
+ class TestCapfileTestCase < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @capfile = TddDeploy::Capfile.new
9
+ end
10
+
11
+ def teardown
12
+ @capfile = nil
13
+ end
14
+
15
+ def test_load_recipes
16
+ assert_raises LoadError, "@capfile.load_recipes(no-file) should fail" do
17
+ @capfile.load_recipes('no-file')
18
+ end
19
+ assert @capfile.load_recipes('./config/deploy.rb'), "@capfile should load recipies"
20
+ end
21
+
22
+ def test_role_keys
23
+ @capfile.load_recipes('./config/deploy.rb')
24
+ assert_equal [:app, :db, :web], @capfile.roles.keys.sort, "capfile roles should be app, db, web"
25
+ end
26
+
27
+ def test_role_values
28
+ @capfile.load_recipes # ('./config/deploy.rb')
29
+ assert_equal ['app1', 'app2', 'app3'], @capfile.roles[:app].servers.map {|x| x.to_s }.sort, "app servers should be app1, app2, app3"
30
+ assert_equal ['db2', 'db3', 'db_primary'], @capfile.roles[:db].servers.map {|x| x.to_s }.sort, "db servers should be db_primary, db2, db3"
31
+ assert_equal ['web1', 'web2'], @capfile.roles[:web].servers.map {|x| x.to_s }.sort, "web servers should be web1, web2"
32
+ end
33
+
34
+ def test_role_to_host_list
35
+ @capfile.load_recipes('./config/deploy.rb')
36
+ assert_equal ['app1', 'app2', 'app3'], @capfile.role_to_host_list(:app).sort, "app servers should be app1, 2, 3"
37
+ end
38
+
39
+ def test_migration_host_list
40
+ @capfile.load_recipes('./config/deploy.rb')
41
+ assert_equal ['db_primary'], @capfile.migration_host_list, "migration_host_list should be ['db_primary']"
42
+ end
43
+
44
+ def test_simple_deploy_rb_file
45
+ @capfile.load_recipes('./config/simple_deploy.rb')
46
+ assert_equal ['app_server'], @capfile.role_to_host_list(:app), "app server should be ['app_server']"
47
+ assert_equal ['app_server'], @capfile.role_to_host_list(:db), "db server should be ['app_server']"
48
+ assert_equal ['app_server'], @capfile.role_to_host_list(:web), "web server should be ['app_server']"
49
+ assert_equal ['app_server'], @capfile.migration_host_list, "migration host server should be ['app_server']"
50
+ end
51
+ end
@@ -40,7 +40,8 @@ class TestEnvironTestCase < Test::Unit::TestCase
40
40
  @foo.clear_env
41
41
  system('TMP=/tmp/t-$$; trap "rm $TMP; exit" 0 1 2 3 15 ;cp site_host_setup.env $TMP ; sed -e 1d $TMP >site_host_setup.env')
42
42
  @foo.read_env
43
- assert_equal @foo.env_types.keys.sort, @foo.env_hash.keys.sort, "read_env should set all keys"
43
+ non_pseudo_keys = @foo.env_types.reject {|k,t| t == :pseudo }.keys.sort
44
+ assert_equal non_pseudo_keys, @foo.env_hash.keys.sort, "read_env should set all keys"
44
45
  end
45
46
 
46
47
  def test_response_to_accessors
@@ -61,7 +62,8 @@ class TestEnvironTestCase < Test::Unit::TestCase
61
62
  [:env_hash, :ssh_timeout, :site_base_port, :site_num_servers,
62
63
  :host_admin, :local_admin, :local_admin_email,
63
64
  :site, :site_user, :site_path, :site_url,
64
- :hosts, :balance_hosts, :db_hosts, :web_hosts].each do |meth|
65
+ :capfile_paths, :app, :db, :migration_hosts, :web,
66
+ :hosts, :app_hosts, :balance_hosts, :db_hosts, :web_hosts].each do |meth|
65
67
  assert @foo.respond_to?(meth), "@foo should respond to #{meth}"
66
68
  assert @foo.respond_to?("#{meth}".to_sym), "@foo should respond to #{meth}="
67
69
  end
@@ -69,7 +71,7 @@ class TestEnvironTestCase < Test::Unit::TestCase
69
71
 
70
72
  def test_env_type
71
73
  ["ssh_timeout", "site_base_port", "site_num_servers", "host_admin", "local_admin", "local_admin_email",
72
- "site", "site_user", "site_path", "site_url", "balance_hosts", "db_hosts", "web_hosts"].each do |sym|
74
+ "site", "site_user", "site_path", "site_url", 'app_hosts', "balance_hosts", "db_hosts", "web_hosts"].each do |sym|
73
75
  assert @foo.env_types.keys.include?(sym.to_s), "@foo.env_types.keys includes #{sym}"
74
76
  end
75
77
  ["ssh_timeout", "site_base_port", "site_num_servers"].each do |key|
@@ -78,33 +80,34 @@ class TestEnvironTestCase < Test::Unit::TestCase
78
80
  ["host_admin", "local_admin", "local_admin_email", "site", "site_user", "site_path", "site_url"].each do |key|
79
81
  assert_equal :string, @foo.env_types[key], "@foo.env_types[#{key}] should be :string"
80
82
  end
81
- ["balance_hosts", "db_hosts", "web_hosts"].each do |key|
83
+ ['app_hosts', "balance_hosts", "capfile_paths", "db_hosts", "web_hosts"].each do |key|
82
84
  assert_equal :list, @foo.env_types[key], "@foo.env_types[#{key}] should be :list"
83
85
  end
84
86
  end
85
87
 
86
88
  def test_hosts_pseudokey
87
- @foo.set_env :web_hosts => '', :db_hosts => '', :balance_hosts => ''
89
+ @foo.set_env :web_hosts => '', :db_hosts => '', :app_hosts => '', :balance_hosts => ''
88
90
  assert_equal [], @foo.web_hosts, "assigning '' to web_hosts should create empty list"
89
91
  assert_equal [], @foo.db_hosts, "assigning '' to db_hosts should create empty list"
90
92
  assert_equal [], @foo.balance_hosts, "assigning '' to balance_hosts should create empty list"
93
+ assert_equal [], @foo.app_hosts, "assigning '' to app_hosts should create empty list"
91
94
  @foo.set_env :hosts => 'foo,bar'
92
95
  assert_equal ['bar', 'foo'], @foo.hosts, "assigning foo,bar to hosts should create ['bar', 'foo']"
93
- ['web_hosts', 'db_hosts', 'balance_hosts'].each do |hst|
96
+ ['app_hosts', 'web_hosts', 'db_hosts', 'balance_hosts'].each do |hst|
94
97
  assert_equal @foo.send(hst.to_sym), @foo.hosts, "hosts should be same as @foo.#{hst}"
95
98
  end
96
99
  end
97
100
 
98
101
  def test_env_hash
99
102
  ["ssh_timeout", "site_base_port", "site_num_servers", "host_admin", "local_admin", "local_admin_email",
100
- "site", "site_user", "site_path", "site_url", "balance_hosts", "db_hosts", "web_hosts"].each do |key|
103
+ "site", "site_user", "site_path", "site_url", 'app_hosts', "balance_hosts", "db_hosts", "web_hosts"].each do |key|
101
104
  assert_not_nil @foo.env_hash[key], "@foo.env_hash[#{key}] should not be nil"
102
105
  end
103
106
  end
104
107
 
105
108
  def test_env_defaults
106
109
  ["ssh_timeout", "site_base_port", "site_num_servers", "host_admin", "local_admin", "local_admin_email",
107
- "site", "site_user", "site_path", "site_url", "balance_hosts", "db_hosts", "web_hosts"].each do |key|
110
+ "site", "site_user", "site_path", "site_url", 'app_hosts', "balance_hosts", "db_hosts", "web_hosts"].each do |key|
108
111
  assert_not_nil @foo.env_defaults[key], "@foo.env_defaults[#{key}] should not be nil"
109
112
  end
110
113
  end
@@ -124,18 +127,22 @@ class TestEnvironTestCase < Test::Unit::TestCase
124
127
  @foo.send "#{key}=", tmp
125
128
  assert_equal tmp, @foo.send(key.to_sym), "@foo.#{key} should now be #{tmp}"
126
129
  end
127
- ["balance_hosts", "db_hosts", "web_hosts"].each do |key|
130
+ ['app_hosts', "balance_hosts", "db_hosts", "web_hosts"].each do |key|
128
131
  tmp = @foo.send(key.to_sym).join(',') + ',new,values'
129
132
  @foo.send "#{key}=", tmp
130
133
  assert_equal tmp.split(/,/), @foo.send(key.to_sym), "@foo.#{key} should now be #{tmp}"
131
134
  end
132
135
  end
133
136
 
137
+ def test_capfile_variables
138
+ assert_equal ['app1', 'app2', 'app3'], @foo.app, "@foo.app should return all the hosts in :app role"
139
+ end
140
+
134
141
  def test_instance_level_reset_env
135
142
  tmp = @foo.env_hash['ssh_timeout']
136
143
  @foo.set_env 'ssh_timeout' => 12
137
144
  assert_equal 12, @foo.env_hash['ssh_timeout'], "reset_env should change env_hash"
138
- assert_equal 12, @foo.ssh_timeout, "reset_env change should show up in instance method"
145
+ assert_equal 12, @foo.ssh_timeout, "reset_env change should show in instance method"
139
146
  end
140
147
 
141
148
  def test_instance_env_hash_assign
@@ -153,6 +160,7 @@ class TestEnvironTestCase < Test::Unit::TestCase
153
160
  when :int then expect = 0
154
161
  when :string then expect = ''
155
162
  when :list then expect = []
163
+ when :pseudo then next
156
164
  end
157
165
  assert_equal expect, @foo.env_hash[k], "After Zapping, env_hash['#{k}'] should be #{expect}"
158
166
  assert_equal expect, @foo.send(k.to_sym), "After Zapping, @foo.#{k} should be #{expect}"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tdd_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-08-16 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
16
- requirement: &2153508840 !ruby/object:Gem::Requirement
16
+ requirement: &2165394200 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2153508840
24
+ version_requirements: *2165394200
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: net-ping
27
- requirement: &2153508100 !ruby/object:Gem::Requirement
27
+ requirement: &2165393520 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2153508100
35
+ version_requirements: *2165393520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: net-ssh
38
- requirement: &2153507580 !ruby/object:Gem::Requirement
38
+ requirement: &2165392800 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2153507580
46
+ version_requirements: *2165392800
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: ZenTest
49
- requirement: &2153506700 !ruby/object:Gem::Requirement
49
+ requirement: &2165392020 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 4.5.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2153506700
57
+ version_requirements: *2165392020
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: autotest-growl
60
- requirement: &2153506060 !ruby/object:Gem::Requirement
60
+ requirement: &2165391360 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2153506060
68
+ version_requirements: *2165391360
69
69
  description: Test driven support for host provisioning & Capistrano deployment - for
70
70
  those who don't want to bother learning too much
71
71
  email: ! ' mike@clove.com '
@@ -82,6 +82,7 @@ files:
82
82
  - bin/tdd_deploy_server
83
83
  - lib/tdd_deploy/assertions.rb
84
84
  - lib/tdd_deploy/base.rb
85
+ - lib/tdd_deploy/capfile.rb
85
86
  - lib/tdd_deploy/configurator.rb
86
87
  - lib/tdd_deploy/copy_methods.rb
87
88
  - lib/tdd_deploy/deploy_test_methods.rb
@@ -103,6 +104,7 @@ files:
103
104
  - lib/tdd_deploy.rb
104
105
  - tests/test_assertions.rb
105
106
  - tests/test_base.rb
107
+ - tests/test_capfile.rb
106
108
  - tests/test_configurator.rb
107
109
  - tests/test_copy_methods.rb
108
110
  - tests/test_deploy_test_methods.rb