bait 0.5.2 → 0.5.4
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +7 -2
- data/Rakefile +15 -14
- data/VERSION +1 -1
- data/app/js/build.coffee +9 -0
- data/app/js/main.coffee +4 -0
- data/app/js/manual_clone.coffee +1 -1
- data/bin/bait +1 -1
- data/lib/bait/api.rb +17 -2
- data/lib/bait/build.rb +4 -1
- data/lib/bait/cli.rb +4 -1
- data/lib/bait/public/js/application.js +20 -2
- data/lib/bait/simplecov_support.rb +30 -0
- data/spec/lib/bait/{app/api_spec.rb → api_spec.rb} +14 -0
- data/spec/lib/bait/build_spec.rb +30 -0
- data/spec/lib/bait/tester_spec.rb +7 -6
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 58891295fc38209a37141334e62a3a03561bcffc
|
|
4
|
+
data.tar.gz: 0aefe33c5cd7c7f2cbb9a3231a8258e196352f53
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1127e37a377f460b70fcdccec3a8b6491b6636b5cddfa6479475ea622ecda0f77623679572f23fc167927a90ab0841f040864106f37eb9a9409e62d73d3ef9ad
|
|
7
|
+
data.tar.gz: 5b544f86eca0307b17b5fb6e9547eea4659c9fc5e57ec8f76e14867bbcf9f673dda983321bf6eb7bfad91b7aa8e9f0febe4d4ace33015132637a077d096ed764
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -118,11 +118,16 @@ bait_dir=$(dirname $0)
|
|
|
118
118
|
project_dir="$bait_dir/.."
|
|
119
119
|
cd $project_dir
|
|
120
120
|
|
|
121
|
-
export BUNDLE_GEMFILE
|
|
121
|
+
export BUNDLE_GEMFILE=./Gemfile
|
|
122
122
|
|
|
123
123
|
echo "bundling"
|
|
124
124
|
bundle install > /dev/null 2>&1
|
|
125
|
-
|
|
125
|
+
|
|
126
|
+
# The following will create screenshots and html report in report/
|
|
127
|
+
# It will also output to the console as usual for display in bait
|
|
128
|
+
SCREENSHOT_PATH=./report/ cucumber --format 'Calabash::Formatters::Html' \
|
|
129
|
+
--out report/index.html \
|
|
130
|
+
--format pretty --
|
|
126
131
|
```
|
|
127
132
|
|
|
128
133
|
#### Other Projects
|
data/Rakefile
CHANGED
|
@@ -38,23 +38,24 @@ def git_dirty?
|
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
namespace :gem do
|
|
41
|
-
task :build
|
|
41
|
+
task :build do
|
|
42
42
|
`bundle install`
|
|
43
|
-
if
|
|
44
|
-
puts "
|
|
43
|
+
if !git_master?
|
|
44
|
+
puts "I'll only build the gem on the master branch"
|
|
45
45
|
else
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
puts "Specs pass. you're ready"
|
|
51
|
-
puts `gem build bait.gemspec`
|
|
52
|
-
puts "Done! You can gem push that now"
|
|
53
|
-
else
|
|
54
|
-
puts "Uhh.. you have failing specs -- not building the gem"
|
|
55
|
-
end
|
|
46
|
+
puts "On master branch"
|
|
47
|
+
`rspec spec`
|
|
48
|
+
if $?.exitstatus != 0
|
|
49
|
+
puts "Uhh.. you have failing specs -- not building the gem"
|
|
56
50
|
else
|
|
57
|
-
puts "
|
|
51
|
+
puts "Specs pass. you're ready"
|
|
52
|
+
Rake::Task['assets:precompile'].invoke
|
|
53
|
+
if git_dirty?
|
|
54
|
+
puts "Dirty working tree! Commit first before building!"
|
|
55
|
+
exit
|
|
56
|
+
end
|
|
57
|
+
puts `gem build bait.gemspec`
|
|
58
|
+
puts "Done! You can gem push that now"
|
|
58
59
|
end
|
|
59
60
|
end
|
|
60
61
|
end
|
data/VERSION
CHANGED
data/app/js/build.coffee
CHANGED
|
@@ -47,6 +47,12 @@ window.Build =
|
|
|
47
47
|
$('ul#builds').append html
|
|
48
48
|
Build.DOM.init build.id
|
|
49
49
|
|
|
50
|
+
SimpleCov:
|
|
51
|
+
url: (id) ->
|
|
52
|
+
"/build/#{id}/coverage/index.html"
|
|
53
|
+
text: (truthy) ->
|
|
54
|
+
if truthy then "Coverage" else ""
|
|
55
|
+
|
|
50
56
|
to_html: (build) ->
|
|
51
57
|
"""
|
|
52
58
|
<li id="#{build.id}" class="build">
|
|
@@ -54,6 +60,9 @@ window.Build =
|
|
|
54
60
|
<div class="status">#{build.status}</div>
|
|
55
61
|
<a href="#{build.clone_url}">#{build.name}</a>
|
|
56
62
|
<div class="ref">#{build.ref?=''}</div>
|
|
63
|
+
<a href="#{Build.SimpleCov.url(build.id)}"
|
|
64
|
+
class="simplecov">
|
|
65
|
+
#{Build.SimpleCov.text(build.simplecov)}</a>
|
|
57
66
|
</div>
|
|
58
67
|
<div class="output">
|
|
59
68
|
<pre>#{build.output}</pre>
|
data/app/js/main.coffee
CHANGED
|
@@ -20,3 +20,7 @@ Zepto ($) ->
|
|
|
20
20
|
header.attr "class", "header #{text}"
|
|
21
21
|
remove: (id) ->
|
|
22
22
|
Build.find(id).remove()
|
|
23
|
+
simplecov: (id, supported) ->
|
|
24
|
+
link = Build.find(id).find('.simplecov')
|
|
25
|
+
link.attr 'href', Build.SimpleCov.url(id)
|
|
26
|
+
link.text Build.SimpleCov.text(supported)
|
data/app/js/manual_clone.coffee
CHANGED
|
@@ -9,7 +9,7 @@ window.ManualClone =
|
|
|
9
9
|
if not button.attr('disabled')
|
|
10
10
|
button.attr('disabled', 'disabled')
|
|
11
11
|
$.post '/build/create', {clone_url: input}, (response) ->
|
|
12
|
-
|
|
12
|
+
field.val('')
|
|
13
13
|
button.removeAttr('disabled')
|
|
14
14
|
else
|
|
15
15
|
alert "Enter a local path or remote url to a git repo, e.g.:\n
|
data/bin/bait
CHANGED
data/lib/bait/api.rb
CHANGED
|
@@ -6,9 +6,15 @@ require 'json'
|
|
|
6
6
|
require 'bait/pubsub'
|
|
7
7
|
require 'bait/build'
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
require 'sinatra/asset_snack'
|
|
9
|
+
if Bait.env != "production"
|
|
10
|
+
require 'sinatra/asset_snack'
|
|
11
11
|
DYNAMIC_ASSETS = true
|
|
12
|
+
require 'fileutils'
|
|
13
|
+
public = File.join File.dirname(__FILE__), %w(public)
|
|
14
|
+
[%w(js application.js), %w(css application.css)].each do |i|
|
|
15
|
+
path = File.join(public, i)
|
|
16
|
+
FileUtils.rm(path) if File.exists?(path)
|
|
17
|
+
end
|
|
12
18
|
end
|
|
13
19
|
|
|
14
20
|
module Bait
|
|
@@ -72,5 +78,14 @@ module Bait
|
|
|
72
78
|
end
|
|
73
79
|
end
|
|
74
80
|
end
|
|
81
|
+
|
|
82
|
+
##
|
|
83
|
+
# SimpleCov Passthrough
|
|
84
|
+
get '/build/:id/coverage/*' do
|
|
85
|
+
build = Build.find params[:id]
|
|
86
|
+
if build.simplecov
|
|
87
|
+
send_file File.join(build.coverage_dir, params[:splat])
|
|
88
|
+
end
|
|
89
|
+
end
|
|
75
90
|
end
|
|
76
91
|
end
|
data/lib/bait/build.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require 'bait/object'
|
|
2
2
|
require 'bait/tester'
|
|
3
3
|
require 'bait/build_helper'
|
|
4
|
+
require 'bait/simplecov_support'
|
|
4
5
|
require 'bait/pubsub'
|
|
5
6
|
require 'bait/phase'
|
|
6
7
|
require 'json'
|
|
@@ -8,10 +9,12 @@ require 'json'
|
|
|
8
9
|
module Bait
|
|
9
10
|
class Build < Bait::Object
|
|
10
11
|
include Bait::BuildHelper
|
|
12
|
+
include Bait::SimpleCovSupport
|
|
11
13
|
|
|
12
14
|
adapter :memory,
|
|
13
15
|
Moneta.new(:YAML, :file => Bait.db_file('builds'))
|
|
14
16
|
|
|
17
|
+
attribute :simplecov, Boolean, default: false
|
|
15
18
|
attribute :ref, String
|
|
16
19
|
attribute :owner_name, String
|
|
17
20
|
attribute :owner_email, String
|
|
@@ -60,7 +63,7 @@ module Bait
|
|
|
60
63
|
end
|
|
61
64
|
self.save
|
|
62
65
|
self.broadcast(:status, self.status)
|
|
63
|
-
|
|
66
|
+
check_for_simplecov
|
|
64
67
|
end.run!
|
|
65
68
|
end
|
|
66
69
|
|
data/lib/bait/cli.rb
CHANGED
|
@@ -81,8 +81,20 @@
|
|
|
81
81
|
return Build.DOM.init(build.id);
|
|
82
82
|
}
|
|
83
83
|
},
|
|
84
|
+
SimpleCov: {
|
|
85
|
+
url: function(id) {
|
|
86
|
+
return "/build/" + id + "/coverage/index.html";
|
|
87
|
+
},
|
|
88
|
+
text: function(truthy) {
|
|
89
|
+
if (truthy) {
|
|
90
|
+
return "Coverage";
|
|
91
|
+
} else {
|
|
92
|
+
return "";
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
84
96
|
to_html: function(build) {
|
|
85
|
-
return "<li id=\"" + build.id + "\" class=\"build\">\n <div class=\"header " + build.status + "\">\n <div class=\"status\">" + build.status + "</div>\n <a href=\"" + build.clone_url + "\">" + build.name + "</a>\n <div class=\"ref\">" + (build.ref != null ? build.ref : build.ref = '') + "</div>\n </div>\n <div class=\"output\">\n <pre>" + build.output + "</pre>\n </div>\n <div class=\"actions\">\n <a href=\"#\" class=\"remove\" data-url=\"/build/" + build.id + "\">Remove</a>\n |\n <a href=\"#\" class=\"retest\" data-url=\"/build/" + build.id + "/retest\">Retest</a>\n </div>\n</li>";
|
|
97
|
+
return "<li id=\"" + build.id + "\" class=\"build\">\n <div class=\"header " + build.status + "\">\n <div class=\"status\">" + build.status + "</div>\n <a href=\"" + build.clone_url + "\">" + build.name + "</a>\n <div class=\"ref\">" + (build.ref != null ? build.ref : build.ref = '') + "</div>\n <a href=\"" + (Build.SimpleCov.url(build.id)) + "\"\n class=\"simplecov\">\n " + (Build.SimpleCov.text(build.simplecov)) + "</a>\n </div>\n <div class=\"output\">\n <pre>" + build.output + "</pre>\n </div>\n <div class=\"actions\">\n <a href=\"#\" class=\"remove\" data-url=\"/build/" + build.id + "\">Remove</a>\n |\n <a href=\"#\" class=\"retest\" data-url=\"/build/" + build.id + "/retest\">Retest</a>\n </div>\n</li>";
|
|
86
98
|
}
|
|
87
99
|
};
|
|
88
100
|
|
|
@@ -120,6 +132,12 @@
|
|
|
120
132
|
},
|
|
121
133
|
remove: function(id) {
|
|
122
134
|
return Build.find(id).remove();
|
|
135
|
+
},
|
|
136
|
+
simplecov: function(id, supported) {
|
|
137
|
+
var link;
|
|
138
|
+
link = Build.find(id).find('.simplecov');
|
|
139
|
+
link.attr('href', Build.SimpleCov.url(id));
|
|
140
|
+
return link.text(Build.SimpleCov.text(supported));
|
|
123
141
|
}
|
|
124
142
|
}
|
|
125
143
|
});
|
|
@@ -146,7 +164,7 @@
|
|
|
146
164
|
return $.post('/build/create', {
|
|
147
165
|
clone_url: input
|
|
148
166
|
}, function(response) {
|
|
149
|
-
|
|
167
|
+
field.val('');
|
|
150
168
|
return button.removeAttr('disabled');
|
|
151
169
|
});
|
|
152
170
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Bait
|
|
2
|
+
module SimpleCovSupport
|
|
3
|
+
def coverage_dir
|
|
4
|
+
File.join(clone_path, 'coverage')
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def simplecov_html_path
|
|
8
|
+
File.join(coverage_dir, "index.html")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def check_for_simplecov
|
|
12
|
+
if File.exists? simplecov_html_path
|
|
13
|
+
self.simplecov = true
|
|
14
|
+
convert_paths
|
|
15
|
+
self.broadcast :simplecov, 'supported'
|
|
16
|
+
self.save
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def convert_paths
|
|
21
|
+
buffer = ""
|
|
22
|
+
File.open(simplecov_html_path, "r") do |file|
|
|
23
|
+
buffer = file.read.gsub("./assets", "/build/#{self.id}/coverage/assets")
|
|
24
|
+
end
|
|
25
|
+
File.open(simplecov_html_path, "w") do |file|
|
|
26
|
+
file.write buffer
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -134,4 +134,18 @@ describe Bait::Api do
|
|
|
134
134
|
last_response.content_type.should match(/text\/event-stream/)
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
|
+
|
|
138
|
+
describe "GET /build/:id/coverage/index.html" do
|
|
139
|
+
before do
|
|
140
|
+
@build = Bait::Build.create(name: "quickfox", clone_url:'...')
|
|
141
|
+
FileUtils.mkdir_p File.dirname @build.simplecov_html_path
|
|
142
|
+
File.open(@build.simplecov_html_path, "w") {|f| f.puts "test string" }
|
|
143
|
+
@build.simplecov = true
|
|
144
|
+
@build.save
|
|
145
|
+
get "/build/#{@build.id}/coverage/index.html"
|
|
146
|
+
end
|
|
147
|
+
it "renders the file" do
|
|
148
|
+
last_response.body.strip.should eq "test string"
|
|
149
|
+
end
|
|
150
|
+
end
|
|
137
151
|
end
|
data/spec/lib/bait/build_spec.rb
CHANGED
|
@@ -103,4 +103,34 @@ describe Bait::Build do
|
|
|
103
103
|
Dir.exists?(build.sandbox_directory).should be_false
|
|
104
104
|
end
|
|
105
105
|
end
|
|
106
|
+
|
|
107
|
+
describe "simplecov support" do
|
|
108
|
+
context 'has simplecov files' do
|
|
109
|
+
before do
|
|
110
|
+
FileUtils.mkdir_p File.dirname build.simplecov_html_path
|
|
111
|
+
FileUtils.touch build.simplecov_html_path
|
|
112
|
+
end
|
|
113
|
+
it "sends an event that it discovered simplecov" do
|
|
114
|
+
Bait.should_receive(:broadcast).with(:build, :simplecov, build.id, 'supported')
|
|
115
|
+
build.check_for_simplecov
|
|
116
|
+
end
|
|
117
|
+
it "sets the simplecov flag to true" do
|
|
118
|
+
build.reload.simplecov.should be_false
|
|
119
|
+
build.check_for_simplecov
|
|
120
|
+
build.reload.simplecov.should be_true
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
context 'has no simplecov files' do
|
|
125
|
+
before { build }
|
|
126
|
+
it "does not broadcast a simplecov supported message" do
|
|
127
|
+
Bait.should_not_receive(:broadcast).with(:build, :simplecov, build.id, 'supported')
|
|
128
|
+
build.check_for_simplecov
|
|
129
|
+
end
|
|
130
|
+
it "does not set the simplecov flag to true" do
|
|
131
|
+
build.check_for_simplecov
|
|
132
|
+
build.reload.simplecov.should be_false
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
106
136
|
end
|
|
@@ -6,12 +6,6 @@ describe Bait::Tester do
|
|
|
6
6
|
let(:tester) { Bait::Tester.new }
|
|
7
7
|
|
|
8
8
|
describe "#perform" do
|
|
9
|
-
shared_examples_for "a test run" do
|
|
10
|
-
it "saves output into the build" do
|
|
11
|
-
build.reload.output.should match "this is a test script"
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
9
|
subject { build.reload }
|
|
16
10
|
before { build.clone! }
|
|
17
11
|
|
|
@@ -45,6 +39,13 @@ describe Bait::Tester do
|
|
|
45
39
|
write_script_with_status build.script('test'), status
|
|
46
40
|
tester.perform build.id
|
|
47
41
|
end
|
|
42
|
+
|
|
43
|
+
shared_examples_for "a test run" do
|
|
44
|
+
it "saves output into the build" do
|
|
45
|
+
build.reload.output.should match "this is a test script"
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
48
49
|
context "successful" do
|
|
49
50
|
let(:status) { 0 }
|
|
50
51
|
it { should be_passed }
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bait
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Keyvan Fatehi
|
|
@@ -274,12 +274,13 @@ files:
|
|
|
274
274
|
- lib/bait/public/js/zepto.min.js
|
|
275
275
|
- lib/bait/pubsub.rb
|
|
276
276
|
- lib/bait/simple_query.rb
|
|
277
|
+
- lib/bait/simplecov_support.rb
|
|
277
278
|
- lib/bait/tester.rb
|
|
278
279
|
- lib/bait/version.rb
|
|
279
280
|
- lib/bait/views/builds.haml
|
|
280
281
|
- lib/bait/views/layout.haml
|
|
281
282
|
- spec/lib/bait/analyzer_spec.rb
|
|
282
|
-
- spec/lib/bait/
|
|
283
|
+
- spec/lib/bait/api_spec.rb
|
|
283
284
|
- spec/lib/bait/build_spec.rb
|
|
284
285
|
- spec/lib/bait/pubsub_spec.rb
|
|
285
286
|
- spec/lib/bait/tester_spec.rb
|
|
@@ -312,7 +313,7 @@ specification_version: 4
|
|
|
312
313
|
summary: build and integration test service
|
|
313
314
|
test_files:
|
|
314
315
|
- spec/lib/bait/analyzer_spec.rb
|
|
315
|
-
- spec/lib/bait/
|
|
316
|
+
- spec/lib/bait/api_spec.rb
|
|
316
317
|
- spec/lib/bait/build_spec.rb
|
|
317
318
|
- spec/lib/bait/pubsub_spec.rb
|
|
318
319
|
- spec/lib/bait/tester_spec.rb
|