byebug 2.4.1 → 2.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0bec3df9fc698c06f9cc590dfc1cee78c06dcd60
4
- data.tar.gz: e2820f9c26e45ccfe224bf1a66d624ad7af35739
3
+ metadata.gz: 8dee4a41cee3ad39319608f90aa34ca73e6b3578
4
+ data.tar.gz: e2434363c37285a549aaabbd236dd7c832f460e8
5
5
  SHA512:
6
- metadata.gz: e0cbb0c1c04e3b1f6f7d93d58f50a4a204500758ae10ea1f7a1195c4df0a8c6c94d90d49ddb0fb10e6af9d471cfb45b3a4021a32f5414790e4d28ce28afe9cad
7
- data.tar.gz: 22e2c0becb1374751dc371ecd72bc1f25eaf36c33457090af0ffb7b00ba66dafa66ce2206c91cdad3eb786a2c0e24eed1256473ca6599bb2095ffb373e071b94
6
+ metadata.gz: f2967314e28007dc029dca83fff42fad6b494483a4e14ebc6ffa4aa2f3b2433797cc113fb1f575db2cb52b7f14656dd047fef1f07550f3e772a68ffc2eb7da99
7
+ data.tar.gz: f8c59999bfc524f43d8b925a092f7a26831b173b85d4c1d3ab80448be02bbb95707bc9ec7e82b1cba63851c089c7fd61e9a4224c9a92c4b469a263e21f10e81d
@@ -1,3 +1,8 @@
1
+ # 2.5.0
2
+
3
+ * Support for `sublime-debugger`
4
+
5
+
1
6
  # 2.4.1
2
7
 
3
8
  * Fix installation error in Mac OSX (#40), thanks @luislavena
data/README.md CHANGED
@@ -126,6 +126,8 @@ started. Proper documentation will be eventually written.
126
126
  adds a rake task that restarts Passenger with byebug connected.
127
127
  * [minitest-byebug](https://github.com/kaspth/minitest-byebug) starts a byebug
128
128
  session on minitest failures.
129
+ * [sublime-debugger](https://github.com/shuky19/sublime_debugger) provides a plugin
130
+ for ruby debugging on Sublime Text.
129
131
 
130
132
 
131
133
  ## Future (possible) directions
@@ -63,4 +63,28 @@ module Byebug
63
63
  end
64
64
  end
65
65
 
66
+ class InterruptCommand < Command
67
+ self.allow_in_control = true
68
+ self.allow_in_post_mortem = false
69
+ self.need_context = true
70
+
71
+ def regexp
72
+ /^\s*i(?:nterrupt)?\s*$/
73
+ end
74
+
75
+ def execute
76
+ context = Byebug.thread_context(Thread.main)
77
+ context.interrupt
78
+ end
79
+
80
+ class << self
81
+ def names
82
+ %w(interrupt)
83
+ end
84
+
85
+ def description
86
+ %{i|nterrupt\t interrupt the program}
87
+ end
88
+ end
89
+ end
66
90
  end
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  module Byebug
2
3
 
3
4
  # Mix-in module to assist in command parsing.
@@ -4,8 +4,9 @@ module Byebug
4
4
 
5
5
  class << self
6
6
  def stack_size
7
- if backtrace = Thread.current.backtrace_locations(1)
8
- backtrace.drop_while { |l| ignored(l.path) || l.path == '(eval)' }
7
+ if backtrace = Thread.current.backtrace_locations(0)
8
+ backtrace.drop_while { |l| !ignored(l.path) }
9
+ .drop_while { |l| ignored(l.path) || l.path == '(eval)' }
9
10
  .take_while { |l| !ignored(l.path) }
10
11
  .size
11
12
  else
@@ -26,6 +27,10 @@ module Byebug
26
27
  private :ignored
27
28
  end
28
29
 
30
+ def interrupt
31
+ self.step_into 1
32
+ end
33
+
29
34
  def frame_locals frame_no = 0
30
35
  bind = frame_binding frame_no
31
36
  eval "local_variables.inject({}){|h, v| h[v] = eval(v.to_s); h}", bind
@@ -12,6 +12,14 @@ module Byebug
12
12
 
13
13
  # The actual port that the server is started at
14
14
  attr_accessor :actual_port
15
+ attr_reader :actual_control_port
16
+
17
+ #
18
+ # Interrupts the current thread
19
+ #
20
+ def interrupt
21
+ current_context.interrupt
22
+ end
15
23
 
16
24
  #
17
25
  # Starts a remote byebug
@@ -22,6 +30,8 @@ module Byebug
22
30
  self.interface = nil
23
31
  start
24
32
 
33
+ start_control(host, port == 0 ? 0 : port + 1)
34
+
25
35
  yield if block_given?
26
36
 
27
37
  mutex = Mutex.new
@@ -46,6 +56,19 @@ module Byebug
46
56
  end
47
57
  end
48
58
 
59
+ def start_control(host = nil, ctrl_port = PORT + 1)
60
+ return @actual_control_port if @control_thread
61
+ server = TCPServer.new(host, ctrl_port)
62
+ @actual_control_port = server.addr[1]
63
+ @control_thread = Thread.new do
64
+ while (session = server.accept)
65
+ interface = RemoteInterface.new(session)
66
+ ControlCommandProcessor.new(interface).process_commands
67
+ end
68
+ end
69
+ @actual_control_port
70
+ end
71
+
49
72
  #
50
73
  # Connects to the remote byebug
51
74
  #
@@ -1,3 +1,3 @@
1
1
  module Byebug
2
- VERSION = '2.4.1'
2
+ VERSION = '2.5.0'
3
3
  end
@@ -0,0 +1,8 @@
1
+ byebug
2
+
3
+ ex = InterruptExample.a(7)
4
+ 2.times do
5
+ ex += 1
6
+ end
7
+
8
+ InterruptExample.b(ex)
@@ -0,0 +1,58 @@
1
+ class InterruptExample
2
+ def self.a(num)
3
+ num += 2
4
+ b(num)
5
+ end
6
+
7
+ def self.b(num)
8
+ v2 = 5 if 1 == num ; [1, 2, v2].map { |a| a.to_f }
9
+ c(num)
10
+ end
11
+
12
+ def self.c(num)
13
+ num += 4
14
+ num
15
+ end
16
+ end
17
+
18
+ class TestInterrupting < TestDsl::TestCase
19
+ describe 'Interrupt Command' do
20
+
21
+ describe 'method call behaviour' do
22
+
23
+ it 'must interrupt on the next line' do
24
+ enter 'interrupt'
25
+ enter 'continue'
26
+ debug_file('interrupt') do
27
+ state.line.must_equal 3
28
+ state.file.must_equal __FILE__
29
+ end
30
+ end
31
+
32
+ describe 'when forcestep is set' do
33
+ temporary_change_hash Byebug.settings, :forcestep, true
34
+
35
+ it 'must interrupt on the next line' do
36
+ enter 'interrupt'
37
+ enter 'continue'
38
+ debug_file('interrupt') do
39
+ state.line.must_equal 3
40
+ state.file.must_equal __FILE__
41
+ end
42
+ end
43
+
44
+ describe 'block behaviour' do
45
+ before { enter 'break 4', 'cont' }
46
+
47
+ it 'must step into blocks' do
48
+ enter 'interrupt'
49
+ enter 'continue'
50
+ debug_file('interrupt') do
51
+ state.line.must_equal 5
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: byebug
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Rodriguez
@@ -10,90 +10,90 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-12-05 00:00:00.000000000 Z
13
+ date: 2013-12-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: columnize
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - "~>"
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
21
  version: 0.3.6
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - "~>"
26
+ - - ~>
27
27
  - !ruby/object:Gem::Version
28
28
  version: 0.3.6
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: debugger-linecache
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - "~>"
33
+ - - ~>
34
34
  - !ruby/object:Gem::Version
35
35
  version: 1.2.0
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - "~>"
40
+ - - ~>
41
41
  - !ruby/object:Gem::Version
42
42
  version: 1.2.0
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rake
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - "~>"
47
+ - - ~>
48
48
  - !ruby/object:Gem::Version
49
49
  version: 10.1.0
50
50
  type: :development
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - "~>"
54
+ - - ~>
55
55
  - !ruby/object:Gem::Version
56
56
  version: 10.1.0
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: rake-compiler
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - "~>"
61
+ - - ~>
62
62
  - !ruby/object:Gem::Version
63
63
  version: 0.9.2
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - "~>"
68
+ - - ~>
69
69
  - !ruby/object:Gem::Version
70
70
  version: 0.9.2
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: mocha
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - "~>"
75
+ - - ~>
76
76
  - !ruby/object:Gem::Version
77
77
  version: 0.14.0
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - "~>"
82
+ - - ~>
83
83
  - !ruby/object:Gem::Version
84
84
  version: 0.14.0
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: minitest
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - "~>"
89
+ - - ~>
90
90
  - !ruby/object:Gem::Version
91
91
  version: 5.0.8
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - "~>"
96
+ - - ~>
97
97
  - !ruby/object:Gem::Version
98
98
  version: 5.0.8
99
99
  description: |-
@@ -111,8 +111,8 @@ extensions:
111
111
  extra_rdoc_files:
112
112
  - README.md
113
113
  files:
114
- - ".gitignore"
115
- - ".travis.yml"
114
+ - .gitignore
115
+ - .travis.yml
116
116
  - CHANGELOG.md
117
117
  - CONTRIBUTING.md
118
118
  - GUIDE.md
@@ -191,6 +191,7 @@ files:
191
191
  - test/examples/help.rb
192
192
  - test/examples/info.rb
193
193
  - test/examples/info2.rb
194
+ - test/examples/interrupt.rb
194
195
  - test/examples/kill.rb
195
196
  - test/examples/list.rb
196
197
  - test/examples/method.rb
@@ -217,6 +218,7 @@ files:
217
218
  - test/frame_test.rb
218
219
  - test/help_test.rb
219
220
  - test/info_test.rb
221
+ - test/interrupt_test.rb
220
222
  - test/kill_test.rb
221
223
  - test/list_test.rb
222
224
  - test/method_test.rb
@@ -248,12 +250,12 @@ require_paths:
248
250
  - lib
249
251
  required_ruby_version: !ruby/object:Gem::Requirement
250
252
  requirements:
251
- - - ">="
253
+ - - '>='
252
254
  - !ruby/object:Gem::Version
253
255
  version: 2.0.0
254
256
  required_rubygems_version: !ruby/object:Gem::Requirement
255
257
  requirements:
256
- - - ">="
258
+ - - '>='
257
259
  - !ruby/object:Gem::Version
258
260
  version: '0'
259
261
  requirements: []
@@ -285,6 +287,7 @@ test_files:
285
287
  - test/examples/help.rb
286
288
  - test/examples/info.rb
287
289
  - test/examples/info2.rb
290
+ - test/examples/interrupt.rb
288
291
  - test/examples/kill.rb
289
292
  - test/examples/list.rb
290
293
  - test/examples/method.rb
@@ -311,6 +314,7 @@ test_files:
311
314
  - test/frame_test.rb
312
315
  - test/help_test.rb
313
316
  - test/info_test.rb
317
+ - test/interrupt_test.rb
314
318
  - test/kill_test.rb
315
319
  - test/list_test.rb
316
320
  - test/method_test.rb