engineyard-serverside 1.5.21 → 1.5.23.ruby19

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 (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