bixby_common 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/test_guard.rb ADDED
@@ -0,0 +1,179 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # test_guard.rb
4
+ # Chetan Sarva <chetan@pixelcop.net>
5
+ #
6
+ # USAGE
7
+ #
8
+ # Copy test_guard.rb to project directory
9
+ # ./test_guard.rb [dir2 ...]
10
+ #
11
+ # By default, only the directory in which test_guard.rb resides is watched.
12
+ #
13
+ # To watch other projects as well, give their path on the command line.
14
+ # This is useful for retesting when a dependent gem is modified, for instance.
15
+ #
16
+ #
17
+ # REQUIREMENTS
18
+ #
19
+ # Growl for notifications - http://growl.info/
20
+ #
21
+ # Gems:
22
+ # gem install guard growl simplecov hirb colorize
23
+
24
+ require 'rubygems'
25
+ require 'guard'
26
+ require 'growl'
27
+ require 'simplecov'
28
+ require 'hirb'
29
+ require 'colorize'
30
+
31
+ ROOT = File.expand_path(File.dirname(__FILE__))
32
+ PROJECT = File.basename(ROOT)
33
+ Dir.chdir(ROOT)
34
+
35
+ def growl(msg)
36
+ Growl.notify msg, :title => "test_guard: #{PROJECT}", :sticky => true
37
+ end
38
+
39
+ class Watcher
40
+
41
+ def initialize(path = nil)
42
+ @path = path
43
+ end
44
+
45
+ def run_bundle
46
+ puts "-"
47
+ puts "running: bundle update"
48
+ puts "-" * 80
49
+ puts
50
+ system("bundle update")
51
+ if not $?.success? then
52
+ growl("bundle update failed!")
53
+ end
54
+ run_test()
55
+ end
56
+
57
+ def run_test
58
+ puts "-"
59
+ puts "running: rake test"
60
+ puts "-" * 80
61
+ puts
62
+ system("rake test")
63
+ if not $?.success? then
64
+ growl("rake test failed!")
65
+ end
66
+ show_coverage()
67
+ end
68
+
69
+ def show_coverage()
70
+ result = SimpleCov.result
71
+ puts
72
+ puts "COVERAGE: #{colorize(pct(result))} -- #{result.covered_lines}/#{result.total_lines} lines"
73
+ puts
74
+
75
+ files = result.files.sort{ |a,b| a.covered_percent <=> b.covered_percent }
76
+
77
+ table = files.map{ |f| { :file => f.filename.gsub(ROOT + "/", ''), :coverage => pct(f) } }
78
+
79
+ if table.size > 15 then
80
+ table = table.slice(0, 15)
81
+ end
82
+
83
+ s = Hirb::Helpers::Table.render(table).split(/\n/)
84
+ s.pop
85
+ puts s.join("\n").gsub(/\d+\.\d+%/) { |m| colorize(m) }
86
+
87
+ puts
88
+ puts "URL: file://#{ROOT}/coverage/index.html"
89
+ end
90
+
91
+ def pct(obj)
92
+ sprintf("%6.2f%%", obj.covered_percent)
93
+ end
94
+
95
+ def colorize(s)
96
+ s =~ /([\d.]+)/
97
+ n = $1.to_f
98
+ if n >= 90 then
99
+ s.colorize(:green)
100
+ elsif n >= 80 then
101
+ s.colorize(:yellow)
102
+ else
103
+ s.colorize(:red)
104
+ end
105
+ end
106
+
107
+ def on_change(files)
108
+ b = t = false
109
+ changes = []
110
+ files.each do |f|
111
+
112
+ if f == "Gemfile" then # ignore .lock
113
+ b = true
114
+ elsif f =~ %r{^test/} then
115
+ if ROOT == @path then
116
+ # run if any tests for *this* project change
117
+ t = true
118
+ end
119
+ elsif f =~ /\.rb$/ then
120
+ t = true
121
+ end
122
+
123
+ if b or t then
124
+ changes << f
125
+ end
126
+
127
+ end
128
+
129
+ if not changes.empty? then
130
+ system("clear")
131
+ puts
132
+ changes.each { |f| puts "changed file: #{f}" }
133
+ end
134
+
135
+ sleep 1 # wait for changes to flush to disk??
136
+
137
+ if b then
138
+ run_bundle()
139
+ elsif t then
140
+ run_test()
141
+ end
142
+ end
143
+
144
+ end # class Watcher
145
+
146
+ dirs = [ ROOT ]
147
+ ARGV.each do |d|
148
+ if File.directory? d then
149
+ dirs << File.expand_path(d)
150
+ end
151
+ end
152
+
153
+ system("clear")
154
+ Watcher.new.run_test()
155
+
156
+ threads = []
157
+ listeners = []
158
+
159
+ dirs.each do |dir|
160
+ watcher = Watcher.new(dir)
161
+ listener = Listen.to(dir) do |mod, add, del|
162
+ files = mod + add + del
163
+ watcher.on_change(files)
164
+ end
165
+ listeners << listener
166
+ threads << Thread.new do
167
+ listener.start
168
+ end
169
+ end
170
+
171
+ begin
172
+ threads.each do |t|
173
+ t.join()
174
+ end
175
+ rescue Exception => ex
176
+ end
177
+
178
+ puts
179
+ puts "bye!"
metadata ADDED
@@ -0,0 +1,267 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bixby_common
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Chetan Sarva
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: multi_json
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: oj
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: curb
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: systemu
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: yard
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: '0.8'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '0.8'
94
+ - !ruby/object:Gem::Dependency
95
+ name: bundler
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: '1.1'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: '1.1'
110
+ - !ruby/object:Gem::Dependency
111
+ name: jeweler
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 1.8.3
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 1.8.3
126
+ - !ruby/object:Gem::Dependency
127
+ name: simplecov
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: rcov
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: minitest
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: test-unit
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: turn
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ description: Bixby Common files/libs
207
+ email: chetan@pixelcop.net
208
+ executables: []
209
+ extensions: []
210
+ extra_rdoc_files: []
211
+ files:
212
+ - .document
213
+ - Gemfile
214
+ - Gemfile.lock
215
+ - Rakefile
216
+ - VERSION
217
+ - bixby_common.gemspec
218
+ - lib/bixby_common.rb
219
+ - lib/bixby_common/api/base_module.rb
220
+ - lib/bixby_common/api/bundle_repository.rb
221
+ - lib/bixby_common/api/json_request.rb
222
+ - lib/bixby_common/api/json_response.rb
223
+ - lib/bixby_common/command_response.rb
224
+ - lib/bixby_common/command_spec.rb
225
+ - lib/bixby_common/exception/bundle_not_found.rb
226
+ - lib/bixby_common/exception/command_not_found.rb
227
+ - lib/bixby_common/util/crypto_util.rb
228
+ - lib/bixby_common/util/hashify.rb
229
+ - lib/bixby_common/util/http_client.rb
230
+ - lib/bixby_common/util/jsonify.rb
231
+ - test/helper.rb
232
+ - test/support/test_bundle/bin/cat
233
+ - test/support/test_bundle/bin/echo
234
+ - test/support/test_bundle/digest
235
+ - test/support/test_bundle/manifest.json
236
+ - test/test_bixby_common.rb
237
+ - test/test_command_spec.rb
238
+ - test/test_jsonify.rb
239
+ - test_guard.rb
240
+ homepage: http://github.com/chetan/devops_common
241
+ licenses: []
242
+ post_install_message:
243
+ rdoc_options: []
244
+ require_paths:
245
+ - lib
246
+ required_ruby_version: !ruby/object:Gem::Requirement
247
+ none: false
248
+ requirements:
249
+ - - ! '>='
250
+ - !ruby/object:Gem::Version
251
+ version: '0'
252
+ segments:
253
+ - 0
254
+ hash: 2725489149667721525
255
+ required_rubygems_version: !ruby/object:Gem::Requirement
256
+ none: false
257
+ requirements:
258
+ - - ! '>='
259
+ - !ruby/object:Gem::Version
260
+ version: '0'
261
+ requirements: []
262
+ rubyforge_project:
263
+ rubygems_version: 1.8.24
264
+ signing_key:
265
+ specification_version: 3
266
+ summary: Bixby Common
267
+ test_files: []