bixby_common 0.2.0

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.
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: []