vte4 4.1.9
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 +7 -0
- data/COPYING.LIB +502 -0
- data/README.md +24 -0
- data/Rakefile +26 -0
- data/dependency-check/Rakefile +43 -0
- data/lib/vte4/deprecated.rb +60 -0
- data/lib/vte4/loader.rb +51 -0
- data/lib/vte4/pty.rb +39 -0
- data/lib/vte4/regex.rb +44 -0
- data/lib/vte4/terminal.rb +38 -0
- data/lib/vte4/version.rb +33 -0
- data/lib/vte4.rb +32 -0
- data/test/run-test.rb +35 -0
- data/test/test-pty.rb +46 -0
- data/test/test-regex.rb +51 -0
- data/test/test-terminal-properties.rb +93 -0
- data/test/test-terminal-signals.rb +67 -0
- data/test/test-terminal.rb +76 -0
- data/test/test-version.rb +53 -0
- data/test/vte4-test-utils.rb +39 -0
- data/vte4.gemspec +43 -0
- metadata +77 -0
data/lib/vte4/loader.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# Copyright (C) 2014-2023 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
module Vte
|
18
|
+
class Loader < GObjectIntrospection::Loader
|
19
|
+
private
|
20
|
+
def pre_load(repository, namespace)
|
21
|
+
define_version_module
|
22
|
+
end
|
23
|
+
|
24
|
+
def define_version_module
|
25
|
+
@version_module = Module.new
|
26
|
+
@base_module.const_set("Version", @version_module)
|
27
|
+
end
|
28
|
+
|
29
|
+
def post_load(repository, namespace)
|
30
|
+
require_libraries
|
31
|
+
end
|
32
|
+
|
33
|
+
def require_libraries
|
34
|
+
require "vte4/pty"
|
35
|
+
require "vte4/regex"
|
36
|
+
require "vte4/terminal"
|
37
|
+
require "vte4/version"
|
38
|
+
|
39
|
+
require "vte4/deprecated"
|
40
|
+
end
|
41
|
+
|
42
|
+
def load_constant_info(info)
|
43
|
+
case info.name
|
44
|
+
when /_VERSION\z/
|
45
|
+
@version_module.const_set($PREMATCH, info.value)
|
46
|
+
else
|
47
|
+
super
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/vte4/pty.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# Copyright (C) 2015-2023 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
module Vte
|
18
|
+
class Pty
|
19
|
+
alias_method :initialize_raw, :initialize
|
20
|
+
def initialize(*args)
|
21
|
+
case args[0]
|
22
|
+
when PtyFlags
|
23
|
+
initialize_new_sync(*args)
|
24
|
+
else
|
25
|
+
initialize_raw(*args)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
alias_method :size_raw, :size
|
30
|
+
def size
|
31
|
+
succeeded, rows, columns = size_raw
|
32
|
+
if succeeded
|
33
|
+
[rows, columns]
|
34
|
+
else
|
35
|
+
nil
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/vte4/regex.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# Copyright (C) 2017-2023 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
module Vte
|
18
|
+
class Regex
|
19
|
+
alias_method :initialize_raw, :initialize
|
20
|
+
def initialize(pattern, compile_flags, options)
|
21
|
+
flags = parse_compile_flags(compile_flags)
|
22
|
+
if options[:for_match]
|
23
|
+
initialize_new_for_match(pattern, pattern.bytesize, flags)
|
24
|
+
elsif options[:for_search]
|
25
|
+
initialize_new_for_search(pattern, pattern.bytesize, flags)
|
26
|
+
else
|
27
|
+
raise(ArgumentError,
|
28
|
+
"must specify usage :for_match or :for_search: #{options.inspect}")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
def parse_compile_flags(compile_flags)
|
34
|
+
return compile_flags if compile_flags.is_a?(Integer)
|
35
|
+
return compile_flags unless compile_flags.is_a?(Array)
|
36
|
+
|
37
|
+
flags = 0
|
38
|
+
compile_flags.each do |flag|
|
39
|
+
flags |= GLib::RegexCompileFlags.new(flag).to_i
|
40
|
+
end
|
41
|
+
flags
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright (C) 2015-2023 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
module Vte
|
18
|
+
class Terminal
|
19
|
+
def spawn(options={})
|
20
|
+
pty_flags = options[:pty_flags] || PtyFlags::DEFAULT
|
21
|
+
working_directory = options[:working_directory]
|
22
|
+
argv = options[:argv] || [ENV["SHELL"] || "/bin/sh"]
|
23
|
+
envv = options[:envv]
|
24
|
+
default_spawn_flags = GLib::Spawn::SEARCH_PATH
|
25
|
+
spawn_flags = options[:spawn_flags] || default_spawn_flags
|
26
|
+
succeeded, pid = spawn_sync(pty_flags,
|
27
|
+
working_directory,
|
28
|
+
argv,
|
29
|
+
envv,
|
30
|
+
spawn_flags)
|
31
|
+
if succeeded
|
32
|
+
pid
|
33
|
+
else
|
34
|
+
nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/vte4/version.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# Copyright (C) 2015-2023 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
module Vte
|
18
|
+
module Version
|
19
|
+
STRING = [MAJOR, MINOR, MICRO].join(".")
|
20
|
+
|
21
|
+
class << self
|
22
|
+
def or_later?(major, minor, micro=nil)
|
23
|
+
micro ||= 0
|
24
|
+
version = [
|
25
|
+
MAJOR,
|
26
|
+
MINOR,
|
27
|
+
MICRO,
|
28
|
+
]
|
29
|
+
(version <=> [major, minor, micro]) >= 0
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/vte4.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Copyright (C) 2014-2023 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
require "gtk4"
|
18
|
+
|
19
|
+
require "vte4/loader"
|
20
|
+
|
21
|
+
module Vte
|
22
|
+
LOG_DOMAIN = "Vte"
|
23
|
+
GLib::Log.set_log_domain(LOG_DOMAIN)
|
24
|
+
|
25
|
+
class Error < StandardError
|
26
|
+
end
|
27
|
+
|
28
|
+
Gtk.init if Gtk.respond_to?(:init)
|
29
|
+
loader = Loader.new(self)
|
30
|
+
loader.version = "3.91"
|
31
|
+
loader.load("Vte")
|
32
|
+
end
|
data/test/run-test.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Copyright (C) 2014-2023 Ruby-GNOME Project Team
|
4
|
+
#
|
5
|
+
# This library is free software; you can redistribute it and/or
|
6
|
+
# modify it under the terms of the GNU Lesser General Public
|
7
|
+
# License as published by the Free Software Foundation; either
|
8
|
+
# version 2.1 of the License, or (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This library is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
# Lesser General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
16
|
+
# License along with this library; if not, write to the Free Software
|
17
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
18
|
+
|
19
|
+
require_relative "../../glib2/test/run-test"
|
20
|
+
|
21
|
+
run_test(__dir__,
|
22
|
+
[
|
23
|
+
"glib2",
|
24
|
+
"gobject-introspection",
|
25
|
+
"gio2",
|
26
|
+
"gdk_pixbuf2",
|
27
|
+
"atk",
|
28
|
+
"cairo-gobject",
|
29
|
+
"pango",
|
30
|
+
"gdk4",
|
31
|
+
"gtk4",
|
32
|
+
"vte4",
|
33
|
+
]) do
|
34
|
+
require_relative "vte4-test-utils"
|
35
|
+
end
|
data/test/test-pty.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright (C) 2014-2023 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
class TestPty < Test::Unit::TestCase
|
18
|
+
def setup
|
19
|
+
flag = Vte::PtyFlags::DEFAULT
|
20
|
+
@pty = Vte::Pty.new(flag)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_fd
|
24
|
+
assert_nothing_raised do
|
25
|
+
@pty.fd
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_size
|
30
|
+
original = @pty.size
|
31
|
+
begin
|
32
|
+
row = 80
|
33
|
+
col = 24
|
34
|
+
@pty.set_size(row, col)
|
35
|
+
assert_equal([row, col], @pty.size)
|
36
|
+
ensure
|
37
|
+
@pty.set_size(*original)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_utf8
|
42
|
+
assert_nothing_raised do
|
43
|
+
@pty.utf8 = true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/test/test-regex.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# Copyright (C) 2017-2023 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
class TestRegex < Test::Unit::TestCase
|
18
|
+
include VteTestUtils
|
19
|
+
|
20
|
+
def test_for_match
|
21
|
+
Vte::Regex.new("test", 0, for_match: true)
|
22
|
+
# TODO: Add assertion
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_for_search
|
26
|
+
Vte::Regex.new("test", 0, for_search: true)
|
27
|
+
# TODO: Add assertion
|
28
|
+
end
|
29
|
+
|
30
|
+
sub_test_case("flags") do
|
31
|
+
def test_integer
|
32
|
+
Vte::Regex.new("test",
|
33
|
+
GLib::RegexCompileFlags::OPTIMIZE.to_i,
|
34
|
+
for_match: true)
|
35
|
+
# TODO: Add assertion
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_object
|
39
|
+
Vte::Regex.new("test",
|
40
|
+
GLib::RegexCompileFlags::OPTIMIZE,
|
41
|
+
for_match: true)
|
42
|
+
# TODO: Add assertion
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_array
|
46
|
+
flags = [:optimize, :multiline]
|
47
|
+
Vte::Regex.new("test", flags, for_match: true)
|
48
|
+
# TODO: Add assertion
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# Copyright (C) 2014-2023 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
class TestTerminalProperties < Test::Unit::TestCase
|
18
|
+
include VteTestUtils
|
19
|
+
|
20
|
+
def setup
|
21
|
+
@terminal = Vte::Terminal.new
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_allow_bold
|
25
|
+
@terminal.allow_bold = false
|
26
|
+
assert_false(@terminal.allow_bold?)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_audible_bell
|
30
|
+
@terminal.audible_bell = false
|
31
|
+
assert_false(@terminal.audible_bell?)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_backspace_binding
|
35
|
+
bind = Vte::EraseBinding::DELETE_SEQUENCE
|
36
|
+
@terminal.backspace_binding = bind
|
37
|
+
assert_equal(bind, @terminal.backspace_binding)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_cursor_blink_mode
|
41
|
+
cursor_mode = Vte::CursorBlinkMode::ON
|
42
|
+
@terminal.cursor_blink_mode = cursor_mode
|
43
|
+
assert_equal(cursor_mode, @terminal.cursor_blink_mode)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_cursor_shape
|
47
|
+
shape = Vte::CursorShape::IBEAM
|
48
|
+
@terminal.cursor_shape = shape
|
49
|
+
assert_equal(shape, @terminal.cursor_shape)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_delete_binding
|
53
|
+
bind = Vte::EraseBinding::ASCII_DELETE
|
54
|
+
@terminal.delete_binding = bind
|
55
|
+
assert_equal(bind, @terminal.delete_binding)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_encoding
|
59
|
+
encoding = "UTF-16"
|
60
|
+
@terminal.encoding = encoding
|
61
|
+
assert_equal(encoding, @terminal.encoding)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_font_desc
|
65
|
+
font = Pango::FontDescription.new("Monospace 15")
|
66
|
+
@terminal.font_desc = font
|
67
|
+
assert_equal(font, @terminal.font_desc)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_pointer_autohide
|
71
|
+
hide = true
|
72
|
+
@terminal.pointer_autohide = hide
|
73
|
+
assert_true(@terminal.pointer_autohide?)
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_scroll_on_keystroke
|
77
|
+
scroll = true
|
78
|
+
@terminal.scroll_on_keystroke = scroll
|
79
|
+
assert_true(@terminal.scroll_on_keystroke?)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_scroll_on_output
|
83
|
+
scroll = false
|
84
|
+
@terminal.scroll_on_output = scroll
|
85
|
+
assert_false(@terminal.scroll_on_output?)
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_scrollback_lines
|
89
|
+
lines = 1024
|
90
|
+
@terminal.scrollback_lines = lines
|
91
|
+
assert_equal(lines, @terminal.scrollback_lines)
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# Copyright (C) 2014-2023 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
class TestTerminalSignals < Test::Unit::TestCase
|
18
|
+
def setup
|
19
|
+
if Vte::Version.or_later?(0, 64)
|
20
|
+
omit("VTE 0.64 or later doesn't work in Docker by default")
|
21
|
+
# /usr/include/c++/11/bits/shared_ptr_base.h:976: std::__shared_ptr_access<
|
22
|
+
# _Tp,
|
23
|
+
# _Lp,
|
24
|
+
# <anonymous>,
|
25
|
+
# <anonymous>
|
26
|
+
# >::element_type&
|
27
|
+
# std::__shared_ptr_access<
|
28
|
+
# _Tp,
|
29
|
+
# _Lp,
|
30
|
+
# <anonymous>,
|
31
|
+
# <anonymous>
|
32
|
+
# >::operator*() const [
|
33
|
+
# with
|
34
|
+
# _Tp = vte::platform::Clipboard;
|
35
|
+
# __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic;
|
36
|
+
# bool <anonymous> = false;
|
37
|
+
# bool <anonymous> = false;
|
38
|
+
# std::__shared_ptr_access<
|
39
|
+
# _Tp,
|
40
|
+
# _Lp,
|
41
|
+
# <anonymous>,
|
42
|
+
# <anonymous>
|
43
|
+
# >::element_type = vte::platform::Clipboard
|
44
|
+
#]: Assertion '_M_get() != nullptr' failed.
|
45
|
+
end
|
46
|
+
|
47
|
+
@terminal = Vte::Terminal.new
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_copy_clipboard_signal
|
51
|
+
called = false
|
52
|
+
@terminal.signal_connect("copy-clipboard") do
|
53
|
+
called = true
|
54
|
+
end
|
55
|
+
@terminal.signal_emit("copy-clipboard")
|
56
|
+
assert_true(called)
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_paste_clipboard_signal
|
60
|
+
called = false
|
61
|
+
@terminal.signal_connect("paste-clipboard") do
|
62
|
+
called = true
|
63
|
+
end
|
64
|
+
@terminal.signal_emit("paste-clipboard")
|
65
|
+
assert_true(called)
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# Copyright (C) 2014-2023 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
class TestTerminal < Test::Unit::TestCase
|
18
|
+
include VteTestUtils
|
19
|
+
|
20
|
+
def setup
|
21
|
+
@terminal = Vte::Terminal.new
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_font
|
25
|
+
font = Pango::FontDescription.new("Monospace 16")
|
26
|
+
@terminal.font = font
|
27
|
+
assert_equal(font, @terminal.font)
|
28
|
+
end
|
29
|
+
|
30
|
+
sub_test_case "#spawn" do
|
31
|
+
setup do
|
32
|
+
@loop = GLib::MainLoop.new
|
33
|
+
@wait_child_exited = false
|
34
|
+
@child_exit_callback_id = @terminal.signal_connect("child-exited") do
|
35
|
+
@loop.quit
|
36
|
+
end
|
37
|
+
|
38
|
+
if Vte::Version.or_later?(0, 64)
|
39
|
+
omit("VTE 0.64 or later doesn't work in Docker by default")
|
40
|
+
# Fedora Rawhide test in Docker reports:
|
41
|
+
# Failed to fdwalk: Operation not permitted
|
42
|
+
# not NotFound.
|
43
|
+
#
|
44
|
+
# The following discussions may be related:
|
45
|
+
# https://github.com/mviereck/x11docker/issues/346
|
46
|
+
# https://github.com/containers/podman/issues/10130
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
teardown do
|
51
|
+
unless @wait_child_exited
|
52
|
+
GLib::Idle.add do
|
53
|
+
@loop.quit
|
54
|
+
GLib::Source::REMOVE
|
55
|
+
end
|
56
|
+
end
|
57
|
+
@loop.run
|
58
|
+
@terminal.signal_handler_disconnect(@child_exit_callback_id)
|
59
|
+
end
|
60
|
+
|
61
|
+
test "success" do
|
62
|
+
pid = @terminal.spawn(:argv => ["echo"])
|
63
|
+
@wait_child_exited = true
|
64
|
+
assert do
|
65
|
+
pid > 0
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
test "failure" do
|
70
|
+
assert_raise(Gio::IOError::NotFound) do
|
71
|
+
@terminal.spawn(:argv => ["/bin/nonexistent"])
|
72
|
+
@wait_child_exited = true
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# Copyright (C) 2015-2023 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
class TestVteVersion < Test::Unit::TestCase
|
18
|
+
include VteTestUtils
|
19
|
+
|
20
|
+
test "STRING" do
|
21
|
+
major = Vte::Version::MAJOR
|
22
|
+
minor = Vte::Version::MINOR
|
23
|
+
micro = Vte::Version::MICRO
|
24
|
+
assert_equal([major, minor, micro].join("."),
|
25
|
+
Vte::Version::STRING)
|
26
|
+
end
|
27
|
+
|
28
|
+
sub_test_case("#or_later?") do
|
29
|
+
test "same" do
|
30
|
+
assert do
|
31
|
+
Vte::Version.or_later?(Vte::Version::MAJOR,
|
32
|
+
Vte::Version::MINOR,
|
33
|
+
Vte::Version::MICRO)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
test "later" do
|
38
|
+
assert do
|
39
|
+
Vte::Version.or_later?(Vte::Version::MAJOR,
|
40
|
+
Vte::Version::MINOR - 1,
|
41
|
+
Vte::Version::MICRO)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
test "earlier" do
|
46
|
+
assert do
|
47
|
+
not Vte::Version.or_later?(Vte::Version::MAJOR,
|
48
|
+
Vte::Version::MINOR + 1,
|
49
|
+
Vte::Version::MICRO)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|