libyajl2 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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.