libyajl2 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![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,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.
|