bigrig 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile.lock +24 -26
  4. data/bigrig.gemspec +2 -2
  5. data/lib/bigrig/models/container.rb +2 -2
  6. data/lib/bigrig/runner.rb +2 -10
  7. data/lib/bigrig/version.rb +1 -1
  8. data/lib/bigrig/waiter.rb +20 -0
  9. data/lib/bigrig.rb +1 -0
  10. data/spec/bigrig/actions/run_action_spec.rb +8 -0
  11. data/spec/bigrig/docker_adapter_spec.rb +1 -1
  12. data/spec/bigrig/models/container_spec.rb +0 -18
  13. data/spec/bigrig_spec.rb +20 -6
  14. data/spec/data/wait_for/Dockerfile +4 -0
  15. data/spec/data/wait_for/bigrig-wait.sh +5 -0
  16. data/spec/data/wait_for/bigrig.json +8 -0
  17. data/spec/data/wait_for_broken/Dockerfile +4 -0
  18. data/spec/data/wait_for_broken/bigrig-wait.sh +3 -0
  19. data/spec/data/wait_for_broken/bigrig.json +8 -0
  20. data/spec/vcr/Bigrig_DestroyAction/_perform/given_json_with_a_single_container/and_the_container_has_exited/should_remove_the_container.yml +65 -65
  21. data/spec/vcr/Bigrig_DestroyAction/_perform/given_json_with_a_single_container/and_the_container_is_running/kills_and_removes_the_container.yml +71 -71
  22. data/spec/vcr/Bigrig_DockerAdapter/_build/builds_the_given_directory.yml +11 -11
  23. data/spec/vcr/Bigrig_DockerAdapter/_build/passes_build_input_to_a_block.yml +5 -5
  24. data/spec/vcr/Bigrig_DockerAdapter/_container_exists_/when_the_container_does_not_exist/is_false.yml +20 -20
  25. data/spec/vcr/Bigrig_DockerAdapter/_container_exists_/when_the_container_exists/is_true.yml +13 -13
  26. data/spec/vcr/Bigrig_DockerAdapter/_image_id_by_tag/when_the_image_does_not_exist/raise_a_ImageNotFoundError.yml +20 -20
  27. data/spec/vcr/Bigrig_DockerAdapter/_image_id_by_tag/when_the_image_exists/returns_the_image_id.yml +19 -19
  28. data/spec/vcr/Bigrig_DockerAdapter/_kill/given_the_container_does_not_exist/should_raise_an_error.yml +20 -20
  29. data/spec/vcr/Bigrig_DockerAdapter/_kill/given_the_container_is_running/should_kill_the_container.yml +29 -29
  30. data/spec/vcr/Bigrig_DockerAdapter/_logs/streams_logs_to_a_block.yml +23 -23
  31. data/spec/vcr/Bigrig_DockerAdapter/_pull/given_a_block_to_capture_output/should_capture_output.yml +8 -8
  32. data/spec/vcr/Bigrig_DockerAdapter/_pull/given_the_repo_does_not_exist/raises_a_RepoNotFoundError.yml +3 -3
  33. data/spec/vcr/Bigrig_DockerAdapter/_pull/given_the_repo_exists/returns_the_image_id.yml +13 -13
  34. data/spec/vcr/Bigrig_DockerAdapter/_push/given_credentials/will_pass_login_and_password.yml +54 -54
  35. data/spec/vcr/Bigrig_DockerAdapter/_push/should_push_the_image.yml +1059 -553
  36. data/spec/vcr/Bigrig_DockerAdapter/_remove_container/when_the_container_does_not_exist/raises_a_ContainerNotFoundError.yml +40 -40
  37. data/spec/vcr/Bigrig_DockerAdapter/_remove_container/when_the_container_exists/should_remove_the_container.yml +44 -44
  38. data/spec/vcr/Bigrig_DockerAdapter/_remove_container/when_the_container_is_running/raises_a_ContainerRunningError.yml +13 -13
  39. data/spec/vcr/Bigrig_DockerAdapter/_remove_image/when_the_image_doesnt_exist/raises_an_error.yml +12 -12
  40. data/spec/vcr/Bigrig_DockerAdapter/_remove_image/when_the_image_exists/removes_the_image.yml +35 -35
  41. data/spec/vcr/Bigrig_DockerAdapter/_run/given_an_image_id_that_exists/and_a_name/starts_the_container_with_the_right_name.yml +35 -35
  42. data/spec/vcr/Bigrig_DockerAdapter/_run/given_an_image_id_that_exists/and_a_name_and_env_variables/starts_the_container_with_env_set.yml +35 -35
  43. data/spec/vcr/Bigrig_DockerAdapter/_run/given_an_image_id_that_exists/and_a_name_and_ports/starts_the_container_with_ports_exposed.yml +41 -41
  44. data/spec/vcr/Bigrig_DockerAdapter/_running_/when_the_container_does_not_exist/returns_false.yml +20 -20
  45. data/spec/vcr/Bigrig_DockerAdapter/_running_/when_the_container_is_not_running/returns_false.yml +13 -15
  46. data/spec/vcr/Bigrig_DockerAdapter/_running_/when_the_container_is_running/returns_true.yml +17 -17
  47. data/spec/vcr/Bigrig_DockerAdapter/_tag/should_tag_the_image.yml +34 -34
  48. data/spec/vcr/Bigrig_LogAction/_perform/follows_the_log.yml +43 -43
  49. data/spec/vcr/Bigrig_RunAction/_perform/given_a_file_with_a_path/builds_the_image_before_starting_it.yml +222 -26
  50. data/spec/vcr/Bigrig_RunAction/_perform/given_a_file_with_hosts_by_ip/should_pass_hosts_to_container.yml +180 -74
  51. data/spec/vcr/Bigrig_RunAction/_perform/given_a_file_with_hosts_by_name/should_lookup_ips_for_hosts_with_a_hostname.yml +181 -75
  52. data/spec/vcr/Bigrig_RunAction/_perform/given_a_file_with_links/should_pass_links_to_the_right_container.yml +351 -139
  53. data/spec/vcr/Bigrig_RunAction/_perform/given_a_file_with_multiple_containers/launches_both_containers_in_parallel.yml +130 -130
  54. data/spec/vcr/Bigrig_RunAction/_perform/given_a_file_with_multiple_containers/spins_up_multiple_containers.yml +140 -140
  55. data/spec/vcr/Bigrig_RunAction/_perform/given_a_file_with_one_container/should_spin_up_a_single_container.yml +175 -69
  56. data/spec/vcr/Bigrig_RunAction/_perform/given_a_file_with_one_container/when_a_dead_container_exists/should_remove_existing_containers.yml +159 -53
  57. data/spec/vcr/Bigrig_RunAction/_perform/given_a_file_with_volumes/should_pass_volumes_to_the_right_container.yml +180 -74
  58. data/spec/vcr/Bigrig_RunAction/_perform/given_a_file_with_volumes_from/should_pass_volumes_from_to_the_right_container.yml +351 -139
  59. data/spec/vcr/Bigrig_RunAction/_perform/given_a_file_with_volumes_from/starts_the_dependant_container_last.yml +130 -130
  60. data/spec/vcr/Bigrig_RunAction/_perform/when_activating_profiles_that_do_not_exist/ignores_the_missing_profile.yml +268 -77
  61. data/spec/vcr/Bigrig_RunAction/_perform/with_a_file_with_active_profiles/uses_the_overridden_image.yml +180 -74
  62. data/spec/vcr/bigrig/destroy/spec/data/single_json/kills_the_container.yml +28 -28
  63. data/spec/vcr/bigrig/dev/spec/data/dev_json/activates_the_dev_profile.yml +266 -158
  64. data/spec/vcr/bigrig/dev/spec/data/dev_json/destroys_containers_on_exit.yml +78 -158
  65. data/spec/vcr/bigrig/dev/spec/data/dev_json/starts_the_containers.yml +187 -191
  66. data/spec/vcr/bigrig/dev/spec/data/dev_json/tails_the_logs.yml +38 -118
  67. data/spec/vcr/bigrig/dev/spec/data/scan_json/leaves_unaffected_containers_alone_when_the_scanned_file_changes.yml +811 -345
  68. data/spec/vcr/bigrig/dev/spec/data/scan_json/restarts_dependant_containers_when_the_scanned_file_changes.yml +813 -375
  69. data/spec/vcr/bigrig/dev/spec/data/scan_json/restarts_the_container_when_the_scanned_file_changes.yml +855 -363
  70. data/spec/vcr/bigrig/logs/spec/data/log_json/tails_the_logs.yml +23 -23
  71. data/spec/vcr/bigrig/run/spec/data/profiles_json_-p_qa/leaves_existing_env_values_alone.yml +14 -14
  72. data/spec/vcr/bigrig/run/spec/data/profiles_json_-p_qa/overrides_the_env.yml +14 -14
  73. data/spec/vcr/bigrig/run/spec/data/profiles_json_-p_qa/overrides_the_tag.yml +17 -17
  74. data/spec/vcr/bigrig/run/spec/data/single_json/sends_the_name_of_the_container_to_stdout.yml +12 -12
  75. data/spec/vcr/bigrig/run/spec/data/single_json/starts_the_container.yml +17 -17
  76. data/spec/vcr/bigrig/run/spec/data/wait_for/bigrig_json/waits_for_wait_for.yml +180 -0
  77. data/spec/vcr/bigrig/run/spec/data/wait_for_broken_json/fails_with_an_error.yml +12 -12
  78. data/spec/vcr/bigrig/ship/spec/data/ship_json/with_a_version/-c/cleans_the_image_when_its_done.yml +28 -28
  79. data/spec/vcr/bigrig/ship/spec/data/ship_json/with_a_version/builds_and_pushes_the_image.yml +21 -21
  80. data/spec/vcr/bigrig_bin_bigrig_destroy_spec/data/single_json_kills_the_container.yml +28 -28
  81. data/spec/vcr/bigrig_bin_bigrig_dev_spec/data/dev_json_activates_the_dev_profile.yml +135 -486
  82. data/spec/vcr/bigrig_bin_bigrig_dev_spec/data/dev_json_starts_the_containers.yml +146 -472
  83. data/spec/vcr/bigrig_bin_bigrig_dev_spec/data/dev_json_tails_the_logs.yml +402 -192
  84. data/spec/vcr/bigrig_bin_bigrig_dev_spec/data/scan_json_leaves_unaffected_containers_alone_when_the_scanned_file_changes.yml +980 -396
  85. data/spec/vcr/bigrig_bin_bigrig_dev_spec/data/scan_json_restarts_dependant_containers_when_the_scanned_file_changes.yml +916 -388
  86. data/spec/vcr/bigrig_bin_bigrig_dev_spec/data/scan_json_restarts_the_container_when_the_scanned_file_changes.yml +919 -391
  87. data/spec/vcr/bigrig_bin_bigrig_logs_spec/data/log_json_tails_the_logs.yml +23 -23
  88. data/spec/vcr/bigrig_bin_bigrig_run_spec/data/profiles_json_-p_qa_leaves_existing_env_values_alone.yml +159 -53
  89. data/spec/vcr/bigrig_bin_bigrig_run_spec/data/profiles_json_-p_qa_overrides_the_env.yml +159 -53
  90. data/spec/vcr/bigrig_bin_bigrig_run_spec/data/profiles_json_-p_qa_overrides_the_tag.yml +286 -31
  91. data/spec/vcr/bigrig_bin_bigrig_run_spec/data/single_json_sends_the_name_of_the_container_to_stdout.yml +159 -53
  92. data/spec/vcr/bigrig_bin_bigrig_run_spec/data/single_json_starts_the_container.yml +159 -53
  93. data/spec/vcr/bigrig_bin_bigrig_run_spec/data/wait_for/bigrig_json_waits_for_wait_for.yml +522 -0
  94. data/spec/vcr/bigrig_bin_bigrig_run_spec/data/wait_for_broken_json_fails_with_an_error.yml +175 -80
  95. data/spec/vcr/bigrig_bin_bigrig_ship_spec/data/ship_json_with_a_version_-c_cleans_the_image_when_its_done.yml +1036 -526
  96. data/spec/vcr/bigrig_bin_bigrig_ship_spec/data/ship_json_with_a_version_builds_and_pushes_the_image.yml +1024 -514
  97. metadata +17 -12
  98. data/spec/data/wait_for.json +0 -9
  99. data/spec/data/wait_for_broken.json +0 -9
  100. data/spec/vcr/bigrig/run/spec/data/wait_for_json/waits_for_wait_for.yml +0 -180
  101. data/spec/vcr/bigrig_bin_bigrig_run_spec/data/wait_for_json_waits_for_wait_for.yml +0 -412
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 00aa4dcc5c5020989a86e614b6275ece8b0c4186
4
- data.tar.gz: be21feead0bf637a42fbab508afc42dab1354e46
3
+ metadata.gz: 7efe9f59950d19fdb1cdf53db16d27936f113506
4
+ data.tar.gz: 0b7009c17a3ac7afb42c453dce0c07a2a2002806
5
5
  SHA512:
6
- metadata.gz: 0815eb41d36aa361896dda68ce455f0d053717696292ed2972b8bae108a9bc4dee7a5e9c4a314511b365ff9f298cd6b8609703444ae64229b08bba2c71209b16
7
- data.tar.gz: 259c2135db5db706b882dabeb21e7f9965eee97d4063149f3cbfef99f23365561feb480353e9ad06aaef781d7317c2851d6044f34467996ef4c22fbd932275ce
6
+ metadata.gz: efc06d73bb0ef865abbe7a66b37194ea77f946cf2833c3206cb4c8f9655d64e90e355041f6bfe6c53ba483fa58314e9ce1326404d9f2e0b605fabec04a03c166
7
+ data.tar.gz: dce81ac7df035ba0e1135e6ecc532253772fd302b5e602c1334a37a5b8148d1364538b1b9a1181be51830e463e5f057556719d189c144a584ba042938cc6107a
data/CHANGELOG.md CHANGED
@@ -63,3 +63,9 @@ Add `volumes` attriute
63
63
  0.4.2
64
64
  =====
65
65
  * Fix nasty jruby incompadability
66
+
67
+ 0.5.0
68
+ =====
69
+ **BREAKING CHANGE**
70
+ * removed wait_for from bigrig.json. We now wait for the script at
71
+ `/bigrig-wait.sh`, if present
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bigrig (0.4.2)
4
+ bigrig (0.5.0)
5
5
  colorize (= 0.7.5)
6
- docker-api (= 1.20.0)
6
+ docker-api (= 1.21.4)
7
7
  filewatcher (= 0.4.0)
8
8
  gli (= 2.12.2)
9
9
 
@@ -11,7 +11,7 @@ GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
13
  Platform (0.4.0)
14
- addressable (2.3.6)
14
+ addressable (2.3.8)
15
15
  ast (2.0.0)
16
16
  astrolabe (1.3.0)
17
17
  parser (>= 2.2.0.pre.3, < 3.0)
@@ -19,49 +19,48 @@ GEM
19
19
  crack (0.4.2)
20
20
  safe_yaml (~> 1.0.0)
21
21
  diff-lcs (1.2.5)
22
- docker-api (1.20.0)
22
+ docker-api (1.21.4)
23
23
  excon (>= 0.38.0)
24
24
  json
25
- excon (0.45.2)
25
+ excon (0.45.3)
26
26
  filewatcher (0.4.0)
27
27
  trollop (~> 2.0)
28
28
  gli (2.12.2)
29
- json (1.8.2)
29
+ json (1.8.3)
30
30
  open4 (1.3.4)
31
- parser (2.2.0.pre.8)
31
+ parser (2.2.2.5)
32
32
  ast (>= 1.1, < 3.0)
33
- slop (~> 3.4, >= 3.4.5)
34
33
  popen4 (0.1.2)
35
34
  Platform (>= 0.4.0)
36
35
  open4 (>= 0.4.0)
37
36
  powerpack (0.0.9)
38
37
  rainbow (2.0.0)
39
38
  rake (10.4.2)
40
- rspec (3.1.0)
41
- rspec-core (~> 3.1.0)
42
- rspec-expectations (~> 3.1.0)
43
- rspec-mocks (~> 3.1.0)
44
- rspec-core (3.1.7)
45
- rspec-support (~> 3.1.0)
39
+ rspec (3.2.0)
40
+ rspec-core (~> 3.2.0)
41
+ rspec-expectations (~> 3.2.0)
42
+ rspec-mocks (~> 3.2.0)
43
+ rspec-core (3.2.3)
44
+ rspec-support (~> 3.2.0)
46
45
  rspec-eventually (0.0.1)
47
- rspec-expectations (3.1.2)
46
+ rspec-expectations (3.2.1)
48
47
  diff-lcs (>= 1.2.0, < 2.0)
49
- rspec-support (~> 3.1.0)
50
- rspec-its (1.0.1)
51
- rspec-core (>= 2.99.0.beta1)
52
- rspec-expectations (>= 2.99.0.beta1)
53
- rspec-mocks (3.1.3)
54
- rspec-support (~> 3.1.0)
55
- rspec-support (3.1.2)
48
+ rspec-support (~> 3.2.0)
49
+ rspec-its (1.2.0)
50
+ rspec-core (>= 3.0.0)
51
+ rspec-expectations (>= 3.0.0)
52
+ rspec-mocks (3.2.1)
53
+ diff-lcs (>= 1.2.0, < 2.0)
54
+ rspec-support (~> 3.2.0)
55
+ rspec-support (3.2.2)
56
56
  rubocop (0.27.1)
57
57
  astrolabe (~> 1.3)
58
58
  parser (>= 2.2.0.pre.7, < 3.0)
59
59
  powerpack (~> 0.0.6)
60
60
  rainbow (>= 1.99.1, < 3.0)
61
61
  ruby-progressbar (~> 1.4)
62
- ruby-progressbar (1.7.0)
62
+ ruby-progressbar (1.7.5)
63
63
  safe_yaml (1.0.4)
64
- slop (3.6.0)
65
64
  trollop (2.1.2)
66
65
  vcr (2.9.3)
67
66
  webmock (1.20.4)
@@ -69,7 +68,6 @@ GEM
69
68
  crack (>= 0.3.2)
70
69
 
71
70
  PLATFORMS
72
- java
73
71
  ruby
74
72
 
75
73
  DEPENDENCIES
@@ -79,6 +77,6 @@ DEPENDENCIES
79
77
  rspec
80
78
  rspec-eventually
81
79
  rspec-its
82
- rubocop
80
+ rubocop (~> 0.27.1)
83
81
  vcr (~> 2.9.3)
84
82
  webmock (~> 1.20.4)
data/bigrig.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.add_development_dependency('rake')
18
18
  s.add_development_dependency('rspec')
19
19
  s.add_development_dependency('rspec-its')
20
- s.add_development_dependency('rubocop')
20
+ s.add_development_dependency('rubocop', '~> 0.27.1')
21
21
  s.add_development_dependency('vcr', '~> 2.9.3')
22
22
  s.add_development_dependency('webmock', '~> 1.20.4')
23
23
  s.add_development_dependency('popen4')
@@ -25,6 +25,6 @@ Gem::Specification.new do |s|
25
25
 
26
26
  s.add_runtime_dependency('gli', '2.12.2')
27
27
  s.add_runtime_dependency('colorize', '0.7.5')
28
- s.add_runtime_dependency('docker-api', '1.20.0')
28
+ s.add_runtime_dependency('docker-api', '1.21.4')
29
29
  s.add_runtime_dependency('filewatcher', '0.4.0')
30
30
  end
@@ -1,8 +1,8 @@
1
1
  module Bigrig
2
2
  class Container < BaseModel
3
- ARRAY_ATTRS = :volumes_from, :links, :hosts, :volumes, :wait_for
3
+ ARRAY_ATTRS = :volumes_from, :links, :hosts, :volumes
4
4
  attr_accessor :env, :name, :path, :ports, :tag, :volumes_from, :links, :hosts, :repo,
5
- :volumes, :scan, :wait_for
5
+ :volumes, :scan
6
6
 
7
7
  class << self
8
8
  def from_json(name, json)
data/lib/bigrig/runner.rb CHANGED
@@ -43,8 +43,7 @@ module Bigrig
43
43
  volumes: container.volumes,
44
44
  links: container.links,
45
45
  hosts: container.hosts,
46
- image_id: image_id(container),
47
- wait_for: container.wait_for }
46
+ image_id: image_id(container) }
48
47
  end
49
48
 
50
49
  def image_id(container)
@@ -72,7 +71,7 @@ module Bigrig
72
71
  Thread.new do
73
72
  puts "Starting #{container[:name]}"
74
73
  puts DockerAdapter.run(container)
75
- wait_for container
74
+ Waiter.new(container[:name]).wait_if_needed
76
75
  end
77
76
  end
78
77
 
@@ -91,12 +90,5 @@ module Bigrig
91
90
  end
92
91
  steps
93
92
  end
94
-
95
- def wait_for(container)
96
- container[:wait_for].empty? && return
97
- puts "Waiting for `#{container[:wait_for].join ' '}` to compelte on #{container[:name]}"
98
- result = DockerAdapter.exec(container[:name], container[:wait_for])
99
- result[2] != 0 && fail("Error waiting for container: #{result.first.first}")
100
- end
101
93
  end
102
94
  end
@@ -1,3 +1,3 @@
1
1
  module Bigrig
2
- VERSION = '0.4.2'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -0,0 +1,20 @@
1
+ module Bigrig
2
+ class Waiter
3
+ def initialize(name)
4
+ @name = name
5
+ end
6
+
7
+ def wait_if_needed
8
+ script_present? || return
9
+ puts "Waiting for `/bigrig-wait.sh` to compelte on #{@name}"
10
+ result = DockerAdapter.exec @name, '/bigrig-wait.sh'
11
+ result[2] != 0 && fail("Error waiting for container: #{result.first.first}")
12
+ end
13
+
14
+ def script_present?
15
+ DockerAdapter.exec(@name, ['ls', '/bigrig-wait.sh'])[2] == 0
16
+ rescue Docker::Error::NotFoundError => e
17
+ puts "Unable to determine if wait script is available: #{e}"
18
+ end
19
+ end
20
+ end
data/lib/bigrig.rb CHANGED
@@ -9,5 +9,6 @@ require 'bigrig/output_parser'
9
9
  require 'bigrig/tar'
10
10
  require 'bigrig/runner'
11
11
  require 'bigrig/version'
12
+ require 'bigrig/waiter'
12
13
 
13
14
  module Bigrig; end
@@ -56,6 +56,10 @@ module Bigrig
56
56
  end
57
57
  end
58
58
 
59
+ before do
60
+ allow_any_instance_of(Waiter).to receive :wait_if_needed
61
+ end
62
+
59
63
  it 'spins up multiple containers', :vcr do
60
64
  perform
61
65
  expect(running?).to be true
@@ -199,6 +203,8 @@ module Bigrig
199
203
  sleep 0.5
200
204
  expect(running).to eq 0
201
205
  end
206
+
207
+ allow_any_instance_of(Waiter).to receive :wait_if_needed
202
208
  perform
203
209
  end
204
210
  end
@@ -231,6 +237,7 @@ module Bigrig
231
237
  image_id: 'env-testid',
232
238
  env: { 'NAME1' => 'VALUE1', 'NAME2' => 'VALUE2' }
233
239
  )
240
+ allow_any_instance_of(Waiter).to receive :wait_if_needed
234
241
 
235
242
  subject
236
243
  end
@@ -247,6 +254,7 @@ module Bigrig
247
254
  image_id: 'env-testid',
248
255
  ports: ['80:8080', '12345']
249
256
  )
257
+ allow_any_instance_of(Waiter).to receive :wait_if_needed
250
258
 
251
259
  subject
252
260
  end
@@ -264,7 +264,7 @@ module Bigrig
264
264
 
265
265
  it 'removes the image', :vcr do
266
266
  subject
267
- expect { Docker::Image.get(image_id) }.to raise_error(/404 Not Found/)
267
+ expect { Docker::Image.get(image_id) }.to raise_error Docker::Error::NotFoundError
268
268
  end
269
269
  end
270
270
 
@@ -20,8 +20,6 @@ module Bigrig
20
20
  it { is_expected.to respond_to :volumes_from= }
21
21
  it { is_expected.to respond_to :volumes }
22
22
  it { is_expected.to respond_to :volumes= }
23
- it { is_expected.to respond_to :wait_for }
24
- it { is_expected.to respond_to :wait_for= }
25
23
 
26
24
  it 'accepts volumes as an array' do
27
25
  expect(Container.from_json(nil, 'volumes' => ['test']).volumes).to be_kind_of Array
@@ -63,14 +61,6 @@ module Bigrig
63
61
  expect(Container.from_json(nil, 'links' => 'machine:alias').dependencies).to eq ['machine']
64
62
  end
65
63
 
66
- it 'accepts wait_for as an array' do
67
- expect(Container.from_json(nil, 'wait_for' => ['test']).wait_for).to be_kind_of Array
68
- end
69
-
70
- it 'wraps a single wait_for in an array' do
71
- expect(Container.from_json(nil, 'wait_for' => 'test').wait_for).to be_kind_of Array
72
- end
73
-
74
64
  describe '#dependencies' do
75
65
  it 'returns an empty array when no dependencies are present' do
76
66
  expect(Container.from_json(nil, {}).dependencies).to eq []
@@ -142,14 +132,6 @@ module Bigrig
142
132
  expect(subject.ports).to eq ['80:8080', '12345']
143
133
  end
144
134
  end
145
-
146
- context 'given json with wait_for' do
147
- let(:json) { { 'wait_for' => 'random command' } }
148
-
149
- it 'has wait_for' do
150
- expect(subject.wait_for).to eq ['random command']
151
- end
152
- end
153
135
  end
154
136
  end
155
137
  end
data/spec/bigrig_spec.rb CHANGED
@@ -216,28 +216,42 @@ describe 'bigrig' do
216
216
  end
217
217
  end
218
218
 
219
- context 'spec/data/wait_for.json' do
219
+ context 'spec/data/wait_for/bigrig.json' do
220
220
  let(:args) { ['run'] }
221
221
  let(:output) { subject }
222
- let(:file) { 'spec/data/wait_for.json' }
222
+ let(:file) { 'bigrig.json' }
223
+ let(:here) { "#{File.expand_path '../..', __FILE__}/" }
223
224
  let(:container) { Docker::Container.get 'wait_for-test' }
224
225
  let(:result) do
225
- Docker::Container.get('wait_for-test').exec(['cat', '/tmp/result.txt']).first.first.to_i
226
+ Docker::Container.get('wait_for-test').exec(['cat', '/tmp/result.txt']).first.first.strip
227
+ end
228
+
229
+ around do |example|
230
+ Dir.chdir 'spec/data/wait_for' do
231
+ example.run
232
+ end
226
233
  end
227
234
 
228
235
  it 'waits for wait_for', :vcr do
229
236
  subject
230
- expect(result).to be 2
237
+ expect(result).to eq '2'
231
238
  end
232
239
  end
233
240
 
234
241
  context 'spec/data/wait_for_broken.json' do
235
- let(:command) { %(spec/support/bigrig_vcr "#{casette_name}" #{args.join ' '}) }
236
- let(:args) { %w(-f spec/data/wait_for_broken.json run) }
242
+ let(:command) { %(#{here}spec/support/bigrig_vcr "#{casette_name}" #{args.join ' '}) }
243
+ let(:args) { ['run'] }
244
+ let(:here) { "#{File.expand_path '../..', __FILE__}/" }
237
245
  let(:container) do
238
246
  Docker::Container.get('wait_for_broken-test')
239
247
  end
240
248
 
249
+ around do |example|
250
+ Dir.chdir 'spec/data/wait_for_broken' do
251
+ example.run
252
+ end
253
+ end
254
+
241
255
  it 'fails with an error', :vcr do
242
256
  pid, output = capture_stdout command
243
257
  Process.kill :SIGINT, pid
@@ -0,0 +1,4 @@
1
+ FROM debian:jessie
2
+
3
+ ADD bigrig-wait.sh /
4
+ CMD tail -f /dev/null
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+
3
+ BEFORE=$(date +%s)
4
+ sleep 2
5
+ echo $(($(date +%s) - $BEFORE)) > /tmp/result.txt
@@ -0,0 +1,8 @@
1
+ {
2
+ "containers": {
3
+ "wait_for-test": {
4
+ "repo": "hawknewton/wait_for",
5
+ "path": "."
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,4 @@
1
+ FROM debian:jessie
2
+
3
+ ADD bigrig-wait.sh /
4
+ CMD tail -f /dev/null
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+
3
+ exit 1
@@ -0,0 +1,8 @@
1
+ {
2
+ "containers": {
3
+ "wait_for_broken-test": {
4
+ "repo": "hawknewton/wait_for-broken",
5
+ "path": "."
6
+ }
7
+ }
8
+ }