gir_ffi 0.7.7 → 0.7.8
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 +4 -4
- data/Changelog.md +9 -0
- data/lib/ffi-glib/array.rb +1 -1
- data/lib/ffi-glib/error.rb +1 -2
- data/lib/ffi-glib/hash_table.rb +2 -2
- data/lib/ffi-glib/variant.rb +1 -1
- data/lib/ffi-gobject/base.rb +23 -23
- data/lib/ffi-gobject/object.rb +7 -3
- data/lib/ffi-gobject/value.rb +6 -1
- data/lib/ffi-gobject.rb +9 -6
- data/lib/ffi-gobject_introspection/i_base_info.rb +3 -3
- data/lib/ffi-gobject_introspection/i_constant_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_repository.rb +4 -1
- data/lib/ffi-gobject_introspection/i_type_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_unresolved_info.rb +7 -0
- data/lib/ffi-gobject_introspection/lib.rb +1 -1
- data/lib/gir_ffi/builders/argument_builder.rb +1 -1
- data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +37 -29
- data/lib/gir_ffi/builders/callback_argument_builder.rb +57 -27
- data/lib/gir_ffi/builders/closure_convertor.rb +12 -8
- data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +12 -8
- data/lib/gir_ffi/builders/constructor_result_convertor.rb +11 -7
- data/lib/gir_ffi/builders/field_builder.rb +1 -1
- data/lib/gir_ffi/builders/function_builder.rb +1 -1
- data/lib/gir_ffi/builders/mapping_method_builder.rb +1 -1
- data/lib/gir_ffi/builders/marshalling_method_builder.rb +2 -2
- data/lib/gir_ffi/builders/method_template.rb +1 -1
- data/lib/gir_ffi/builders/null_convertor.rb +11 -7
- data/lib/gir_ffi/builders/property_builder.rb +1 -1
- data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +17 -13
- data/lib/gir_ffi/error_argument_info.rb +1 -1
- data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
- data/lib/gir_ffi/info_ext/i_unresolved_info.rb +12 -0
- data/lib/gir_ffi/info_ext/safe_constant_name.rb +2 -2
- data/lib/gir_ffi/info_ext/safe_function_name.rb +1 -1
- data/lib/gir_ffi/info_ext.rb +1 -0
- data/lib/gir_ffi/module_base.rb +1 -1
- data/lib/gir_ffi/receiver_argument_info.rb +15 -12
- data/lib/gir_ffi/user_data_argument_info.rb +17 -15
- data/lib/gir_ffi/user_data_type_info.rb +14 -12
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi-base/gobject/lib.rb +1 -1
- data/test/base_test_helper.rb +15 -15
- data/test/ffi-glib/array_test.rb +38 -38
- data/test/ffi-glib/byte_array_test.rb +6 -7
- data/test/ffi-glib/bytes_test.rb +9 -9
- data/test/ffi-glib/hash_table_test.rb +26 -23
- data/test/ffi-glib/iconv_test.rb +5 -5
- data/test/ffi-glib/list_test.rb +16 -16
- data/test/ffi-glib/main_loop_test.rb +6 -6
- data/test/ffi-glib/ptr_array_test.rb +45 -45
- data/test/ffi-glib/ruby_closure_test.rb +6 -6
- data/test/ffi-glib/s_list_test.rb +15 -15
- data/test/ffi-glib/strv_test.rb +21 -21
- data/test/ffi-glib/variant_test.rb +4 -4
- data/test/ffi-gobject/gobject_test.rb +35 -35
- data/test/ffi-gobject/object_class_test.rb +1 -1
- data/test/ffi-gobject/object_test.rb +29 -6
- data/test/ffi-gobject/value_test.rb +66 -52
- data/test/ffi-gobject_introspection/i_base_info_test.rb +10 -11
- data/test/ffi-gobject_introspection/i_constant_info_test.rb +6 -6
- data/test/ffi-gobject_introspection/i_enum_info_test.rb +4 -5
- data/test/ffi-gobject_introspection/i_function_info_test.rb +0 -2
- data/test/ffi-gobject_introspection/i_object_info_test.rb +5 -5
- data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +9 -8
- data/test/ffi-gobject_introspection/i_repository_test.rb +16 -16
- data/test/ffi-gobject_introspection/i_type_info_test.rb +16 -2
- data/test/ffi-gobject_introspection/lib_test.rb +2 -2
- data/test/ffi-gobject_test.rb +50 -40
- data/test/gir_ffi/arg_helper_test.rb +5 -5
- data/test/gir_ffi/builder_test.rb +41 -41
- data/test/gir_ffi/builders/argument_builder_test.rb +240 -207
- data/test/gir_ffi/builders/base_argument_builder_test.rb +0 -1
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +81 -15
- data/test/gir_ffi/builders/callback_builder_test.rb +39 -14
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +41 -33
- data/test/gir_ffi/builders/enum_builder_test.rb +3 -3
- data/test/gir_ffi/builders/field_builder_test.rb +17 -17
- data/test/gir_ffi/builders/function_builder_test.rb +16 -16
- data/test/gir_ffi/builders/interface_builder_test.rb +9 -7
- data/test/gir_ffi/builders/module_builder_test.rb +5 -6
- data/test/gir_ffi/builders/object_builder_test.rb +24 -19
- data/test/gir_ffi/builders/property_builder_test.rb +25 -23
- data/test/gir_ffi/builders/registered_type_builder_test.rb +11 -11
- data/test/gir_ffi/builders/return_value_builder_test.rb +237 -197
- data/test/gir_ffi/builders/signal_closure_builder_test.rb +29 -22
- data/test/gir_ffi/builders/struct_builder_test.rb +10 -10
- data/test/gir_ffi/builders/unintrospectable_builder_test.rb +8 -8
- data/test/gir_ffi/builders/union_builder_test.rb +5 -6
- data/test/gir_ffi/builders/user_defined_builder_test.rb +42 -33
- data/test/gir_ffi/builders/vfunc_builder_test.rb +37 -30
- data/test/gir_ffi/callback_base_test.rb +4 -5
- data/test/gir_ffi/class_base_test.rb +35 -28
- data/test/gir_ffi/error_type_info_test.rb +14 -14
- data/test/gir_ffi/ffi_ext/pointer_test.rb +4 -4
- data/test/gir_ffi/g_type_test.rb +6 -6
- data/test/gir_ffi/in_out_pointer_test.rb +27 -27
- data/test/gir_ffi/in_pointer_test.rb +54 -50
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +8 -7
- data/test/gir_ffi/info_ext/i_callback_info_test.rb +7 -7
- data/test/gir_ffi/info_ext/i_field_info_test.rb +10 -8
- data/test/gir_ffi/info_ext/i_function_info_test.rb +17 -15
- data/test/gir_ffi/info_ext/i_signal_info_test.rb +10 -8
- data/test/gir_ffi/info_ext/i_type_info_test.rb +158 -155
- data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +17 -0
- data/test/gir_ffi/info_ext/safe_constant_name_test.rb +12 -10
- data/test/gir_ffi/info_ext/safe_function_name_test.rb +12 -10
- data/test/gir_ffi/interface_base_test.rb +6 -6
- data/test/gir_ffi/method_stubber_test.rb +16 -13
- data/test/gir_ffi/object_base_test.rb +6 -6
- data/test/gir_ffi/sized_array_test.rb +23 -23
- data/test/gir_ffi/type_map_test.rb +3 -3
- data/test/gir_ffi/unintrospectable_type_info_test.rb +18 -18
- data/test/gir_ffi/user_defined_property_info_test.rb +4 -4
- data/test/gir_ffi/user_defined_type_info_test.rb +16 -16
- data/test/gir_ffi/variable_name_generator_test.rb +6 -6
- data/test/gir_ffi/version_test.rb +1 -1
- data/test/gir_ffi/zero_terminated_test.rb +16 -17
- data/test/gir_ffi-base/glib/boolean_test.rb +13 -13
- data/test/gir_ffi-base/glib/strv_test.rb +11 -11
- data/test/gir_ffi_test.rb +18 -18
- data/test/gir_ffi_test_helper.rb +13 -18
- data/test/integration/derived_classes_test.rb +8 -8
- data/test/integration/generated_gimarshallingtests_test.rb +794 -792
- data/test/integration/generated_gio_test.rb +25 -26
- data/test/integration/generated_glib_test.rb +8 -2
- data/test/integration/generated_gobject_test.rb +16 -9
- data/test/integration/generated_pango_ft2_test.rb +1 -2
- data/test/integration/generated_pango_test.rb +2 -2
- data/test/integration/generated_regress_test.rb +785 -705
- data/test/integration/generated_secret_test.rb +5 -5
- data/test/integration/method_lookup_test.rb +5 -5
- data/test/introspection_test_helper.rb +3 -1
- data/test/minitest/stats_plugin.rb +3 -3
- metadata +6 -3
| @@ -1,10 +1,14 @@ | |
| 1 1 | 
             
            require 'gir_ffi_test_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe GirFFI::Builders::ObjectBuilder do
         | 
| 4 | 
            -
              let(:obj_builder) { | 
| 5 | 
            -
                 | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 4 | 
            +
              let(:obj_builder) {
         | 
| 5 | 
            +
                GirFFI::Builders::ObjectBuilder.new(
         | 
| 6 | 
            +
                get_introspection_data('Regress', 'TestObj'))
         | 
| 7 | 
            +
              }
         | 
| 8 | 
            +
              let(:sub_obj_builder) {
         | 
| 9 | 
            +
                GirFFI::Builders::ObjectBuilder.new(
         | 
| 10 | 
            +
                get_introspection_data('Regress', 'TestSubObj'))
         | 
| 11 | 
            +
              }
         | 
| 8 12 |  | 
| 9 13 | 
             
              describe '#find_signal' do
         | 
| 10 14 | 
             
                it 'finds the signal "test" for TestObj' do
         | 
| @@ -34,37 +38,38 @@ describe GirFFI::Builders::ObjectBuilder do | |
| 34 38 | 
             
                end
         | 
| 35 39 | 
             
              end
         | 
| 36 40 |  | 
| 37 | 
            -
              describe  | 
| 38 | 
            -
                it  | 
| 39 | 
            -
                  prop = obj_builder.find_property( | 
| 40 | 
            -
                  prop.name.must_equal  | 
| 41 | 
            +
              describe '#find_property' do
         | 
| 42 | 
            +
                it 'finds a property specified on the class itself' do
         | 
| 43 | 
            +
                  prop = obj_builder.find_property('int')
         | 
| 44 | 
            +
                  prop.name.must_equal 'int'
         | 
| 41 45 | 
             
                end
         | 
| 42 46 |  | 
| 43 | 
            -
                it  | 
| 44 | 
            -
                  prop = sub_obj_builder.find_property( | 
| 45 | 
            -
                  prop.name.must_equal  | 
| 47 | 
            +
                it 'finds a property specified on the parent class' do
         | 
| 48 | 
            +
                  prop = sub_obj_builder.find_property('int')
         | 
| 49 | 
            +
                  prop.name.must_equal 'int'
         | 
| 46 50 | 
             
                end
         | 
| 47 51 |  | 
| 48 | 
            -
                it  | 
| 52 | 
            +
                it 'raises an error if the property is not found' do
         | 
| 49 53 | 
             
                  proc {
         | 
| 50 | 
            -
                    sub_obj_builder.find_property( | 
| 51 | 
            -
                  }.must_raise RuntimeError | 
| 54 | 
            +
                    sub_obj_builder.find_property('this-property-does-not-exist')
         | 
| 55 | 
            +
                  }.must_raise RuntimeError
         | 
| 52 56 | 
             
                end
         | 
| 53 57 | 
             
              end
         | 
| 54 58 |  | 
| 55 | 
            -
              describe  | 
| 59 | 
            +
              describe '#function_definition' do
         | 
| 56 60 | 
             
                let(:method_info) {
         | 
| 57 | 
            -
                  get_method_introspection_data 'Regress', 'TestObj', 'instance_method' | 
| 61 | 
            +
                  get_method_introspection_data 'Regress', 'TestObj', 'instance_method'
         | 
| 62 | 
            +
                }
         | 
| 58 63 |  | 
| 59 | 
            -
                it  | 
| 64 | 
            +
                it 'delegates definition to FunctionBuilder' do
         | 
| 60 65 | 
             
                  code = obj_builder.send :function_definition, method_info
         | 
| 61 66 | 
             
                  expected = GirFFI::Builders::FunctionBuilder.new(method_info).generate
         | 
| 62 67 | 
             
                  code.must_equal expected
         | 
| 63 68 | 
             
                end
         | 
| 64 69 | 
             
              end
         | 
| 65 70 |  | 
| 66 | 
            -
              describe  | 
| 67 | 
            -
                it  | 
| 71 | 
            +
              describe '#object_class_struct' do
         | 
| 72 | 
            +
                it 'returns the class struct type' do
         | 
| 68 73 | 
             
                  obj_builder.object_class_struct.must_equal Regress::TestObjClass
         | 
| 69 74 | 
             
                end
         | 
| 70 75 | 
             
              end
         | 
| @@ -3,9 +3,9 @@ require 'gir_ffi_test_helper' | |
| 3 3 | 
             
            describe GirFFI::Builders::PropertyBuilder do
         | 
| 4 4 | 
             
              let(:builder) { GirFFI::Builders::PropertyBuilder.new property_info }
         | 
| 5 5 |  | 
| 6 | 
            -
              describe  | 
| 7 | 
            -
                let(:property_info) { get_property_introspection_data( | 
| 8 | 
            -
                it  | 
| 6 | 
            +
              describe 'for a property of type :glist' do
         | 
| 7 | 
            +
                let(:property_info) { get_property_introspection_data('Regress', 'TestObj', 'list') }
         | 
| 8 | 
            +
                it 'generates the correct getter definition' do
         | 
| 9 9 | 
             
                  expected = <<-CODE.reset_indentation
         | 
| 10 10 | 
             
                  def list
         | 
| 11 11 | 
             
                    _v1 = get_property("list").get_value_plain
         | 
| @@ -17,7 +17,7 @@ describe GirFFI::Builders::PropertyBuilder do | |
| 17 17 | 
             
                  builder.getter_def.must_equal expected
         | 
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 | 
            -
                it  | 
| 20 | 
            +
                it 'generates the correct setter definition' do
         | 
| 21 21 | 
             
                  expected = <<-CODE.reset_indentation
         | 
| 22 22 | 
             
                  def list= value
         | 
| 23 23 | 
             
                    _v1 = GLib::List.from(:utf8, value)
         | 
| @@ -29,9 +29,9 @@ describe GirFFI::Builders::PropertyBuilder do | |
| 29 29 | 
             
                end
         | 
| 30 30 | 
             
              end
         | 
| 31 31 |  | 
| 32 | 
            -
              describe  | 
| 33 | 
            -
                let(:property_info) { get_property_introspection_data( | 
| 34 | 
            -
                it  | 
| 32 | 
            +
              describe 'for a property of type :ghash' do
         | 
| 33 | 
            +
                let(:property_info) { get_property_introspection_data('Regress', 'TestObj', 'hash-table') }
         | 
| 34 | 
            +
                it 'generates the correct getter definition' do
         | 
| 35 35 | 
             
                  expected = <<-CODE.reset_indentation
         | 
| 36 36 | 
             
                  def hash_table
         | 
| 37 37 | 
             
                    _v1 = get_property("hash-table").get_value_plain
         | 
| @@ -43,7 +43,7 @@ describe GirFFI::Builders::PropertyBuilder do | |
| 43 43 | 
             
                  builder.getter_def.must_equal expected
         | 
| 44 44 | 
             
                end
         | 
| 45 45 |  | 
| 46 | 
            -
                it  | 
| 46 | 
            +
                it 'generates the correct setter definition' do
         | 
| 47 47 | 
             
                  expected = <<-CODE.reset_indentation
         | 
| 48 48 | 
             
                  def hash_table= value
         | 
| 49 49 | 
             
                    _v1 = GLib::HashTable.from([:utf8, :gint8], value)
         | 
| @@ -55,15 +55,17 @@ describe GirFFI::Builders::PropertyBuilder do | |
| 55 55 | 
             
                end
         | 
| 56 56 | 
             
              end
         | 
| 57 57 |  | 
| 58 | 
            -
              describe  | 
| 59 | 
            -
                let(:property_info) { | 
| 60 | 
            -
             | 
| 61 | 
            -
                                                                       | 
| 58 | 
            +
              describe 'for a property of type :strv' do
         | 
| 59 | 
            +
                let(:property_info) {
         | 
| 60 | 
            +
                  get_property_introspection_data('GIMarshallingTests',
         | 
| 61 | 
            +
                                                                      'PropertiesObject',
         | 
| 62 | 
            +
                                                                      'some-strv')
         | 
| 63 | 
            +
                }
         | 
| 62 64 | 
             
                before do
         | 
| 63 65 | 
             
                  skip unless property_info
         | 
| 64 66 | 
             
                end
         | 
| 65 67 |  | 
| 66 | 
            -
                it  | 
| 68 | 
            +
                it 'generates the correct getter definition' do
         | 
| 67 69 | 
             
                  expected = <<-CODE.reset_indentation
         | 
| 68 70 | 
             
                  def some_strv
         | 
| 69 71 | 
             
                    get_property("some-strv").get_value
         | 
| @@ -73,7 +75,7 @@ describe GirFFI::Builders::PropertyBuilder do | |
| 73 75 | 
             
                  builder.getter_def.must_equal expected
         | 
| 74 76 | 
             
                end
         | 
| 75 77 |  | 
| 76 | 
            -
                it  | 
| 78 | 
            +
                it 'generates the correct setter definition' do
         | 
| 77 79 | 
             
                  expected = <<-CODE.reset_indentation
         | 
| 78 80 | 
             
                  def some_strv= value
         | 
| 79 81 | 
             
                    _v1 = GLib::Strv.from(value)
         | 
| @@ -85,9 +87,9 @@ describe GirFFI::Builders::PropertyBuilder do | |
| 85 87 | 
             
                end
         | 
| 86 88 | 
             
              end
         | 
| 87 89 |  | 
| 88 | 
            -
              describe  | 
| 89 | 
            -
                let(:property_info) { get_property_introspection_data( | 
| 90 | 
            -
                it  | 
| 90 | 
            +
              describe 'for a property of type :utf8' do
         | 
| 91 | 
            +
                let(:property_info) { get_property_introspection_data('Regress', 'TestObj', 'string') }
         | 
| 92 | 
            +
                it 'generates the correct getter definition' do
         | 
| 91 93 | 
             
                  expected = <<-CODE.reset_indentation
         | 
| 92 94 | 
             
                  def string
         | 
| 93 95 | 
             
                    get_property("string").get_value
         | 
| @@ -97,7 +99,7 @@ describe GirFFI::Builders::PropertyBuilder do | |
| 97 99 | 
             
                  builder.getter_def.must_equal expected
         | 
| 98 100 | 
             
                end
         | 
| 99 101 |  | 
| 100 | 
            -
                it  | 
| 102 | 
            +
                it 'generates the correct setter definition' do
         | 
| 101 103 | 
             
                  expected = <<-CODE.reset_indentation
         | 
| 102 104 | 
             
                  def string= value
         | 
| 103 105 | 
             
                    set_property("string", value)
         | 
| @@ -108,17 +110,17 @@ describe GirFFI::Builders::PropertyBuilder do | |
| 108 110 | 
             
                end
         | 
| 109 111 | 
             
              end
         | 
| 110 112 |  | 
| 111 | 
            -
              describe  | 
| 112 | 
            -
                let(:property_info) { Object.new.tap {|o| o.extend GirFFI::InfoExt::IPropertyInfo } }
         | 
| 113 | 
            +
              describe '#container_defines_getter_method?' do
         | 
| 114 | 
            +
                let(:property_info) { Object.new.tap { |o| o.extend GirFFI::InfoExt::IPropertyInfo } }
         | 
| 113 115 | 
             
                let(:container_info) { Object.new }
         | 
| 114 116 |  | 
| 115 117 | 
             
                before do
         | 
| 116 118 | 
             
                  stub(property_info).container { container_info }
         | 
| 117 | 
            -
                  stub(property_info).name {  | 
| 118 | 
            -
                  stub(container_info).find_instance_method( | 
| 119 | 
            +
                  stub(property_info).name { 'foo-bar' }
         | 
| 120 | 
            +
                  stub(container_info).find_instance_method('foo_bar') { true }
         | 
| 119 121 | 
             
                end
         | 
| 120 122 |  | 
| 121 | 
            -
                it  | 
| 123 | 
            +
                it 'finds methods with underscores for properties with dashes' do
         | 
| 122 124 | 
             
                  builder.container_defines_getter_method?.must_equal true
         | 
| 123 125 | 
             
                end
         | 
| 124 126 | 
             
              end
         | 
| @@ -3,28 +3,28 @@ require 'gir_ffi_test_helper' | |
| 3 3 | 
             
            GirFFI.setup :Regress
         | 
| 4 4 |  | 
| 5 5 | 
             
            describe GirFFI::Builders::RegisteredTypeBuilder do
         | 
| 6 | 
            -
              describe  | 
| 7 | 
            -
                it  | 
| 8 | 
            -
                  Regress::TestObj.class_eval { remove_method  | 
| 6 | 
            +
              describe '#setup_instance_method' do
         | 
| 7 | 
            +
                it 'restores a method that was removed' do
         | 
| 8 | 
            +
                  Regress::TestObj.class_eval { remove_method 'instance_method' }
         | 
| 9 9 |  | 
| 10 10 | 
             
                  builder = Regress::TestObj.gir_ffi_builder
         | 
| 11 11 |  | 
| 12 | 
            -
                  builder.setup_instance_method  | 
| 12 | 
            +
                  builder.setup_instance_method 'instance_method'
         | 
| 13 13 |  | 
| 14 14 | 
             
                  obj = Regress::TestObj.constructor
         | 
| 15 | 
            -
                  obj.must_respond_to  | 
| 15 | 
            +
                  obj.must_respond_to 'instance_method'
         | 
| 16 16 | 
             
                end
         | 
| 17 17 |  | 
| 18 | 
            -
                it  | 
| 18 | 
            +
                it 'returns the name of the generated method' do
         | 
| 19 19 | 
             
                  builder = Regress::TestObj.gir_ffi_builder
         | 
| 20 | 
            -
                  result = builder.setup_instance_method  | 
| 21 | 
            -
                  result.must_equal  | 
| 20 | 
            +
                  result = builder.setup_instance_method 'instance_method'
         | 
| 21 | 
            +
                  result.must_equal 'instance_method'
         | 
| 22 22 | 
             
                end
         | 
| 23 23 |  | 
| 24 | 
            -
                it  | 
| 24 | 
            +
                it 'returns the name of the generated method if different from the info name' do
         | 
| 25 25 | 
             
                  builder = GLib::IConv.gir_ffi_builder
         | 
| 26 | 
            -
                  result = builder.setup_instance_method  | 
| 27 | 
            -
                  result.must_equal  | 
| 26 | 
            +
                  result = builder.setup_instance_method ''
         | 
| 27 | 
            +
                  result.must_equal '_'
         | 
| 28 28 | 
             
                end
         | 
| 29 29 | 
             
              end
         | 
| 30 30 | 
             
            end
         |