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.
- checksums.yaml +7 -0
- data/.gitignore +25 -0
- data/.gitmodules +3 -0
- data/.kitchen.cloud.yml +87 -0
- data/.kitchen.yml +38 -0
- data/.reek.yml +3 -0
- data/.rspec +1 -0
- data/.rubocop.yml +38 -0
- data/.travis.yml +8 -0
- data/CONTRIBUTING.md +4 -0
- data/Gemfile +12 -0
- data/LICENSE +201 -0
- data/README.md +9 -0
- data/Rakefile +144 -0
- data/bootstrap.sh +60 -0
- data/ext/libyajl2/Makefile +7 -0
- data/ext/libyajl2/extconf.rb +66 -0
- data/ext/libyajl2/vendor/yajl/.gitignore +3 -0
- data/ext/libyajl2/vendor/yajl/BUILDING +23 -0
- data/ext/libyajl2/vendor/yajl/BUILDING.win32 +27 -0
- data/ext/libyajl2/vendor/yajl/CMakeLists.txt +81 -0
- data/ext/libyajl2/vendor/yajl/COPYING +13 -0
- data/ext/libyajl2/vendor/yajl/ChangeLog +189 -0
- data/ext/libyajl2/vendor/yajl/README +74 -0
- data/ext/libyajl2/vendor/yajl/TODO +9 -0
- data/ext/libyajl2/vendor/yajl/YAJLDoc.cmake +26 -0
- data/ext/libyajl2/vendor/yajl/configure +81 -0
- data/ext/libyajl2/vendor/yajl/example/CMakeLists.txt +23 -0
- data/ext/libyajl2/vendor/yajl/example/README.md +7 -0
- data/ext/libyajl2/vendor/yajl/example/parse_config.c +69 -0
- data/ext/libyajl2/vendor/yajl/example/sample.config +101 -0
- data/ext/libyajl2/vendor/yajl/perf/CMakeLists.txt +23 -0
- data/ext/libyajl2/vendor/yajl/perf/documents.c +1418 -0
- data/ext/libyajl2/vendor/yajl/perf/documents.h +28 -0
- data/ext/libyajl2/vendor/yajl/perf/perftest.c +134 -0
- data/ext/libyajl2/vendor/yajl/reformatter/CMakeLists.txt +43 -0
- data/ext/libyajl2/vendor/yajl/reformatter/json_reformat.c +210 -0
- data/ext/libyajl2/vendor/yajl/src/CMakeLists.txt +87 -0
- data/ext/libyajl2/vendor/yajl/src/YAJL.dxy +1258 -0
- data/ext/libyajl2/vendor/yajl/src/api/yajl_common.h +75 -0
- data/ext/libyajl2/vendor/yajl/src/api/yajl_gen.h +167 -0
- data/ext/libyajl2/vendor/yajl/src/api/yajl_parse.h +226 -0
- data/ext/libyajl2/vendor/yajl/src/api/yajl_tree.h +186 -0
- data/ext/libyajl2/vendor/yajl/src/api/yajl_version.h.cmake +23 -0
- data/ext/libyajl2/vendor/yajl/src/yajl +33 -0
- data/ext/libyajl2/vendor/yajl/src/yajl.c +175 -0
- data/ext/libyajl2/vendor/yajl/src/yajl.pc.cmake +9 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_alloc.c +52 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_alloc.h +34 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_buf.c +103 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_buf.h +57 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_bytestack.h +69 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_encode.c +220 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_encode.h +34 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_gen.c +362 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_lex.c +763 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_lex.h +117 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_parser.c +498 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_parser.h +78 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_tree.c +503 -0
- data/ext/libyajl2/vendor/yajl/src/yajl_version.c +7 -0
- data/ext/libyajl2/vendor/yajl/test/CMakeLists.txt +16 -0
- data/ext/libyajl2/vendor/yajl/test/api/CMakeLists.txt +25 -0
- data/ext/libyajl2/vendor/yajl/test/api/gen-extra-close.c +19 -0
- data/ext/libyajl2/vendor/yajl/test/api/run_tests.sh +23 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/CMakeLists.txt +23 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ac_difficult_json_c_test_case_with_comments.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ac_difficult_json_c_test_case_with_comments.json.gold +36 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ac_simple_with_comments.json +11 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ac_simple_with_comments.json.gold +9 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ag_false_then_garbage.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ag_false_then_garbage.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ag_null_then_garbage.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ag_null_then_garbage.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ag_true_then_garbage.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ag_true_then_garbage.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_eof.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_eof.json.gold +4 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_integers.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_integers.json.gold +3 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_multiple.json +3 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_multiple.json.gold +5 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_stuff.json +7 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/am_stuff.json.gold +14 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_array_open.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_array_open.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_eof_str.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_eof_str.json.gold +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_map_open.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_map_open.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_partial_ok.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/ap_partial_ok.json.gold +4 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/array.json +6 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/array.json.gold +22 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/array_close.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/array_close.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/bignums.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/bignums.json.gold +5 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/bogus_char.json +4 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/bogus_char.json.gold +10 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/codepoints_from_unicode_org.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/codepoints_from_unicode_org.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/deep_arrays.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/deep_arrays.json.gold +2049 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/difficult_json_c_test_case.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/difficult_json_c_test_case.json.gold +36 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/doubles.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/doubles.json.gold +7 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/doubles_in_array.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/doubles_in_array.json.gold +8 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/empty_array.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/empty_array.json.gold +3 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/empty_string.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/empty_string.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/escaped_bulgarian.json +4 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/escaped_bulgarian.json.gold +7 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/escaped_foobar.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/escaped_foobar.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/false.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/false.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_false_then_garbage.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_false_then_garbage.json.gold +3 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_issue_7.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_issue_7.json.gold +3 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_null_then_garbage.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_null_then_garbage.json.gold +3 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_true_then_garbage.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/fg_true_then_garbage.json.gold +3 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/four_byte_utf8.json +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/four_byte_utf8.json.gold +5 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/high_overflow.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/high_overflow.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/integers.json +3 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/integers.json.gold +14 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/invalid_utf8.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/invalid_utf8.json.gold +3 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/isolated_surrogate_marker.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/isolated_surrogate_marker.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/leading_zero_in_number.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/leading_zero_in_number.json.gold +5 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/lonely_minus_sign.json +7 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/lonely_minus_sign.json.gold +9 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/lonely_number.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/lonely_number.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/low_overflow.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/low_overflow.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/map_close.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/map_close.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/missing_integer_after_decimal_point.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/missing_integer_after_decimal_point.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/missing_integer_after_exponent.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/missing_integer_after_exponent.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/multiple.json +3 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/multiple.json.gold +4 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/non_utf8_char_in_string.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/non_utf8_char_in_string.json.gold +8 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/np_partial_bad.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/np_partial_bad.json.gold +5 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/null.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/null.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/nulls_and_bools.json +5 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/nulls_and_bools.json.gold +9 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/simple.json +5 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/simple.json.gold +9 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/simple_with_comments.json +11 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/simple_with_comments.json.gold +5 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_invalid_escape.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_invalid_escape.json.gold +3 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_invalid_hex_char.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_invalid_hex_char.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_with_escapes.json +3 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_with_escapes.json.gold +7 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_with_invalid_newline.json +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/string_with_invalid_newline.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/three_byte_utf8.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/three_byte_utf8.json.gold +7 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/true.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/true.json.gold +2 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/unescaped_bulgarian.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/unescaped_bulgarian.json.gold +4 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/zerobyte.json +1 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/cases/zerobyte.json.gold +0 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/run_tests.sh +94 -0
- data/ext/libyajl2/vendor/yajl/test/parsing/yajl_test.c +291 -0
- data/ext/libyajl2/vendor/yajl/verify/CMakeLists.txt +37 -0
- data/ext/libyajl2/vendor/yajl/verify/json_verify.c +120 -0
- data/lib/libyajl2.rb +13 -0
- data/lib/libyajl2/version.rb +3 -0
- data/libyajl2.gemspec +29 -0
- data/spec/ffi_spec.rb +20 -0
- data/spec/path_spec.rb +15 -0
- data/spec/spec_helper.rb +13 -0
- metadata +296 -0
data/README.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
libyajl2-gem
|
|
2
|
+
============
|
|
3
|
+
|
|
4
|
+
[](http://travis-ci.org/lamont-granquist/libyajl2-gem)
|
|
5
|
+
[](https://gemnasium.com/lamont-granquist/libyajl2-gem)
|
|
6
|
+
[](https://codeclimate.com/github/lamont-granquist/libyajl2-gem)
|
|
7
|
+
[](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,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,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.
|