buildbox 0.3 → 0.3.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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/lib/buildbox/api.rb +1 -1
  4. data/lib/buildbox/build.rb +28 -3
  5. data/lib/buildbox/cli.rb +3 -1
  6. data/lib/buildbox/monitor.rb +3 -3
  7. data/lib/buildbox/runner.rb +64 -21
  8. data/lib/buildbox/version.rb +1 -1
  9. data/spec/fixtures/repo.git/objects/04/962eeccc7db2ca321fae49c1870e8fc4d2d66e +0 -0
  10. data/spec/fixtures/repo.git/objects/06/2228c22ba88855cad2d6a49548102eae064f83 +0 -0
  11. data/spec/fixtures/repo.git/objects/0c/0b9f8492bbf106aa0b3ab44f2b1f85201d7741 +0 -0
  12. data/spec/fixtures/repo.git/objects/0e/2d0627c994c622bec0e3bcc974d5e93333e16b +0 -0
  13. data/spec/fixtures/repo.git/objects/13/1eb1a583f8c93ae161efc6a20f039534ffd1f2 +0 -0
  14. data/spec/fixtures/repo.git/objects/20/962c607e5717778217d53e1486a91cf37364c3 +0 -0
  15. data/spec/fixtures/repo.git/objects/24/b04991020e82630ef2ee1d880a6af3cbd4c895 +0 -0
  16. data/spec/fixtures/repo.git/objects/26/09e034ab986b1300462e5045e528e997e92388 +0 -0
  17. data/spec/fixtures/repo.git/objects/2a/c2f6560213aa67b0beb5f93752ba9bc5c17408 +1 -0
  18. data/spec/fixtures/repo.git/objects/37/d57a5fc0e114e2ed5f93246e1faad4ffdc938f +0 -0
  19. data/spec/fixtures/repo.git/objects/38/393aa12f6a61fb004d97cc758d57553677ef4c +0 -0
  20. data/spec/fixtures/repo.git/objects/55/21b43c112e44d30c1c6e96a624ac2f7f106080 +0 -0
  21. data/spec/fixtures/repo.git/objects/5e/10fade9d87996aff68ab953e1b0990546f53a6 +0 -0
  22. data/spec/fixtures/repo.git/objects/65/70f379f41b941bb7c55bf3dfa748c38ceeac18 +0 -0
  23. data/spec/fixtures/repo.git/objects/67/51a12720df0cab2d2af8c5faa5d7a9de0592a2 +0 -0
  24. data/spec/fixtures/repo.git/objects/6d/360ec6efb36a1899d99ee6db7b5d6775f75553 +0 -0
  25. data/spec/fixtures/repo.git/objects/81/4d7440ff99aa974a16f62bf74a5e332848d38e +2 -0
  26. data/spec/fixtures/repo.git/objects/8b/8bbf08cad20dddc169e6ba18f0a57dc199d780 +0 -0
  27. data/spec/fixtures/repo.git/objects/8e/ef70ef24a36aa57fbacc0d759e312f51332c3d +3 -0
  28. data/spec/fixtures/repo.git/objects/96/05a98eaf99f9c8436fc0d63d1f9c4e7c8074a1 +0 -0
  29. data/spec/fixtures/repo.git/objects/96/b3b1ccedd7e3d0c3d980a3f5efbd456e910f81 +0 -0
  30. data/spec/fixtures/repo.git/objects/99/cc50613b66753e8baff6678287b77484f65398 +2 -0
  31. data/spec/fixtures/repo.git/objects/a1/fbbf2cde5a3f75c66599c176618a0503e58280 +1 -0
  32. data/spec/fixtures/repo.git/objects/aa/6a10fb52f6c921da60255271efc54865d83108 +0 -0
  33. data/spec/fixtures/repo.git/objects/b1/6359980d096f665a6bdb22331b679fd34b8aee +0 -0
  34. data/spec/fixtures/repo.git/objects/b3/f5006b546d890c65573bb5ceab100ce3c3b0d6 +0 -0
  35. data/spec/fixtures/repo.git/objects/c3/f573f9c7886117a28bb9f6f09452faec874d52 +0 -0
  36. data/spec/fixtures/repo.git/objects/c4/3c386d88340ba3214064669190de65e6094082 +0 -0
  37. data/spec/fixtures/repo.git/objects/cb/fa06c2ca5c2b91d093b89886d873815820125d +0 -0
  38. data/spec/fixtures/repo.git/objects/ce/460ddb64d2a317bb6f49eaf22ebe839e5d0839 +0 -0
  39. data/spec/fixtures/repo.git/objects/ed/8af179853d173a838535a250c4500c0ccd8199 +2 -0
  40. data/spec/fixtures/repo.git/objects/f2/0051c2ebf04cbf6fe28f8620b7a3c3da2f2fd4 +1 -0
  41. data/spec/fixtures/repo.git/objects/f3/9ab5e17f1e98465df20fdf2d8f3a29af10d804 +0 -0
  42. data/spec/fixtures/repo.git/objects/f8/93c7f6939fc152ce65f4f4ade3e98e9c6ae9b4 +0 -0
  43. data/spec/fixtures/repo.git/refs/heads/master +1 -1
  44. data/spec/integration/running_a_build_spec.rb +32 -74
  45. metadata +69 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 943e5240e1dc1d41d6086cdf88dadc990477f165
4
- data.tar.gz: 7f03003bb7c71db8971a5c313325fc5461cca2dc
3
+ metadata.gz: 033c05b17212599e1e890e81b4fc2a32af110232
4
+ data.tar.gz: b83c38368d0f73644886f1cd85e06ba2027d5eb0
5
5
  SHA512:
6
- metadata.gz: 581a02441d7887327dd69584eb0c476b90dfcd01899e81f3da7bafe03b7d505ffbf4e3af385154d17394fe0db255eed477d098f41fe7ff3ae18ce502252fafce
7
- data.tar.gz: c9fec973a2d1814c2342a719d14861cb0478ecdcabf7723c5e3085144430e1fea8fc35e42082b40071a723beadaaedc3413e28b297902920cc30bb4977621b1d
6
+ metadata.gz: 5371b0e6e4a08edae5a8491b16a2db9934fc37833005a268e76ee4cb1d6eacc54281ac38608722b946de53bd919c65e979f33cd632661478ab2882030bb24e14
7
+ data.tar.gz: 0c6fea3764b2fdd393854a10a4e5dccf100cfd00afee0fc542e04a297a06b04c8311d70627a1666427b6422e019cf763517441a36d0d72bd8ce5537c83c9f9f2
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- buildbox (0.3)
4
+ buildbox (0.3.1)
5
5
  celluloid (~> 0.14)
6
6
  childprocess (~> 0.3)
7
7
  faraday (~> 0.8)
@@ -23,7 +23,7 @@ module Buildbox
23
23
  end
24
24
 
25
25
  def update_build(build)
26
- put(build.url, :output => build.output, :exit_status => build.exit_status)
26
+ put(build.url, :state => build.state, :parts => build.parts)
27
27
  end
28
28
 
29
29
  private
@@ -3,16 +3,41 @@ require 'hashie/mash'
3
3
 
4
4
  module Buildbox
5
5
  class Build < Hashie::Mash
6
+ class State
7
+ STARTED = 'started'
8
+ FINISHED = 'finished'
9
+ end
10
+
11
+ class Part < Hashie::Mash
12
+ def success?
13
+ exit_status == 0
14
+ end
15
+ end
16
+
17
+ attr_reader :parts
18
+
19
+ def initialize(*args)
20
+ super(*args)
21
+ @parts = []
22
+ end
23
+
6
24
  def success?
7
- exit_status == 0
25
+ !@parts.empty? && @parts.last.success?
8
26
  end
9
27
 
10
28
  def started?
11
- output.kind_of?(String) && output.length > 0
29
+ state == State::STARTED
12
30
  end
13
31
 
14
32
  def finished?
15
- exit_status != nil
33
+ state == State::FINISHED
34
+ end
35
+
36
+ def namespace
37
+ raise "Missing project id" unless project.id
38
+ raise "Missing team id" unless project.team.id
39
+
40
+ "#{project.team.id}/#{project.id}"
16
41
  end
17
42
  end
18
43
  end
@@ -111,7 +111,9 @@ module Buildbox
111
111
  def help
112
112
  <<HELP
113
113
 
114
- agent # agent management (setup, server)
114
+ auth:login [api_key] # login to buildbox
115
+ agent:setup [access_token] # set the access token for the agent
116
+ agent:start # start the buildbox agent
115
117
  version # display version
116
118
 
117
119
  HELP
@@ -14,9 +14,9 @@ module Buildbox
14
14
  loop do
15
15
  # There is an edge case where the build finishes between making the
16
16
  # update_build http call, and breaking. So to make sure we're using the
17
- # same build object throughout this call, we can just dup it.
18
- build = @build.dup
19
- @api.update_build(build) if build.started?
17
+ # same build object throughout this call, we can just deep dup it.
18
+ build = Marshal.load(Marshal.dump(@build))
19
+ @api.update_build(build)
20
20
 
21
21
  if build.finished?
22
22
  break
@@ -1,6 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'celluloid'
3
3
  require 'fileutils'
4
+ require 'yaml'
4
5
 
5
6
  module Buildbox
6
7
  class Runner
@@ -9,45 +10,87 @@ module Buildbox
9
10
 
10
11
  attr_reader :build
11
12
 
13
+ class CommandFailedError < StandardError; end
14
+
12
15
  def initialize(build)
13
16
  @build = build
14
17
  end
15
18
 
16
- def start
17
- info "Starting to build #{namespace}/#{@build.number} starting..."
19
+ def run(*args)
20
+ # Create the build part
21
+ build_part = Build::Part.new(:command => args.join(' '), :output => '', :started_at => Time.now.utc)
22
+ @build.parts << build_part
23
+
24
+ # Run the command and capture output
25
+ result = Command.run(*args, :environment => @build.env, :directory => @working_directory) do |chunk|
26
+ build_part.output << chunk
27
+ end
18
28
 
19
- FileUtils.mkdir_p(directory_path)
20
- File.open(script_path, 'w+') { |file| file.write(@build.script) }
21
- File.chmod(0777, script_path)
29
+ # Set the output again because we may have missed some in the block
30
+ build_part.output = result.output
31
+ build_part.exit_status = result.exit_status
32
+ build_part.finished_at = Time.now.utc
22
33
 
23
- info "Running script: #{script_path}"
34
+ raise CommandFailedError unless build_part.success?
35
+
36
+ build_part
37
+ end
38
+
39
+ def start
40
+ info "Starting to build #{@build.namespace}/#{@build.id} starting..."
24
41
 
25
- build.output = ""
26
- result = Command.run(script_path, :environment => @build.env,
27
- :directory => directory_path) do |chunk|
28
- build.output << chunk
42
+ # Ensure we have the right env variables needed to build
43
+ %w(BUILDBOX_REPO BUILDBOX_COMMIT).each do |env|
44
+ raise "Build is missing environment variable #{env}" unless @build.env[env]
29
45
  end
30
46
 
31
- build.output = result.output
32
- build.exit_status = result.exit_status
47
+ @build.state = Build::State::STARTED
33
48
 
34
- File.delete(script_path)
49
+ # Ensure we have a working directory to run the build in
50
+ @working_directory = @build.project.working_directory || default_working_directory
51
+ FileUtils.mkdir_p(@working_directory)
35
52
 
36
- info "#{namespace} ##{@build.number} finished with exit status #{result.exit_status}"
53
+ begin
54
+ # Bootstrap version control and checkout the right commit
55
+ bootstrap_version_control
56
+
57
+ # Try and find a .buildbox.yml file
58
+ buildbox_yml = File.join(@working_directory, '.buildbox.yml')
59
+
60
+ if File.exist?(buildbox_yml)
61
+ yaml = YAML.load_file(buildbox_yml)
62
+ commands = [ *yaml['script'] ]
63
+ else
64
+ # Maybe there is a .buildbox file that can be executed?
65
+ buildbox_script = File.join(@working_directory, '.buildbox')
66
+ commands = [ buildbox_script ] if File.exist?(buildbox_script)
67
+ end
68
+
69
+ # Run the commands for the build
70
+ if commands && commands.any?
71
+ commands.each { |command| run command }
72
+ else
73
+ end
74
+ rescue CommandFailedError
75
+ end
76
+
77
+ @build.state = Build::State::FINISHED
37
78
  end
38
79
 
39
80
  private
40
81
 
41
- def directory_path
42
- @directory_path ||= Buildbox.root_path.join(namespace)
43
- end
82
+ def bootstrap_version_control
83
+ unless File.exist?(File.join(@working_directory, '.git'))
84
+ run "git", "clone", @build.env["BUILDBOX_REPO"], "."
85
+ end
44
86
 
45
- def script_path
46
- @script_path ||= Buildbox.root_path.join("buildbox-#{namespace.gsub(/\//, '-')}-#{@build.number}")
87
+ run "git", "clean", "-fd"
88
+ run "git", "fetch", "-q"
89
+ run "git", "checkout", "-qf", @build.env["BUILDBOX_COMMIT"]
47
90
  end
48
91
 
49
- def namespace
50
- "#{@build.project.team.name}/#{@build.project.name}"
92
+ def default_working_directory
93
+ Buildbox.root_path.join(@build.namespace)
51
94
  end
52
95
  end
53
96
  end
@@ -1,3 +1,3 @@
1
1
  module Buildbox
2
- VERSION = "0.3"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -0,0 +1 @@
1
+ x��K��0Dg�S�>ZKj!Y�&WЧ=c��i3׏}���+xT���&`}�� Ȧ�7����\�m.�������g���_���i4��x�<f]c���hK��DT��9���M��h"p�|�=p��\�~mC HC@8iDT{������r�cjS{�@��T��X��$m������>i�Os
@@ -0,0 +1,2 @@
1
+ x��Aj�0E��)f_��e� �l�M�d��X�8�4��u���{>�2OS3��{"�B43�X�R��˱c����w#��EZYF�2�P}
2
+ �a�(�t�`)�}�N~�:/p�fW873�Mz���s�m��=��8aN}���n��=ӷ���j���^���`�m[�6G5
@@ -0,0 +1,3 @@
1
+ x��Kj�0D��)z$��BH���
2
+ ��#b�������!��UT��{S��>�)v^�!���N�U�y!���\if�1�9�M]-�zb 8�(ư�t��e��N����M�� o��
3
+ �M���|��t��?��RN��9��k�;���h^������e�������A۾pm �t�C�P�
@@ -0,0 +1,2 @@
1
+ x��Aj!E����E`(-۶!��:�\��2-ۡ��?&7���{���Vk0�>�� �R$��dq
2
+ �f?kԈ�<հ��CuK�X�rOk��\� ����;�VY����K�ZzxU?�%TA
@@ -0,0 +1 @@
1
+ x��Kj1D��)z0���$�l|��t��x��'��|���T��m]���Ûtfd��9p-6�I9S�́J,�B��F�Uw�|H�QtNך3b�M�a*u$��N�%���l����&�?�_xt�����u7�n��j�CO��C�I��(P��,(��Mvx�$�:�.(�~RO�Q�
@@ -0,0 +1,2 @@
1
+ x��;�0D�s��"��H!Z��v6�"&(8n�s����8�
2
+ (�wef"CR �`�W�'#������3�;-�k�4�+����6���-�@>D��v���ܦ.��
@@ -0,0 +1 @@
1
+ x��Aj1}�+�03�V��r�%�#i��X��g���Oȩ��j:��v��I�d�KI�ˎ֔B�Q�Z+I6e)8�<x�]�I"^6W� ��[����|���5|���]���{�ϟ>&�sosm�VBo��l�=���"z�;0�>~��x*��܋��'�L�
@@ -1 +1 @@
1
- 2d762cdfd781dc4077c9f27a18969efbd186363c
1
+ f20051c2ebf04cbf6fe28f8620b7a3c3da2f2fd4
@@ -3,26 +3,10 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe 'running a build' do
6
- let(:commit) { "3e0c65433b241ff2c59220f80bcdcd2ebb7e4b96" }
7
- let(:command) { "rspec test_spec.rb" }
8
- let(:env) { { } }
9
- let(:build) { Buildbox::Build.new(:project => { :name => "test", :team => { :name => "test" } }, :number => 1, :script => script, :env => env) }
10
- let(:runner) { Buildbox::Runner.new(build) }
11
- let(:script) do
12
- <<-SCRIPT
13
- #/bin/bash
14
- set -e
15
- echo `pwd`
16
- if [ ! -d ".git" ]; then
17
- git clone "#{FIXTURES_PATH.join("repo.git").to_s}" ./ -q
18
- fi
19
- git clean -fd
20
- git fetch -q
21
- git checkout -qf #{commit}
22
- bundle install --local
23
- #{command}
24
- SCRIPT
25
- end
6
+ let(:commit) { "24b04991020e82630ef2ee1d880a6af3cbd4c895" }
7
+ let(:env) { { 'BUILDBOX_REPO' => FIXTURES_PATH.join("repo.git").to_s, 'BUILDBOX_COMMIT' => commit } }
8
+ let(:build) { Buildbox::Build.new(:project => { :id => "test", :team => { :id => "test" } }, :id => 'buildid', :env => env) }
9
+ let(:runner) { Buildbox::Runner.new(build) }
26
10
 
27
11
  before do
28
12
  Buildbox.stub(:root_path).and_return(TEMP_PATH)
@@ -37,7 +21,8 @@ SCRIPT
37
21
  runner.start
38
22
 
39
23
  build.should be_success
40
- build.output.should =~ /1 example, 0 failures/
24
+ build.should be_finished
25
+ build.parts.last.output.should =~ /1 example, 0 failures/
41
26
  end
42
27
  end
43
28
 
@@ -48,94 +33,67 @@ SCRIPT
48
33
  runner.start
49
34
 
50
35
  build.should be_success
51
- build.output.should =~ /1 example, 0 failures/
36
+ build.parts.last.output.should =~ /1 example, 0 failures/
52
37
  end
53
38
  end
54
39
 
55
40
  context 'running a failing build' do
56
- let(:commit) { "2d762cdfd781dc4077c9f27a18969efbd186363c" }
41
+ let(:commit) { "5e10fade9d87996aff68ab953e1b0990546f53a6" }
57
42
 
58
43
  it "returns a unsuccessfull result" do
59
44
  runner.start
60
45
 
61
46
  build.should_not be_success
62
- build.output.should =~ /1 example, 1 failure/
47
+ build.parts.last.output.should =~ /1 example, 1 failure/
63
48
  end
64
49
  end
65
50
 
66
51
  context 'running a failing build that has commands after the one that failed' do
67
- let(:commit) { "2d762cdfd781dc4077c9f27a18969efbd186363c" }
68
- let(:command) { "rspec test_spec.rb; echo 'oh no you didnt!'" }
52
+ let(:commit) { '2ac2f6560213aa67b0beb5f93752ba9bc5c17408' }
69
53
 
70
54
  it "returns a unsuccessfull result" do
71
55
  runner.start
72
56
 
73
57
  build.should_not be_success
74
- build.output.should =~ /1 example, 1 failure/
75
- end
76
- end
77
-
78
- context 'running a ruby script' do
79
- let(:script) do
80
- <<-SCRIPT
81
- #!/usr/bin/env ruby
82
- puts 'hello'
83
- exit 123
84
- SCRIPT
85
- end
86
-
87
- it "runs and returns the correct output" do
88
- runner.start
89
-
90
- build.output.should == 'hello'
91
- build.exit_status.should == 123
58
+ build.parts.last.output.should =~ /1 example, 1 failure/
92
59
  end
93
60
  end
94
61
 
95
62
  context 'accessing ENV variables with a ruby script' do
96
- let(:env) { { "FOO" => "great" } }
97
- let(:script) do
98
- <<-SCRIPT
99
- #!/usr/bin/env ruby
100
- puts ENV["FOO"]
101
- SCRIPT
102
- end
63
+ let(:commit) { "814d7440ff99aa974a16f62bf74a5e332848d38e" }
103
64
 
104
65
  it "runs and returns the correct output" do
66
+ env['FOO'] = "great"
105
67
  runner.start
106
68
 
107
- build.output.should == 'great'
69
+ build.parts[4].output.should == env['BUILDBOX_REPO']
70
+ build.parts.last.output.should == 'great'
108
71
  end
109
72
  end
110
73
 
111
- context 'accessing ENV variables with a bash script' do
112
- let(:env) { { "BAR" => "great" } }
113
- let(:script) do
114
- <<-SCRIPT
115
- echo $BAR
116
- SCRIPT
117
- end
74
+ context 'running a failing build that returns a non standard exit status' do
75
+ let(:commit) { "f20051c2ebf04cbf6fe28f8620b7a3c3da2f2fd4" }
118
76
 
119
- it "runs and returns the correct output" do
77
+ it "returns a unsuccessfull result" do
120
78
  runner.start
121
79
 
122
- build.output.should == 'great'
80
+ build.should_not be_success
81
+ build.parts.last.exit_status.should == 123
123
82
  end
124
83
  end
125
84
 
126
- context 'running a failing build that returns a non standard exit status' do
127
- let(:command) { "exit 123" }
85
+ context 'running a build with a .buildbox file inside' do
86
+ let(:commit) { "96b3b1ccedd7e3d0c3d980a3f5efbd456e910f81" }
128
87
 
129
88
  it "returns a unsuccessfull result" do
130
89
  runner.start
131
90
 
132
- build.should_not be_success
133
- build.exit_status.should == 123
91
+ build.parts.last.output.should == 'Hello there!!'
134
92
  end
135
93
  end
136
94
 
137
95
  context 'a build that has a command with a syntax error' do
138
- let(:command) { 'if ( echo yay' }
96
+ let(:commit) { "8eef70ef24a36aa57fbacc0d759e312f51332c3d" }
139
97
 
140
98
  it "returns a unsuccessfull result" do
141
99
  runner.start
@@ -147,12 +105,12 @@ SCRIPT
147
105
  # zsh 5.0.2 prints "parse error" which we do not handle.
148
106
  # localized systems will print the message in not English which
149
107
  # we do not handle either.
150
- build.output.should =~ /(syntax|parse) error/i
108
+ build.parts.last.output.should =~ /(syntax|parse) error/i
151
109
  end
152
110
  end
153
111
 
154
112
  context 'running a build with a broken command' do
155
- let(:command) { 'foobar' }
113
+ let(:commit) { '99cc50613b66753e8baff6678287b77484f65398' }
156
114
 
157
115
  it "returns a unsuccessfull result" do
158
116
  runner.start
@@ -160,7 +118,7 @@ SCRIPT
160
118
  build.should_not be_success
161
119
  # ubuntu: sh: 1: foobar: not found
162
120
  # osx: sh: foobar: command not found
163
- build.output.should =~ /foobar.+not found/
121
+ build.parts.last.output.should =~ /foobar.+not found/
164
122
  end
165
123
  end
166
124
 
@@ -168,11 +126,11 @@ SCRIPT
168
126
  it "returns a successfull result when the build passes" do
169
127
  runner.start
170
128
  build.should be_success
171
- build.output.should =~ /1 example, 0 failures/
129
+ build.parts.last.output.should =~ /1 example, 0 failures/
172
130
 
173
131
  runner.start
174
132
  build.should be_success
175
- build.output.should =~ /1 example, 0 failures/
133
+ build.parts.last.output.should =~ /1 example, 0 failures/
176
134
  end
177
135
  end
178
136
 
@@ -185,12 +143,12 @@ SCRIPT
185
143
  thread.join
186
144
 
187
145
  build.should be_success
188
- build.output.should =~ /1 example, 0 failures/
146
+ build.parts.last.output.should =~ /1 example, 0 failures/
189
147
  end
190
148
  end
191
149
 
192
150
  context 'running a failing build from a thread' do
193
- let(:commit) { "2d762cdfd781dc4077c9f27a18969efbd186363c" }
151
+ let(:commit) { "5e10fade9d87996aff68ab953e1b0990546f53a6" }
194
152
 
195
153
  it "returns a successfull result" do
196
154
  result = nil
@@ -200,7 +158,7 @@ SCRIPT
200
158
  thread.join
201
159
 
202
160
  build.should_not be_success
203
- build.output.should =~ /1 example, 1 failure/
161
+ build.parts.last.output.should =~ /1 example, 1 failure/
204
162
  end
205
163
  end
206
164
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: buildbox
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith Pitt
@@ -150,12 +150,46 @@ files:
150
150
  - spec/fixtures/repo.git/hooks/prepare-commit-msg.sample
151
151
  - spec/fixtures/repo.git/hooks/update.sample
152
152
  - spec/fixtures/repo.git/info/exclude
153
+ - spec/fixtures/repo.git/objects/04/962eeccc7db2ca321fae49c1870e8fc4d2d66e
154
+ - spec/fixtures/repo.git/objects/06/2228c22ba88855cad2d6a49548102eae064f83
155
+ - spec/fixtures/repo.git/objects/0c/0b9f8492bbf106aa0b3ab44f2b1f85201d7741
156
+ - spec/fixtures/repo.git/objects/0e/2d0627c994c622bec0e3bcc974d5e93333e16b
157
+ - spec/fixtures/repo.git/objects/13/1eb1a583f8c93ae161efc6a20f039534ffd1f2
158
+ - spec/fixtures/repo.git/objects/20/962c607e5717778217d53e1486a91cf37364c3
159
+ - spec/fixtures/repo.git/objects/24/b04991020e82630ef2ee1d880a6af3cbd4c895
160
+ - spec/fixtures/repo.git/objects/26/09e034ab986b1300462e5045e528e997e92388
161
+ - spec/fixtures/repo.git/objects/2a/c2f6560213aa67b0beb5f93752ba9bc5c17408
153
162
  - spec/fixtures/repo.git/objects/2d/762cdfd781dc4077c9f27a18969efbd186363c
163
+ - spec/fixtures/repo.git/objects/37/d57a5fc0e114e2ed5f93246e1faad4ffdc938f
164
+ - spec/fixtures/repo.git/objects/38/393aa12f6a61fb004d97cc758d57553677ef4c
154
165
  - spec/fixtures/repo.git/objects/3e/0c65433b241ff2c59220f80bcdcd2ebb7e4b96
166
+ - spec/fixtures/repo.git/objects/55/21b43c112e44d30c1c6e96a624ac2f7f106080
167
+ - spec/fixtures/repo.git/objects/5e/10fade9d87996aff68ab953e1b0990546f53a6
168
+ - spec/fixtures/repo.git/objects/65/70f379f41b941bb7c55bf3dfa748c38ceeac18
169
+ - spec/fixtures/repo.git/objects/67/51a12720df0cab2d2af8c5faa5d7a9de0592a2
170
+ - spec/fixtures/repo.git/objects/6d/360ec6efb36a1899d99ee6db7b5d6775f75553
171
+ - spec/fixtures/repo.git/objects/81/4d7440ff99aa974a16f62bf74a5e332848d38e
172
+ - spec/fixtures/repo.git/objects/8b/8bbf08cad20dddc169e6ba18f0a57dc199d780
173
+ - spec/fixtures/repo.git/objects/8e/ef70ef24a36aa57fbacc0d759e312f51332c3d
155
174
  - spec/fixtures/repo.git/objects/95/73fff3f9e2c38ccdd7755674ec87c31ca08270
175
+ - spec/fixtures/repo.git/objects/96/05a98eaf99f9c8436fc0d63d1f9c4e7c8074a1
176
+ - spec/fixtures/repo.git/objects/96/b3b1ccedd7e3d0c3d980a3f5efbd456e910f81
177
+ - spec/fixtures/repo.git/objects/99/cc50613b66753e8baff6678287b77484f65398
178
+ - spec/fixtures/repo.git/objects/a1/fbbf2cde5a3f75c66599c176618a0503e58280
179
+ - spec/fixtures/repo.git/objects/aa/6a10fb52f6c921da60255271efc54865d83108
180
+ - spec/fixtures/repo.git/objects/b1/6359980d096f665a6bdb22331b679fd34b8aee
181
+ - spec/fixtures/repo.git/objects/b3/f5006b546d890c65573bb5ceab100ce3c3b0d6
182
+ - spec/fixtures/repo.git/objects/c3/f573f9c7886117a28bb9f6f09452faec874d52
156
183
  - spec/fixtures/repo.git/objects/c4/01f49fe0172add6a09aec8a7808112ce5894dd
184
+ - spec/fixtures/repo.git/objects/c4/3c386d88340ba3214064669190de65e6094082
157
185
  - spec/fixtures/repo.git/objects/c9/3cd4edd7e0b6fd4c69e65fc7f25cbf06ac855c
186
+ - spec/fixtures/repo.git/objects/cb/fa06c2ca5c2b91d093b89886d873815820125d
187
+ - spec/fixtures/repo.git/objects/ce/460ddb64d2a317bb6f49eaf22ebe839e5d0839
158
188
  - spec/fixtures/repo.git/objects/e9/8d8a9be514ef53609a52c9e1b820dbcc8e6603
189
+ - spec/fixtures/repo.git/objects/ed/8af179853d173a838535a250c4500c0ccd8199
190
+ - spec/fixtures/repo.git/objects/f2/0051c2ebf04cbf6fe28f8620b7a3c3da2f2fd4
191
+ - spec/fixtures/repo.git/objects/f3/9ab5e17f1e98465df20fdf2d8f3a29af10d804
192
+ - spec/fixtures/repo.git/objects/f8/93c7f6939fc152ce65f4f4ade3e98e9c6ae9b4
159
193
  - spec/fixtures/repo.git/refs/heads/master
160
194
  - spec/fixtures/rspec/test_spec.rb
161
195
  - spec/fixtures/sleep_script
@@ -213,12 +247,46 @@ test_files:
213
247
  - spec/fixtures/repo.git/hooks/prepare-commit-msg.sample
214
248
  - spec/fixtures/repo.git/hooks/update.sample
215
249
  - spec/fixtures/repo.git/info/exclude
250
+ - spec/fixtures/repo.git/objects/04/962eeccc7db2ca321fae49c1870e8fc4d2d66e
251
+ - spec/fixtures/repo.git/objects/06/2228c22ba88855cad2d6a49548102eae064f83
252
+ - spec/fixtures/repo.git/objects/0c/0b9f8492bbf106aa0b3ab44f2b1f85201d7741
253
+ - spec/fixtures/repo.git/objects/0e/2d0627c994c622bec0e3bcc974d5e93333e16b
254
+ - spec/fixtures/repo.git/objects/13/1eb1a583f8c93ae161efc6a20f039534ffd1f2
255
+ - spec/fixtures/repo.git/objects/20/962c607e5717778217d53e1486a91cf37364c3
256
+ - spec/fixtures/repo.git/objects/24/b04991020e82630ef2ee1d880a6af3cbd4c895
257
+ - spec/fixtures/repo.git/objects/26/09e034ab986b1300462e5045e528e997e92388
258
+ - spec/fixtures/repo.git/objects/2a/c2f6560213aa67b0beb5f93752ba9bc5c17408
216
259
  - spec/fixtures/repo.git/objects/2d/762cdfd781dc4077c9f27a18969efbd186363c
260
+ - spec/fixtures/repo.git/objects/37/d57a5fc0e114e2ed5f93246e1faad4ffdc938f
261
+ - spec/fixtures/repo.git/objects/38/393aa12f6a61fb004d97cc758d57553677ef4c
217
262
  - spec/fixtures/repo.git/objects/3e/0c65433b241ff2c59220f80bcdcd2ebb7e4b96
263
+ - spec/fixtures/repo.git/objects/55/21b43c112e44d30c1c6e96a624ac2f7f106080
264
+ - spec/fixtures/repo.git/objects/5e/10fade9d87996aff68ab953e1b0990546f53a6
265
+ - spec/fixtures/repo.git/objects/65/70f379f41b941bb7c55bf3dfa748c38ceeac18
266
+ - spec/fixtures/repo.git/objects/67/51a12720df0cab2d2af8c5faa5d7a9de0592a2
267
+ - spec/fixtures/repo.git/objects/6d/360ec6efb36a1899d99ee6db7b5d6775f75553
268
+ - spec/fixtures/repo.git/objects/81/4d7440ff99aa974a16f62bf74a5e332848d38e
269
+ - spec/fixtures/repo.git/objects/8b/8bbf08cad20dddc169e6ba18f0a57dc199d780
270
+ - spec/fixtures/repo.git/objects/8e/ef70ef24a36aa57fbacc0d759e312f51332c3d
218
271
  - spec/fixtures/repo.git/objects/95/73fff3f9e2c38ccdd7755674ec87c31ca08270
272
+ - spec/fixtures/repo.git/objects/96/05a98eaf99f9c8436fc0d63d1f9c4e7c8074a1
273
+ - spec/fixtures/repo.git/objects/96/b3b1ccedd7e3d0c3d980a3f5efbd456e910f81
274
+ - spec/fixtures/repo.git/objects/99/cc50613b66753e8baff6678287b77484f65398
275
+ - spec/fixtures/repo.git/objects/a1/fbbf2cde5a3f75c66599c176618a0503e58280
276
+ - spec/fixtures/repo.git/objects/aa/6a10fb52f6c921da60255271efc54865d83108
277
+ - spec/fixtures/repo.git/objects/b1/6359980d096f665a6bdb22331b679fd34b8aee
278
+ - spec/fixtures/repo.git/objects/b3/f5006b546d890c65573bb5ceab100ce3c3b0d6
279
+ - spec/fixtures/repo.git/objects/c3/f573f9c7886117a28bb9f6f09452faec874d52
219
280
  - spec/fixtures/repo.git/objects/c4/01f49fe0172add6a09aec8a7808112ce5894dd
281
+ - spec/fixtures/repo.git/objects/c4/3c386d88340ba3214064669190de65e6094082
220
282
  - spec/fixtures/repo.git/objects/c9/3cd4edd7e0b6fd4c69e65fc7f25cbf06ac855c
283
+ - spec/fixtures/repo.git/objects/cb/fa06c2ca5c2b91d093b89886d873815820125d
284
+ - spec/fixtures/repo.git/objects/ce/460ddb64d2a317bb6f49eaf22ebe839e5d0839
221
285
  - spec/fixtures/repo.git/objects/e9/8d8a9be514ef53609a52c9e1b820dbcc8e6603
286
+ - spec/fixtures/repo.git/objects/ed/8af179853d173a838535a250c4500c0ccd8199
287
+ - spec/fixtures/repo.git/objects/f2/0051c2ebf04cbf6fe28f8620b7a3c3da2f2fd4
288
+ - spec/fixtures/repo.git/objects/f3/9ab5e17f1e98465df20fdf2d8f3a29af10d804
289
+ - spec/fixtures/repo.git/objects/f8/93c7f6939fc152ce65f4f4ade3e98e9c6ae9b4
222
290
  - spec/fixtures/repo.git/refs/heads/master
223
291
  - spec/fixtures/rspec/test_spec.rb
224
292
  - spec/fixtures/sleep_script