scriptty 0.6.0-java → 0.7.0-java

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.7.0
@@ -18,6 +18,8 @@
18
18
 
19
19
  require 'optparse'
20
20
  require 'scriptty/net/event_loop'
21
+ require 'scriptty/net/console'
22
+ require 'scriptty/net/password_prompt'
21
23
  require 'scriptty/util/transcript/writer'
22
24
  require 'scriptty/term'
23
25
  require 'scriptty/screen_pattern'
@@ -54,11 +56,11 @@ module ScripTTY
54
56
  @output_file = Util::Transcript::Writer.new(File.open(@options[:output], @options[:append] ? "a" : "w")) if @options[:output]
55
57
  @output_file.info("--- Capture started #{Time.now} ---") if @output_file
56
58
  @net.on_accept(@options[:console_addrs] || [], :multiple => true) do |conn|
57
- p = PasswordPrompt.new(conn, "Console password: ")
59
+ p = ScripTTY::Net::PasswordPrompt.new(conn, "Console password: ")
58
60
  p.authenticate { |password| password == @console_password }
59
61
  p.on_fail { conn.write("Authentiation failed.\r\n") { conn.close } }
60
62
  p.on_success {
61
- @attached_consoles << Console.new(conn, self)
63
+ @attached_consoles << ScripTTY::Net::Console.new(conn, self)
62
64
  @attached_consoles.each { |c| c.refresh! }
63
65
  }
64
66
  end
@@ -247,6 +249,3 @@ module ScripTTY
247
249
  end
248
250
  end
249
251
  end
250
-
251
- require 'scriptty/apps/capture_app/password_prompt'
252
- require 'scriptty/apps/capture_app/console'
@@ -18,6 +18,8 @@
18
18
 
19
19
  require 'optparse'
20
20
  require 'scriptty/net/event_loop'
21
+ require 'scriptty/net/console'
22
+ require 'scriptty/net/password_prompt'
21
23
  require 'scriptty/util/transcript/reader'
22
24
  require 'scriptty/term'
23
25
  require 'logger'
@@ -53,11 +55,11 @@ module ScripTTY
53
55
  def main
54
56
  @output_file = Util::Transcript::Writer.new(File.open(@options[:output], "w")) if @options[:output]
55
57
  @net.on_accept(@options[:console_addrs] || [], :multiple => true) do |conn|
56
- p = CaptureApp::PasswordPrompt.new(conn, "Console password: ")
58
+ p = ScripTTY::Net::PasswordPrompt.new(conn, "Console password: ")
57
59
  p.authenticate { |password| password == @console_password }
58
60
  p.on_fail { conn.write("Authentiation failed.\r\n") { conn.close } }
59
61
  p.on_success {
60
- @attached_consoles << CaptureApp::Console.new(conn, self)
62
+ @attached_consoles << ScripTTY::Net::Console.new(conn, self)
61
63
  @attached_consoles.each { |c| c.refresh! }
62
64
  }
63
65
  end
@@ -224,6 +226,3 @@ module ScripTTY
224
226
  end
225
227
  end
226
228
  end
227
-
228
- require 'scriptty/apps/capture_app/password_prompt'
229
- require 'scriptty/apps/capture_app/console'
@@ -27,11 +27,12 @@ module ScripTTY
27
27
  class Expect
28
28
 
29
29
  # Methods to export to Evaluator
30
- EXPORTED_METHODS = Set.new [:init_term, :term, :connect, :screen, :expect, :on, :wait, :send, :match, :push_patterns, :pop_patterns, :exit, :eval_script_file, :eval_script_inline, :sleep, :set_timeout, :load_screens ]
30
+ EXPORTED_METHODS = Set.new [:init_term, :term, :connect, :screen, :expect, :on, :wait, :send, :send_password, :capture, :match, :push_patterns, :pop_patterns, :exit, :eval_script_file, :eval_script_inline, :sleep, :set_timeout, :load_screens ]
31
31
 
32
32
  attr_reader :term # The terminal emulation object
33
33
 
34
- attr_reader :match # The last non-background expect match. For a ScreenPattern match, this is a Hash of fields. For a String or Regexp match, this is a MatchData object.
34
+ attr_reader :capture # The last non-background captured fields. For a ScreenPattern match, this is a Hash of fields. For a String or Regexp match, this is a MatchData object.
35
+ alias match capture # "match" is the deprecated name for "capture"
35
36
 
36
37
  attr_accessor :transcript_writer # Set this to an instance of ScripTTY::Util::Transcript::Writer
37
38
 
@@ -52,6 +53,16 @@ module ScripTTY
52
53
  @screen_patterns = {}
53
54
  end
54
55
 
56
+ # Get instance variable from the Evaluator
57
+ def [](varname)
58
+ @evaluator.instance_variable_get("@#{varname}")
59
+ end
60
+
61
+ # Set an instance variable on the Evaluator
62
+ def []=(varname, value)
63
+ @evaluator.instance_variable_set("@#{varname}", value)
64
+ end
65
+
55
66
  def set_timeout(seconds)
56
67
  raise ArgumentError.new("argument to set_timeout must be Numeric or nil") unless seconds.is_a?(Numeric) or seconds.nil?
57
68
  if seconds
@@ -233,6 +244,16 @@ module ScripTTY
233
244
  true
234
245
  end
235
246
 
247
+ # Send password to the remote application.
248
+ #
249
+ # This works like the send method, but "**PASSWORD**" is shown in the
250
+ # transcript instead of the actual bytes sent.
251
+ def send_password(bytes)
252
+ @transcript_writer.from_client("**PASSWORD**") if @transcript_writer
253
+ @conn.write(bytes)
254
+ true
255
+ end
256
+
236
257
  # Close the connection and exit.
237
258
  def exit
238
259
  @transcript_writer.info("Script executing command", "exit") if @transcript_writer
@@ -316,11 +337,7 @@ module ScripTTY
316
337
 
317
338
  def transcribe_connect_error(e)
318
339
  if @transcript_writer
319
- @transcript_writer.info("Connect error", e.class.name, e.to_s, e.backtrace.join("\n"))
320
- # Write the backtrace out as separate records, for the convenience of people reading the logs without a parser.
321
- e.backtrace.each do |line|
322
- @transcript_writer.info("Connect error backtrace", line)
323
- end
340
+ @transcript_writer.exception(e)
324
341
  end
325
342
  end
326
343
 
@@ -357,7 +374,7 @@ module ScripTTY
357
374
 
358
375
  # Make the next wait() call return
359
376
  unless ph.background?
360
- @match = m
377
+ @capture = m
361
378
  @wait_finished = true
362
379
  @net.suspend
363
380
  return true
@@ -1,8 +1,5 @@
1
- require 'scriptty/apps/capture_app'
2
-
3
1
  module ScripTTY
4
- module Apps
5
- class CaptureApp # reopen
2
+ module Net
6
3
  class Console
7
4
  IAC_WILL_ECHO = "\377\373\001"
8
5
  IAC_WONT_ECHO = "\377\374\001"
@@ -99,6 +96,5 @@ module ScripTTY
99
96
  @app.detach_console(self)
100
97
  end
101
98
  end
102
- end
103
99
  end
104
100
  end
@@ -1,8 +1,5 @@
1
- require 'scriptty/apps/capture_app'
2
-
3
1
  module ScripTTY
4
- module Apps
5
- class CaptureApp # reopen
2
+ module Net
6
3
  class PasswordPrompt
7
4
  IAC_WILL_ECHO = "\377\373\001"
8
5
  IAC_WONT_ECHO = "\377\374\001"
@@ -60,6 +57,5 @@ module ScripTTY
60
57
  nil
61
58
  end
62
59
  end
63
- end
64
60
  end
65
61
  end
@@ -45,6 +45,8 @@ module ScripTTY
45
45
  "Cx" => :client_close, # server closed connection
46
46
  "Sp" => :server_parsed, # parsed escape sequence from server
47
47
  "Cp" => :client_parsed, # parsed escape sequence from client
48
+ "EXC" => :exception_head, # Exception header - exception class & message
49
+ "EX+" => :exception_backtrace, # Exception backtrace - single line of a backtrace
48
50
  }
49
51
 
50
52
  def initialize(io=nil)
@@ -86,6 +86,31 @@ module ScripTTY
86
86
  write_event("*", *args)
87
87
  end
88
88
 
89
+ # Convenience function: Log an exception object
90
+ def exception(exc)
91
+ klass_name = exc.class.to_s
92
+ if exc.respond_to?(:message)
93
+ message = exc.message.to_s
94
+ else
95
+ message = exc.to_s
96
+ end
97
+ exception_head(klass_name, message)
98
+ exc.backtrace.each do |line|
99
+ exception_backtrace(line)
100
+ end
101
+ nil
102
+ end
103
+
104
+ # Log exception - header - class and message
105
+ def exception_head(klass_name, message)
106
+ write_event("EXC", klass_name, message)
107
+ end
108
+
109
+ # Log exception - single backtrace line
110
+ def exception_backtrace(line)
111
+ write_event("EX+", line)
112
+ end
113
+
89
114
  private
90
115
 
91
116
  def write_event(type, *args)
@@ -34,6 +34,9 @@ class TranscriptReaderTest < Test::Unit::TestCase
34
34
  [5.000] Sx "disconnect"
35
35
  [5.000] Sx
36
36
  [5] Cx
37
+ [6.000] EXC "RuntimeError" "foo"
38
+ [6.001] EX+ "line1"
39
+ [6.001] EX+ "line2"
37
40
  EOF
38
41
  expected = [
39
42
  [0.0, :info, ["Informational message", "with argument", "\xff"]],
@@ -48,6 +51,9 @@ class TranscriptReaderTest < Test::Unit::TestCase
48
51
  [5.0, :server_close, ["disconnect"]],
49
52
  [5.0, :server_close, []],
50
53
  [5.0, :client_close, []],
54
+ [6.0, :exception_head, ["RuntimeError", "foo"]],
55
+ [6.001, :exception_backtrace, ["line1"]],
56
+ [6.001, :exception_backtrace, ["line2"]],
51
57
  ]
52
58
  reader = ScripTTY::Util::Transcript::Reader.new
53
59
  actual = input_lines.map{|line| reader.parse_line(line) }
@@ -34,6 +34,9 @@ class TranscriptWriterTest < Test::Unit::TestCase
34
34
  writer.client_close("msg")
35
35
  writer.server_close("msg")
36
36
  writer.info("msg")
37
+ writer.exception_head("ArgumentError", "msg")
38
+ writer.exception_backtrace("line1")
39
+ writer.exception_backtrace("line2")
37
40
  writer.close
38
41
  expected = <<-'EOF'.strip.split("\n").map{|line| line.strip}.join("\n") + "\n"
39
42
  [88.000] Copen "10.0.0.5" "55555"
@@ -45,6 +48,9 @@ class TranscriptWriterTest < Test::Unit::TestCase
45
48
  [88.000] Cx "msg"
46
49
  [88.000] Sx "msg"
47
50
  [88.000] * "msg"
51
+ [88.000] EXC "ArgumentError" "msg"
52
+ [88.000] EX+ "line1"
53
+ [88.000] EX+ "line2"
48
54
  EOF
49
55
  end
50
56
 
@@ -123,4 +129,30 @@ class TranscriptWriterTest < Test::Unit::TestCase
123
129
  EOF
124
130
  assert_equal expected, sio.string
125
131
  end
132
+
133
+ # Test the exception_head and exception_backtrace messages
134
+ def test_exception
135
+ sio = StringIO.new
136
+ writer = ScripTTY::Util::Transcript::Writer.new(sio)
137
+ writer.override_timestamp = 0.0
138
+ begin
139
+ raise ArgumentError.new("foo")
140
+ rescue => e
141
+ writer.exception(e)
142
+ end
143
+ writer.close
144
+
145
+ # Parse the transcript
146
+ sio = StringIO.new(sio.string)
147
+ reader = ScripTTY::Util::Transcript::Reader.new(sio)
148
+ entries = []
149
+ while (entry = reader.next_entry)
150
+ entries << entry
151
+ end
152
+ assert_equal [0.0, :exception_head, ["ArgumentError", "foo"]], entries.shift
153
+ assert_match /^\[0\.0, :exception_backtrace, \["[^"]*:in `test_exception'"\]\]$/, entries.shift.inspect
154
+ until entries.empty?
155
+ assert_equal :exception_backtrace, entries.shift[1]
156
+ end
157
+ end
126
158
  end
metadata CHANGED
@@ -3,44 +3,44 @@ name: scriptty
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
- - 0
7
- - 6
8
- - 0
9
- version: 0.6.0
6
+ - 0
7
+ - 7
8
+ - 0
9
+ version: 0.7.0
10
10
  platform: java
11
11
  authors:
12
- - Dwayne Litzenberger
12
+ - Dwayne Litzenberger
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-24 00:00:00 -04:00
17
+ date: 2010-03-29 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: treetop
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- version: "0"
30
- type: :runtime
31
- version_requirements: *id001
32
- - !ruby/object:Gem::Dependency
33
- name: multibyte
34
- prerelease: false
35
- requirement: &id002 !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- segments:
40
- - 0
41
- version: "0"
42
- type: :runtime
43
- version_requirements: *id002
20
+ - !ruby/object:Gem::Dependency
21
+ name: treetop
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :runtime
31
+ version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
33
+ name: multibyte
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
41
+ version: "0"
42
+ type: :runtime
43
+ version_requirements: *id002
44
44
  description: |
45
45
  ScripTTY is a JRuby application and library that lets you control full-screen
46
46
  terminal applications using an expect-like scripting language and a full-screen
@@ -48,109 +48,109 @@ description: |
48
48
 
49
49
  email: dlitz@infonium.ca
50
50
  executables:
51
- - scriptty-capture
52
- - scriptty-dump-screens
53
- - scriptty-replay
54
- - scriptty-term-test
55
- - scriptty-transcript-parse
51
+ - scriptty-capture
52
+ - scriptty-dump-screens
53
+ - scriptty-replay
54
+ - scriptty-term-test
55
+ - scriptty-transcript-parse
56
56
  extensions: []
57
57
 
58
58
  extra_rdoc_files:
59
- - README.rdoc
59
+ - README.rdoc
60
60
  files:
61
- - .gitattributes
62
- - .gitignore
63
- - COPYING
64
- - COPYING.LESSER
65
- - README.rdoc
66
- - Rakefile
67
- - VERSION
68
- - bin/scriptty-capture
69
- - bin/scriptty-dump-screens
70
- - bin/scriptty-replay
71
- - bin/scriptty-term-test
72
- - bin/scriptty-transcript-parse
73
- - examples/captures/xterm-overlong-line-prompt.bin
74
- - examples/captures/xterm-vim-session.bin
75
- - examples/demo-capture.rb
76
- - examples/demo-telnet-session-screens.txt
77
- - examples/demo-telnet-session.rb
78
- - examples/telnet-nego.rb
79
- - lib/scriptty/apps/capture_app.rb
80
- - lib/scriptty/apps/capture_app/console.rb
81
- - lib/scriptty/apps/capture_app/password_prompt.rb
82
- - lib/scriptty/apps/dump_screens_app.rb
83
- - lib/scriptty/apps/replay_app.rb
84
- - lib/scriptty/apps/term_test_app.rb
85
- - lib/scriptty/apps/transcript_parse_app.rb
86
- - lib/scriptty/cursor.rb
87
- - lib/scriptty/exception.rb
88
- - lib/scriptty/expect.rb
89
- - lib/scriptty/multiline_buffer.rb
90
- - lib/scriptty/net/event_loop.rb
91
- - lib/scriptty/screen_pattern.rb
92
- - lib/scriptty/screen_pattern/generator.rb
93
- - lib/scriptty/screen_pattern/parser.rb
94
- - lib/scriptty/term.rb
95
- - lib/scriptty/term/dg410.rb
96
- - lib/scriptty/term/dg410/dg410-client-escapes.txt
97
- - lib/scriptty/term/dg410/dg410-escapes.txt
98
- - lib/scriptty/term/dg410/parser.rb
99
- - lib/scriptty/term/xterm.rb
100
- - lib/scriptty/term/xterm/xterm-escapes.txt
101
- - lib/scriptty/util/fsm.rb
102
- - lib/scriptty/util/fsm/definition_parser.rb
103
- - lib/scriptty/util/fsm/scriptty_fsm_definition.treetop
104
- - lib/scriptty/util/transcript/reader.rb
105
- - lib/scriptty/util/transcript/writer.rb
106
- - test.watchr
107
- - test/apps/capture_app_test.rb
108
- - test/apps/transcript_parse_app_test.rb
109
- - test/cursor_test.rb
110
- - test/fsm_definition_parser_test.rb
111
- - test/fsm_test.rb
112
- - test/multiline_buffer_test.rb
113
- - test/net/event_loop_test.rb
114
- - test/screen_pattern/generator_test.rb
115
- - test/screen_pattern/parser_test.rb
116
- - test/screen_pattern/parser_test/explicit_cursor_pattern.txt
117
- - test/screen_pattern/parser_test/explicit_fields.txt
118
- - test/screen_pattern/parser_test/multiple_patterns.txt
119
- - test/screen_pattern/parser_test/simple_pattern.txt
120
- - test/screen_pattern/parser_test/truncated_heredoc.txt
121
- - test/screen_pattern/parser_test/utf16bebom_pattern.bin
122
- - test/screen_pattern/parser_test/utf16lebom_pattern.bin
123
- - test/screen_pattern/parser_test/utf8_pattern.bin
124
- - test/screen_pattern/parser_test/utf8_unix_pattern.bin
125
- - test/screen_pattern/parser_test/utf8bom_pattern.bin
126
- - test/term/dg410/parser_test.rb
127
- - test/term/xterm_test.rb
128
- - test/test_helper.rb
129
- - test/util/transcript/reader_test.rb
130
- - test/util/transcript/writer_test.rb
61
+ - .gitattributes
62
+ - .gitignore
63
+ - COPYING
64
+ - COPYING.LESSER
65
+ - README.rdoc
66
+ - Rakefile
67
+ - VERSION
68
+ - bin/scriptty-capture
69
+ - bin/scriptty-dump-screens
70
+ - bin/scriptty-replay
71
+ - bin/scriptty-term-test
72
+ - bin/scriptty-transcript-parse
73
+ - examples/captures/xterm-overlong-line-prompt.bin
74
+ - examples/captures/xterm-vim-session.bin
75
+ - examples/demo-capture.rb
76
+ - examples/demo-telnet-session-screens.txt
77
+ - examples/demo-telnet-session.rb
78
+ - examples/telnet-nego.rb
79
+ - lib/scriptty/apps/capture_app.rb
80
+ - lib/scriptty/apps/dump_screens_app.rb
81
+ - lib/scriptty/apps/replay_app.rb
82
+ - lib/scriptty/apps/term_test_app.rb
83
+ - lib/scriptty/apps/transcript_parse_app.rb
84
+ - lib/scriptty/cursor.rb
85
+ - lib/scriptty/exception.rb
86
+ - lib/scriptty/expect.rb
87
+ - lib/scriptty/multiline_buffer.rb
88
+ - lib/scriptty/net/console.rb
89
+ - lib/scriptty/net/event_loop.rb
90
+ - lib/scriptty/net/password_prompt.rb
91
+ - lib/scriptty/screen_pattern.rb
92
+ - lib/scriptty/screen_pattern/generator.rb
93
+ - lib/scriptty/screen_pattern/parser.rb
94
+ - lib/scriptty/term.rb
95
+ - lib/scriptty/term/dg410.rb
96
+ - lib/scriptty/term/dg410/dg410-client-escapes.txt
97
+ - lib/scriptty/term/dg410/dg410-escapes.txt
98
+ - lib/scriptty/term/dg410/parser.rb
99
+ - lib/scriptty/term/xterm.rb
100
+ - lib/scriptty/term/xterm/xterm-escapes.txt
101
+ - lib/scriptty/util/fsm.rb
102
+ - lib/scriptty/util/fsm/definition_parser.rb
103
+ - lib/scriptty/util/fsm/scriptty_fsm_definition.treetop
104
+ - lib/scriptty/util/transcript/reader.rb
105
+ - lib/scriptty/util/transcript/writer.rb
106
+ - test.watchr
107
+ - test/apps/capture_app_test.rb
108
+ - test/apps/transcript_parse_app_test.rb
109
+ - test/cursor_test.rb
110
+ - test/fsm_definition_parser_test.rb
111
+ - test/fsm_test.rb
112
+ - test/multiline_buffer_test.rb
113
+ - test/net/event_loop_test.rb
114
+ - test/screen_pattern/generator_test.rb
115
+ - test/screen_pattern/parser_test.rb
116
+ - test/screen_pattern/parser_test/explicit_cursor_pattern.txt
117
+ - test/screen_pattern/parser_test/explicit_fields.txt
118
+ - test/screen_pattern/parser_test/multiple_patterns.txt
119
+ - test/screen_pattern/parser_test/simple_pattern.txt
120
+ - test/screen_pattern/parser_test/truncated_heredoc.txt
121
+ - test/screen_pattern/parser_test/utf16bebom_pattern.bin
122
+ - test/screen_pattern/parser_test/utf16lebom_pattern.bin
123
+ - test/screen_pattern/parser_test/utf8_pattern.bin
124
+ - test/screen_pattern/parser_test/utf8_unix_pattern.bin
125
+ - test/screen_pattern/parser_test/utf8bom_pattern.bin
126
+ - test/term/dg410/parser_test.rb
127
+ - test/term/xterm_test.rb
128
+ - test/test_helper.rb
129
+ - test/util/transcript/reader_test.rb
130
+ - test/util/transcript/writer_test.rb
131
131
  has_rdoc: true
132
132
  homepage: http://github.com/infonium/scriptty
133
133
  licenses: []
134
134
 
135
135
  post_install_message:
136
136
  rdoc_options:
137
- - --charset=UTF-8
137
+ - --charset=UTF-8
138
138
  require_paths:
139
- - lib
139
+ - lib
140
140
  required_ruby_version: !ruby/object:Gem::Requirement
141
141
  requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- segments:
145
- - 0
146
- version: "0"
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ segments:
145
+ - 0
146
+ version: "0"
147
147
  required_rubygems_version: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- segments:
152
- - 0
153
- version: "0"
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ segments:
152
+ - 0
153
+ version: "0"
154
154
  requirements: []
155
155
 
156
156
  rubyforge_project:
@@ -159,20 +159,20 @@ signing_key:
159
159
  specification_version: 3
160
160
  summary: write expect-like script to control full-screen terminal-based applications
161
161
  test_files:
162
- - test/apps/capture_app_test.rb
163
- - test/apps/transcript_parse_app_test.rb
164
- - test/cursor_test.rb
165
- - test/fsm_definition_parser_test.rb
166
- - test/fsm_test.rb
167
- - test/multiline_buffer_test.rb
168
- - test/net/event_loop_test.rb
169
- - test/screen_pattern/generator_test.rb
170
- - test/screen_pattern/parser_test.rb
171
- - test/term/dg410/parser_test.rb
172
- - test/term/xterm_test.rb
173
- - test/test_helper.rb
174
- - test/util/transcript/reader_test.rb
175
- - test/util/transcript/writer_test.rb
176
- - examples/demo-capture.rb
177
- - examples/demo-telnet-session.rb
178
- - examples/telnet-nego.rb
162
+ - test/cursor_test.rb
163
+ - test/fsm_definition_parser_test.rb
164
+ - test/fsm_test.rb
165
+ - test/multiline_buffer_test.rb
166
+ - test/test_helper.rb
167
+ - test/apps/capture_app_test.rb
168
+ - test/apps/transcript_parse_app_test.rb
169
+ - test/net/event_loop_test.rb
170
+ - test/screen_pattern/generator_test.rb
171
+ - test/screen_pattern/parser_test.rb
172
+ - test/term/xterm_test.rb
173
+ - test/term/dg410/parser_test.rb
174
+ - test/util/transcript/reader_test.rb
175
+ - test/util/transcript/writer_test.rb
176
+ - examples/demo-capture.rb
177
+ - examples/demo-telnet-session.rb
178
+ - examples/telnet-nego.rb