gir_ffi 0.0.8 → 0.0.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.
- data/History.txt +11 -0
- data/TODO.rdoc +5 -0
- data/examples/01_empty_window.rb +0 -1
- data/examples/02_hello_world.rb +0 -1
- data/examples/03_upgraded_hello_world.rb +0 -1
- data/examples/04_webkit.rb +0 -1
- data/lib/gir_ffi/arg_helper.rb +231 -94
- data/lib/gir_ffi/builder/argument.rb +372 -46
- data/lib/gir_ffi/builder/module.rb +25 -10
- data/lib/gir_ffi/builder/type/constant.rb +39 -0
- data/lib/gir_ffi/builder/type/enum.rb +15 -5
- data/lib/gir_ffi/builder/type/registered_type.rb +25 -6
- data/lib/gir_ffi/builder/type/struct.rb +1 -9
- data/lib/gir_ffi/builder/type/union.rb +5 -0
- data/lib/gir_ffi/builder/type.rb +13 -14
- data/lib/gir_ffi/builder.rb +7 -4
- data/lib/gir_ffi/builder_helper.rb +4 -3
- data/lib/gir_ffi/i_base_info.rb +4 -0
- data/lib/gir_ffi/i_constant_info.rb +9 -0
- data/lib/gir_ffi/i_registered_type_info.rb +0 -1
- data/lib/gir_ffi/i_repository.rb +8 -2
- data/lib/gir_ffi/i_type_info.rb +7 -0
- data/lib/gir_ffi/lib.rb +41 -3
- data/lib/gir_ffi/overrides/glib.rb +188 -4
- data/lib/gir_ffi/overrides/gobject.rb +16 -5
- data/tasks/test.rake +1 -1
- data/test/arg_helper_test.rb +5 -5
- data/test/builder_test.rb +64 -41
- data/test/class_base_test.rb +1 -1
- data/test/function_definition_builder_test.rb +24 -2
- data/test/g_object_overrides_test.rb +1 -3
- data/test/g_object_test.rb +1 -1
- data/test/generated_gimarshallingtests_test.rb +1677 -0
- data/test/generated_gio_test.rb +1 -1
- data/test/generated_gtk_test.rb +31 -2
- data/test/generated_regress_test.rb +278 -54
- data/test/girffi_test.rb +20 -5
- data/test/glib_overrides_test.rb +81 -0
- data/test/gtk_overrides_test.rb +2 -3
- data/test/i_object_info_test.rb +1 -1
- data/test/i_repository_test.rb +3 -4
- data/test/lib/Makefile.am +18 -2
- data/test/module_builder_test.rb +1 -1
- data/test/test_helper.rb +88 -5
- data/test/type_builder_test.rb +7 -10
- metadata +16 -13
data/test/i_repository_test.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
3
|
module GirFFI
|
4
|
-
class IRepositoryTest <
|
4
|
+
class IRepositoryTest < MiniTest::Spec
|
5
5
|
context "An IRepository object" do
|
6
6
|
should "not be created by calling new()" do
|
7
|
-
|
7
|
+
assert_raises NoMethodError do
|
8
8
|
IRepository.new
|
9
9
|
end
|
10
10
|
end
|
@@ -23,7 +23,7 @@ module GirFFI
|
|
23
23
|
|
24
24
|
context "The namespace method" do
|
25
25
|
should "raise an error if the namespace doesn't exist" do
|
26
|
-
|
26
|
+
assert_raises RuntimeError do
|
27
27
|
IRepository.default.require 'VeryUnlikelyGObjectNamespaceName', nil
|
28
28
|
end
|
29
29
|
end
|
@@ -44,7 +44,6 @@ module GirFFI
|
|
44
44
|
context "Enumerating the infos" do
|
45
45
|
setup do
|
46
46
|
@gir = IRepository.default
|
47
|
-
@gir.require 'Gtk', nil
|
48
47
|
end
|
49
48
|
|
50
49
|
should "yield more than one object" do
|
data/test/lib/Makefile.am
CHANGED
@@ -3,7 +3,7 @@ AUTOMAKE_OPTIONS = 1.7
|
|
3
3
|
|
4
4
|
# We need to build a shared library, which can be dlopened
|
5
5
|
# it does not work with noinst_LTLIBRARIES
|
6
|
-
testlib_LTLIBRARIES = libregress.la
|
6
|
+
testlib_LTLIBRARIES = libregress.la libgimarshallingtests.la
|
7
7
|
|
8
8
|
testlibdir = $(prefix)/unused
|
9
9
|
install-testlibLTLIBRARIES: # prevent it from being installed
|
@@ -12,6 +12,10 @@ libregress_la_SOURCES = $(GI_DATADIR)/tests/regress.c $(GI_DATADIR)/tests/regres
|
|
12
12
|
libregress_la_CFLAGS = $(GIO_CFLAGS) $(CAIRO_CFLAGS)
|
13
13
|
libregress_la_LDFLAGS = -module -avoid-version $(GIO_LIBS) $(CAIRO_LIBS)
|
14
14
|
|
15
|
+
libgimarshallingtests_la_SOURCES = $(GI_DATADIR)/tests/gimarshallingtests.c $(GI_DATADIR)/tests/gimarshallingtests.h
|
16
|
+
libgimarshallingtests_la_CFLAGS = $(GIO_CFLAGS)
|
17
|
+
libgimarshallingtests_la_LDFLAGS = -module -avoid-version
|
18
|
+
|
15
19
|
# g-i doesn't ship these as shared libraries anymore; we build them here
|
16
20
|
Regress-1.0.gir: libregress.la Makefile
|
17
21
|
$(AM_V_GEN) g-ir-scanner --include=cairo-1.0 --include=Gio-2.0 \
|
@@ -24,7 +28,19 @@ Regress-1.0.gir: libregress.la Makefile
|
|
24
28
|
Regress-1.0.typelib: Regress-1.0.gir Makefile
|
25
29
|
$(AM_V_GEN) g-ir-compiler $< -o $@
|
26
30
|
|
31
|
+
GIMarshallingTests-1.0.gir: libgimarshallingtests.la Makefile
|
32
|
+
$(AM_V_GEN) g-ir-scanner --include=Gio-2.0 \
|
33
|
+
--namespace=GIMarshallingTests --nsversion=1.0 \
|
34
|
+
--symbol-prefix=gi_marshalling_tests \
|
35
|
+
--warn-all --warn-error \
|
36
|
+
--library=libgimarshallingtests.la \
|
37
|
+
--libtool="$(top_builddir)/libtool" \
|
38
|
+
--output $@ \
|
39
|
+
$(libgimarshallingtests_la_SOURCES)
|
40
|
+
GIMarshallingTests-1.0.typelib: GIMarshallingTests-1.0.gir Makefile
|
41
|
+
$(AM_V_GEN) g-ir-compiler $< -o $@
|
42
|
+
|
27
43
|
.la.so:
|
28
44
|
test -L $@ || $(LN_S) .libs/$@ $@
|
29
45
|
|
30
|
-
all: $(testlib_LTLIBRARIES:.la=.so) Regress-1.0.typelib
|
46
|
+
all: $(testlib_LTLIBRARIES:.la=.so) Regress-1.0.typelib GIMarshallingTests-1.0.typelib
|
data/test/module_builder_test.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
-
require '
|
1
|
+
require 'minitest/spec'
|
2
|
+
require 'minitest/autorun'
|
2
3
|
require 'rr'
|
3
4
|
require 'ffi'
|
4
5
|
|
6
|
+
Thread.abort_on_exception = true
|
7
|
+
|
5
8
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
9
|
|
7
10
|
require 'gir_ffi'
|
@@ -12,15 +15,18 @@ if RUBY_PLATFORM == 'java'
|
|
12
15
|
end
|
13
16
|
|
14
17
|
# Since the tests will call Gtk+ functions, Gtk+ must be initialized.
|
15
|
-
GirFFI.setup :Gtk
|
18
|
+
GirFFI.setup :Gtk, '2.0'
|
16
19
|
Gtk.init
|
17
20
|
|
18
21
|
GirFFI::IRepository.prepend_search_path File.join(File.dirname(__FILE__), 'lib')
|
19
22
|
module GirFFI
|
20
23
|
class IRepository
|
21
24
|
def shared_library_with_regress namespace
|
22
|
-
|
25
|
+
case namespace
|
26
|
+
when "Regress"
|
23
27
|
return File.join(File.dirname(__FILE__), 'lib', 'libregress.so')
|
28
|
+
when "GIMarshallingTests"
|
29
|
+
return File.join(File.dirname(__FILE__), 'lib', 'libgimarshallingtests.so')
|
24
30
|
else
|
25
31
|
return shared_library_without_regress namespace
|
26
32
|
end
|
@@ -35,7 +41,7 @@ end
|
|
35
41
|
module Lib
|
36
42
|
end
|
37
43
|
|
38
|
-
class
|
44
|
+
class MiniTest::Unit::TestCase
|
39
45
|
include RR::Adapters::TestUnit
|
40
46
|
def cws code
|
41
47
|
code.gsub(/(^\s*|\s*$)/, "")
|
@@ -53,12 +59,26 @@ class Test::Unit::TestCase
|
|
53
59
|
gir.find_by_name(namespace, klass).find_method function
|
54
60
|
end
|
55
61
|
|
56
|
-
|
62
|
+
SAVED_MODULES = {}
|
63
|
+
|
64
|
+
def save_module name
|
57
65
|
if Object.const_defined? name
|
66
|
+
puts "Saving #{name} over existing" if SAVED_MODULES.has_key? name
|
67
|
+
SAVED_MODULES[name] = Object.const_get name
|
58
68
|
Object.send(:remove_const, name)
|
59
69
|
end
|
60
70
|
end
|
61
71
|
|
72
|
+
def restore_module name
|
73
|
+
if SAVED_MODULES.has_key? name
|
74
|
+
if Object.const_defined? name
|
75
|
+
Object.send(:remove_const, name)
|
76
|
+
end
|
77
|
+
Object.const_set name, SAVED_MODULES[name]
|
78
|
+
SAVED_MODULES.delete name
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
62
82
|
def ref_count object
|
63
83
|
GObject::Object::Struct.new(object.to_ptr)[:ref_count]
|
64
84
|
end
|
@@ -66,4 +86,67 @@ class Test::Unit::TestCase
|
|
66
86
|
def is_floating? object
|
67
87
|
(GObject::Object::Struct.new(object.to_ptr)[:qdata].address & 2) == 2
|
68
88
|
end
|
89
|
+
|
90
|
+
def assert_nothing_raised
|
91
|
+
yield
|
92
|
+
assert true
|
93
|
+
end
|
94
|
+
|
95
|
+
def assert_not_nil it
|
96
|
+
refute_nil it
|
97
|
+
end
|
98
|
+
|
99
|
+
def max_for_unsigned_type type
|
100
|
+
( 1 << (FFI.type_size(type) * 8) ) - 1
|
101
|
+
end
|
102
|
+
|
103
|
+
def max_for_type type
|
104
|
+
( 1 << (FFI.type_size(type) * 8 - 1) ) - 1
|
105
|
+
end
|
106
|
+
|
107
|
+
def min_for_type type
|
108
|
+
~max_for_type(type)
|
109
|
+
end
|
110
|
+
|
111
|
+
def max_long
|
112
|
+
max_for_type :long
|
113
|
+
end
|
114
|
+
|
115
|
+
def min_long
|
116
|
+
min_for_type :long
|
117
|
+
end
|
118
|
+
|
119
|
+
def max_size_t
|
120
|
+
max_for_unsigned_type :size_t
|
121
|
+
end
|
122
|
+
|
123
|
+
def max_ssize_t
|
124
|
+
# FFI has no :ssize_t, but it's the same number of bits as :size_t
|
125
|
+
max_for_type :size_t
|
126
|
+
end
|
127
|
+
|
128
|
+
def min_ssize_t
|
129
|
+
min_for_type :size_t
|
130
|
+
end
|
131
|
+
|
132
|
+
def max_ushort
|
133
|
+
max_for_unsigned_type :ushort
|
134
|
+
end
|
135
|
+
|
136
|
+
def max_uint
|
137
|
+
max_for_unsigned_type :uint
|
138
|
+
end
|
139
|
+
|
140
|
+
def max_ulong
|
141
|
+
max_for_unsigned_type :ulong
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
class MiniTest::Spec
|
146
|
+
class << self
|
147
|
+
alias :setup :before
|
148
|
+
alias :teardown :after
|
149
|
+
alias :should :it
|
150
|
+
alias :context :describe
|
151
|
+
end
|
69
152
|
end
|
data/test/type_builder_test.rb
CHANGED
@@ -1,12 +1,9 @@
|
|
1
1
|
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class TypeBuilderTest <
|
3
|
+
class TypeBuilderTest < MiniTest::Spec
|
4
4
|
context "The Builder::Type class" do
|
5
|
-
setup do
|
6
|
-
@gir = GirFFI::IRepository.default
|
7
|
-
end
|
8
|
-
|
9
5
|
should "use parent struct as default layout" do
|
6
|
+
@gir = GirFFI::IRepository.default
|
10
7
|
@gir.require 'GObject', nil
|
11
8
|
|
12
9
|
stub(info = Object.new).parent { @gir.find_by_name 'GObject', 'Object' }
|
@@ -23,7 +20,7 @@ class TypeBuilderTest < Test::Unit::TestCase
|
|
23
20
|
|
24
21
|
context "for Gtk::Widget" do
|
25
22
|
setup do
|
26
|
-
@cbuilder = GirFFI::Builder::Type::Object.new
|
23
|
+
@cbuilder = GirFFI::Builder::Type::Object.new get_function_introspection_data('Gtk', 'Widget')
|
27
24
|
end
|
28
25
|
|
29
26
|
context "looking at Gtk::Widget#show" do
|
@@ -42,19 +39,19 @@ class TypeBuilderTest < Test::Unit::TestCase
|
|
42
39
|
|
43
40
|
context 'the find_signal method' do
|
44
41
|
should 'find the signal "test" for TestObj' do
|
45
|
-
builder = GirFFI::Builder::Type::Object.new
|
42
|
+
builder = GirFFI::Builder::Type::Object.new get_function_introspection_data('Regress', 'TestObj')
|
46
43
|
sig = builder.find_signal 'test'
|
47
44
|
assert_equal 'test', sig.name
|
48
45
|
end
|
49
46
|
|
50
47
|
should 'find the signal "test" for TestSubObj' do
|
51
|
-
builder = GirFFI::Builder::Type::Object.new
|
48
|
+
builder = GirFFI::Builder::Type::Object.new get_function_introspection_data('Regress', 'TestSubObj')
|
52
49
|
sig = builder.find_signal 'test'
|
53
50
|
assert_equal 'test', sig.name
|
54
51
|
end
|
55
52
|
|
56
53
|
should 'find the signal "changed" for Gtk::Entry' do
|
57
|
-
builder = GirFFI::Builder::Type::Object.new
|
54
|
+
builder = GirFFI::Builder::Type::Object.new get_function_introspection_data('Gtk', 'Entry')
|
58
55
|
sig = builder.find_signal 'changed'
|
59
56
|
assert_equal 'changed', sig.name
|
60
57
|
end
|
@@ -62,7 +59,7 @@ class TypeBuilderTest < Test::Unit::TestCase
|
|
62
59
|
|
63
60
|
context "for GObject::TypeCValue (a union)" do
|
64
61
|
setup do
|
65
|
-
@cbuilder = GirFFI::Builder::Type::Union.new
|
62
|
+
@cbuilder = GirFFI::Builder::Type::Union.new get_function_introspection_data('GObject', 'TypeCValue')
|
66
63
|
end
|
67
64
|
|
68
65
|
should "not raise an error looking for a method that doesn't exist" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gir_ffi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 9
|
10
|
+
version: 0.0.9
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matijs van Zuijlen
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-05-02 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: ffi
|
@@ -35,19 +34,19 @@ dependencies:
|
|
35
34
|
type: :runtime
|
36
35
|
version_requirements: *id001
|
37
36
|
- !ruby/object:Gem::Dependency
|
38
|
-
name:
|
37
|
+
name: minitest
|
39
38
|
prerelease: false
|
40
39
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
40
|
none: false
|
42
41
|
requirements:
|
43
|
-
- -
|
42
|
+
- - ">="
|
44
43
|
- !ruby/object:Gem::Version
|
45
|
-
hash:
|
44
|
+
hash: 11
|
46
45
|
segments:
|
47
46
|
- 2
|
48
|
-
-
|
49
|
-
-
|
50
|
-
version: 2.
|
47
|
+
- 0
|
48
|
+
- 2
|
49
|
+
version: 2.0.2
|
51
50
|
type: :development
|
52
51
|
version_requirements: *id002
|
53
52
|
- !ruby/object:Gem::Dependency
|
@@ -90,6 +89,7 @@ files:
|
|
90
89
|
- lib/gir_ffi/builder/module.rb
|
91
90
|
- lib/gir_ffi/builder/function.rb
|
92
91
|
- lib/gir_ffi/builder/type/base.rb
|
92
|
+
- lib/gir_ffi/builder/type/constant.rb
|
93
93
|
- lib/gir_ffi/builder/type/interface.rb
|
94
94
|
- lib/gir_ffi/builder/type/struct_based.rb
|
95
95
|
- lib/gir_ffi/builder/type/struct.rb
|
@@ -146,8 +146,10 @@ files:
|
|
146
146
|
- test/generated_gtk_test.rb
|
147
147
|
- test/type_builder_test.rb
|
148
148
|
- test/builder_test.rb
|
149
|
+
- test/glib_overrides_test.rb
|
149
150
|
- test/gtk_overrides_test.rb
|
150
151
|
- test/generated_gio_test.rb
|
152
|
+
- test/generated_gimarshallingtests_test.rb
|
151
153
|
- tasks/test.rake
|
152
154
|
- tasks/setup.rb
|
153
155
|
- tasks/notes.rake
|
@@ -164,7 +166,6 @@ files:
|
|
164
166
|
- README.rdoc
|
165
167
|
- History.txt
|
166
168
|
- Rakefile
|
167
|
-
has_rdoc: true
|
168
169
|
homepage: http://www.github.com/mvz/ruby-gir-ffi
|
169
170
|
licenses: []
|
170
171
|
|
@@ -195,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
195
196
|
requirements: []
|
196
197
|
|
197
198
|
rubyforge_project:
|
198
|
-
rubygems_version: 1.
|
199
|
+
rubygems_version: 1.7.2
|
199
200
|
signing_key:
|
200
201
|
specification_version: 3
|
201
202
|
summary: FFI-based GObject binding using the GObject Introspection Repository
|
@@ -206,10 +207,12 @@ test_files:
|
|
206
207
|
- test/function_definition_builder_test.rb
|
207
208
|
- test/g_object_overrides_test.rb
|
208
209
|
- test/g_object_test.rb
|
210
|
+
- test/generated_gimarshallingtests_test.rb
|
209
211
|
- test/generated_gio_test.rb
|
210
212
|
- test/generated_gtk_test.rb
|
211
213
|
- test/generated_regress_test.rb
|
212
214
|
- test/girffi_test.rb
|
215
|
+
- test/glib_overrides_test.rb
|
213
216
|
- test/gtk_overrides_test.rb
|
214
217
|
- test/i_object_info_test.rb
|
215
218
|
- test/i_repository_test.rb
|