libyajl2 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (193) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +25 -0
  3. data/.gitmodules +3 -0
  4. data/.kitchen.cloud.yml +87 -0
  5. data/.kitchen.yml +38 -0
  6. data/.reek.yml +3 -0
  7. data/.rspec +1 -0
  8. data/.rubocop.yml +38 -0
  9. data/.travis.yml +8 -0
  10. data/CONTRIBUTING.md +4 -0
  11. data/Gemfile +12 -0
  12. data/LICENSE +201 -0
  13. data/README.md +9 -0
  14. data/Rakefile +144 -0
  15. data/bootstrap.sh +60 -0
  16. data/ext/libyajl2/Makefile +7 -0
  17. data/ext/libyajl2/extconf.rb +66 -0
  18. data/ext/libyajl2/vendor/yajl/.gitignore +3 -0
  19. data/ext/libyajl2/vendor/yajl/BUILDING +23 -0
  20. data/ext/libyajl2/vendor/yajl/BUILDING.win32 +27 -0
  21. data/ext/libyajl2/vendor/yajl/CMakeLists.txt +81 -0
  22. data/ext/libyajl2/vendor/yajl/COPYING +13 -0
  23. data/ext/libyajl2/vendor/yajl/ChangeLog +189 -0
  24. data/ext/libyajl2/vendor/yajl/README +74 -0
  25. data/ext/libyajl2/vendor/yajl/TODO +9 -0
  26. data/ext/libyajl2/vendor/yajl/YAJLDoc.cmake +26 -0
  27. data/ext/libyajl2/vendor/yajl/configure +81 -0
  28. data/ext/libyajl2/vendor/yajl/example/CMakeLists.txt +23 -0
  29. data/ext/libyajl2/vendor/yajl/example/README.md +7 -0
  30. data/ext/libyajl2/vendor/yajl/example/parse_config.c +69 -0
  31. data/ext/libyajl2/vendor/yajl/example/sample.config +101 -0
  32. data/ext/libyajl2/vendor/yajl/perf/CMakeLists.txt +23 -0
  33. data/ext/libyajl2/vendor/yajl/perf/documents.c +1418 -0
  34. data/ext/libyajl2/vendor/yajl/perf/documents.h +28 -0
  35. data/ext/libyajl2/vendor/yajl/perf/perftest.c +134 -0
  36. data/ext/libyajl2/vendor/yajl/reformatter/CMakeLists.txt +43 -0
  37. data/ext/libyajl2/vendor/yajl/reformatter/json_reformat.c +210 -0
  38. data/ext/libyajl2/vendor/yajl/src/CMakeLists.txt +87 -0
  39. data/ext/libyajl2/vendor/yajl/src/YAJL.dxy +1258 -0
  40. data/ext/libyajl2/vendor/yajl/src/api/yajl_common.h +75 -0
  41. data/ext/libyajl2/vendor/yajl/src/api/yajl_gen.h +167 -0
  42. data/ext/libyajl2/vendor/yajl/src/api/yajl_parse.h +226 -0
  43. data/ext/libyajl2/vendor/yajl/src/api/yajl_tree.h +186 -0
  44. data/ext/libyajl2/vendor/yajl/src/api/yajl_version.h.cmake +23 -0
  45. data/ext/libyajl2/vendor/yajl/src/yajl +33 -0
  46. data/ext/libyajl2/vendor/yajl/src/yajl.c +175 -0
  47. data/ext/libyajl2/vendor/yajl/src/yajl.pc.cmake +9 -0
  48. data/ext/libyajl2/vendor/yajl/src/yajl_alloc.c +52 -0
  49. data/ext/libyajl2/vendor/yajl/src/yajl_alloc.h +34 -0
  50. data/ext/libyajl2/vendor/yajl/src/yajl_buf.c +103 -0
  51. data/ext/libyajl2/vendor/yajl/src/yajl_buf.h +57 -0
  52. data/ext/libyajl2/vendor/yajl/src/yajl_bytestack.h +69 -0
  53. data/ext/libyajl2/vendor/yajl/src/yajl_encode.c +220 -0
  54. data/ext/libyajl2/vendor/yajl/src/yajl_encode.h +34 -0
  55. data/ext/libyajl2/vendor/yajl/src/yajl_gen.c +362 -0
  56. data/ext/libyajl2/vendor/yajl/src/yajl_lex.c +763 -0
  57. data/ext/libyajl2/vendor/yajl/src/yajl_lex.h +117 -0
  58. data/ext/libyajl2/vendor/yajl/src/yajl_parser.c +498 -0
  59. data/ext/libyajl2/vendor/yajl/src/yajl_parser.h +78 -0
  60. data/ext/libyajl2/vendor/yajl/src/yajl_tree.c +503 -0
  61. data/ext/libyajl2/vendor/yajl/src/yajl_version.c +7 -0
  62. data/ext/libyajl2/vendor/yajl/test/CMakeLists.txt +16 -0
  63. data/ext/libyajl2/vendor/yajl/test/api/CMakeLists.txt +25 -0
  64. data/ext/libyajl2/vendor/yajl/test/api/gen-extra-close.c +19 -0
  65. data/ext/libyajl2/vendor/yajl/test/api/run_tests.sh +23 -0
  66. data/ext/libyajl2/vendor/yajl/test/parsing/CMakeLists.txt +23 -0
  67. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ac_difficult_json_c_test_case_with_comments.json +1 -0
  68. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ac_difficult_json_c_test_case_with_comments.json.gold +36 -0
  69. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ac_simple_with_comments.json +11 -0
  70. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ac_simple_with_comments.json.gold +9 -0
  71. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ag_false_then_garbage.json +1 -0
  72. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ag_false_then_garbage.json.gold +2 -0
  73. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ag_null_then_garbage.json +1 -0
  74. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ag_null_then_garbage.json.gold +2 -0
  75. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ag_true_then_garbage.json +1 -0
  76. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ag_true_then_garbage.json.gold +2 -0
  77. data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_eof.json +1 -0
  78. data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_eof.json.gold +4 -0
  79. data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_integers.json +1 -0
  80. data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_integers.json.gold +3 -0
  81. data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_multiple.json +3 -0
  82. data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_multiple.json.gold +5 -0
  83. data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_stuff.json +7 -0
  84. data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_stuff.json.gold +14 -0
  85. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_array_open.json +1 -0
  86. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_array_open.json.gold +2 -0
  87. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_eof_str.json +1 -0
  88. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_eof_str.json.gold +1 -0
  89. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_map_open.json +1 -0
  90. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_map_open.json.gold +2 -0
  91. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_partial_ok.json +1 -0
  92. data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_partial_ok.json.gold +4 -0
  93. data/ext/libyajl2/vendor/yajl/test/parsing/cases/array.json +6 -0
  94. data/ext/libyajl2/vendor/yajl/test/parsing/cases/array.json.gold +22 -0
  95. data/ext/libyajl2/vendor/yajl/test/parsing/cases/array_close.json +1 -0
  96. data/ext/libyajl2/vendor/yajl/test/parsing/cases/array_close.json.gold +2 -0
  97. data/ext/libyajl2/vendor/yajl/test/parsing/cases/bignums.json +1 -0
  98. data/ext/libyajl2/vendor/yajl/test/parsing/cases/bignums.json.gold +5 -0
  99. data/ext/libyajl2/vendor/yajl/test/parsing/cases/bogus_char.json +4 -0
  100. data/ext/libyajl2/vendor/yajl/test/parsing/cases/bogus_char.json.gold +10 -0
  101. data/ext/libyajl2/vendor/yajl/test/parsing/cases/codepoints_from_unicode_org.json +1 -0
  102. data/ext/libyajl2/vendor/yajl/test/parsing/cases/codepoints_from_unicode_org.json.gold +2 -0
  103. data/ext/libyajl2/vendor/yajl/test/parsing/cases/deep_arrays.json +1 -0
  104. data/ext/libyajl2/vendor/yajl/test/parsing/cases/deep_arrays.json.gold +2049 -0
  105. data/ext/libyajl2/vendor/yajl/test/parsing/cases/difficult_json_c_test_case.json +1 -0
  106. data/ext/libyajl2/vendor/yajl/test/parsing/cases/difficult_json_c_test_case.json.gold +36 -0
  107. data/ext/libyajl2/vendor/yajl/test/parsing/cases/doubles.json +1 -0
  108. data/ext/libyajl2/vendor/yajl/test/parsing/cases/doubles.json.gold +7 -0
  109. data/ext/libyajl2/vendor/yajl/test/parsing/cases/doubles_in_array.json +1 -0
  110. data/ext/libyajl2/vendor/yajl/test/parsing/cases/doubles_in_array.json.gold +8 -0
  111. data/ext/libyajl2/vendor/yajl/test/parsing/cases/empty_array.json +1 -0
  112. data/ext/libyajl2/vendor/yajl/test/parsing/cases/empty_array.json.gold +3 -0
  113. data/ext/libyajl2/vendor/yajl/test/parsing/cases/empty_string.json +1 -0
  114. data/ext/libyajl2/vendor/yajl/test/parsing/cases/empty_string.json.gold +2 -0
  115. data/ext/libyajl2/vendor/yajl/test/parsing/cases/escaped_bulgarian.json +4 -0
  116. data/ext/libyajl2/vendor/yajl/test/parsing/cases/escaped_bulgarian.json.gold +7 -0
  117. data/ext/libyajl2/vendor/yajl/test/parsing/cases/escaped_foobar.json +1 -0
  118. data/ext/libyajl2/vendor/yajl/test/parsing/cases/escaped_foobar.json.gold +2 -0
  119. data/ext/libyajl2/vendor/yajl/test/parsing/cases/false.json +1 -0
  120. data/ext/libyajl2/vendor/yajl/test/parsing/cases/false.json.gold +2 -0
  121. data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_false_then_garbage.json +1 -0
  122. data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_false_then_garbage.json.gold +3 -0
  123. data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_issue_7.json +1 -0
  124. data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_issue_7.json.gold +3 -0
  125. data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_null_then_garbage.json +1 -0
  126. data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_null_then_garbage.json.gold +3 -0
  127. data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_true_then_garbage.json +1 -0
  128. data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_true_then_garbage.json.gold +3 -0
  129. data/ext/libyajl2/vendor/yajl/test/parsing/cases/four_byte_utf8.json +2 -0
  130. data/ext/libyajl2/vendor/yajl/test/parsing/cases/four_byte_utf8.json.gold +5 -0
  131. data/ext/libyajl2/vendor/yajl/test/parsing/cases/high_overflow.json +1 -0
  132. data/ext/libyajl2/vendor/yajl/test/parsing/cases/high_overflow.json.gold +2 -0
  133. data/ext/libyajl2/vendor/yajl/test/parsing/cases/integers.json +3 -0
  134. data/ext/libyajl2/vendor/yajl/test/parsing/cases/integers.json.gold +14 -0
  135. data/ext/libyajl2/vendor/yajl/test/parsing/cases/invalid_utf8.json +1 -0
  136. data/ext/libyajl2/vendor/yajl/test/parsing/cases/invalid_utf8.json.gold +3 -0
  137. data/ext/libyajl2/vendor/yajl/test/parsing/cases/isolated_surrogate_marker.json +1 -0
  138. data/ext/libyajl2/vendor/yajl/test/parsing/cases/isolated_surrogate_marker.json.gold +2 -0
  139. data/ext/libyajl2/vendor/yajl/test/parsing/cases/leading_zero_in_number.json +1 -0
  140. data/ext/libyajl2/vendor/yajl/test/parsing/cases/leading_zero_in_number.json.gold +5 -0
  141. data/ext/libyajl2/vendor/yajl/test/parsing/cases/lonely_minus_sign.json +7 -0
  142. data/ext/libyajl2/vendor/yajl/test/parsing/cases/lonely_minus_sign.json.gold +9 -0
  143. data/ext/libyajl2/vendor/yajl/test/parsing/cases/lonely_number.json +1 -0
  144. data/ext/libyajl2/vendor/yajl/test/parsing/cases/lonely_number.json.gold +2 -0
  145. data/ext/libyajl2/vendor/yajl/test/parsing/cases/low_overflow.json +1 -0
  146. data/ext/libyajl2/vendor/yajl/test/parsing/cases/low_overflow.json.gold +2 -0
  147. data/ext/libyajl2/vendor/yajl/test/parsing/cases/map_close.json +1 -0
  148. data/ext/libyajl2/vendor/yajl/test/parsing/cases/map_close.json.gold +2 -0
  149. data/ext/libyajl2/vendor/yajl/test/parsing/cases/missing_integer_after_decimal_point.json +1 -0
  150. data/ext/libyajl2/vendor/yajl/test/parsing/cases/missing_integer_after_decimal_point.json.gold +2 -0
  151. data/ext/libyajl2/vendor/yajl/test/parsing/cases/missing_integer_after_exponent.json +1 -0
  152. data/ext/libyajl2/vendor/yajl/test/parsing/cases/missing_integer_after_exponent.json.gold +2 -0
  153. data/ext/libyajl2/vendor/yajl/test/parsing/cases/multiple.json +3 -0
  154. data/ext/libyajl2/vendor/yajl/test/parsing/cases/multiple.json.gold +4 -0
  155. data/ext/libyajl2/vendor/yajl/test/parsing/cases/non_utf8_char_in_string.json +1 -0
  156. data/ext/libyajl2/vendor/yajl/test/parsing/cases/non_utf8_char_in_string.json.gold +8 -0
  157. data/ext/libyajl2/vendor/yajl/test/parsing/cases/np_partial_bad.json +1 -0
  158. data/ext/libyajl2/vendor/yajl/test/parsing/cases/np_partial_bad.json.gold +5 -0
  159. data/ext/libyajl2/vendor/yajl/test/parsing/cases/null.json +1 -0
  160. data/ext/libyajl2/vendor/yajl/test/parsing/cases/null.json.gold +2 -0
  161. data/ext/libyajl2/vendor/yajl/test/parsing/cases/nulls_and_bools.json +5 -0
  162. data/ext/libyajl2/vendor/yajl/test/parsing/cases/nulls_and_bools.json.gold +9 -0
  163. data/ext/libyajl2/vendor/yajl/test/parsing/cases/simple.json +5 -0
  164. data/ext/libyajl2/vendor/yajl/test/parsing/cases/simple.json.gold +9 -0
  165. data/ext/libyajl2/vendor/yajl/test/parsing/cases/simple_with_comments.json +11 -0
  166. data/ext/libyajl2/vendor/yajl/test/parsing/cases/simple_with_comments.json.gold +5 -0
  167. data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_invalid_escape.json +1 -0
  168. data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_invalid_escape.json.gold +3 -0
  169. data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_invalid_hex_char.json +1 -0
  170. data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_invalid_hex_char.json.gold +2 -0
  171. data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_with_escapes.json +3 -0
  172. data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_with_escapes.json.gold +7 -0
  173. data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_with_invalid_newline.json +2 -0
  174. data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_with_invalid_newline.json.gold +2 -0
  175. data/ext/libyajl2/vendor/yajl/test/parsing/cases/three_byte_utf8.json +1 -0
  176. data/ext/libyajl2/vendor/yajl/test/parsing/cases/three_byte_utf8.json.gold +7 -0
  177. data/ext/libyajl2/vendor/yajl/test/parsing/cases/true.json +1 -0
  178. data/ext/libyajl2/vendor/yajl/test/parsing/cases/true.json.gold +2 -0
  179. data/ext/libyajl2/vendor/yajl/test/parsing/cases/unescaped_bulgarian.json +1 -0
  180. data/ext/libyajl2/vendor/yajl/test/parsing/cases/unescaped_bulgarian.json.gold +4 -0
  181. data/ext/libyajl2/vendor/yajl/test/parsing/cases/zerobyte.json +1 -0
  182. data/ext/libyajl2/vendor/yajl/test/parsing/cases/zerobyte.json.gold +0 -0
  183. data/ext/libyajl2/vendor/yajl/test/parsing/run_tests.sh +94 -0
  184. data/ext/libyajl2/vendor/yajl/test/parsing/yajl_test.c +291 -0
  185. data/ext/libyajl2/vendor/yajl/verify/CMakeLists.txt +37 -0
  186. data/ext/libyajl2/vendor/yajl/verify/json_verify.c +120 -0
  187. data/lib/libyajl2.rb +13 -0
  188. data/lib/libyajl2/version.rb +3 -0
  189. data/libyajl2.gemspec +29 -0
  190. data/spec/ffi_spec.rb +20 -0
  191. data/spec/path_spec.rb +15 -0
  192. data/spec/spec_helper.rb +13 -0
  193. metadata +296 -0
data/README.md ADDED
@@ -0,0 +1,9 @@
1
+ libyajl2-gem
2
+ ============
3
+
4
+ [![Build Status](https://secure.travis-ci.org/lamont-granquist/libyajl2-gem.svg?branch=master)](http://travis-ci.org/lamont-granquist/libyajl2-gem)
5
+ [![Dependency Status](https://gemnasium.com/lamont-granquist/libyajl2-gem.svg)](https://gemnasium.com/lamont-granquist/libyajl2-gem)
6
+ [![Code Climate](https://codeclimate.com/github/lamont-granquist/libyajl2-gem.png)](https://codeclimate.com/github/lamont-granquist/libyajl2-gem)
7
+ [![Gem Version](https://badge.fury.io/rb/libyajl2.svg)](http://badge.fury.io/rb/libyajl2)
8
+
9
+ gem to install the libyajl2 c-library for distributions which do not have it
data/Rakefile ADDED
@@ -0,0 +1,144 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ require 'rubygems/package_task'
5
+ require 'rspec/core/rake_task'
6
+
7
+ GEM_NAME = "libyajl2"
8
+
9
+ gemspec = eval(File.read('libyajl2.gemspec'))
10
+
11
+ Gem::PackageTask.new(gemspec) do |pkg|
12
+ pkg.need_tar = true
13
+ end
14
+
15
+ #
16
+ # build tasks
17
+ #
18
+
19
+ desc "repackage and install #{GEM_NAME}-#{Libyajl2::VERSION}.gem"
20
+ task :install => :repackage do
21
+ sh %{gem install pkg/#{GEM_NAME}-#{Libyajl2::VERSION}.gem --no-rdoc --no-ri}
22
+ end
23
+
24
+ desc "uninstall #{GEM_NAME}-#{Libyajl2::VERSION}.gem"
25
+ task :uninstall do
26
+ sh %{gem uninstall #{GEM_NAME} -x -v #{Libyajl2::VERSION} }
27
+ end
28
+
29
+ desc "compile native gem"
30
+ task :compile do
31
+ cd "ext/libyajl2"
32
+ ruby "extconf.rb"
33
+ end
34
+
35
+ desc "clean the git repo"
36
+ task :clean do
37
+ sh "git clean -fdx"
38
+ cd "ext/libyajl2/vendor/yajl"
39
+ sh "git clean -fdx"
40
+ end
41
+
42
+ # FIXME: need a rake task to update the git submodule and need to do that before shipping
43
+ desc "Build it and ship it"
44
+ task :ship => [:clean, :gem] do
45
+ sh("git tag #{Libyajl2::VERSION}")
46
+ sh("git push --tags")
47
+ Dir[File.expand_path("../pkg/*.gem", __FILE__)].reverse.each do |built_gem|
48
+ sh("gem push #{built_gem}")
49
+ end
50
+ end
51
+
52
+ #
53
+ # test tasks
54
+ #
55
+
56
+ RSpec::Core::RakeTask.new(:spec)
57
+
58
+ if RUBY_VERSION.to_f >= 1.9
59
+ namespace :integration do
60
+ begin
61
+ require 'kitchen'
62
+ rescue LoadError
63
+ task :vagrant do
64
+ puts "test-kitchen gem is not installed"
65
+ end
66
+ task :cloud do
67
+ puts "test-kitchen gem is not installed"
68
+ end
69
+ else
70
+ desc 'Run Test Kitchen with Vagrant'
71
+ task :vagrant do
72
+ Kitchen.logger = Kitchen.default_file_logger
73
+ Kitchen::Config.new.instances.each do |instance|
74
+ instance.test(:always)
75
+ end
76
+ end
77
+
78
+ desc 'Run Test Kitchen with cloud plugins'
79
+ task :cloud do
80
+ if ENV['TRAVIS_PULL_REQUEST'] != 'true'
81
+ ENV['KITCHEN_YAML'] = '.kitchen.cloud.yml'
82
+ sh "kitchen test --concurrency 4"
83
+ end
84
+ end
85
+ end
86
+ end
87
+ namespace :style do
88
+ desc 'Run Ruby style checks'
89
+ begin
90
+ require 'rubocop/rake_task'
91
+ rescue LoadError
92
+ task :rubocop do
93
+ puts "rubocop gem is not installed"
94
+ end
95
+ else
96
+ Rubocop::RakeTask.new(:rubocop) do |t|
97
+ t.fail_on_error = false
98
+ end
99
+ end
100
+
101
+ desc 'Run Ruby smell checks'
102
+ begin
103
+ require 'reek/rake/task'
104
+ rescue LoadError
105
+ task :reek do
106
+ puts "reek gem is not installed"
107
+ end
108
+ else
109
+ Reek::Rake::Task.new(:reek) do |t|
110
+ t.fail_on_error = false
111
+ t.config_files = '.reek.yml'
112
+ end
113
+ end
114
+ end
115
+ else
116
+ namespace :integration do
117
+ task :vagrant do
118
+ puts "test-kitchen unsupported on ruby 1.8"
119
+ end
120
+ task :cloud do
121
+ puts "test-kitchen unsupported on ruby 1.8"
122
+ end
123
+ end
124
+ namespace :style do
125
+ task :rubocop do
126
+ puts "rubocop unsupported on ruby 1.8"
127
+ end
128
+ task :reek do
129
+ puts "reek unsupported on ruby 1.8"
130
+ end
131
+ end
132
+ end
133
+
134
+
135
+ desc 'Run all style checks'
136
+ task :style => ['style:rubocop', 'style:reek']
137
+
138
+ desc 'Run style + spec tests by default on travis'
139
+ task :travis => ['style', 'spec']
140
+
141
+ desc 'Run style, spec and test kichen on travis'
142
+ task :travis_all => ['style', 'spec', 'integration:cloud']
143
+
144
+ task :default => ['style', 'spec', 'integration:vagrant']
data/bootstrap.sh ADDED
@@ -0,0 +1,60 @@
1
+ #!/bin/sh
2
+ #
3
+ # bootstrap.sh file for test-kitchen shell provisioner to run tests on
4
+ # remote server.
5
+ #
6
+
7
+ set -e
8
+ set -x
9
+
10
+ if test -f "/etc/lsb-release" && grep -q DISTRIB_ID /etc/lsb-release; then
11
+ platform=`grep DISTRIB_ID /etc/lsb-release | cut -d "=" -f 2 | tr '[A-Z]' '[a-z]'`
12
+ platform_version=`grep DISTRIB_RELEASE /etc/lsb-release | cut -d "=" -f 2`
13
+ fi
14
+
15
+ compile_rubygems() {
16
+ cd /tmp
17
+ wget http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz -O - | tar zxf -
18
+ cd rubygems-1.6.2 && ruby setup.rb --no-format-executable
19
+ # i think this assumes running under bash
20
+ cd -
21
+ }
22
+
23
+ case $platform in
24
+ "ubuntu")
25
+ export DEBIAN_FRONTEND=noninteractive
26
+ apt-get update
27
+ apt-get -y -y install bc
28
+ ubuntu_before_12_04=`echo "$platform_version < 12.04" | bc`
29
+ ubuntu_before_14_04=`echo "$platform_version < 14.04" | bc`
30
+ if [ "x$ubuntu_before_12_04" = "x1" ]; then
31
+ apt-get -q -y install ruby1.8 ruby1.8-dev rubygems1.8 libopenssl-ruby1.8
32
+ apt-get -q -y install git-core cmake build-essential wget
33
+ update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.8 500
34
+ update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.8 500
35
+ update-alternatives --config ruby
36
+ update-alternatives --config gem
37
+ compile_rubygems
38
+ elif [ "x$ubuntu_before_14_04" = "x1" ]; then
39
+ apt-get -q -y purge ruby1.8 ruby1.8-dev rubygems1.8 libopenssl-ruby1.8
40
+ apt-get -q -y install ruby1.9.1 ruby1.9.1-dev rubygems1.9.1 libopenssl-ruby1.9.1
41
+ apt-get -q -y install git cmake build-essential
42
+ update-alternatives --config ruby
43
+ update-alternatives --config gem
44
+ else
45
+ apt-get -q -y purge ruby1.8
46
+ apt-get -q -y install ruby1.9.1 ruby1.9.1-dev rubygems1.9.1 libopenssl-ruby1.9.1
47
+ apt-get -q -y install git cmake build-essential
48
+ fi
49
+ ;;
50
+ *)
51
+ echo "i don't know how to setup base o/s on this platform, hope it works!"
52
+ ;;
53
+ esac
54
+
55
+ gem install bundler --no-rdoc --no-ri
56
+
57
+ cd /tmp/kitchen/data
58
+ bundle install --without development_extras
59
+ rake compile
60
+ rake spec
@@ -0,0 +1,7 @@
1
+ # We do all the work in extconf.rb, so we just have a dummy makefile here to
2
+ # make rubygems happy.
3
+
4
+ all:
5
+
6
+ install:
7
+
@@ -0,0 +1,66 @@
1
+ exit(0) if ENV["USE_SYSTEM_LIBYAJL2"]
2
+
3
+ require 'pp'
4
+
5
+ module Libyajl2Build
6
+ class BuildError < StandardError; end
7
+
8
+ LIBYAJL2_VENDOR_DIR = File.expand_path("../vendor/yajl", __FILE__).freeze
9
+
10
+ PREFIX = File.expand_path("../../../lib/libyajl2/vendored-libyajl2", __FILE__).freeze
11
+
12
+ def self.windows?
13
+ !!(RUBY_PLATFORM =~ /mswin|mingw|windows/)
14
+ end
15
+
16
+ def self.libyajl2_vendor_dir
17
+ LIBYAJL2_VENDOR_DIR
18
+ end
19
+
20
+ def self.configure
21
+ File.join(LIBYAJL2_VENDOR_DIR, "configure")
22
+ end
23
+
24
+ def self.prefix
25
+ PREFIX
26
+ end
27
+
28
+ def self.configure_cmd
29
+ # NB: this is not a gnu configure command
30
+ %W[
31
+ sh
32
+ #{configure}
33
+ -p
34
+ #{prefix}
35
+ ]
36
+ end
37
+
38
+ def self.setup_env
39
+ if windows?
40
+ ENV['CC'] = 'gcc'
41
+ ENV['CXX'] = 'g++'
42
+ end
43
+ end
44
+
45
+ def self.system(*args)
46
+ print("-> #{args.join(' ')}\n")
47
+ super(*args)
48
+ end
49
+
50
+ def self.run_build_commands
51
+ setup_env
52
+ puts `pwd`
53
+ puts `env`
54
+ puts configure_cmd
55
+ system(*configure_cmd) &&
56
+ system("make", "-j", "5", "install")
57
+ end
58
+
59
+ def self.run
60
+ Dir.chdir(libyajl2_vendor_dir) do
61
+ run_build_commands or raise BuildError, "Failed to build libyajl2 library."
62
+ end
63
+ end
64
+ end
65
+
66
+ Libyajl2Build.run
@@ -0,0 +1,3 @@
1
+ .DS_Store
2
+ Makefile
3
+ /build/
@@ -0,0 +1,23 @@
1
+ Short story (If you already have ruby and cmake):
2
+
3
+ ./configure && make install
4
+
5
+ When things go wrong:
6
+
7
+ attain CMake (http://www.cmake.org) and ruby (http://ruby-lang.org) and
8
+ try again.
9
+
10
+ OR, attain CMake and build by hand:
11
+
12
+ 1. mkdir build
13
+ 2. cd build
14
+ 3. cmake ..
15
+ 4. make
16
+ 5. build output left in yajl-X.Y.Z
17
+
18
+ NOTE: for 64-bit systems where lib64 is used you can pass the cmake
19
+ variable LIB_SUFFIX to cause installation into the system's 'lib64'
20
+ directory.
21
+
22
+ best,
23
+ lloyd
@@ -0,0 +1,27 @@
1
+ YAJL has been successfully built using Visual Studio 8. CMake, a
2
+ build file generator, is used to build the software. CMake supports
3
+ several different build environments, so you may either build YAJL
4
+ using the IDE via the following steps:
5
+
6
+ 1. acquire cmake (http://www.cmake.org)
7
+ 2. mkdir build
8
+ 3. cd build
9
+ 4. cmake ..
10
+ 5. devenv YetAnotherJSONParser.sln /project ALL_BUILD /build Release
11
+ 6. build output is left in build/yajl-X.Y.Z
12
+
13
+ Or you can build from the command line using nmake:
14
+
15
+ 1. Click Start > Programs > Microsoft Visual Studio > Visual Studio
16
+ Tools > Visual Studio Command Prompt -- for your version of Visual
17
+ Studio, which will open a command prompt. You may verify that the
18
+ compiler is in your path by typing "cl /?" at the prompt.
19
+ 2. cd C:\path\to\yajl\source\
20
+ 3. mkdir build
21
+ 4. cd build
22
+ 5. cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..
23
+ 6. nmake
24
+ 7. nmake install
25
+
26
+ Earlier versions of visual studio and other build generators haven't
27
+ been thoroughly tested, but should work without any major issues.
@@ -0,0 +1,81 @@
1
+ # Copyright (c) 2007-2014, Lloyd Hilaiel <me@lloyd.io>
2
+ #
3
+ # Permission to use, copy, modify, and/or distribute this software for any
4
+ # purpose with or without fee is hereby granted, provided that the above
5
+ # copyright notice and this permission notice appear in all copies.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
+
15
+ CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
16
+
17
+ PROJECT(YetAnotherJSONParser C)
18
+
19
+ SET (YAJL_MAJOR 2)
20
+ SET (YAJL_MINOR 1)
21
+ SET (YAJL_MICRO 1)
22
+
23
+ SET (YAJL_DIST_NAME "yajl-${YAJL_MAJOR}.${YAJL_MINOR}.${YAJL_MICRO}")
24
+
25
+ IF (NOT CMAKE_BUILD_TYPE)
26
+ SET(CMAKE_BUILD_TYPE "Release")
27
+ ENDIF (NOT CMAKE_BUILD_TYPE)
28
+
29
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
30
+
31
+ IF (WIN32)
32
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
33
+ ADD_DEFINITIONS(-DWIN32)
34
+ SET(linkFlags "/PDB:NONE /INCREMENTAL:NO /OPT:NOREF /OPT:NOICF")
35
+ SET(CMAKE_EXE_LINKER_FLAGS "${linkFlags}"
36
+ CACHE STRING "YAJL linker flags" FORCE)
37
+ SET(CMAKE_EXE_LINKER_FLAGS_DEBUG ""
38
+ CACHE STRING "YAJL debug linker flags" FORCE)
39
+ SET(CMAKE_EXE_LINKER_FLAGS_RELEASE
40
+ CACHE STRING "YAJL release linker flags" FORCE)
41
+ SET(CMAKE_SHARED_LINKER_FLAGS "${linkFlags}"
42
+ CACHE STRING "YAJL shared linker flags" FORCE)
43
+ SET(CMAKE_MODULE_LINKER_FLAGS "${linkFlags}"
44
+ CACHE STRING "YAJL module linker flags" FORCE)
45
+
46
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996 /wd4255 /wd4130 /wd4100 /wd4711")
47
+ SET(CMAKE_C_FLAGS_DEBUG "/D DEBUG /Od /Z7")
48
+ SET(CMAKE_C_FLAGS_RELEASE "/D NDEBUG /O2")
49
+ ELSE (WIN32)
50
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
51
+ IF(CMAKE_COMPILER_IS_GNUCC)
52
+ INCLUDE(CheckCCompilerFlag)
53
+ CHECK_C_COMPILER_FLAG(-fvisibility=hidden HAVE_GCC_VISIBILITY)
54
+ IF(HAVE_GCC_VISIBILITY)
55
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
56
+ ENDIF(HAVE_GCC_VISIBILITY)
57
+ ENDIF(CMAKE_COMPILER_IS_GNUCC)
58
+ SET(CMAKE_C_FLAGS
59
+ "${CMAKE_C_FLAGS} -std=c99 -pedantic -Wpointer-arith -Wno-format-y2k -Wstrict-prototypes -Wmissing-declarations -Wnested-externs -Wextra -Wundef -Wwrite-strings -Wold-style-definition -Wredundant-decls -Wno-unused-parameter -Wno-sign-compare -Wmissing-prototypes")
60
+
61
+ SET(CMAKE_C_FLAGS_DEBUG "-DDEBUG -g")
62
+ SET(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O2 -Wuninitialized")
63
+ ENDIF (WIN32)
64
+
65
+
66
+ ADD_SUBDIRECTORY(src)
67
+ ADD_SUBDIRECTORY(test)
68
+ ADD_SUBDIRECTORY(reformatter)
69
+ ADD_SUBDIRECTORY(verify)
70
+ ADD_SUBDIRECTORY(example)
71
+ ADD_SUBDIRECTORY(perf)
72
+
73
+ INCLUDE(YAJLDoc.cmake)
74
+
75
+ # a test target
76
+ ADD_CUSTOM_TARGET(test
77
+ ./run_tests.sh ${CMAKE_CURRENT_BINARY_DIR}/test/parsing/yajl_test
78
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test/parsing)
79
+
80
+ ADD_CUSTOM_TARGET(test-api ${CMAKE_CURRENT_SOURCE_DIR}/test/api/run_tests.sh
81
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/api)
@@ -0,0 +1,13 @@
1
+ Copyright (c) 2007-2014, Lloyd Hilaiel <me@lloyd.io>
2
+
3
+ Permission to use, copy, modify, and/or distribute this software for any
4
+ purpose with or without fee is hereby granted, provided that the above
5
+ copyright notice and this permission notice appear in all copies.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.