scriptty 0.6.0-java → 0.7.0-java

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/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