engineyard-serverside 1.5.21 → 1.5.23.ruby19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (184) hide show
  1. data/lib/engineyard-serverside/cli.rb +39 -45
  2. data/lib/engineyard-serverside/configuration.rb +28 -4
  3. data/lib/engineyard-serverside/deploy.rb +5 -4
  4. data/lib/engineyard-serverside/logged_output.rb +3 -5
  5. data/lib/engineyard-serverside/server.rb +26 -2
  6. data/lib/engineyard-serverside/task.rb +2 -4
  7. data/lib/engineyard-serverside/version.rb +1 -1
  8. data/lib/engineyard-serverside.rb +8 -20
  9. data/spec/basic_deploy_spec.rb +1 -1
  10. data/spec/bundler_deploy_spec.rb +1 -1
  11. data/spec/nodejs_deploy_spec.rb +1 -1
  12. data/spec/rails31_deploy_spec.rb +1 -1
  13. data/spec/services_deploy_spec.rb +1 -1
  14. metadata +80 -233
  15. data/lib/vendor/dataflow/HISTORY +0 -52
  16. data/lib/vendor/dataflow/LICENSE +0 -19
  17. data/lib/vendor/dataflow/README.textile +0 -290
  18. data/lib/vendor/dataflow/Rakefile +0 -36
  19. data/lib/vendor/dataflow/dataflow/actor.rb +0 -22
  20. data/lib/vendor/dataflow/dataflow/equality.rb +0 -44
  21. data/lib/vendor/dataflow/dataflow/future_queue.rb +0 -24
  22. data/lib/vendor/dataflow/dataflow/port.rb +0 -54
  23. data/lib/vendor/dataflow/dataflow.rb +0 -124
  24. data/lib/vendor/dataflow/examples/barrier.rb +0 -9
  25. data/lib/vendor/dataflow/examples/data_driven.rb +0 -17
  26. data/lib/vendor/dataflow/examples/dataflow_http_gets.rb +0 -13
  27. data/lib/vendor/dataflow/examples/flow.rb +0 -20
  28. data/lib/vendor/dataflow/examples/future_http_gets.rb +0 -12
  29. data/lib/vendor/dataflow/examples/future_queue.rb +0 -11
  30. data/lib/vendor/dataflow/examples/instance_variables.rb +0 -15
  31. data/lib/vendor/dataflow/examples/laziness.rb +0 -9
  32. data/lib/vendor/dataflow/examples/local_variables.rb +0 -11
  33. data/lib/vendor/dataflow/examples/messages.rb +0 -26
  34. data/lib/vendor/dataflow/examples/port_http_gets.rb +0 -13
  35. data/lib/vendor/dataflow/examples/port_send.rb +0 -10
  36. data/lib/vendor/dataflow/examples/ring.rb +0 -21
  37. data/lib/vendor/dataflow/spec/actor_spec.rb +0 -28
  38. data/lib/vendor/dataflow/spec/anonymous_variables_spec.rb +0 -21
  39. data/lib/vendor/dataflow/spec/barrier_spec.rb +0 -25
  40. data/lib/vendor/dataflow/spec/by_need_spec.rb +0 -55
  41. data/lib/vendor/dataflow/spec/dataflow_spec.rb +0 -151
  42. data/lib/vendor/dataflow/spec/equality_spec.rb +0 -40
  43. data/lib/vendor/dataflow/spec/flow_spec.rb +0 -25
  44. data/lib/vendor/dataflow/spec/forker_spec.rb +0 -28
  45. data/lib/vendor/dataflow/spec/future_queue_spec.rb +0 -31
  46. data/lib/vendor/dataflow/spec/inspect_spec.rb +0 -19
  47. data/lib/vendor/dataflow/spec/need_later_spec.rb +0 -12
  48. data/lib/vendor/dataflow/spec/port_spec.rb +0 -26
  49. data/lib/vendor/dataflow/spec/spec.opts +0 -1
  50. data/lib/vendor/dataflow/spec/spec_helper.rb +0 -10
  51. data/lib/vendor/escape/Readme +0 -21
  52. data/lib/vendor/escape/doc_include/template/qualitysmith.rb +0 -631
  53. data/lib/vendor/json_pure/CHANGES +0 -166
  54. data/lib/vendor/json_pure/COPYING +0 -58
  55. data/lib/vendor/json_pure/GPL +0 -340
  56. data/lib/vendor/json_pure/README +0 -358
  57. data/lib/vendor/json_pure/Rakefile +0 -292
  58. data/lib/vendor/json_pure/TODO +0 -1
  59. data/lib/vendor/json_pure/VERSION +0 -1
  60. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log +0 -52
  61. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat +0 -1000
  62. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat +0 -1001
  63. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat +0 -900
  64. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat +0 -901
  65. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat +0 -1000
  66. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat +0 -1001
  67. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log +0 -261
  68. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat +0 -1000
  69. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat +0 -1001
  70. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat +0 -1000
  71. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat +0 -1001
  72. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat +0 -1000
  73. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat +0 -1001
  74. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log +0 -262
  75. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat +0 -1000
  76. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat +0 -1001
  77. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log +0 -82
  78. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log +0 -34
  79. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat +0 -900
  80. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat +0 -901
  81. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log +0 -81
  82. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat +0 -1000
  83. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat +0 -1001
  84. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log +0 -82
  85. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat +0 -1000
  86. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat +0 -1001
  87. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log +0 -82
  88. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat +0 -1000
  89. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat +0 -1001
  90. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log +0 -82
  91. data/lib/vendor/json_pure/benchmarks/generator2_benchmark.rb +0 -222
  92. data/lib/vendor/json_pure/benchmarks/generator_benchmark.rb +0 -224
  93. data/lib/vendor/json_pure/benchmarks/ohai.json +0 -1216
  94. data/lib/vendor/json_pure/benchmarks/ohai.ruby +0 -1
  95. data/lib/vendor/json_pure/benchmarks/parser2_benchmark.rb +0 -251
  96. data/lib/vendor/json_pure/benchmarks/parser_benchmark.rb +0 -259
  97. data/lib/vendor/json_pure/bin/edit_json.rb +0 -9
  98. data/lib/vendor/json_pure/bin/prettify_json.rb +0 -75
  99. data/lib/vendor/json_pure/data/example.json +0 -1
  100. data/lib/vendor/json_pure/data/index.html +0 -38
  101. data/lib/vendor/json_pure/data/prototype.js +0 -4184
  102. data/lib/vendor/json_pure/ext/json/ext/generator/extconf.rb +0 -16
  103. data/lib/vendor/json_pure/ext/json/ext/generator/generator.c +0 -1323
  104. data/lib/vendor/json_pure/ext/json/ext/generator/generator.h +0 -170
  105. data/lib/vendor/json_pure/ext/json/ext/parser/extconf.rb +0 -15
  106. data/lib/vendor/json_pure/ext/json/ext/parser/parser.c +0 -1935
  107. data/lib/vendor/json_pure/ext/json/ext/parser/parser.h +0 -71
  108. data/lib/vendor/json_pure/ext/json/ext/parser/parser.rl +0 -792
  109. data/lib/vendor/json_pure/install.rb +0 -26
  110. data/lib/vendor/json_pure/tests/fixtures/fail1.json +0 -1
  111. data/lib/vendor/json_pure/tests/fixtures/fail10.json +0 -1
  112. data/lib/vendor/json_pure/tests/fixtures/fail11.json +0 -1
  113. data/lib/vendor/json_pure/tests/fixtures/fail12.json +0 -1
  114. data/lib/vendor/json_pure/tests/fixtures/fail13.json +0 -1
  115. data/lib/vendor/json_pure/tests/fixtures/fail14.json +0 -1
  116. data/lib/vendor/json_pure/tests/fixtures/fail18.json +0 -1
  117. data/lib/vendor/json_pure/tests/fixtures/fail19.json +0 -1
  118. data/lib/vendor/json_pure/tests/fixtures/fail2.json +0 -1
  119. data/lib/vendor/json_pure/tests/fixtures/fail20.json +0 -1
  120. data/lib/vendor/json_pure/tests/fixtures/fail21.json +0 -1
  121. data/lib/vendor/json_pure/tests/fixtures/fail22.json +0 -1
  122. data/lib/vendor/json_pure/tests/fixtures/fail23.json +0 -1
  123. data/lib/vendor/json_pure/tests/fixtures/fail24.json +0 -1
  124. data/lib/vendor/json_pure/tests/fixtures/fail25.json +0 -1
  125. data/lib/vendor/json_pure/tests/fixtures/fail27.json +0 -2
  126. data/lib/vendor/json_pure/tests/fixtures/fail28.json +0 -2
  127. data/lib/vendor/json_pure/tests/fixtures/fail3.json +0 -1
  128. data/lib/vendor/json_pure/tests/fixtures/fail4.json +0 -1
  129. data/lib/vendor/json_pure/tests/fixtures/fail5.json +0 -1
  130. data/lib/vendor/json_pure/tests/fixtures/fail6.json +0 -1
  131. data/lib/vendor/json_pure/tests/fixtures/fail7.json +0 -1
  132. data/lib/vendor/json_pure/tests/fixtures/fail8.json +0 -1
  133. data/lib/vendor/json_pure/tests/fixtures/fail9.json +0 -1
  134. data/lib/vendor/json_pure/tests/fixtures/pass1.json +0 -56
  135. data/lib/vendor/json_pure/tests/fixtures/pass15.json +0 -1
  136. data/lib/vendor/json_pure/tests/fixtures/pass16.json +0 -1
  137. data/lib/vendor/json_pure/tests/fixtures/pass17.json +0 -1
  138. data/lib/vendor/json_pure/tests/fixtures/pass2.json +0 -1
  139. data/lib/vendor/json_pure/tests/fixtures/pass26.json +0 -1
  140. data/lib/vendor/json_pure/tests/fixtures/pass3.json +0 -6
  141. data/lib/vendor/json_pure/tests/test_json.rb +0 -361
  142. data/lib/vendor/json_pure/tests/test_json_addition.rb +0 -162
  143. data/lib/vendor/json_pure/tests/test_json_encoding.rb +0 -68
  144. data/lib/vendor/json_pure/tests/test_json_fixtures.rb +0 -34
  145. data/lib/vendor/json_pure/tests/test_json_generate.rb +0 -122
  146. data/lib/vendor/json_pure/tests/test_json_rails.rb +0 -144
  147. data/lib/vendor/json_pure/tests/test_json_unicode.rb +0 -76
  148. data/lib/vendor/json_pure/tools/fuzz.rb +0 -139
  149. data/lib/vendor/json_pure/tools/server.rb +0 -61
  150. data/lib/vendor/open4/lib/open4.rb +0 -403
  151. data/lib/vendor/thor/CHANGELOG.rdoc +0 -89
  152. data/lib/vendor/thor/LICENSE +0 -20
  153. data/lib/vendor/thor/README.rdoc +0 -297
  154. data/lib/vendor/thor/Thorfile +0 -69
  155. data/lib/vendor/thor/bin/rake2thor +0 -86
  156. data/lib/vendor/thor/bin/thor +0 -6
  157. data/lib/vendor/thor/lib/thor/actions/create_file.rb +0 -103
  158. data/lib/vendor/thor/lib/thor/actions/directory.rb +0 -91
  159. data/lib/vendor/thor/lib/thor/actions/empty_directory.rb +0 -134
  160. data/lib/vendor/thor/lib/thor/actions/file_manipulation.rb +0 -223
  161. data/lib/vendor/thor/lib/thor/actions/inject_into_file.rb +0 -104
  162. data/lib/vendor/thor/lib/thor/actions.rb +0 -275
  163. data/lib/vendor/thor/lib/thor/base.rb +0 -540
  164. data/lib/vendor/thor/lib/thor/core_ext/file_binary_read.rb +0 -9
  165. data/lib/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +0 -75
  166. data/lib/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -100
  167. data/lib/vendor/thor/lib/thor/error.rb +0 -30
  168. data/lib/vendor/thor/lib/thor/group.rb +0 -271
  169. data/lib/vendor/thor/lib/thor/invocation.rb +0 -180
  170. data/lib/vendor/thor/lib/thor/parser/argument.rb +0 -67
  171. data/lib/vendor/thor/lib/thor/parser/arguments.rb +0 -150
  172. data/lib/vendor/thor/lib/thor/parser/option.rb +0 -128
  173. data/lib/vendor/thor/lib/thor/parser/options.rb +0 -169
  174. data/lib/vendor/thor/lib/thor/parser.rb +0 -4
  175. data/lib/vendor/thor/lib/thor/rake_compat.rb +0 -66
  176. data/lib/vendor/thor/lib/thor/runner.rb +0 -314
  177. data/lib/vendor/thor/lib/thor/shell/basic.rb +0 -239
  178. data/lib/vendor/thor/lib/thor/shell/color.rb +0 -108
  179. data/lib/vendor/thor/lib/thor/shell.rb +0 -83
  180. data/lib/vendor/thor/lib/thor/task.rb +0 -102
  181. data/lib/vendor/thor/lib/thor/util.rb +0 -230
  182. data/lib/vendor/thor/lib/thor/version.rb +0 -3
  183. data/lib/vendor/thor/lib/thor.rb +0 -244
  184. data/lib/vendor/thor/thor.gemspec +0 -120
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rbconfig'
4
- require 'fileutils'
5
- include FileUtils::Verbose
6
-
7
- include Config
8
-
9
- bindir = CONFIG["bindir"]
10
- cd 'bin' do
11
- filename = 'edit_json.rb'
12
- #install(filename, bindir)
13
- end
14
- sitelibdir = CONFIG["sitelibdir"]
15
- cd 'lib' do
16
- install('json.rb', sitelibdir)
17
- mkdir_p File.join(sitelibdir, 'json')
18
- for file in Dir['json/**/*.{rb,xpm}']
19
- d = File.join(sitelibdir, file)
20
- mkdir_p File.dirname(d)
21
- install(file, d)
22
- end
23
- install(File.join('json', 'editor.rb'), File.join(sitelibdir,'json'))
24
- install(File.join('json', 'json.xpm'), File.join(sitelibdir,'json'))
25
- end
26
- warn " *** Installed PURE ruby library."
@@ -1 +0,0 @@
1
- "A JSON payload should be an object or array, not a string."
@@ -1 +0,0 @@
1
- {"Extra value after close": true} "misplaced quoted value"
@@ -1 +0,0 @@
1
- {"Illegal expression": 1 + 2}
@@ -1 +0,0 @@
1
- {"Illegal invocation": alert()}
@@ -1 +0,0 @@
1
- {"Numbers cannot have leading zeroes": 013}
@@ -1 +0,0 @@
1
- {"Numbers cannot be hex": 0x14}
@@ -1 +0,0 @@
1
- [[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]
@@ -1 +0,0 @@
1
- {"Missing colon" null}
@@ -1 +0,0 @@
1
- ["Unclosed array"
@@ -1 +0,0 @@
1
- {"Double colon":: null}
@@ -1 +0,0 @@
1
- {"Comma instead of colon", null}
@@ -1 +0,0 @@
1
- ["Colon instead of comma": false]
@@ -1 +0,0 @@
1
- ["Bad value", truth]
@@ -1 +0,0 @@
1
- ['single quote']
@@ -1 +0,0 @@
1
- ["tab character in string "]
@@ -1,2 +0,0 @@
1
- ["line
2
- break"]
@@ -1,2 +0,0 @@
1
- ["line\
2
- break"]
@@ -1 +0,0 @@
1
- {unquoted_key: "keys must be quoted"}
@@ -1 +0,0 @@
1
- ["extra comma",]
@@ -1 +0,0 @@
1
- ["double extra comma",,]
@@ -1 +0,0 @@
1
- [ , "<-- missing value"]
@@ -1 +0,0 @@
1
- ["Comma after the close"],
@@ -1 +0,0 @@
1
- ["Extra close"]]
@@ -1 +0,0 @@
1
- {"Extra comma": true,}
@@ -1,56 +0,0 @@
1
- [
2
- "JSON Test Pattern pass1",
3
- {"object with 1 member":["array with 1 element"]},
4
- {},
5
- [],
6
- -42,
7
- true,
8
- false,
9
- null,
10
- {
11
- "integer": 1234567890,
12
- "real": -9876.543210,
13
- "e": 0.123456789e-12,
14
- "E": 1.234567890E+34,
15
- "": 23456789012E666,
16
- "zero": 0,
17
- "one": 1,
18
- "space": " ",
19
- "quote": "\"",
20
- "backslash": "\\",
21
- "controls": "\b\f\n\r\t",
22
- "slash": "/ & \/",
23
- "alpha": "abcdefghijklmnopqrstuvwyz",
24
- "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",
25
- "digit": "0123456789",
26
- "special": "`1~!@#$%^&*()_+-={':[,]}|;.</>?",
27
- "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
28
- "true": true,
29
- "false": false,
30
- "null": null,
31
- "array":[ ],
32
- "object":{ },
33
- "address": "50 St. James Street",
34
- "url": "http://www.JSON.org/",
35
- "comment": "// /* <!-- --",
36
- "# -- --> */": " ",
37
- " s p a c e d " :[1,2 , 3
38
-
39
- ,
40
-
41
- 4 , 5 , 6 ,7 ],
42
- "compact": [1,2,3,4,5,6,7],
43
- "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}",
44
- "quotes": "&#34; \u0022 %22 0x22 034 &#x22;",
45
- "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"
46
- : "A key can be any string"
47
- },
48
- 0.5 ,98.6
49
- ,
50
- 99.44
51
- ,
52
-
53
- 1066
54
-
55
-
56
- ,"rosebud"]
@@ -1 +0,0 @@
1
- ["Illegal backslash escape: \x15"]
@@ -1 +0,0 @@
1
- ["Illegal backslash escape: \'"]
@@ -1 +0,0 @@
1
- ["Illegal backslash escape: \017"]
@@ -1 +0,0 @@
1
- [[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]]
@@ -1 +0,0 @@
1
- ["tab\ character\ in\ string\ "]
@@ -1,6 +0,0 @@
1
- {
2
- "JSON Test Pattern pass3": {
3
- "The outermost value": "must be an object or array.",
4
- "In this test": "It is an object."
5
- }
6
- }
@@ -1,361 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
-
4
- require 'test/unit'
5
- case ENV['JSON']
6
- when 'pure' then require 'json/pure'
7
- when 'ext' then require 'json/ext'
8
- else require 'json'
9
- end
10
- require 'stringio'
11
-
12
- unless Array.method_defined?(:permutation)
13
- begin
14
- require 'enumerator'
15
- require 'permutation'
16
- class Array
17
- def permutation
18
- Permutation.for(self).to_enum.map { |x| x.project }
19
- end
20
- end
21
- rescue LoadError
22
- warn "Skipping permutation tests."
23
- end
24
- end
25
-
26
- class TC_JSON < Test::Unit::TestCase
27
- include JSON
28
-
29
- def setup
30
- @ary = [1, "foo", 3.14, 4711.0, 2.718, nil, [1,-2,3], false, true].map do
31
- |x| [x]
32
- end
33
- @ary_to_parse = ["1", '"foo"', "3.14", "4711.0", "2.718", "null",
34
- "[1,-2,3]", "false", "true"].map do
35
- |x| "[#{x}]"
36
- end
37
- @hash = {
38
- 'a' => 2,
39
- 'b' => 3.141,
40
- 'c' => 'c',
41
- 'd' => [ 1, "b", 3.14 ],
42
- 'e' => { 'foo' => 'bar' },
43
- 'g' => "\"\0\037",
44
- 'h' => 1000.0,
45
- 'i' => 0.001
46
- }
47
- @json = '{"a":2,"b":3.141,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},'\
48
- '"g":"\\"\\u0000\\u001f","h":1.0E3,"i":1.0E-3}'
49
- end
50
-
51
- def test_construction
52
- parser = JSON::Parser.new('test')
53
- assert_equal 'test', parser.source
54
- end
55
-
56
- def assert_equal_float(expected, is)
57
- assert_in_delta(expected.first, is.first, 1e-2)
58
- end
59
-
60
- def test_parse_simple_arrays
61
- assert_equal([], parse('[]'))
62
- assert_equal([], parse(' [ ] '))
63
- assert_equal([nil], parse('[null]'))
64
- assert_equal([false], parse('[false]'))
65
- assert_equal([true], parse('[true]'))
66
- assert_equal([-23], parse('[-23]'))
67
- assert_equal([23], parse('[23]'))
68
- assert_equal([0.23], parse('[0.23]'))
69
- assert_equal([0.0], parse('[0e0]'))
70
- assert_raises(JSON::ParserError) { parse('[+23.2]') }
71
- assert_raises(JSON::ParserError) { parse('[+23]') }
72
- assert_raises(JSON::ParserError) { parse('[.23]') }
73
- assert_raises(JSON::ParserError) { parse('[023]') }
74
- assert_equal_float [3.141], parse('[3.141]')
75
- assert_equal_float [-3.141], parse('[-3.141]')
76
- assert_equal_float [3.141], parse('[3141e-3]')
77
- assert_equal_float [3.141], parse('[3141.1e-3]')
78
- assert_equal_float [3.141], parse('[3141E-3]')
79
- assert_equal_float [3.141], parse('[3141.0E-3]')
80
- assert_equal_float [-3.141], parse('[-3141.0e-3]')
81
- assert_equal_float [-3.141], parse('[-3141e-3]')
82
- assert_raises(ParserError) { parse('[NaN]') }
83
- assert parse('[NaN]', :allow_nan => true).first.nan?
84
- assert_raises(ParserError) { parse('[Infinity]') }
85
- assert_equal [1.0/0], parse('[Infinity]', :allow_nan => true)
86
- assert_raises(ParserError) { parse('[-Infinity]') }
87
- assert_equal [-1.0/0], parse('[-Infinity]', :allow_nan => true)
88
- assert_equal([""], parse('[""]'))
89
- assert_equal(["foobar"], parse('["foobar"]'))
90
- assert_equal([{}], parse('[{}]'))
91
- end
92
-
93
- def test_parse_simple_objects
94
- assert_equal({}, parse('{}'))
95
- assert_equal({}, parse(' { } '))
96
- assert_equal({ "a" => nil }, parse('{ "a" : null}'))
97
- assert_equal({ "a" => nil }, parse('{"a":null}'))
98
- assert_equal({ "a" => false }, parse('{ "a" : false } '))
99
- assert_equal({ "a" => false }, parse('{"a":false}'))
100
- assert_raises(JSON::ParserError) { parse('{false}') }
101
- assert_equal({ "a" => true }, parse('{"a":true}'))
102
- assert_equal({ "a" => true }, parse(' { "a" : true } '))
103
- assert_equal({ "a" => -23 }, parse(' { "a" : -23 } '))
104
- assert_equal({ "a" => -23 }, parse(' { "a" : -23 } '))
105
- assert_equal({ "a" => 23 }, parse('{"a":23 } '))
106
- assert_equal({ "a" => 23 }, parse(' { "a" : 23 } '))
107
- assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } '))
108
- assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } '))
109
- end
110
-
111
- if Array.method_defined?(:permutation)
112
- def test_parse_more_complex_arrays
113
- a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "n€ßt€ð2" => {} }]
114
- a.permutation.each do |perm|
115
- json = pretty_generate(perm)
116
- assert_equal perm, parse(json)
117
- end
118
- end
119
-
120
- def test_parse_complex_objects
121
- a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "n€ßt€ð2" => {} }]
122
- a.permutation.each do |perm|
123
- s = "a"
124
- orig_obj = perm.inject({}) { |h, x| h[s.dup] = x; s = s.succ; h }
125
- json = pretty_generate(orig_obj)
126
- assert_equal orig_obj, parse(json)
127
- end
128
- end
129
- end
130
-
131
- def test_parse_arrays
132
- assert_equal([1,2,3], parse('[1,2,3]'))
133
- assert_equal([1.2,2,3], parse('[1.2,2,3]'))
134
- assert_equal([[],[[],[]]], parse('[[],[[],[]]]'))
135
- end
136
-
137
- def test_parse_values
138
- assert_equal([""], parse('[""]'))
139
- assert_equal(["\\"], parse('["\\\\"]'))
140
- assert_equal(['"'], parse('["\""]'))
141
- assert_equal(['\\"\\'], parse('["\\\\\\"\\\\"]'))
142
- assert_equal(["\"\b\n\r\t\0\037"],
143
- parse('["\"\b\n\r\t\u0000\u001f"]'))
144
- for i in 0 ... @ary.size
145
- assert_equal(@ary[i], parse(@ary_to_parse[i]))
146
- end
147
- end
148
-
149
- def test_parse_array
150
- assert_equal([], parse('[]'))
151
- assert_equal([], parse(' [ ] '))
152
- assert_equal([1], parse('[1]'))
153
- assert_equal([1], parse(' [ 1 ] '))
154
- assert_equal(@ary,
155
- parse('[[1],["foo"],[3.14],[47.11e+2],[2718.0E-3],[null],[[1,-2,3]]'\
156
- ',[false],[true]]'))
157
- assert_equal(@ary, parse(%Q{ [ [1] , ["foo"] , [3.14] \t , [47.11e+2]
158
- , [2718.0E-3 ],\r[ null] , [[1, -2, 3 ]], [false ],[ true]\n ] }))
159
- end
160
-
161
- class SubArray < Array; end
162
-
163
- def test_parse_array_custom_class
164
- res = parse('[]', :array_class => SubArray)
165
- assert_equal([], res)
166
- assert_equal(SubArray, res.class)
167
- end
168
-
169
- def test_parse_object
170
- assert_equal({}, parse('{}'))
171
- assert_equal({}, parse(' { } '))
172
- assert_equal({'foo'=>'bar'}, parse('{"foo":"bar"}'))
173
- assert_equal({'foo'=>'bar'}, parse(' { "foo" : "bar" } '))
174
- end
175
-
176
- class SubHash < Hash
177
- def to_json(*a)
178
- {
179
- JSON.create_id => self.class.name,
180
- }.merge(self).to_json(*a)
181
- end
182
-
183
- def self.json_create(o)
184
- o.delete JSON.create_id
185
- new.merge(o)
186
- end
187
- end
188
-
189
- def test_parse_object_custom_class
190
- res = parse('{}', :object_class => SubHash)
191
- assert_equal({}, res)
192
- assert_equal(SubHash, res.class)
193
- end
194
-
195
- def test_generation_of_core_subclasses
196
- obj = SubHash.new.merge( "foo" => SubHash.new.merge("bar" => true))
197
- obj_json = JSON(obj)
198
- obj_again = JSON(obj_json)
199
- assert_kind_of SubHash, obj_again
200
- assert_kind_of SubHash, obj_again['foo']
201
- assert obj_again['foo']['bar']
202
- assert_equal obj, obj_again
203
- end
204
-
205
- def test_parser_reset
206
- parser = Parser.new(@json)
207
- assert_equal(@hash, parser.parse)
208
- assert_equal(@hash, parser.parse)
209
- end
210
-
211
- def test_comments
212
- json = <<EOT
213
- {
214
- "key1":"value1", // eol comment
215
- "key2":"value2" /* multi line
216
- * comment */,
217
- "key3":"value3" /* multi line
218
- // nested eol comment
219
- * comment */
220
- }
221
- EOT
222
- assert_equal(
223
- { "key1" => "value1", "key2" => "value2", "key3" => "value3" },
224
- parse(json))
225
- json = <<EOT
226
- {
227
- "key1":"value1" /* multi line
228
- // nested eol comment
229
- /* illegal nested multi line comment */
230
- * comment */
231
- }
232
- EOT
233
- assert_raises(ParserError) { parse(json) }
234
- json = <<EOT
235
- {
236
- "key1":"value1" /* multi line
237
- // nested eol comment
238
- closed multi comment */
239
- and again, throw an Error */
240
- }
241
- EOT
242
- assert_raises(ParserError) { parse(json) }
243
- json = <<EOT
244
- {
245
- "key1":"value1" /*/*/
246
- }
247
- EOT
248
- assert_equal({ "key1" => "value1" }, parse(json))
249
- end
250
-
251
- def test_backslash
252
- data = [ '\\.(?i:gif|jpe?g|png)$' ]
253
- json = '["\\\\.(?i:gif|jpe?g|png)$"]'
254
- assert_equal json, JSON.generate(data)
255
- assert_equal data, JSON.parse(json)
256
- #
257
- data = [ '\\"' ]
258
- json = '["\\\\\""]'
259
- assert_equal json, JSON.generate(data)
260
- assert_equal data, JSON.parse(json)
261
- #
262
- json = '["/"]'
263
- data = JSON.parse(json)
264
- assert_equal ['/'], data
265
- assert_equal json, JSON.generate(data)
266
- #
267
- json = '["\""]'
268
- data = JSON.parse(json)
269
- assert_equal ['"'], data
270
- assert_equal json, JSON.generate(data)
271
- json = '["\\\'"]'
272
- data = JSON.parse(json)
273
- assert_equal ["'"], data
274
- assert_equal '["\'"]', JSON.generate(data)
275
- end
276
-
277
- def test_wrong_inputs
278
- assert_raises(ParserError) { JSON.parse('"foo"') }
279
- assert_raises(ParserError) { JSON.parse('123') }
280
- assert_raises(ParserError) { JSON.parse('[] bla') }
281
- assert_raises(ParserError) { JSON.parse('[] 1') }
282
- assert_raises(ParserError) { JSON.parse('[] []') }
283
- assert_raises(ParserError) { JSON.parse('[] {}') }
284
- assert_raises(ParserError) { JSON.parse('{} []') }
285
- assert_raises(ParserError) { JSON.parse('{} {}') }
286
- assert_raises(ParserError) { JSON.parse('[NULL]') }
287
- assert_raises(ParserError) { JSON.parse('[FALSE]') }
288
- assert_raises(ParserError) { JSON.parse('[TRUE]') }
289
- assert_raises(ParserError) { JSON.parse('[07] ') }
290
- assert_raises(ParserError) { JSON.parse('[0a]') }
291
- assert_raises(ParserError) { JSON.parse('[1.]') }
292
- assert_raises(ParserError) { JSON.parse(' ') }
293
- end
294
-
295
- def test_nesting
296
- assert_raises(JSON::NestingError) { JSON.parse '[[]]', :max_nesting => 1 }
297
- assert_raises(JSON::NestingError) { JSON.parser.new('[[]]', :max_nesting => 1).parse }
298
- assert_equal [[]], JSON.parse('[[]]', :max_nesting => 2)
299
- too_deep = '[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]'
300
- too_deep_ary = eval too_deep
301
- assert_raises(JSON::NestingError) { JSON.parse too_deep }
302
- assert_raises(JSON::NestingError) { JSON.parser.new(too_deep).parse }
303
- assert_raises(JSON::NestingError) { JSON.parse too_deep, :max_nesting => 19 }
304
- ok = JSON.parse too_deep, :max_nesting => 20
305
- assert_equal too_deep_ary, ok
306
- ok = JSON.parse too_deep, :max_nesting => nil
307
- assert_equal too_deep_ary, ok
308
- ok = JSON.parse too_deep, :max_nesting => false
309
- assert_equal too_deep_ary, ok
310
- ok = JSON.parse too_deep, :max_nesting => 0
311
- assert_equal too_deep_ary, ok
312
- assert_raises(JSON::NestingError) { JSON.generate [[]], :max_nesting => 1 }
313
- assert_equal '[[]]', JSON.generate([[]], :max_nesting => 2)
314
- assert_raises(JSON::NestingError) { JSON.generate too_deep_ary }
315
- assert_raises(JSON::NestingError) { JSON.generate too_deep_ary, :max_nesting => 19 }
316
- ok = JSON.generate too_deep_ary, :max_nesting => 20
317
- assert_equal too_deep, ok
318
- ok = JSON.generate too_deep_ary, :max_nesting => nil
319
- assert_equal too_deep, ok
320
- ok = JSON.generate too_deep_ary, :max_nesting => false
321
- assert_equal too_deep, ok
322
- ok = JSON.generate too_deep_ary, :max_nesting => 0
323
- assert_equal too_deep, ok
324
- end
325
-
326
- def test_symbolize_names
327
- assert_equal({ "foo" => "bar", "baz" => "quux" },
328
- JSON.parse('{"foo":"bar", "baz":"quux"}'))
329
- assert_equal({ :foo => "bar", :baz => "quux" },
330
- JSON.parse('{"foo":"bar", "baz":"quux"}', :symbolize_names => true))
331
- end
332
-
333
- def test_load_dump
334
- too_deep = '[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]'
335
- assert_equal too_deep, JSON.dump(eval(too_deep))
336
- assert_kind_of String, Marshal.dump(eval(too_deep))
337
- assert_raises(ArgumentError) { JSON.dump(eval(too_deep), 19) }
338
- assert_raises(ArgumentError) { Marshal.dump(eval(too_deep), 19) }
339
- assert_equal too_deep, JSON.dump(eval(too_deep), 20)
340
- assert_kind_of String, Marshal.dump(eval(too_deep), 20)
341
- output = StringIO.new
342
- JSON.dump(eval(too_deep), output)
343
- assert_equal too_deep, output.string
344
- output = StringIO.new
345
- JSON.dump(eval(too_deep), output, 20)
346
- assert_equal too_deep, output.string
347
- end
348
-
349
- def test_big_integers
350
- json1 = JSON([orig = (1 << 31) - 1])
351
- assert_equal orig, JSON[json1][0]
352
- json2 = JSON([orig = 1 << 31])
353
- assert_equal orig, JSON[json2][0]
354
- json3 = JSON([orig = (1 << 62) - 1])
355
- assert_equal orig, JSON[json3][0]
356
- json4 = JSON([orig = 1 << 62])
357
- assert_equal orig, JSON[json4][0]
358
- json5 = JSON([orig = 1 << 64])
359
- assert_equal orig, JSON[json5][0]
360
- end
361
- end