ffi-yajl 2.2.3-universal-java → 2.4.0-universal-java
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 +5 -5
 - data/README.md +37 -74
 - data/bin/ffi-yajl-bench +7 -7
 - data/ext/ffi_yajl/ext/dlopen/extconf.rb +5 -5
 - data/ext/ffi_yajl/ext/encoder/encoder.c +4 -0
 - data/ext/ffi_yajl/ext/encoder/extconf.rb +14 -14
 - data/ext/ffi_yajl/ext/parser/extconf.rb +14 -14
 - data/lib/ffi_yajl.rb +7 -7
 - data/lib/ffi_yajl/benchmark.rb +5 -5
 - data/lib/ffi_yajl/benchmark/encode.rb +8 -8
 - data/lib/ffi_yajl/benchmark/encode_json_and_marshal.rb +9 -9
 - data/lib/ffi_yajl/benchmark/encode_json_and_yaml.rb +11 -11
 - data/lib/ffi_yajl/benchmark/encode_profile.rb +5 -5
 - data/lib/ffi_yajl/benchmark/http.rb +12 -12
 - data/lib/ffi_yajl/benchmark/parse.rb +8 -8
 - data/lib/ffi_yajl/benchmark/parse_json_and_marshal.rb +10 -10
 - data/lib/ffi_yajl/benchmark/parse_json_and_yaml.rb +11 -11
 - data/lib/ffi_yajl/benchmark/parse_profile.rb +5 -5
 - data/lib/ffi_yajl/benchmark/parse_profile_ruby_prof.rb +4 -4
 - data/lib/ffi_yajl/benchmark/parse_stream.rb +11 -11
 - data/lib/ffi_yajl/encoder.rb +2 -2
 - data/lib/ffi_yajl/ext.rb +9 -9
 - data/lib/ffi_yajl/ffi.rb +36 -36
 - data/lib/ffi_yajl/ffi/encoder.rb +10 -26
 - data/lib/ffi_yajl/ffi/parser.rb +14 -13
 - data/lib/ffi_yajl/map_library_name.rb +6 -6
 - data/lib/ffi_yajl/parser.rb +2 -2
 - data/lib/ffi_yajl/version.rb +2 -2
 - metadata +11 -87
 - data/Rakefile +0 -179
 - data/spec/ffi_yajl/encoder_spec.rb +0 -221
 - data/spec/ffi_yajl/map_library_name_spec.rb +0 -115
 - data/spec/ffi_yajl/parser_spec.rb +0 -569
 - data/spec/spec_helper.rb +0 -45
 
    
        data/lib/ffi_yajl/ffi/encoder.rb
    CHANGED
    
    | 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Copyright (c) 2015 Lamont Granquist
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c) 2015 Chef Software 
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (c) 2015-2017, Chef Software Inc.
         
     | 
| 
       3 
3 
     | 
    
         
             
            #
         
     | 
| 
       4 
4 
     | 
    
         
             
            # Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
       5 
5 
     | 
    
         
             
            # a copy of this software and associated documentation files (the
         
     | 
| 
         @@ -20,8 +20,8 @@ 
     | 
|
| 
       20 
20 
     | 
    
         
             
            # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
       21 
21 
     | 
    
         
             
            # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
            require  
     | 
| 
       24 
     | 
    
         
            -
            require  
     | 
| 
      
 23 
     | 
    
         
            +
            require "date"
         
     | 
| 
      
 24 
     | 
    
         
            +
            require "stringio" unless defined?(StringIO)
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
            module FFI_Yajl
         
     | 
| 
       27 
27 
     | 
    
         
             
              module FFI
         
     | 
| 
         @@ -73,7 +73,7 @@ class Hash 
     | 
|
| 
       73 
73 
     | 
    
         
             
                  end
         
     | 
| 
       74 
74 
     | 
    
         
             
                else
         
     | 
| 
       75 
75 
     | 
    
         
             
                  if ( status = FFI_Yajl.yajl_gen_map_open(yajl_gen) ) != 0
         
     | 
| 
       76 
     | 
    
         
            -
                    FFI_Yajl::Encoder.raise_error_for_status(status,  
     | 
| 
      
 76 
     | 
    
         
            +
                    FFI_Yajl::Encoder.raise_error_for_status(status, "{")
         
     | 
| 
       77 
77 
     | 
    
         
             
                  end
         
     | 
| 
       78 
78 
     | 
    
         
             
                  each do |key, value|
         
     | 
| 
       79 
79 
     | 
    
         
             
                    # Perf Fix: mutate state hash rather than creating new copy
         
     | 
| 
         @@ -83,7 +83,7 @@ class Hash 
     | 
|
| 
       83 
83 
     | 
    
         
             
                    value.ffi_yajl(yajl_gen, state)
         
     | 
| 
       84 
84 
     | 
    
         
             
                  end
         
     | 
| 
       85 
85 
     | 
    
         
             
                  if ( status = FFI_Yajl.yajl_gen_map_close(yajl_gen) ) != 0
         
     | 
| 
       86 
     | 
    
         
            -
                    FFI_Yajl::Encoder.raise_error_for_status(status,  
     | 
| 
      
 86 
     | 
    
         
            +
                    FFI_Yajl::Encoder.raise_error_for_status(status, "}")
         
     | 
| 
       87 
87 
     | 
    
         
             
                  end
         
     | 
| 
       88 
88 
     | 
    
         
             
                end
         
     | 
| 
       89 
89 
     | 
    
         
             
              end
         
     | 
| 
         @@ -98,13 +98,13 @@ class Array 
     | 
|
| 
       98 
98 
     | 
    
         
             
                  end
         
     | 
| 
       99 
99 
     | 
    
         
             
                else
         
     | 
| 
       100 
100 
     | 
    
         
             
                  if ( status = FFI_Yajl.yajl_gen_array_open(yajl_gen) ) != 0
         
     | 
| 
       101 
     | 
    
         
            -
                    FFI_Yajl::Encoder.raise_error_for_status(status,  
     | 
| 
      
 101 
     | 
    
         
            +
                    FFI_Yajl::Encoder.raise_error_for_status(status, "[")
         
     | 
| 
       102 
102 
     | 
    
         
             
                  end
         
     | 
| 
       103 
103 
     | 
    
         
             
                  each do |value|
         
     | 
| 
       104 
104 
     | 
    
         
             
                    value.ffi_yajl(yajl_gen, state)
         
     | 
| 
       105 
105 
     | 
    
         
             
                  end
         
     | 
| 
       106 
106 
     | 
    
         
             
                  if ( status = FFI_Yajl.yajl_gen_array_close(yajl_gen) ) != 0
         
     | 
| 
       107 
     | 
    
         
            -
                    FFI_Yajl::Encoder.raise_error_for_status(status,  
     | 
| 
      
 107 
     | 
    
         
            +
                    FFI_Yajl::Encoder.raise_error_for_status(status, "]")
         
     | 
| 
       108 
108 
     | 
    
         
             
                  end
         
     | 
| 
       109 
109 
     | 
    
         
             
                end
         
     | 
| 
       110 
110 
     | 
    
         
             
              end
         
     | 
| 
         @@ -155,30 +155,13 @@ class FalseClass 
     | 
|
| 
       155 
155 
     | 
    
         
             
              end
         
     | 
| 
       156 
156 
     | 
    
         
             
            end
         
     | 
| 
       157 
157 
     | 
    
         | 
| 
       158 
     | 
    
         
            -
            class  
     | 
| 
      
 158 
     | 
    
         
            +
            class Integer
         
     | 
| 
       159 
159 
     | 
    
         
             
              def ffi_yajl(yajl_gen, state)
         
     | 
| 
       160 
160 
     | 
    
         
             
                str = to_s
         
     | 
| 
       161 
161 
     | 
    
         
             
                if str == "NaN" || str == "Infinity" || str == "-Infinity"
         
     | 
| 
       162 
162 
     | 
    
         
             
                  raise ::FFI_Yajl::EncodeError, "'#{str}' is an invalid number"
         
     | 
| 
       163 
163 
     | 
    
         
             
                end
         
     | 
| 
       164 
     | 
    
         
            -
                if state[:processing_key]
         
     | 
| 
       165 
     | 
    
         
            -
                  if ( status = FFI_Yajl.yajl_gen_string(yajl_gen, str, str.bytesize) ) != 0
         
     | 
| 
       166 
     | 
    
         
            -
                    FFI_Yajl::Encoder.raise_error_for_status(status, str)
         
     | 
| 
       167 
     | 
    
         
            -
                  end
         
     | 
| 
       168 
     | 
    
         
            -
                else
         
     | 
| 
       169 
     | 
    
         
            -
                  if ( status = FFI_Yajl.yajl_gen_integer(yajl_gen, self) ) != 0
         
     | 
| 
       170 
     | 
    
         
            -
                    FFI_Yajl::Encoder.raise_error_for_status(status, str)
         
     | 
| 
       171 
     | 
    
         
            -
                  end
         
     | 
| 
       172 
     | 
    
         
            -
                end
         
     | 
| 
       173 
     | 
    
         
            -
              end
         
     | 
| 
       174 
     | 
    
         
            -
            end
         
     | 
| 
       175 
164 
     | 
    
         | 
| 
       176 
     | 
    
         
            -
            class Bignum
         
     | 
| 
       177 
     | 
    
         
            -
              def ffi_yajl(yajl_gen, state)
         
     | 
| 
       178 
     | 
    
         
            -
                str = to_s
         
     | 
| 
       179 
     | 
    
         
            -
                if str == "NaN" || str == "Infinity" || str == "-Infinity"
         
     | 
| 
       180 
     | 
    
         
            -
                  raise ::FFI_Yajl::EncodeError, "'#{str}' is an invalid number"
         
     | 
| 
       181 
     | 
    
         
            -
                end
         
     | 
| 
       182 
165 
     | 
    
         
             
                if state[:processing_key]
         
     | 
| 
       183 
166 
     | 
    
         
             
                  if ( status = FFI_Yajl.yajl_gen_string(yajl_gen, str, str.bytesize) ) != 0
         
     | 
| 
       184 
167 
     | 
    
         
             
                    FFI_Yajl::Encoder.raise_error_for_status(status, str)
         
     | 
| 
         @@ -197,6 +180,7 @@ class Float 
     | 
|
| 
       197 
180 
     | 
    
         
             
                if str == "NaN" || str == "Infinity" || str == "-Infinity"
         
     | 
| 
       198 
181 
     | 
    
         
             
                  raise ::FFI_Yajl::EncodeError, "'#{str}' is an invalid number"
         
     | 
| 
       199 
182 
     | 
    
         
             
                end
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
       200 
184 
     | 
    
         
             
                if state[:processing_key]
         
     | 
| 
       201 
185 
     | 
    
         
             
                  if ( status = FFI_Yajl.yajl_gen_string(yajl_gen, str, str.bytesize) ) != 0
         
     | 
| 
       202 
186 
     | 
    
         
             
                    FFI_Yajl::Encoder.raise_error_for_status(status, str)
         
     | 
| 
         @@ -265,7 +249,7 @@ end 
     | 
|
| 
       265 
249 
     | 
    
         
             
            # I feel dirty
         
     | 
| 
       266 
250 
     | 
    
         
             
            class Object
         
     | 
| 
       267 
251 
     | 
    
         
             
              def ffi_yajl(yajl_gen, state)
         
     | 
| 
       268 
     | 
    
         
            -
                if !state[:processing_key] &&  
     | 
| 
      
 252 
     | 
    
         
            +
                if !state[:processing_key] && respond_to?(:to_json)
         
     | 
| 
       269 
253 
     | 
    
         
             
                  str = to_json(state[:json_opts])
         
     | 
| 
       270 
254 
     | 
    
         
             
                  # #yajl_gen_number outputs a string without quotes around it
         
     | 
| 
       271 
255 
     | 
    
         
             
                  status = FFI_Yajl.yajl_gen_number(yajl_gen, str, str.bytesize)
         
     | 
    
        data/lib/ffi_yajl/ffi/parser.rb
    CHANGED
    
    | 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Copyright (c) 2015 Lamont Granquist
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c) 2015 Chef Software 
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (c) 2015-2018, Chef Software Inc.
         
     | 
| 
       3 
3 
     | 
    
         
             
            #
         
     | 
| 
       4 
4 
     | 
    
         
             
            # Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
       5 
5 
     | 
    
         
             
            # a copy of this software and associated documentation files (the
         
     | 
| 
         @@ -23,13 +23,14 @@ 
     | 
|
| 
       23 
23 
     | 
    
         
             
            module FFI_Yajl
         
     | 
| 
       24 
24 
     | 
    
         
             
              module FFI
         
     | 
| 
       25 
25 
     | 
    
         
             
                module Parser
         
     | 
| 
       26 
     | 
    
         
            -
                  def set_value(val) # rubocop:disable  
     | 
| 
      
 26 
     | 
    
         
            +
                  def set_value(val) # rubocop:disable Naming/AccessorMethodName
         
     | 
| 
       27 
27 
     | 
    
         
             
                    case stack.last
         
     | 
| 
       28 
28 
     | 
    
         
             
                    when Hash
         
     | 
| 
       29 
29 
     | 
    
         
             
                      raise FFI_Yajl::ParseError, "internal error: missing key in parse" if key.nil?
         
     | 
| 
       30 
30 
     | 
    
         
             
                      if @opts[:unique_key_checking] && stack.last.key?(key)
         
     | 
| 
       31 
31 
     | 
    
         
             
                        raise FFI_Yajl::ParseError, "repeated key: #{key}"
         
     | 
| 
       32 
32 
     | 
    
         
             
                      end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
       33 
34 
     | 
    
         
             
                      stack.last[key] = val
         
     | 
| 
       34 
35 
     | 
    
         
             
                    when Array
         
     | 
| 
       35 
36 
     | 
    
         
             
                      stack.last.push(val)
         
     | 
| 
         @@ -55,29 +56,29 @@ module FFI_Yajl 
     | 
|
| 
       55 
56 
     | 
    
         
             
                      set_value(nil)
         
     | 
| 
       56 
57 
     | 
    
         
             
                      1
         
     | 
| 
       57 
58 
     | 
    
         
             
                    end
         
     | 
| 
       58 
     | 
    
         
            -
                    @boolean_callback = ::FFI::Function.new(:int,  
     | 
| 
      
 59 
     | 
    
         
            +
                    @boolean_callback = ::FFI::Function.new(:int, %i{pointer int}) do |ctx, boolval|
         
     | 
| 
       59 
60 
     | 
    
         
             
                      set_value(boolval == 1 ? true : false)
         
     | 
| 
       60 
61 
     | 
    
         
             
                      1
         
     | 
| 
       61 
62 
     | 
    
         
             
                    end
         
     | 
| 
       62 
     | 
    
         
            -
                    @integer_callback = ::FFI::Function.new(:int,  
     | 
| 
      
 63 
     | 
    
         
            +
                    @integer_callback = ::FFI::Function.new(:int, %i{pointer long_long}) do |ctx, intval|
         
     | 
| 
       63 
64 
     | 
    
         
             
                      set_value(intval)
         
     | 
| 
       64 
65 
     | 
    
         
             
                      1
         
     | 
| 
       65 
66 
     | 
    
         
             
                    end
         
     | 
| 
       66 
     | 
    
         
            -
                    @number_callback = ::FFI::Function.new(:int,  
     | 
| 
      
 67 
     | 
    
         
            +
                    @number_callback = ::FFI::Function.new(:int, %i{pointer string size_t}) do |ctx, stringval, stringlen|
         
     | 
| 
       67 
68 
     | 
    
         
             
                      s = stringval.slice(0, stringlen)
         
     | 
| 
       68 
     | 
    
         
            -
                      s.force_encoding( 
     | 
| 
      
 69 
     | 
    
         
            +
                      s.force_encoding("UTF-8") if defined? Encoding
         
     | 
| 
       69 
70 
     | 
    
         
             
                      # XXX: I can't think of a better way to do this right now.  need to call to_f if and only if its a float.
         
     | 
| 
       70 
71 
     | 
    
         
             
                      v = ( s =~ /[\.eE]/ ) ? s.to_f : s.to_i
         
     | 
| 
       71 
72 
     | 
    
         
             
                      set_value(v)
         
     | 
| 
       72 
73 
     | 
    
         
             
                      1
         
     | 
| 
       73 
74 
     | 
    
         
             
                    end
         
     | 
| 
       74 
     | 
    
         
            -
                    @double_callback = ::FFI::Function.new(:int,  
     | 
| 
      
 75 
     | 
    
         
            +
                    @double_callback = ::FFI::Function.new(:int, %i{pointer double}) do |ctx, doubleval|
         
     | 
| 
       75 
76 
     | 
    
         
             
                      set_value(doubleval)
         
     | 
| 
       76 
77 
     | 
    
         
             
                      1
         
     | 
| 
       77 
78 
     | 
    
         
             
                    end
         
     | 
| 
       78 
     | 
    
         
            -
                    @string_callback = ::FFI::Function.new(:int,  
     | 
| 
      
 79 
     | 
    
         
            +
                    @string_callback = ::FFI::Function.new(:int, %i{pointer string size_t}) do |ctx, stringval, stringlen|
         
     | 
| 
       79 
80 
     | 
    
         
             
                      s = stringval.slice(0, stringlen)
         
     | 
| 
       80 
     | 
    
         
            -
                      s.force_encoding( 
     | 
| 
      
 81 
     | 
    
         
            +
                      s.force_encoding("UTF-8") if defined? Encoding
         
     | 
| 
       81 
82 
     | 
    
         
             
                      set_value(s)
         
     | 
| 
       82 
83 
     | 
    
         
             
                      1
         
     | 
| 
       83 
84 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -86,9 +87,9 @@ module FFI_Yajl 
     | 
|
| 
       86 
87 
     | 
    
         
             
                      stack.push({})
         
     | 
| 
       87 
88 
     | 
    
         
             
                      1
         
     | 
| 
       88 
89 
     | 
    
         
             
                    end
         
     | 
| 
       89 
     | 
    
         
            -
                    @map_key_callback = ::FFI::Function.new(:int,  
     | 
| 
      
 90 
     | 
    
         
            +
                    @map_key_callback = ::FFI::Function.new(:int, %i{pointer string size_t}) do |ctx, key, keylen|
         
     | 
| 
       90 
91 
     | 
    
         
             
                      s = key.slice(0, keylen)
         
     | 
| 
       91 
     | 
    
         
            -
                      s.force_encoding( 
     | 
| 
      
 92 
     | 
    
         
            +
                      s.force_encoding("UTF-8") if defined? Encoding
         
     | 
| 
       92 
93 
     | 
    
         
             
                      self.key = @opts[:symbolize_keys] ? s.to_sym : s
         
     | 
| 
       93 
94 
     | 
    
         
             
                      1
         
     | 
| 
       94 
95 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -143,12 +144,12 @@ module FFI_Yajl 
     | 
|
| 
       143 
144 
     | 
    
         
             
                      ::FFI_Yajl.yajl_config(yajl_handle, :yajl_allow_partial_values, :int, 1)
         
     | 
| 
       144 
145 
     | 
    
         
             
                    end
         
     | 
| 
       145 
146 
     | 
    
         | 
| 
       146 
     | 
    
         
            -
                    if  
     | 
| 
      
 147 
     | 
    
         
            +
                    if ::FFI_Yajl.yajl_parse(yajl_handle, str, str.bytesize) != :yajl_status_ok
         
     | 
| 
       147 
148 
     | 
    
         
             
                      # FIXME: dup the error and call yajl_free_error?
         
     | 
| 
       148 
149 
     | 
    
         
             
                      error = ::FFI_Yajl.yajl_get_error(yajl_handle, 1, str, str.bytesize)
         
     | 
| 
       149 
150 
     | 
    
         
             
                      raise ::FFI_Yajl::ParseError, error
         
     | 
| 
       150 
151 
     | 
    
         
             
                    end
         
     | 
| 
       151 
     | 
    
         
            -
                    if  
     | 
| 
      
 152 
     | 
    
         
            +
                    if ::FFI_Yajl.yajl_complete_parse(yajl_handle) != :yajl_status_ok
         
     | 
| 
       152 
153 
     | 
    
         
             
                      # FIXME: dup the error and call yajl_free_error?
         
     | 
| 
       153 
154 
     | 
    
         
             
                      error = ::FFI_Yajl.yajl_get_error(yajl_handle, 1, str, str.bytesize)
         
     | 
| 
       154 
155 
     | 
    
         
             
                      raise ::FFI_Yajl::ParseError, error
         
     | 
| 
         @@ -20,7 +20,7 @@ 
     | 
|
| 
       20 
20 
     | 
    
         
             
            # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
       21 
21 
     | 
    
         
             
            # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
            require  
     | 
| 
      
 23 
     | 
    
         
            +
            require "libyajl2"
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
            # Mixin for use in finding the right yajl library on the system.  The 'caller'
         
     | 
| 
       26 
26 
     | 
    
         
             
            # needs to also mixin either the FFI module or the DLopen module.  Those are
         
     | 
| 
         @@ -34,16 +34,16 @@ module FFI_Yajl 
     | 
|
| 
       34 
34 
     | 
    
         
             
                # Stub for tests to override the host_os
         
     | 
| 
       35 
35 
     | 
    
         
             
                #
         
     | 
| 
       36 
36 
     | 
    
         
             
                # @api private
         
     | 
| 
       37 
     | 
    
         
            -
                # @return Array<String> lower case ruby host_os string
         
     | 
| 
      
 37 
     | 
    
         
            +
                # @return [Array<String>] lower case ruby host_os string
         
     | 
| 
       38 
38 
     | 
    
         
             
                def host_os
         
     | 
| 
       39 
     | 
    
         
            -
                  RbConfig::CONFIG[ 
     | 
| 
      
 39 
     | 
    
         
            +
                  RbConfig::CONFIG["host_os"].downcase
         
     | 
| 
       40 
40 
     | 
    
         
             
                end
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
                # Array of yajl library names on the platform.  Some platforms like Windows
         
     | 
| 
       43 
43 
     | 
    
         
             
                # and Mac may have different names/extensions.
         
     | 
| 
       44 
44 
     | 
    
         
             
                #
         
     | 
| 
       45 
45 
     | 
    
         
             
                # @api private
         
     | 
| 
       46 
     | 
    
         
            -
                # @return Array<String> Array of yajl library names for platform
         
     | 
| 
      
 46 
     | 
    
         
            +
                # @return [Array<String>] Array of yajl library names for platform
         
     | 
| 
       47 
47 
     | 
    
         
             
                def library_names
         
     | 
| 
       48 
48 
     | 
    
         
             
                  case host_os
         
     | 
| 
       49 
49 
     | 
    
         
             
                  when /mingw|mswin/
         
     | 
| 
         @@ -63,7 +63,7 @@ module FFI_Yajl 
     | 
|
| 
       63 
63 
     | 
    
         
             
                # the filesystem.  May return an empty array.
         
     | 
| 
       64 
64 
     | 
    
         
             
                #
         
     | 
| 
       65 
65 
     | 
    
         
             
                # @api private
         
     | 
| 
       66 
     | 
    
         
            -
                # @return Array<String> Array of full paths to libyajl2 gem libraries
         
     | 
| 
      
 66 
     | 
    
         
            +
                # @return [Array<String>] Array of full paths to libyajl2 gem libraries
         
     | 
| 
       67 
67 
     | 
    
         
             
                def expanded_library_names
         
     | 
| 
       68 
68 
     | 
    
         
             
                  library_names.map do |libname|
         
     | 
| 
       69 
69 
     | 
    
         
             
                    pathname = File.expand_path(File.join(Libyajl2.opt_path, libname))
         
     | 
| 
         @@ -103,7 +103,7 @@ module FFI_Yajl 
     | 
|
| 
       103 
103 
     | 
    
         
             
                    rescue LoadError
         
     | 
| 
       104 
104 
     | 
    
         
             
                    end
         
     | 
| 
       105 
105 
     | 
    
         
             
                  end
         
     | 
| 
       106 
     | 
    
         
            -
                  ffi_lib  
     | 
| 
      
 106 
     | 
    
         
            +
                  ffi_lib "yajl" unless found
         
     | 
| 
       107 
107 
     | 
    
         
             
                end
         
     | 
| 
       108 
108 
     | 
    
         
             
              end
         
     | 
| 
       109 
109 
     | 
    
         
             
            end
         
     | 
    
        data/lib/ffi_yajl/parser.rb
    CHANGED
    
    | 
         @@ -65,10 +65,10 @@ module FFI_Yajl 
     | 
|
| 
       65 
65 
     | 
    
         
             
                    raise ArgumentError, "options check_utf8 and dont_validate_strings are both true which conflict"
         
     | 
| 
       66 
66 
     | 
    
         
             
                  end
         
     | 
| 
       67 
67 
     | 
    
         | 
| 
       68 
     | 
    
         
            -
                  yajl_opts[:yajl_allow_comments] 
     | 
| 
      
 68 
     | 
    
         
            +
                  yajl_opts[:yajl_allow_comments] = true
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
70 
     | 
    
         
             
                  if @opts.key?(:allow_comments)
         
     | 
| 
       71 
     | 
    
         
            -
                    yajl_opts[:yajl_allow_comments] 
     | 
| 
      
 71 
     | 
    
         
            +
                    yajl_opts[:yajl_allow_comments] = @opts[:allow_comments]
         
     | 
| 
       72 
72 
     | 
    
         
             
                  end
         
     | 
| 
       73 
73 
     | 
    
         | 
| 
       74 
74 
     | 
    
         
             
                  yajl_opts[:yajl_dont_validate_strings]  = (@opts[:check_utf8] == false || @opts[:dont_validate_strings])
         
     | 
    
        data/lib/ffi_yajl/version.rb
    CHANGED
    
    | 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Copyright (c) 2015 Lamont Granquist
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c)  
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright:: Copyright (c) Chef Software Inc.
         
     | 
| 
       3 
3 
     | 
    
         
             
            #
         
     | 
| 
       4 
4 
     | 
    
         
             
            # Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
       5 
5 
     | 
    
         
             
            # a copy of this software and associated documentation files (the
         
     | 
| 
         @@ -21,5 +21,5 @@ 
     | 
|
| 
       21 
21 
     | 
    
         
             
            # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
            module FFI_Yajl
         
     | 
| 
       24 
     | 
    
         
            -
              VERSION = "2. 
     | 
| 
      
 24 
     | 
    
         
            +
              VERSION = "2.4.0".freeze
         
     | 
| 
       25 
25 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,97 +1,27 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: ffi-yajl
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.4.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: universal-java
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Lamont Granquist
         
     | 
| 
       8 
     | 
    
         
            -
            autorequire: 
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2021-04-07 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
     | 
    
         
            -
              name: rake
         
     | 
| 
       15 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
     | 
    
         
            -
                requirements:
         
     | 
| 
       17 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       18 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version: '10.1'
         
     | 
| 
       20 
     | 
    
         
            -
              type: :development
         
     | 
| 
       21 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       22 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
     | 
    
         
            -
                requirements:
         
     | 
| 
       24 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       25 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version: '10.1'
         
     | 
| 
       27 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
     | 
    
         
            -
              name: rspec
         
     | 
| 
       29 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
     | 
    
         
            -
                requirements:
         
     | 
| 
       31 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       32 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
     | 
    
         
            -
                    version: '2.99'
         
     | 
| 
       34 
     | 
    
         
            -
              type: :development
         
     | 
| 
       35 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       36 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
     | 
    
         
            -
                requirements:
         
     | 
| 
       38 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       39 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
     | 
    
         
            -
                    version: '2.99'
         
     | 
| 
       41 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
     | 
    
         
            -
              name: pry
         
     | 
| 
       43 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       44 
     | 
    
         
            -
                requirements:
         
     | 
| 
       45 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       46 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       47 
     | 
    
         
            -
                    version: '0.9'
         
     | 
| 
       48 
     | 
    
         
            -
              type: :development
         
     | 
| 
       49 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       50 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       51 
     | 
    
         
            -
                requirements:
         
     | 
| 
       52 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       53 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       54 
     | 
    
         
            -
                    version: '0.9'
         
     | 
| 
       55 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       56 
     | 
    
         
            -
              name: rake-compiler
         
     | 
| 
       57 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       58 
     | 
    
         
            -
                requirements:
         
     | 
| 
       59 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       60 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       61 
     | 
    
         
            -
                    version: 0.8.3
         
     | 
| 
       62 
     | 
    
         
            -
              type: :development
         
     | 
| 
       63 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       64 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       65 
     | 
    
         
            -
                requirements:
         
     | 
| 
       66 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       67 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       68 
     | 
    
         
            -
                    version: 0.8.3
         
     | 
| 
       69 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       70 
     | 
    
         
            -
              name: mime-types
         
     | 
| 
       71 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       72 
     | 
    
         
            -
                requirements:
         
     | 
| 
       73 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       74 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       75 
     | 
    
         
            -
                    version: '1.16'
         
     | 
| 
       76 
     | 
    
         
            -
              type: :development
         
     | 
| 
       77 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       78 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       79 
     | 
    
         
            -
                requirements:
         
     | 
| 
       80 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       81 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
     | 
    
         
            -
                    version: '1.16'
         
     | 
| 
       83 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       84 
14 
     | 
    
         
             
              name: libyajl2
         
     | 
| 
       85 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       86 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       87 
     | 
    
         
            -
                - - " 
     | 
| 
      
 17 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       88 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       89 
19 
     | 
    
         
             
                    version: '1.2'
         
     | 
| 
       90 
20 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       91 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       92 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       93 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       94 
     | 
    
         
            -
                - - " 
     | 
| 
      
 24 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       95 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       96 
26 
     | 
    
         
             
                    version: '1.2'
         
     | 
| 
       97 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
         @@ -109,7 +39,7 @@ dependencies: 
     | 
|
| 
       109 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       110 
40 
     | 
    
         
             
                    version: '1.5'
         
     | 
| 
       111 
41 
     | 
    
         
             
            description: Ruby FFI wrapper around YAJL 2.x
         
     | 
| 
       112 
     | 
    
         
            -
            email: lamont@ 
     | 
| 
      
 42 
     | 
    
         
            +
            email: lamont@chef.io
         
     | 
| 
       113 
43 
     | 
    
         
             
            executables:
         
     | 
| 
       114 
44 
     | 
    
         
             
            - ffi-yajl-bench
         
     | 
| 
       115 
45 
     | 
    
         
             
            extensions: []
         
     | 
| 
         @@ -119,7 +49,6 @@ extra_rdoc_files: 
     | 
|
| 
       119 
49 
     | 
    
         
             
            files:
         
     | 
| 
       120 
50 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       121 
51 
     | 
    
         
             
            - README.md
         
     | 
| 
       122 
     | 
    
         
            -
            - Rakefile
         
     | 
| 
       123 
52 
     | 
    
         
             
            - bin/ffi-yajl-bench
         
     | 
| 
       124 
53 
     | 
    
         
             
            - ext/ffi_yajl/ext/dlopen/dlopen.c
         
     | 
| 
       125 
54 
     | 
    
         
             
            - ext/ffi_yajl/ext/dlopen/extconf.rb
         
     | 
| 
         @@ -158,15 +87,11 @@ files: 
     | 
|
| 
       158 
87 
     | 
    
         
             
            - lib/ffi_yajl/parser.rb
         
     | 
| 
       159 
88 
     | 
    
         
             
            - lib/ffi_yajl/platform.rb
         
     | 
| 
       160 
89 
     | 
    
         
             
            - lib/ffi_yajl/version.rb
         
     | 
| 
       161 
     | 
    
         
            -
            - spec/ffi_yajl/encoder_spec.rb
         
     | 
| 
       162 
     | 
    
         
            -
            - spec/ffi_yajl/map_library_name_spec.rb
         
     | 
| 
       163 
     | 
    
         
            -
            - spec/ffi_yajl/parser_spec.rb
         
     | 
| 
       164 
     | 
    
         
            -
            - spec/spec_helper.rb
         
     | 
| 
       165 
90 
     | 
    
         
             
            homepage: http://github.com/chef/ffi-yajl
         
     | 
| 
       166 
91 
     | 
    
         
             
            licenses:
         
     | 
| 
       167 
     | 
    
         
            -
            -  
     | 
| 
      
 92 
     | 
    
         
            +
            - MIT
         
     | 
| 
       168 
93 
     | 
    
         
             
            metadata: {}
         
     | 
| 
       169 
     | 
    
         
            -
            post_install_message: 
     | 
| 
      
 94 
     | 
    
         
            +
            post_install_message:
         
     | 
| 
       170 
95 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       171 
96 
     | 
    
         
             
            require_paths:
         
     | 
| 
       172 
97 
     | 
    
         
             
            - lib
         
     | 
| 
         @@ -174,16 +99,15 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       174 
99 
     | 
    
         
             
              requirements:
         
     | 
| 
       175 
100 
     | 
    
         
             
              - - ">="
         
     | 
| 
       176 
101 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       177 
     | 
    
         
            -
                  version:  
     | 
| 
      
 102 
     | 
    
         
            +
                  version: '2.2'
         
     | 
| 
       178 
103 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       179 
104 
     | 
    
         
             
              requirements:
         
     | 
| 
       180 
105 
     | 
    
         
             
              - - ">="
         
     | 
| 
       181 
106 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       182 
107 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       183 
108 
     | 
    
         
             
            requirements: []
         
     | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
       185 
     | 
    
         
            -
             
     | 
| 
       186 
     | 
    
         
            -
            signing_key: 
         
     | 
| 
      
 109 
     | 
    
         
            +
            rubygems_version: 3.2.3
         
     | 
| 
      
 110 
     | 
    
         
            +
            signing_key:
         
     | 
| 
       187 
111 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       188 
112 
     | 
    
         
             
            summary: Ruby FFI wrapper around YAJL 2.x
         
     | 
| 
       189 
113 
     | 
    
         
             
            test_files: []
         
     | 
    
        data/Rakefile
    DELETED
    
    | 
         @@ -1,179 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            $LOAD_PATH << File.expand_path(File.join(File.dirname( __FILE__ ), "lib"))
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'rspec/core/rake_task'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'rubygems/package_task'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'rake/extensiontask'
         
     | 
| 
       6 
     | 
    
         
            -
            require 'ffi_yajl/version'
         
     | 
| 
       7 
     | 
    
         
            -
            require 'github_changelog_generator/task'
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            Dir[File.expand_path("../*gemspec", __FILE__)].reverse_each do |gemspec_path|
         
     | 
| 
       10 
     | 
    
         
            -
              gemspec = eval(IO.read(gemspec_path))
         
     | 
| 
       11 
     | 
    
         
            -
              Gem::PackageTask.new(gemspec).define
         
     | 
| 
       12 
     | 
    
         
            -
            end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            GitHubChangelogGenerator::RakeTask.new :changelog do |config|
         
     | 
| 
       15 
     | 
    
         
            -
              config.since_tag = '1.0.1'
         
     | 
| 
       16 
     | 
    
         
            -
              config.exclude_labels = %w{duplicate question invalid wontfix changelog_skip}
         
     | 
| 
       17 
     | 
    
         
            -
            end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            desc "Build it and ship it"
         
     | 
| 
       20 
     | 
    
         
            -
            task ship: [:clean, :gem] do
         
     | 
| 
       21 
     | 
    
         
            -
              sh("git tag #{FFI_Yajl::VERSION}")
         
     | 
| 
       22 
     | 
    
         
            -
              sh("git push --tags")
         
     | 
| 
       23 
     | 
    
         
            -
              Dir[File.expand_path("../pkg/*.gem", __FILE__)].reverse_each do |built_gem|
         
     | 
| 
       24 
     | 
    
         
            -
                sh("gem push #{built_gem}")
         
     | 
| 
       25 
     | 
    
         
            -
              end
         
     | 
| 
       26 
     | 
    
         
            -
            end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
            unix_gemspec = eval(File.read("ffi-yajl.gemspec"))
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
            task :clean do
         
     | 
| 
       31 
     | 
    
         
            -
              sh "rm -f Gemfile.lock"
         
     | 
| 
       32 
     | 
    
         
            -
              sh "rm -rf pkg/* tmp/* .bundle lib/ffi_yajl/ext/*"
         
     | 
| 
       33 
     | 
    
         
            -
            end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
            desc "install the gem locally"
         
     | 
| 
       36 
     | 
    
         
            -
            task install: [:package] do
         
     | 
| 
       37 
     | 
    
         
            -
              if defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby"
         
     | 
| 
       38 
     | 
    
         
            -
                sh %{gem install pkg/#{unix_gemspec.name}-#{unix_gemspec.version}-universal-java.gem}
         
     | 
| 
       39 
     | 
    
         
            -
              else
         
     | 
| 
       40 
     | 
    
         
            -
                sh %{gem install pkg/#{unix_gemspec.name}-#{unix_gemspec.version}.gem}
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
            end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
            spec = Gem::Specification.load('ffi-yajl.gemspec')
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
            Rake::ExtensionTask.new do |ext|
         
     | 
| 
       47 
     | 
    
         
            -
              ext.name = 'encoder'
         
     | 
| 
       48 
     | 
    
         
            -
              ext.lib_dir = 'lib/ffi_yajl/ext'
         
     | 
| 
       49 
     | 
    
         
            -
              ext.ext_dir = 'ext/ffi_yajl/ext/encoder'
         
     | 
| 
       50 
     | 
    
         
            -
              ext.gem_spec = spec
         
     | 
| 
       51 
     | 
    
         
            -
            end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
            Rake::ExtensionTask.new do |ext|
         
     | 
| 
       54 
     | 
    
         
            -
              ext.name = 'parser'
         
     | 
| 
       55 
     | 
    
         
            -
              ext.lib_dir = 'lib/ffi_yajl/ext'
         
     | 
| 
       56 
     | 
    
         
            -
              ext.ext_dir = 'ext/ffi_yajl/ext/parser'
         
     | 
| 
       57 
     | 
    
         
            -
              ext.gem_spec = spec
         
     | 
| 
       58 
     | 
    
         
            -
            end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
            Rake::ExtensionTask.new do |ext|
         
     | 
| 
       61 
     | 
    
         
            -
              ext.name = 'dlopen'
         
     | 
| 
       62 
     | 
    
         
            -
              ext.lib_dir = 'lib/ffi_yajl/ext'
         
     | 
| 
       63 
     | 
    
         
            -
              ext.ext_dir = 'ext/ffi_yajl/ext/dlopen'
         
     | 
| 
       64 
     | 
    
         
            -
              ext.gem_spec = spec
         
     | 
| 
       65 
     | 
    
         
            -
            end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
            #
         
     | 
| 
       68 
     | 
    
         
            -
            # test tasks
         
     | 
| 
       69 
     | 
    
         
            -
            #
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
            desc "Run all specs against both extensions"
         
     | 
| 
       72 
     | 
    
         
            -
            task :spec do
         
     | 
| 
       73 
     | 
    
         
            -
              Rake::Task["spec:ffi"].invoke
         
     | 
| 
       74 
     | 
    
         
            -
              if !defined?(RUBY_ENGINE) || RUBY_ENGINE !~ /jruby/
         
     | 
| 
       75 
     | 
    
         
            -
                Rake::Task["spec:ext"].invoke
         
     | 
| 
       76 
     | 
    
         
            -
              end
         
     | 
| 
       77 
     | 
    
         
            -
            end
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
            namespace :spec do
         
     | 
| 
       80 
     | 
    
         
            -
              desc "Run all specs against ffi extension"
         
     | 
| 
       81 
     | 
    
         
            -
              RSpec::Core::RakeTask.new(:ffi) do |t|
         
     | 
| 
       82 
     | 
    
         
            -
                ENV['FORCE_FFI_YAJL'] = "ffi"
         
     | 
| 
       83 
     | 
    
         
            -
                t.pattern = FileList['spec/**/*_spec.rb']
         
     | 
| 
       84 
     | 
    
         
            -
              end
         
     | 
| 
       85 
     | 
    
         
            -
              if !defined?(RUBY_ENGINE) || RUBY_ENGINE !~ /jruby/
         
     | 
| 
       86 
     | 
    
         
            -
                desc "Run all specs again c extension"
         
     | 
| 
       87 
     | 
    
         
            -
                RSpec::Core::RakeTask.new(:ext) do |t|
         
     | 
| 
       88 
     | 
    
         
            -
                  ENV['FORCE_FFI_YAJL'] = "ext"
         
     | 
| 
       89 
     | 
    
         
            -
                  t.pattern = FileList['spec/**/*_spec.rb']
         
     | 
| 
       90 
     | 
    
         
            -
                end
         
     | 
| 
       91 
     | 
    
         
            -
              end
         
     | 
| 
       92 
     | 
    
         
            -
            end
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
            if RUBY_VERSION.to_f >= 1.9
         
     | 
| 
       95 
     | 
    
         
            -
              namespace :integration do
         
     | 
| 
       96 
     | 
    
         
            -
                begin
         
     | 
| 
       97 
     | 
    
         
            -
                  require 'kitchen'
         
     | 
| 
       98 
     | 
    
         
            -
                rescue LoadError
         
     | 
| 
       99 
     | 
    
         
            -
                  task :vagrant do
         
     | 
| 
       100 
     | 
    
         
            -
                    puts "test-kitchen gem is not installed"
         
     | 
| 
       101 
     | 
    
         
            -
                  end
         
     | 
| 
       102 
     | 
    
         
            -
                  task :cloud do
         
     | 
| 
       103 
     | 
    
         
            -
                    puts "test-kitchen gem is not installed"
         
     | 
| 
       104 
     | 
    
         
            -
                  end
         
     | 
| 
       105 
     | 
    
         
            -
                else
         
     | 
| 
       106 
     | 
    
         
            -
                  desc 'Run Test Kitchen with Vagrant'
         
     | 
| 
       107 
     | 
    
         
            -
                  task :vagrant do
         
     | 
| 
       108 
     | 
    
         
            -
                    Kitchen.logger = Kitchen.default_file_logger
         
     | 
| 
       109 
     | 
    
         
            -
                    Kitchen::Config.new.instances.each do |instance|
         
     | 
| 
       110 
     | 
    
         
            -
                      instance.test(:always)
         
     | 
| 
       111 
     | 
    
         
            -
                    end
         
     | 
| 
       112 
     | 
    
         
            -
                  end
         
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
                  desc 'Run Test Kitchen with cloud plugins'
         
     | 
| 
       115 
     | 
    
         
            -
                  task :cloud do
         
     | 
| 
       116 
     | 
    
         
            -
                    if ENV['TRAVIS_PULL_REQUEST'] != 'true'
         
     | 
| 
       117 
     | 
    
         
            -
                      ENV['KITCHEN_YAML'] = '.kitchen.cloud.yml'
         
     | 
| 
       118 
     | 
    
         
            -
                      sh "kitchen test --concurrency 4"
         
     | 
| 
       119 
     | 
    
         
            -
                    end
         
     | 
| 
       120 
     | 
    
         
            -
                  end
         
     | 
| 
       121 
     | 
    
         
            -
                end
         
     | 
| 
       122 
     | 
    
         
            -
              end
         
     | 
| 
       123 
     | 
    
         
            -
              namespace :style do
         
     | 
| 
       124 
     | 
    
         
            -
                desc 'Run Ruby style checks'
         
     | 
| 
       125 
     | 
    
         
            -
                begin
         
     | 
| 
       126 
     | 
    
         
            -
                  require 'rubocop/rake_task'
         
     | 
| 
       127 
     | 
    
         
            -
                rescue LoadError
         
     | 
| 
       128 
     | 
    
         
            -
                  task :rubocop do
         
     | 
| 
       129 
     | 
    
         
            -
                    puts "rubocop gem is not installed"
         
     | 
| 
       130 
     | 
    
         
            -
                  end
         
     | 
| 
       131 
     | 
    
         
            -
                else
         
     | 
| 
       132 
     | 
    
         
            -
                  RuboCop::RakeTask.new(:rubocop) do |t|
         
     | 
| 
       133 
     | 
    
         
            -
                    t.fail_on_error = false
         
     | 
| 
       134 
     | 
    
         
            -
                  end
         
     | 
| 
       135 
     | 
    
         
            -
                end
         
     | 
| 
       136 
     | 
    
         
            -
             
     | 
| 
       137 
     | 
    
         
            -
                desc 'Run Ruby smell checks'
         
     | 
| 
       138 
     | 
    
         
            -
                begin
         
     | 
| 
       139 
     | 
    
         
            -
                  require 'reek/rake/task'
         
     | 
| 
       140 
     | 
    
         
            -
                rescue LoadError
         
     | 
| 
       141 
     | 
    
         
            -
                  task :reek do
         
     | 
| 
       142 
     | 
    
         
            -
                    puts "reek gem is not installed"
         
     | 
| 
       143 
     | 
    
         
            -
                  end
         
     | 
| 
       144 
     | 
    
         
            -
                else
         
     | 
| 
       145 
     | 
    
         
            -
                  Reek::Rake::Task.new(:reek) do |t|
         
     | 
| 
       146 
     | 
    
         
            -
                    t.fail_on_error = false
         
     | 
| 
       147 
     | 
    
         
            -
                    #        t.config_files = '.reek.yml'
         
     | 
| 
       148 
     | 
    
         
            -
                  end
         
     | 
| 
       149 
     | 
    
         
            -
                end
         
     | 
| 
       150 
     | 
    
         
            -
              end
         
     | 
| 
       151 
     | 
    
         
            -
            else
         
     | 
| 
       152 
     | 
    
         
            -
              namespace :integration do
         
     | 
| 
       153 
     | 
    
         
            -
                task :vagrant do
         
     | 
| 
       154 
     | 
    
         
            -
                  puts "test-kitchen unsupported on ruby 1.8"
         
     | 
| 
       155 
     | 
    
         
            -
                end
         
     | 
| 
       156 
     | 
    
         
            -
                task :cloud do
         
     | 
| 
       157 
     | 
    
         
            -
                  puts "test-kitchen unsupported on ruby 1.8"
         
     | 
| 
       158 
     | 
    
         
            -
                end
         
     | 
| 
       159 
     | 
    
         
            -
              end
         
     | 
| 
       160 
     | 
    
         
            -
              namespace :style do
         
     | 
| 
       161 
     | 
    
         
            -
                task :rubocop do
         
     | 
| 
       162 
     | 
    
         
            -
                  puts "rubocop unsupported on ruby 1.8"
         
     | 
| 
       163 
     | 
    
         
            -
                end
         
     | 
| 
       164 
     | 
    
         
            -
                task :reek do
         
     | 
| 
       165 
     | 
    
         
            -
                  puts "reek unsupported on ruby 1.8"
         
     | 
| 
       166 
     | 
    
         
            -
                end
         
     | 
| 
       167 
     | 
    
         
            -
              end
         
     | 
| 
       168 
     | 
    
         
            -
            end
         
     | 
| 
       169 
     | 
    
         
            -
             
     | 
| 
       170 
     | 
    
         
            -
            desc 'Run all style checks'
         
     | 
| 
       171 
     | 
    
         
            -
            task style: ['style:rubocop', 'style:reek']
         
     | 
| 
       172 
     | 
    
         
            -
             
     | 
| 
       173 
     | 
    
         
            -
            desc 'Run style + spec tests by default on travis'
         
     | 
| 
       174 
     | 
    
         
            -
            task travis: %w{style spec}
         
     | 
| 
       175 
     | 
    
         
            -
             
     | 
| 
       176 
     | 
    
         
            -
            desc 'Run style, spec and test kichen on travis'
         
     | 
| 
       177 
     | 
    
         
            -
            task travis_all: ['style', 'spec', 'integration:cloud']
         
     | 
| 
       178 
     | 
    
         
            -
             
     | 
| 
       179 
     | 
    
         
            -
            task default: ['style', 'spec', 'integration:vagrant']
         
     |