termdump 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.
@@ -0,0 +1,112 @@
1
+ require 'minitest/autorun'
2
+
3
+ require 'termdump/session'
4
+
5
+ class TestSession < MiniTest::Test
6
+ def setup
7
+ @session = TermDump::Session.new
8
+ end
9
+
10
+ def inject_node_queue actions
11
+ @session.instance_variable_set(:@node_queue, actions)
12
+ end
13
+
14
+ def node_queue
15
+ @session.instance_variable_get(:@node_queue)
16
+ end
17
+
18
+ def test_fallback_not_support_tab
19
+ @session.instance_variable_set(:@support_tab, false)
20
+ @session.instance_variable_set(:@support_split, true)
21
+ actions = [
22
+ TermDump::Node.new(:window, 'window', ''),
23
+ TermDump::Node.new(:tab, 'tab', ''),
24
+ TermDump::Node.new(:tab, 'tab', ''),
25
+ TermDump::Node.new(:window, 'window', '')
26
+ ]
27
+ inject_node_queue actions
28
+ @session.fallback
29
+ expected = [
30
+ TermDump::Node.new(:window, 'window', ''),
31
+ TermDump::Node.new(:window, 'tab', ''),
32
+ TermDump::Node.new(:window, 'tab', ''),
33
+ TermDump::Node.new(:window, 'window', '')
34
+ ]
35
+ assert_equal expected, node_queue
36
+ end
37
+
38
+ def test_fallback_not_support_split
39
+ @session.instance_variable_set(:@support_tab, true)
40
+ @session.instance_variable_set(:@support_split, false)
41
+ actions = [
42
+ TermDump::Node.new(:window, 'window', ''),
43
+ TermDump::Node.new(:tab, 'tab', ''),
44
+ TermDump::Node.new(:vsplit, 'vsplit', ''),
45
+ TermDump::Node.new(:vsplit, 'vsplit', '')
46
+ ]
47
+ inject_node_queue actions
48
+ @session.fallback
49
+ expected = [
50
+ TermDump::Node.new(:window, 'window', ''),
51
+ TermDump::Node.new(:tab, 'tab', ''),
52
+ TermDump::Node.new(:tab, 'vsplit', ''),
53
+ TermDump::Node.new(:tab, 'vsplit', '')
54
+ ]
55
+ assert_equal expected, node_queue
56
+ end
57
+
58
+ def test_scan
59
+ node = {
60
+ 'window' => {
61
+ 'cwd' => 'home',
62
+ 'tab' => {
63
+ 'cwd' => 'some',
64
+ 'command' => 'rm -rf /'
65
+ },
66
+ 'vsplit' => {
67
+ 'cwd' => 'any',
68
+ 'command' => 'ls',
69
+ 'hsplit' => {
70
+ 'cwd' => 'else'
71
+ }
72
+ }
73
+ }
74
+ }
75
+ @session.scan node
76
+ expected = [
77
+ TermDump::Node.new(:window, 'window', 'home'),
78
+ TermDump::Node.new(:tab, 'tab', 'some', 'rm -rf /'),
79
+ TermDump::Node.new(:vsplit, 'vsplit', 'any', 'ls'),
80
+ TermDump::Node.new(:hsplit, 'hsplit', 'else')
81
+ ]
82
+ assert_equal expected, node_queue
83
+ end
84
+
85
+ def test_replay
86
+ task = {
87
+ 'window' => {
88
+ 'cwd' => 'home',
89
+ 'tab' => {
90
+ 'cwd' => 'some',
91
+ 'command' => 'rm -rf /'
92
+ },
93
+ 'vsplit' => {
94
+ 'cwd' => 'any',
95
+ 'command' => 'ls',
96
+ 'hsplit' => {
97
+ 'cwd' => 'else'
98
+ }
99
+ }
100
+ }
101
+ }
102
+ session = TermDump::Session.new({'terminal' => 'base/mock'})
103
+ session.replay(task)
104
+ done_actions = session.instance_variable_get(:@terminal).done_actions
105
+ expected = [
106
+ ['home'],
107
+ [:tab, 'tab', 'some', 'rm -rf /'],
108
+ [:vsplit, 'vsplit', 'any', 'ls'],
109
+ [:hsplit, 'hsplit', 'else']
110
+ ]
111
+ end
112
+ end
@@ -0,0 +1,27 @@
1
+ require 'minitest/autorun'
2
+
3
+ require 'termdump/terminal/terminator'
4
+
5
+ class TestTerminator < MiniTest::Test
6
+ ENV['XDG_CONFIG_HOME'] = 'nonexist' # test configure not found
7
+ @@term = TermDump::Terminal.new({})
8
+
9
+ def test_parse_configure
10
+ lines = [
11
+ '[global_config]',
12
+ '[keybindings]',
13
+ ' full_screen = <Ctrl><Shift>F11',
14
+ ' new_tab = <Alt>Up # new tab',
15
+ ' split_vert = <Alt>V',
16
+ ' split_horiz = <Alt># # split horizontally',
17
+ ' zoom_in = <Primary>equal',
18
+ ' prev_tab = <Alt>Left']
19
+ config = @@term.parse_configure lines
20
+ expected = {
21
+ 'new_tab' => 'Alt+Up',
22
+ 'new_vsplit' => 'Alt+v',
23
+ 'new_hsplit' => 'Alt+#'
24
+ }
25
+ assert_equal expected, config
26
+ end
27
+ end
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: termdump
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - spacewander
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-17 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: termdump is a tool which can dump your pty session and replay it
14
+ email:
15
+ - spacewanderlzx@gmail.com
16
+ executables:
17
+ - termdump
18
+ extensions:
19
+ - etc/Rakefile
20
+ extra_rdoc_files: []
21
+ files:
22
+ - README.md
23
+ - Rakefile
24
+ - bin/termdump
25
+ - etc/Rakefile
26
+ - etc/_termdump
27
+ - etc/man.sh
28
+ - etc/termdump
29
+ - etc/termdump.1
30
+ - etc/termdump.1.md
31
+ - lib/termdump.rb
32
+ - lib/termdump/command.rb
33
+ - lib/termdump/main.rb
34
+ - lib/termdump/process.rb
35
+ - lib/termdump/session.rb
36
+ - lib/termdump/terminal/base/base.rb
37
+ - lib/termdump/terminal/base/default.rb
38
+ - lib/termdump/terminal/base/mock.rb
39
+ - lib/termdump/terminal/base/terminal_helper.rb
40
+ - lib/termdump/terminal/gnome_terminal.rb
41
+ - lib/termdump/terminal/guake.rb
42
+ - lib/termdump/terminal/terminator.rb
43
+ - lib/termdump/terminal/xterm.rb
44
+ - lib/termdump/version.rb
45
+ - test/run_cmd.sh
46
+ - test/test_basic_terminal.rb
47
+ - test/test_command.rb
48
+ - test/test_gnome_terminal.rb
49
+ - test/test_main.rb
50
+ - test/test_session.rb
51
+ - test/test_terminator.rb
52
+ homepage: https://github.com/spacewander/termdump
53
+ licenses:
54
+ - MIT
55
+ metadata: {}
56
+ post_install_message: |2+
57
+
58
+ You can get a bash completion script from [https://github.com/spacewander/termdump/blob/master/etc/termdump]
59
+ and a zsh completion script from [https://github.com/spacewander/termdump/blob/master/etc/_termdump]
60
+
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '1.9'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 2.2.3
77
+ signing_key:
78
+ specification_version: 4
79
+ summary: Dump your (pseudo)terminal session and replay it
80
+ test_files:
81
+ - test/test_session.rb
82
+ - test/run_cmd.sh
83
+ - test/test_main.rb
84
+ - test/test_command.rb
85
+ - test/test_basic_terminal.rb
86
+ - test/test_terminator.rb
87
+ - test/test_gnome_terminal.rb
88
+ has_rdoc: