hoptoad_notifier 2.4.9 → 2.4.10

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -158,6 +158,7 @@ RAILS_VERSIONS = IO.read('SUPPORTED_RAILS_VERSIONS').strip.split("\n")
158
158
  LOCAL_GEMS = [['sham_rack', nil], ['capistrano', nil], ['sqlite3-ruby', nil], ['sinatra', nil]] +
159
159
  RAILS_VERSIONS.collect { |version| ['rails', version] }
160
160
 
161
+ desc "Vendor test gems: Run this once to prepare your test environment"
161
162
  task :vendor_test_gems do
162
163
  old_gem_path = ENV['GEM_PATH']
163
164
  old_gem_home = ENV['GEM_HOME']
@@ -8,3 +8,5 @@
8
8
  3.0.1
9
9
  3.0.2
10
10
  3.0.3
11
+ 3.0.4
12
+ 3.0.5
@@ -5,7 +5,8 @@ module HoptoadNotifier
5
5
  # Handles backtrace parsing line by line
6
6
  class Line
7
7
 
8
- INPUT_FORMAT = %r{^([^:]+):(\d+)(?::in `([^']+)')?$}.freeze
8
+ # regexp (optionnally allowing leading X: for windows support)
9
+ INPUT_FORMAT = %r{^((?:[a-zA-Z]:)?[^:]+):(\d+)(?::in `([^']+)')?$}.freeze
9
10
 
10
11
  # The file portion of the line (such as app/models/user.rb)
11
12
  attr_reader :file
@@ -9,8 +9,9 @@ Capistrano::Configuration.instance(:must_exist).load do
9
9
  task :notify_hoptoad, :except => { :no_release => true } do
10
10
  rails_env = fetch(:hoptoad_env, fetch(:rails_env, "production"))
11
11
  local_user = ENV['USER'] || ENV['USERNAME']
12
- executable = RUBY_PLATFORM.downcase.include?('mswin') ? 'rake.bat' : 'rake'
12
+ executable = RUBY_PLATFORM.downcase.include?('mswin') ? fetch(:rake, 'rake.bat') : fetch(:rake, 'rake')
13
13
  notify_command = "#{executable} hoptoad:deploy TO=#{rails_env} REVISION=#{current_revision} REPO=#{repository} USER=#{local_user}"
14
+ notify_command << " DRY_RUN=true" if dry_run
14
15
  notify_command << " API_KEY=#{ENV['API_KEY']}" if ENV['API_KEY']
15
16
  puts "Notifying Hoptoad of Deploy (#{notify_command})"
16
17
  `#{notify_command}`
@@ -6,7 +6,8 @@ namespace :hoptoad do
6
6
  :scm_revision => ENV['REVISION'],
7
7
  :scm_repository => ENV['REPO'],
8
8
  :local_username => ENV['USER'],
9
- :api_key => ENV['API_KEY'])
9
+ :api_key => ENV['API_KEY'],
10
+ :dry_run => ENV['DRY_RUN'])
10
11
  end
11
12
 
12
13
  task :log_stdout do
@@ -8,7 +8,7 @@ namespace :hoptoad do
8
8
 
9
9
  require 'action_controller/test_process'
10
10
 
11
- Dir["app/controllers/application*.rb"].each { |file| require(file) }
11
+ Dir["app/controllers/application*.rb"].each { |file| require(File.expand_path(file)) }
12
12
 
13
13
  class HoptoadTestingException < RuntimeError; end
14
14
 
@@ -63,9 +63,9 @@ namespace :hoptoad do
63
63
 
64
64
  def exception_class
65
65
  exception_name = ENV['EXCEPTION'] || "HoptoadTestingException"
66
- Object.const_get(exception_name)
66
+ exception_name.split("::").inject(Object){|klass, name| klass.const_get(name)}
67
67
  rescue
68
- Object.const_set(exception_name, Class.new(Exception))
68
+ Object.const_set(exception_name.gsub(/:+/, "_"), Class.new(Exception))
69
69
  end
70
70
 
71
71
  def logger
@@ -24,6 +24,7 @@ module HoptoadTasks
24
24
  return false
25
25
  end
26
26
 
27
+ dry_run = opts.delete(:dry_run)
27
28
  params = {'api_key' => opts.delete(:api_key) ||
28
29
  HoptoadNotifier.configuration.api_key}
29
30
  opts.each {|k,v| params["deploy[#{k}]"] = v }
@@ -35,10 +36,15 @@ module HoptoadTasks
35
36
  HoptoadNotifier.configuration.proxy_user,
36
37
  HoptoadNotifier.configuration.proxy_pass)
37
38
 
38
- response = proxy.post_form(url, params)
39
+ if dry_run
40
+ puts url, params.inspect
41
+ return true
42
+ else
43
+ response = proxy.post_form(url, params)
39
44
 
40
- puts response.body
41
- return Net::HTTPSuccess === response
45
+ puts response.body
46
+ return Net::HTTPSuccess === response
47
+ end
42
48
  end
43
49
  end
44
50
 
@@ -20,6 +20,25 @@ class BacktraceTest < Test::Unit::TestCase
20
20
  assert_equal 'app/controllers/users_controller.rb', line.file
21
21
  assert_equal 'index', line.method
22
22
  end
23
+
24
+ should "parse a windows backtrace into lines" do
25
+ array = [
26
+ "C:/Program Files/Server/app/models/user.rb:13:in `magic'",
27
+ "C:/Program Files/Server/app/controllers/users_controller.rb:8:in `index'"
28
+ ]
29
+
30
+ backtrace = HoptoadNotifier::Backtrace.parse(array)
31
+
32
+ line = backtrace.lines.first
33
+ assert_equal '13', line.number
34
+ assert_equal 'C:/Program Files/Server/app/models/user.rb', line.file
35
+ assert_equal 'magic', line.method
36
+
37
+ line = backtrace.lines.last
38
+ assert_equal '8', line.number
39
+ assert_equal 'C:/Program Files/Server/app/controllers/users_controller.rb', line.file
40
+ assert_equal 'index', line.method
41
+ end
23
42
 
24
43
  should "be equal with equal lines" do
25
44
  one = build_backtrace_array
@@ -12,6 +12,7 @@ gem "sham_rack", "~> 1.3.0"
12
12
  $LOAD_PATH << File.join(File.dirname(__FILE__), *%w[.. vendor ginger lib])
13
13
  $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
14
14
 
15
+ require 'thread'
15
16
  require 'shoulda'
16
17
  require 'mocha'
17
18
 
@@ -49,7 +49,18 @@ class HoptoadTasksTest < Test::Unit::TestCase
49
49
  HoptoadNotifier.configuration.proxy_pass).
50
50
  returns(@http_proxy)
51
51
 
52
- @options = { :rails_env => "staging" }
52
+ @options = { :rails_env => "staging", :dry_run => false }
53
+ end
54
+
55
+ context "performing a dry run" do
56
+ setup { @output = HoptoadTasks.deploy(@options.merge(:dry_run => true)) }
57
+
58
+ should "return true without performing any actual request" do
59
+ assert_equal true, @output
60
+ assert_received(@http_proxy, :post_form) do|expects|
61
+ expects.never
62
+ end
63
+ end
53
64
  end
54
65
 
55
66
  context "on deploy(options)" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hoptoad_notifier
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
5
- prerelease: false
4
+ hash: 11
5
+ prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 4
9
- - 9
10
- version: 2.4.9
9
+ - 10
10
+ version: 2.4.10
11
11
  platform: ruby
12
12
  authors:
13
13
  - thoughtbot, inc
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-30 00:00:00 -04:00
19
- default_executable:
18
+ date: 2011-05-03 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: builder
@@ -177,7 +176,6 @@ files:
177
176
  - script/integration_test.rb
178
177
  - lib/templates/javascript_notifier.erb
179
178
  - lib/templates/rescue.erb
180
- has_rdoc: true
181
179
  homepage: http://www.hoptoadapp.com
182
180
  licenses: []
183
181
 
@@ -207,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
205
  requirements: []
208
206
 
209
207
  rubyforge_project:
210
- rubygems_version: 1.3.7
208
+ rubygems_version: 1.7.2
211
209
  signing_key:
212
210
  specification_version: 3
213
211
  summary: Send your application errors to our hosted service and reclaim your inbox.