gir_ffi 0.8.3 → 0.8.4

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +9 -1
  3. data/Gemfile +1 -1
  4. data/README.md +3 -2
  5. data/lib/ffi-glib/bytes.rb +0 -14
  6. data/lib/ffi-glib/hash_table.rb +0 -1
  7. data/lib/ffi-gobject/object.rb +7 -0
  8. data/lib/ffi-gobject_introspection/i_base_info.rb +4 -0
  9. data/lib/ffi-gobject_introspection/lib.rb +1 -0
  10. data/lib/gir_ffi/boxed_base.rb +2 -2
  11. data/lib/gir_ffi/builders/callback_argument_builder.rb +3 -1
  12. data/lib/gir_ffi/builders/closure_return_value_builder.rb +0 -1
  13. data/lib/gir_ffi/builders/module_builder.rb +9 -2
  14. data/lib/gir_ffi/builders/null_class_builder.rb +1 -0
  15. data/lib/gir_ffi/builders/registered_type_builder.rb +5 -1
  16. data/lib/gir_ffi/callback_base.rb +2 -2
  17. data/lib/gir_ffi/enum_base.rb +2 -2
  18. data/lib/gir_ffi/in_out_pointer.rb +1 -1
  19. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +1 -1
  20. data/lib/gir_ffi/object_base.rb +24 -8
  21. data/lib/gir_ffi/sized_array.rb +2 -2
  22. data/lib/gir_ffi/version.rb +1 -1
  23. data/lib/gir_ffi/zero_terminated.rb +12 -1
  24. data/lib/gir_ffi-base/glib/boolean.rb +2 -2
  25. data/tasks/test.rake +25 -23
  26. data/test/base_test_helper.rb +3 -4
  27. data/test/ffi-gobject/object_test.rb +10 -4
  28. data/test/ffi-gobject_introspection/i_property_info_test.rb +3 -2
  29. data/test/gir_ffi/builders/module_builder_test.rb +26 -3
  30. data/test/gir_ffi/object_base_test.rb +2 -2
  31. data/test/integration/generated_everything_test.rb +428 -0
  32. data/test/integration/generated_gimarshallingtests_test.rb +17 -0
  33. data/test/integration/generated_gtop_test.rb +21 -0
  34. data/test/integration/generated_regress_test.rb +734 -0
  35. data/test/integration/generated_warnlib_test.rb +47 -0
  36. data/test/introspection_test_helper.rb +2 -0
  37. data/test/lib/Makefile.am +82 -16
  38. data/test/lib/configure.ac +3 -0
  39. metadata +5 -2
@@ -0,0 +1,47 @@
1
+ require 'gir_ffi_test_helper'
2
+
3
+ describe 'The generated WarnLib module' do
4
+ before do
5
+ begin
6
+ GirFFI.setup :WarnLib
7
+ rescue
8
+ skip 'WarnLib GIR not available'
9
+ end
10
+ end
11
+
12
+ describe 'WarnLib::Whatever' do
13
+ let(:derived_klass) do
14
+ Object.const_set("DerivedClass#{Sequence.next}", Class.new(GObject::Object))
15
+ end
16
+
17
+ before do
18
+ @result = nil
19
+ derived_klass.class_eval { include WarnLib::Whatever }
20
+ GirFFI.define_type derived_klass do |info|
21
+ info.install_vfunc_implementation :do_boo, proc { |obj, x, y| @result = "boo#{x}" }
22
+ info.install_vfunc_implementation :do_moo, proc { |obj, x, y| @result = "moo#{x}" }
23
+ end
24
+ end
25
+
26
+ let(:instance) { derived_klass.new }
27
+
28
+ it 'has a working method #do_boo' do
29
+ instance.do_boo 42, nil
30
+ @result.must_equal 'boo42'
31
+ end
32
+
33
+ it 'has a working method #do_moo' do
34
+ instance.do_moo 23, nil
35
+ @result.must_equal 'moo23'
36
+ end
37
+ end
38
+
39
+ it 'has a working function #throw_unpaired' do
40
+ proc { WarnLib.throw_unpaired }.must_raise GirFFI::GLibError
41
+ end
42
+
43
+ it 'has a working function #unpaired_error_quark' do
44
+ result = WarnLib.unpaired_error_quark
45
+ GLib.quark_to_string(result).must_equal 'warnlib-unpaired-error'
46
+ end
47
+ end
@@ -3,6 +3,8 @@ require 'base_test_helper'
3
3
  require 'ffi-gobject_introspection'
4
4
 
5
5
  module IntrospectionTestExtensions
6
+ module_function
7
+
6
8
  def get_introspection_data(namespace, name)
7
9
  gir = GObjectIntrospection::IRepository.default
8
10
  gir.require namespace, nil
data/test/lib/Makefile.am CHANGED
@@ -3,32 +3,58 @@ 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 libgimarshallingtests.la
6
+ testlib_LTLIBRARIES = \
7
+ libeverything.la \
8
+ libgimarshallingtests.la libregress.la libutility.la libwarnlib.la
7
9
 
8
10
  testlibdir = $(prefix)/unused
11
+ GI_TESTDIR = $(GI_DATADIR)/tests
9
12
  install-testlibLTLIBRARIES: # prevent it from being installed
10
13
 
11
- libregress_la_SOURCES = $(GI_DATADIR)/tests/regress.c $(GI_DATADIR)/tests/regress.h
12
- libregress_la_CFLAGS = $(GIO_CFLAGS) $(CAIRO_CFLAGS)
13
- libregress_la_LDFLAGS = -module -avoid-version $(GIO_LIBS) $(CAIRO_LIBS)
14
+ libeverything_la_SOURCES = $(GI_DATADIR)/tests/everything.c $(GI_DATADIR)/tests/everything.h
15
+ libeverything_la_CFLAGS = $(GLIB_CFLAGS)
16
+ libeverything_la_LDFLAGS = -module -avoid-version
14
17
 
15
18
  libgimarshallingtests_la_SOURCES = $(GI_DATADIR)/tests/gimarshallingtests.c $(GI_DATADIR)/tests/gimarshallingtests.h
16
19
  libgimarshallingtests_la_CFLAGS = $(GIO_CFLAGS)
17
20
  libgimarshallingtests_la_LDFLAGS = -module -avoid-version
18
21
 
19
- # g-i doesn't ship these as shared libraries anymore; we build them here
20
- Regress-1.0.gir: libregress.la Makefile
21
- $(AM_V_GEN) g-ir-scanner --include=cairo-1.0 --include=Gio-2.0 \
22
- --namespace=Regress --nsversion=1.0 --pkg=cairo-gobject \
22
+ libregress_la_SOURCES = $(GI_TESTDIR)/regress.c $(GI_TESTDIR)/regress.h
23
+
24
+ if HAVE_EXTRA_TEST_FILES
25
+ libregress_la_SOURCES += \
26
+ $(GI_TESTDIR)/annotation.c $(GI_TESTDIR)/annotation.h \
27
+ $(GI_TESTDIR)/foo.c $(GI_TESTDIR)/foo.h \
28
+ $(GI_TESTDIR)/drawable.c $(GI_TESTDIR)/drawable.h
29
+ endif
30
+
31
+ libregress_la_CFLAGS = $(GIO_CFLAGS) $(CAIRO_CFLAGS)
32
+ libregress_la_LDFLAGS = -module -avoid-version $(GIO_LIBS) $(CAIRO_LIBS)
33
+
34
+ if HAVE_EXTRA_TEST_FILES
35
+ libutility_la_SOURCES = $(GI_DATADIR)/tests/utility.c $(GI_DATADIR)/tests/utility.h \
36
+ $(GI_DATADIR)/tests/gitestmacros.h
37
+ libutility_la_CFLAGS = $(GLIB_CFLAGS)
38
+ libutility_la_LDFLAGS = -module -avoid-version
39
+
40
+ libwarnlib_la_SOURCES = $(GI_DATADIR)/tests/warnlib.c $(GI_DATADIR)/tests/warnlib.h \
41
+ $(GI_DATADIR)/tests/gitestmacros.h
42
+ libwarnlib_la_CFLAGS = $(GIO_CFLAGS)
43
+ libwarnlib_la_LDFLAGS = -module -avoid-version
44
+ endif
45
+
46
+ GIRS = Everything-1.0.gir GIMarshallingTests-1.0.gir Regress-1.0.gir
47
+
48
+ Everything-1.0.gir: libeverything.la
49
+ $(AM_V_GEN) g-ir-scanner --include=GLib-2.0 \
50
+ --namespace=$(@:-1.0.gir=) --nsversion=1.0 \
23
51
  --warn-all --warn-error \
24
- --library=libregress.la \
25
- --libtool="$(top_builddir)/libtool" \
26
- --output $@ \
27
- $(libregress_la_SOURCES)
28
- Regress-1.0.typelib: Regress-1.0.gir Makefile
52
+ --library=$< --libtool="$(top_builddir)/libtool" \
53
+ --output $@ $(libeverything_la_SOURCES)
54
+ Everything-1.0.typelib: Everything-1.0.gir
29
55
  $(AM_V_GEN) g-ir-compiler $< -o $@
30
56
 
31
- GIMarshallingTests-1.0.gir: libgimarshallingtests.la Makefile
57
+ GIMarshallingTests-1.0.gir: libgimarshallingtests.la
32
58
  $(AM_V_GEN) g-ir-scanner --include=Gio-2.0 \
33
59
  --namespace=GIMarshallingTests --nsversion=1.0 \
34
60
  --symbol-prefix=gi_marshalling_tests \
@@ -37,10 +63,50 @@ GIMarshallingTests-1.0.gir: libgimarshallingtests.la Makefile
37
63
  --libtool="$(top_builddir)/libtool" \
38
64
  --output $@ \
39
65
  $(libgimarshallingtests_la_SOURCES)
40
- GIMarshallingTests-1.0.typelib: GIMarshallingTests-1.0.gir Makefile
66
+ GIMarshallingTests-1.0.typelib: GIMarshallingTests-1.0.gir
67
+ $(AM_V_GEN) g-ir-compiler $< -o $@
68
+
69
+ regress_SCANNER_INCLUDES= --include=cairo-1.0 --include=Gio-2.0
70
+
71
+ Regress-1.0.gir: libregress.la
72
+ $(AM_V_GEN) g-ir-scanner $(regress_SCANNER_INCLUDES) \
73
+ --namespace=Regress --nsversion=1.0 --pkg=cairo-gobject \
74
+ --warn-all --warn-error \
75
+ --library=libregress.la \
76
+ --libtool="$(top_builddir)/libtool" \
77
+ --output $@ \
78
+ $(libregress_la_SOURCES)
79
+ Regress-1.0.typelib: Regress-1.0.gir
80
+ $(AM_V_GEN) g-ir-compiler --includedir=. $< -o $@
81
+
82
+ if HAVE_EXTRA_TEST_FILES
83
+
84
+ GIRS += Utility-1.0.gir WarnLib-1.0.gir
85
+ Regress-1.0.gir: Utility-1.0.gir
86
+ regress_SCANNER_INCLUDES += --include-uninstalled=Utility-1.0.gir
87
+
88
+ Utility-1.0.gir: libutility.la
89
+ $(AM_V_GEN) g-ir-scanner --include=GLib-2.0 \
90
+ --namespace=$(@:-1.0.gir=) --nsversion=1.0 \
91
+ --warn-all --warn-error \
92
+ --library=$< --libtool="$(top_builddir)/libtool" \
93
+ --output $@ $(libutility_la_SOURCES)
94
+ Utility-1.0.typelib: Utility-1.0.gir
41
95
  $(AM_V_GEN) g-ir-compiler $< -o $@
42
96
 
97
+ WarnLib-1.0.gir: libwarnlib.la
98
+ $(AM_V_GEN) g-ir-scanner --include=Gio-2.0 \
99
+ --namespace=$(@:-1.0.gir=) --nsversion=1.0 \
100
+ --symbol-prefix=warnlib \
101
+ --warn-all \
102
+ --library=$< --libtool="$(top_builddir)/libtool" \
103
+ --output $@ $(libwarnlib_la_SOURCES)
104
+ WarnLib-1.0.typelib: WarnLib-1.0.gir
105
+ $(AM_V_GEN) g-ir-compiler $< -o $@
106
+
107
+ endif
108
+
43
109
  .la.so:
44
110
  test -L $@ || $(LN_S) .libs/$@ $@
45
111
 
46
- all: $(testlib_LTLIBRARIES:.la=.so) Regress-1.0.typelib GIMarshallingTests-1.0.typelib
112
+ all: $(testlib_LTLIBRARIES:.la=.so) $(GIRS:.gir=.typelib)
@@ -22,10 +22,13 @@ if test "$GCC" = "yes"; then
22
22
  fi
23
23
 
24
24
  PKG_CHECK_MODULES(GIO, [gio-2.0])
25
+ PKG_CHECK_MODULES(GLIB, [glib-2.0])
25
26
  PKG_CHECK_MODULES(CAIRO, [cairo])
26
27
 
27
28
  GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0)
28
29
  AC_SUBST(GI_DATADIR)
30
+ AC_CHECK_FILE($GI_DATADIR/tests/annotation.c, have_annotation=true, have_annotation=false)
31
+ AM_CONDITIONAL(HAVE_EXTRA_TEST_FILES, test x$have_annotation = xtrue)
29
32
 
30
33
  AC_CONFIG_FILES([Makefile])
31
34
  AC_OUTPUT
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gir_ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matijs van Zuijlen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-13 00:00:00.000000000 Z
11
+ date: 2015-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -347,14 +347,17 @@ files:
347
347
  - test/gir_ffi_test.rb
348
348
  - test/gir_ffi_test_helper.rb
349
349
  - test/integration/derived_classes_test.rb
350
+ - test/integration/generated_everything_test.rb
350
351
  - test/integration/generated_gimarshallingtests_test.rb
351
352
  - test/integration/generated_gio_test.rb
352
353
  - test/integration/generated_glib_test.rb
353
354
  - test/integration/generated_gobject_test.rb
355
+ - test/integration/generated_gtop_test.rb
354
356
  - test/integration/generated_pango_ft2_test.rb
355
357
  - test/integration/generated_pango_test.rb
356
358
  - test/integration/generated_regress_test.rb
357
359
  - test/integration/generated_secret_test.rb
360
+ - test/integration/generated_warnlib_test.rb
358
361
  - test/integration/method_lookup_test.rb
359
362
  - test/introspection_test_helper.rb
360
363
  - test/lib/Makefile.am