nutshell-crm 0.0.5 → 0.0.6.alpha

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 (260) hide show
  1. data/.rbenv-version +1 -0
  2. data/.travis.yml +8 -0
  3. data/CHANGELOG.md +5 -0
  4. data/README.md +37 -0
  5. data/Rakefile +14 -3
  6. data/lib/nutshell-crm.rb +92 -5
  7. data/lib/nutshell-crm/version.rb +1 -1
  8. data/nutshell-crm.gemspec +1 -0
  9. data/spec/nutshell-crm_spec.rb +17 -8
  10. data/vendor/bundle/bin/rake +19 -0
  11. data/vendor/bundle/gems/json-1.6.4/.gitignore +8 -0
  12. data/vendor/bundle/gems/json-1.6.4/.travis.yml +15 -0
  13. data/vendor/bundle/gems/json-1.6.4/CHANGES +227 -0
  14. data/vendor/bundle/gems/json-1.6.4/COPYING +58 -0
  15. data/vendor/bundle/gems/json-1.6.4/COPYING-json-jruby +57 -0
  16. data/vendor/bundle/gems/json-1.6.4/GPL +340 -0
  17. data/vendor/bundle/gems/json-1.6.4/Gemfile +11 -0
  18. data/vendor/bundle/gems/json-1.6.4/README-json-jruby.markdown +33 -0
  19. data/vendor/bundle/gems/json-1.6.4/README.rdoc +358 -0
  20. data/vendor/bundle/gems/json-1.6.4/Rakefile +408 -0
  21. data/vendor/bundle/gems/json-1.6.4/TODO +1 -0
  22. data/vendor/bundle/gems/json-1.6.4/VERSION +1 -0
  23. data/{README → vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/.keep} +0 -0
  24. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log +52 -0
  25. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat +1000 -0
  26. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat +1001 -0
  27. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat +900 -0
  28. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat +901 -0
  29. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat +1000 -0
  30. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat +1001 -0
  31. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log +261 -0
  32. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat +1000 -0
  33. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat +1001 -0
  34. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat +1000 -0
  35. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat +1001 -0
  36. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat +1000 -0
  37. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat +1001 -0
  38. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log +262 -0
  39. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat +1000 -0
  40. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat +1001 -0
  41. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log +82 -0
  42. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log +34 -0
  43. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat +900 -0
  44. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat +901 -0
  45. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log +81 -0
  46. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat +1000 -0
  47. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat +1001 -0
  48. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log +82 -0
  49. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat +1000 -0
  50. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat +1001 -0
  51. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log +82 -0
  52. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat +1000 -0
  53. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat +1001 -0
  54. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log +82 -0
  55. data/vendor/bundle/gems/json-1.6.4/benchmarks/data/.keep +0 -0
  56. data/vendor/bundle/gems/json-1.6.4/benchmarks/generator2_benchmark.rb +222 -0
  57. data/vendor/bundle/gems/json-1.6.4/benchmarks/generator_benchmark.rb +224 -0
  58. data/vendor/bundle/gems/json-1.6.4/benchmarks/ohai.json +1216 -0
  59. data/vendor/bundle/gems/json-1.6.4/benchmarks/ohai.ruby +1 -0
  60. data/vendor/bundle/gems/json-1.6.4/benchmarks/parser2_benchmark.rb +251 -0
  61. data/vendor/bundle/gems/json-1.6.4/benchmarks/parser_benchmark.rb +259 -0
  62. data/vendor/bundle/gems/json-1.6.4/data/example.json +1 -0
  63. data/vendor/bundle/gems/json-1.6.4/data/index.html +38 -0
  64. data/vendor/bundle/gems/json-1.6.4/data/prototype.js +4184 -0
  65. data/vendor/bundle/gems/json-1.6.4/diagrams/.keep +0 -0
  66. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/fbuffer/fbuffer.h +156 -0
  67. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/Makefile +187 -0
  68. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/extconf.rb +13 -0
  69. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/generator.bundle +0 -0
  70. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/generator.c +1384 -0
  71. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/generator.h +161 -0
  72. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/generator.o +0 -0
  73. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/json/ext/generator.bundle +0 -0
  74. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/json/ext/parser.bundle +0 -0
  75. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/Makefile +187 -0
  76. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/extconf.rb +13 -0
  77. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.bundle +0 -0
  78. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.c +2203 -0
  79. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.h +77 -0
  80. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.o +0 -0
  81. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.rl +926 -0
  82. data/vendor/bundle/gems/json-1.6.4/install.rb +19 -0
  83. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/ByteListTranscoder.java +167 -0
  84. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/Generator.java +437 -0
  85. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/GeneratorMethods.java +232 -0
  86. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/GeneratorService.java +43 -0
  87. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/GeneratorState.java +522 -0
  88. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/OptionsReader.java +113 -0
  89. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/Parser.java +2640 -0
  90. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/Parser.rl +964 -0
  91. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/ParserService.java +35 -0
  92. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/RuntimeInfo.java +121 -0
  93. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/StringDecoder.java +166 -0
  94. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/StringEncoder.java +106 -0
  95. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/Utils.java +89 -0
  96. data/vendor/bundle/gems/json-1.6.4/json-java.gemspec +22 -0
  97. data/vendor/bundle/gems/json-1.6.4/json.gemspec +40 -0
  98. data/vendor/bundle/gems/json-1.6.4/json_pure.gemspec +42 -0
  99. data/vendor/bundle/gems/json-1.6.4/lib/json.rb +62 -0
  100. data/vendor/bundle/gems/json-1.6.4/lib/json/add/bigdecimal.rb +21 -0
  101. data/vendor/bundle/gems/json-1.6.4/lib/json/add/complex.rb +22 -0
  102. data/vendor/bundle/gems/json-1.6.4/lib/json/add/core.rb +11 -0
  103. data/vendor/bundle/gems/json-1.6.4/lib/json/add/date.rb +34 -0
  104. data/vendor/bundle/gems/json-1.6.4/lib/json/add/date_time.rb +50 -0
  105. data/vendor/bundle/gems/json-1.6.4/lib/json/add/exception.rb +31 -0
  106. data/vendor/bundle/gems/json-1.6.4/lib/json/add/ostruct.rb +31 -0
  107. data/vendor/bundle/gems/json-1.6.4/lib/json/add/range.rb +29 -0
  108. data/vendor/bundle/gems/json-1.6.4/lib/json/add/rational.rb +22 -0
  109. data/vendor/bundle/gems/json-1.6.4/lib/json/add/regexp.rb +30 -0
  110. data/vendor/bundle/gems/json-1.6.4/lib/json/add/struct.rb +30 -0
  111. data/vendor/bundle/gems/json-1.6.4/lib/json/add/symbol.rb +25 -0
  112. data/vendor/bundle/gems/json-1.6.4/lib/json/add/time.rb +35 -0
  113. data/vendor/bundle/gems/json-1.6.4/lib/json/common.rb +470 -0
  114. data/vendor/bundle/gems/json-1.6.4/lib/json/ext.rb +21 -0
  115. data/vendor/bundle/gems/json-1.6.4/lib/json/ext/.keep +0 -0
  116. data/vendor/bundle/gems/json-1.6.4/lib/json/pure.rb +21 -0
  117. data/vendor/bundle/gems/json-1.6.4/lib/json/pure/generator.rb +468 -0
  118. data/vendor/bundle/gems/json-1.6.4/lib/json/pure/parser.rb +359 -0
  119. data/vendor/bundle/gems/json-1.6.4/lib/json/version.rb +8 -0
  120. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail1.json +1 -0
  121. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail10.json +1 -0
  122. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail11.json +1 -0
  123. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail12.json +1 -0
  124. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail13.json +1 -0
  125. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail14.json +1 -0
  126. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail18.json +1 -0
  127. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail19.json +1 -0
  128. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail2.json +1 -0
  129. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail20.json +1 -0
  130. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail21.json +1 -0
  131. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail22.json +1 -0
  132. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail23.json +1 -0
  133. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail24.json +1 -0
  134. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail25.json +1 -0
  135. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail27.json +2 -0
  136. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail28.json +2 -0
  137. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail3.json +1 -0
  138. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail4.json +1 -0
  139. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail5.json +1 -0
  140. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail6.json +1 -0
  141. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail7.json +1 -0
  142. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail8.json +1 -0
  143. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail9.json +1 -0
  144. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass1.json +56 -0
  145. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass15.json +1 -0
  146. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass16.json +1 -0
  147. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass17.json +1 -0
  148. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass2.json +1 -0
  149. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass26.json +1 -0
  150. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass3.json +6 -0
  151. data/vendor/bundle/gems/json-1.6.4/tests/setup_variant.rb +11 -0
  152. data/vendor/bundle/gems/json-1.6.4/tests/test_json.rb +527 -0
  153. data/vendor/bundle/gems/json-1.6.4/tests/test_json_addition.rb +188 -0
  154. data/vendor/bundle/gems/json-1.6.4/tests/test_json_encoding.rb +65 -0
  155. data/vendor/bundle/gems/json-1.6.4/tests/test_json_fixtures.rb +35 -0
  156. data/vendor/bundle/gems/json-1.6.4/tests/test_json_generate.rb +249 -0
  157. data/vendor/bundle/gems/json-1.6.4/tests/test_json_string_matching.rb +40 -0
  158. data/vendor/bundle/gems/json-1.6.4/tests/test_json_unicode.rb +72 -0
  159. data/vendor/bundle/gems/json-1.6.4/tools/fuzz.rb +139 -0
  160. data/vendor/bundle/gems/json-1.6.4/tools/server.rb +62 -0
  161. data/vendor/bundle/gems/rake-0.9.2.2/.gemtest +0 -0
  162. data/vendor/bundle/gems/rake-0.9.2.2/CHANGES +522 -0
  163. data/vendor/bundle/gems/rake-0.9.2.2/MIT-LICENSE +21 -0
  164. data/vendor/bundle/gems/rake-0.9.2.2/README.rdoc +197 -0
  165. data/vendor/bundle/gems/rake-0.9.2.2/Rakefile +369 -0
  166. data/vendor/bundle/gems/rake-0.9.2.2/TODO +20 -0
  167. data/vendor/bundle/gems/rake-0.9.2.2/bin/rake +33 -0
  168. data/vendor/bundle/gems/rake-0.9.2.2/install.rb +90 -0
  169. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake.rb +69 -0
  170. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/alt_system.rb +109 -0
  171. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/application.rb +595 -0
  172. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/classic_namespace.rb +11 -0
  173. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/clean.rb +32 -0
  174. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/cloneable.rb +25 -0
  175. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/compositepublisher.rb +21 -0
  176. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/ftptools.rb +150 -0
  177. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/publisher.rb +73 -0
  178. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/rubyforgepublisher.rb +16 -0
  179. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/sshpublisher.rb +50 -0
  180. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/sys.rb +191 -0
  181. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/default_loader.rb +10 -0
  182. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/dsl_definition.rb +176 -0
  183. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/early_time.rb +18 -0
  184. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ext/core.rb +27 -0
  185. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ext/module.rb +39 -0
  186. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ext/string.rb +167 -0
  187. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ext/time.rb +14 -0
  188. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_creation_task.rb +24 -0
  189. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_list.rb +403 -0
  190. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_task.rb +47 -0
  191. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_utils.rb +114 -0
  192. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb +145 -0
  193. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/gempackagetask.rb +15 -0
  194. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb +51 -0
  195. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/invocation_exception_mixin.rb +16 -0
  196. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/loaders/makefile.rb +40 -0
  197. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/multi_task.rb +16 -0
  198. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/name_space.rb +25 -0
  199. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/packagetask.rb +185 -0
  200. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/pathmap.rb +1 -0
  201. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/pseudo_status.rb +24 -0
  202. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/rake_module.rb +29 -0
  203. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb +22 -0
  204. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/rdoctask.rb +234 -0
  205. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ruby182_test_unit_fix.rb +25 -0
  206. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  207. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/runtest.rb +21 -0
  208. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/task.rb +327 -0
  209. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/task_argument_error.rb +7 -0
  210. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/task_arguments.rb +78 -0
  211. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/task_manager.rb +307 -0
  212. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/tasklib.rb +22 -0
  213. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/testtask.rb +191 -0
  214. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/version.rb +8 -0
  215. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/win32.rb +55 -0
  216. data/vendor/bundle/gems/rake-0.9.2.2/test/file_creation.rb +34 -0
  217. data/vendor/bundle/gems/rake-0.9.2.2/test/helper.rb +492 -0
  218. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake.rb +40 -0
  219. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_application.rb +489 -0
  220. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_application_options.rb +335 -0
  221. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_clean.rb +14 -0
  222. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_definitions.rb +80 -0
  223. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_directory_task.rb +46 -0
  224. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_dsl.rb +77 -0
  225. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_early_time.rb +31 -0
  226. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_extension.rb +59 -0
  227. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_creation_task.rb +56 -0
  228. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_list.rb +628 -0
  229. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_list_path_map.rb +8 -0
  230. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_task.rb +102 -0
  231. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_utils.rb +305 -0
  232. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_ftp_file.rb +59 -0
  233. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_functional.rb +450 -0
  234. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_invocation_chain.rb +52 -0
  235. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_makefile_loader.rb +44 -0
  236. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_multi_task.rb +51 -0
  237. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_name_space.rb +43 -0
  238. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_package_task.rb +79 -0
  239. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_path_map.rb +157 -0
  240. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_path_map_explode.rb +34 -0
  241. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_path_map_partial.rb +18 -0
  242. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_pseudo_status.rb +21 -0
  243. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_rake_test_loader.rb +21 -0
  244. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_rdoc_task.rb +83 -0
  245. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_require.rb +40 -0
  246. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_rules.rb +327 -0
  247. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task.rb +267 -0
  248. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_argument_parsing.rb +103 -0
  249. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_arguments.rb +88 -0
  250. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_lib.rb +9 -0
  251. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_manager.rb +157 -0
  252. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_manager_argument_resolution.rb +36 -0
  253. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_with_arguments.rb +173 -0
  254. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_test_task.rb +120 -0
  255. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_top_level_functions.rb +111 -0
  256. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_win32.rb +72 -0
  257. data/vendor/bundle/gems/rake-0.9.2.2/test/test_sys.rb +20 -0
  258. data/vendor/bundle/specifications/json-1.6.4.gemspec +39 -0
  259. data/vendor/bundle/specifications/rake-0.9.2.2.gemspec +34 -0
  260. metadata +285 -18
@@ -0,0 +1,77 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class TestRakeDsl < Rake::TestCase
4
+
5
+ def setup
6
+ super
7
+ Rake::Task.clear
8
+ end
9
+
10
+ def test_namespace_command
11
+ namespace "n" do
12
+ task "t"
13
+ end
14
+ refute_nil Rake::Task["n:t"]
15
+ end
16
+
17
+ def test_namespace_command_with_bad_name
18
+ ex = assert_raises(ArgumentError) do
19
+ namespace 1 do end
20
+ end
21
+ assert_match(/string/i, ex.message)
22
+ assert_match(/symbol/i, ex.message)
23
+ end
24
+
25
+ def test_namespace_command_with_a_string_like_object
26
+ name = Object.new
27
+ def name.to_str
28
+ "bob"
29
+ end
30
+ namespace name do
31
+ task "t"
32
+ end
33
+ refute_nil Rake::Task["bob:t"]
34
+ end
35
+
36
+ class Foo
37
+ def initialize
38
+ task :foo_deprecated_a => "foo_deprecated_b" do
39
+ print "a"
40
+ end
41
+ file "foo_deprecated_b" do
42
+ print "b"
43
+ end
44
+ end
45
+ end
46
+
47
+ def test_deprecated_object_dsl
48
+ out, err = capture_io do
49
+ Foo.new
50
+ Rake.application.invoke_task :foo_deprecated_a
51
+ end
52
+ assert_equal("ba", out)
53
+ assert_match(/deprecated/, err)
54
+ assert_match(/Foo\#task/, err)
55
+ assert_match(/Foo\#file/, err)
56
+ assert_match(/test_rake_dsl\.rb:\d+/, err)
57
+ end
58
+
59
+ def test_no_commands_constant
60
+ assert ! defined?(Commands), "should not define Commands"
61
+ end
62
+
63
+ def test_deprecated_object_dsl_with_suppressed_warnings
64
+ Rake.application.options.ignore_deprecate = true
65
+ out, err = capture_io do
66
+ Foo.new
67
+ Rake.application.invoke_task :foo_deprecated_a
68
+ end
69
+ assert_equal("ba", out)
70
+ refute_match(/deprecated/, err)
71
+ refute_match(/Foo\#task/, err)
72
+ refute_match(/Foo\#file/, err)
73
+ refute_match(/test_rake_dsl\.rb:\d+/, err)
74
+ ensure
75
+ Rake.application.options.ignore_deprecate = false
76
+ end
77
+ end
@@ -0,0 +1,31 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class TestRakeEarlyTime < Rake::TestCase
4
+ def test_create
5
+ early = Rake::EarlyTime.instance
6
+ assert early <= Time.now
7
+ assert early < Time.now
8
+ assert early != Time.now
9
+ assert Time.now > early
10
+ assert Time.now >= early
11
+ assert Time.now != early
12
+ end
13
+
14
+ def test_equality
15
+ early = Rake::EarlyTime.instance
16
+ assert_equal early, early, "two early times should be equal"
17
+ end
18
+
19
+ def test_original_time_compare_is_not_messed_up
20
+ t1 = Time.mktime(1970, 1, 1, 0, 0, 0)
21
+ t2 = Time.now
22
+ assert t1 < t2
23
+ assert t2 > t1
24
+ assert t1 == t1
25
+ assert t2 == t2
26
+ end
27
+
28
+ def test_to_s
29
+ assert_equal "<EARLY TIME>", Rake::EARLY.to_s
30
+ end
31
+ end
@@ -0,0 +1,59 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+ require 'stringio'
3
+
4
+ class TestRakeExtension < Rake::TestCase
5
+
6
+ module Redirect
7
+ def error_redirect
8
+ old_err = $stderr
9
+ result = StringIO.new
10
+ $stderr = result
11
+ yield
12
+ result
13
+ ensure
14
+ $stderr = old_err
15
+ end
16
+ end
17
+
18
+ class Sample
19
+ extend Redirect
20
+
21
+ def duplicate_method
22
+ :original
23
+ end
24
+
25
+ OK_ERRS = error_redirect do
26
+ rake_extension("a") do
27
+ def ok_method
28
+ end
29
+ end
30
+ end
31
+
32
+
33
+ DUP_ERRS = error_redirect do
34
+ rake_extension("duplicate_method") do
35
+ def duplicate_method
36
+ :override
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ def test_methods_actually_exist
43
+ sample = Sample.new
44
+ sample.ok_method
45
+ sample.duplicate_method
46
+ end
47
+
48
+ def test_no_warning_when_defining_ok_method
49
+ assert_equal "", Sample::OK_ERRS.string
50
+ end
51
+
52
+ def test_extension_complains_when_a_method_that_is_present
53
+ assert_match(/warning:/i, Sample::DUP_ERRS.string)
54
+ assert_match(/already exists/i, Sample::DUP_ERRS.string)
55
+ assert_match(/duplicate_method/i, Sample::DUP_ERRS.string)
56
+ assert_equal :original, Sample.new.duplicate_method
57
+ end
58
+
59
+ end
@@ -0,0 +1,56 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+ require 'fileutils'
3
+
4
+ ######################################################################
5
+ class TestRakeFileCreationTask < Rake::TestCase
6
+ include Rake
7
+ include Rake::DSL
8
+
9
+ DUMMY_DIR = 'dummy_dir'
10
+
11
+ def setup
12
+ super
13
+
14
+ Task.clear
15
+ end
16
+
17
+ def test_file_needed
18
+ create_dir DUMMY_DIR
19
+ fc_task = Task[DUMMY_DIR]
20
+ assert_equal DUMMY_DIR, fc_task.name
21
+ FileUtils.rm_rf fc_task.name
22
+ assert fc_task.needed?, "file should be needed"
23
+ FileUtils.mkdir fc_task.name
24
+ assert_equal nil, fc_task.prerequisites.collect{|n| Task[n].timestamp}.max
25
+ assert ! fc_task.needed?, "file should not be needed"
26
+ end
27
+
28
+ def test_directory
29
+ directory DUMMY_DIR
30
+ fc_task = Task[DUMMY_DIR]
31
+ assert_equal DUMMY_DIR, fc_task.name
32
+ assert FileCreationTask === fc_task
33
+ end
34
+
35
+ def test_no_retriggers_on_filecreate_task
36
+ create_timed_files(OLDFILE, NEWFILE)
37
+ t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE])
38
+ t2 = Rake.application.intern(FileCreationTask, NEWFILE)
39
+ assert ! t2.needed?, "Should not need to build new file"
40
+ assert ! t1.needed?, "Should not need to rebuild old file because of new"
41
+ end
42
+
43
+ def test_no_retriggers_on_file_task
44
+ create_timed_files(OLDFILE, NEWFILE)
45
+ t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE])
46
+ t2 = Rake.application.intern(FileCreationTask, NEWFILE)
47
+ assert ! t2.needed?, "Should not need to build new file"
48
+ assert ! t1.needed?, "Should not need to rebuild old file because of new"
49
+ end
50
+
51
+ def test_very_early_timestamp
52
+ t1 = Rake.application.intern(FileCreationTask, OLDFILE)
53
+ assert t1.timestamp < Time.now
54
+ assert t1.timestamp < Time.now - 1000000
55
+ end
56
+ end
@@ -0,0 +1,628 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class TestRakeFileList < Rake::TestCase
4
+ FileList = Rake::FileList
5
+
6
+ def setup
7
+ super
8
+
9
+ FileUtils.mkdir "CVS" rescue nil
10
+ FileUtils.mkdir ".svn" rescue nil
11
+ @cdir = "cfiles"
12
+ FileUtils.mkdir @cdir rescue nil
13
+ FileUtils.touch ".dummy"
14
+ FileUtils.touch "x.bak"
15
+ FileUtils.touch "x~"
16
+ FileUtils.touch "core"
17
+ FileUtils.touch "x.c"
18
+ FileUtils.touch "xyz.c"
19
+ FileUtils.touch "abc.c"
20
+ FileUtils.touch "abc.h"
21
+ FileUtils.touch "abc.x"
22
+ FileUtils.touch "existing"
23
+
24
+ open 'xyzzy.txt', 'w' do |io|
25
+ io.puts 'x'
26
+ io.puts 'XYZZY'
27
+ end
28
+
29
+ end
30
+
31
+ def test_delegating_methods_do_not_include_to_a_or_to_ary
32
+ assert ! FileList::DELEGATING_METHODS.include?("to_a"), "should not include to_a"
33
+ assert ! FileList::DELEGATING_METHODS.include?(:to_a), "should not include to_a"
34
+ assert ! FileList::DELEGATING_METHODS.include?("to_ary"), "should not include to_ary"
35
+ assert ! FileList::DELEGATING_METHODS.include?(:to_ary), "should not include to_ary"
36
+ end
37
+
38
+ def test_create
39
+ fl = FileList.new
40
+ assert_equal 0, fl.size
41
+ end
42
+
43
+ def test_create_with_args
44
+ fl = FileList.new("*.c", "x")
45
+ assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort,
46
+ fl.sort
47
+ end
48
+
49
+ def test_create_with_block
50
+ fl = FileList.new { |f| f.include("x") }
51
+ assert_equal ["x"], fl.resolve
52
+ end
53
+
54
+ def test_create_with_brackets
55
+ fl = FileList["*.c", "x"]
56
+ assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort,
57
+ fl.sort
58
+ end
59
+
60
+ def test_create_with_brackets_and_filelist
61
+ fl = FileList[FileList["*.c", "x"]]
62
+ assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort,
63
+ fl.sort
64
+ end
65
+
66
+ def test_include_with_another_array
67
+ fl = FileList.new.include(["x", "y", "z"])
68
+ assert_equal ["x", "y", "z"].sort, fl.sort
69
+ end
70
+
71
+ def test_include_with_another_filelist
72
+ fl = FileList.new.include(FileList["*.c", "x"])
73
+ assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort,
74
+ fl.sort
75
+ end
76
+
77
+ def test_append
78
+ fl = FileList.new
79
+ fl << "a.rb" << "b.rb"
80
+ assert_equal ['a.rb', 'b.rb'], fl
81
+ end
82
+
83
+ def test_add_many
84
+ fl = FileList.new
85
+ fl.include %w(a d c)
86
+ fl.include('x', 'y')
87
+ assert_equal ['a', 'd', 'c', 'x', 'y'], fl
88
+ assert_equal ['a', 'd', 'c', 'x', 'y'], fl.resolve
89
+ end
90
+
91
+ def test_add_return
92
+ f = FileList.new
93
+ g = f << "x"
94
+ assert_equal f.object_id, g.object_id
95
+ h = f.include("y")
96
+ assert_equal f.object_id, h.object_id
97
+ end
98
+
99
+ def test_match
100
+ fl = FileList.new
101
+ fl.include '*.c'
102
+
103
+ assert_equal %w[abc.c x.c xyz.c], fl.sort
104
+ end
105
+
106
+ def test_add_matching
107
+ fl = FileList.new
108
+ fl << "a.java"
109
+ fl.include '*.c'
110
+
111
+ assert_equal %w[a.java abc.c x.c xyz.c], fl.sort
112
+ end
113
+
114
+ def test_multiple_patterns
115
+ fl = FileList.new
116
+ fl.include('*.z', '*foo*')
117
+
118
+ assert_equal [], fl
119
+
120
+ fl.include('*.c', '*xist*')
121
+ assert_equal %w[x.c xyz.c abc.c existing].sort, fl.sort
122
+ end
123
+
124
+ def test_square_bracket_pattern
125
+ fl = FileList.new
126
+ fl.include("abc.[ch]")
127
+ assert fl.size == 2
128
+ assert fl.include?("abc.c")
129
+ assert fl.include?("abc.h")
130
+ end
131
+
132
+ def test_curly_bracket_pattern
133
+ fl = FileList.new
134
+ fl.include("abc.{c,h}")
135
+ assert fl.size == 2
136
+ assert fl.include?("abc.c")
137
+ assert fl.include?("abc.h")
138
+ end
139
+
140
+ def test_reject
141
+ fl = FileList.new
142
+ fl.include %w(x.c abc.c xyz.c existing)
143
+ fl.reject! { |fn| fn =~ /^x/ }
144
+ assert_equal %w[abc.c existing], fl
145
+ end
146
+
147
+ def test_exclude
148
+ fl = FileList['x.c', 'abc.c', 'xyz.c', 'existing']
149
+ fl.each { |fn| touch fn, :verbose => false }
150
+
151
+ x = fl.exclude(%r{^x.+\.})
152
+
153
+ assert_equal FileList, x.class
154
+ assert_equal %w(x.c abc.c existing), fl
155
+ assert_equal fl.object_id, x.object_id
156
+
157
+ fl.exclude('*.c')
158
+
159
+ assert_equal ['existing'], fl
160
+
161
+ fl.exclude('existing')
162
+
163
+ assert_equal [], fl
164
+ end
165
+
166
+ def test_excluding_via_block
167
+ fl = FileList['a.c', 'b.c', 'xyz.c']
168
+ fl.exclude { |fn| fn.pathmap('%n') == 'xyz' }
169
+ assert fl.exclude?("xyz.c"), "Should exclude xyz.c"
170
+ assert_equal ['a.c', 'b.c'], fl
171
+ end
172
+
173
+ def test_exclude_return_on_create
174
+ fl = FileList['*'].exclude(/.*\.[hcx]$/)
175
+ assert_equal %w[cfiles existing xyzzy.txt], fl.sort
176
+ assert_equal FileList, fl.class
177
+ end
178
+
179
+ def test_exclude_with_string_return_on_create
180
+ fl = FileList['*'].exclude('abc.c')
181
+ assert_equal %w[abc.h abc.x cfiles existing x.c xyz.c xyzzy.txt], fl.sort
182
+ assert_equal FileList, fl.class
183
+ end
184
+
185
+ def test_default_exclude
186
+ fl = FileList.new
187
+ fl.clear_exclude
188
+ fl.include("**/*~", "**/*.bak", "**/core")
189
+ assert fl.member?("core"), "Should include core"
190
+ assert fl.member?("x.bak"), "Should include .bak files"
191
+ end
192
+
193
+ def test_unique
194
+ fl = FileList.new
195
+ fl << "x.c" << "a.c" << "b.rb" << "a.c"
196
+ assert_equal ['x.c', 'a.c', 'b.rb', 'a.c'], fl
197
+ fl.uniq!
198
+ assert_equal ['x.c', 'a.c', 'b.rb'], fl
199
+ end
200
+
201
+ def test_to_string
202
+ fl = FileList.new
203
+ fl << "a.java" << "b.java"
204
+ assert_equal "a.java b.java", fl.to_s
205
+ assert_equal "a.java b.java", "#{fl}"
206
+ end
207
+
208
+ def test_to_array
209
+ fl = FileList['a.java', 'b.java']
210
+ assert_equal ['a.java', 'b.java'], fl.to_a
211
+ assert_equal Array, fl.to_a.class
212
+ assert_equal ['a.java', 'b.java'], fl.to_ary
213
+ assert_equal Array, fl.to_ary.class
214
+ end
215
+
216
+ def test_to_s_pending
217
+ fl = FileList['abc.*']
218
+ result = fl.to_s
219
+ assert_match(%r{abc\.c}, result)
220
+ assert_match(%r{abc\.h}, result)
221
+ assert_match(%r{abc\.x}, result)
222
+ assert_match(%r{(abc\..\b ?){2}}, result)
223
+ end
224
+
225
+ def test_inspect_pending
226
+ fl = FileList['abc.*']
227
+ result = fl.inspect
228
+ assert_match(%r{"abc\.c"}, result)
229
+ assert_match(%r{"abc\.h"}, result)
230
+ assert_match(%r{"abc\.x"}, result)
231
+ assert_match(%r|^\[("abc\..", ){2}"abc\.."\]$|, result)
232
+ end
233
+
234
+ def test_sub
235
+ fl = FileList["*.c"]
236
+ f2 = fl.sub(/\.c$/, ".o")
237
+ assert_equal FileList, f2.class
238
+ assert_equal ["abc.o", "x.o", "xyz.o"].sort,
239
+ f2.sort
240
+ f3 = fl.gsub(/\.c$/, ".o")
241
+ assert_equal FileList, f3.class
242
+ assert_equal ["abc.o", "x.o", "xyz.o"].sort,
243
+ f3.sort
244
+ end
245
+
246
+ def test_claim_to_be_a_kind_of_array
247
+ fl = FileList['*.c']
248
+ assert fl.is_a?(Array)
249
+ assert fl.kind_of?(Array)
250
+ end
251
+
252
+ def test_claim_to_be_a_kind_of_filelist
253
+ fl = FileList['*.c']
254
+ assert fl.is_a?(FileList)
255
+ assert fl.kind_of?(FileList)
256
+ end
257
+
258
+ def test_claim_to_be_a_filelist_instance
259
+ fl = FileList['*.c']
260
+ assert fl.instance_of?(FileList)
261
+ end
262
+
263
+ def test_dont_claim_to_be_an_array_instance
264
+ fl = FileList['*.c']
265
+ assert ! fl.instance_of?(Array)
266
+ end
267
+
268
+ def test_sub!
269
+ f = "x/a.c"
270
+ fl = FileList[f, "x/b.c"]
271
+ res = fl.sub!(/\.c$/, ".o")
272
+ assert_equal ["x/a.o", "x/b.o"].sort, fl.sort
273
+ assert_equal "x/a.c", f
274
+ assert_equal fl.object_id, res.object_id
275
+ end
276
+
277
+ def test_sub_with_block
278
+ fl = FileList["src/org/onestepback/a.java", "src/org/onestepback/b.java"]
279
+ # The block version doesn't work the way I want it to ...
280
+ # f2 = fl.sub(%r{^src/(.*)\.java$}) { |x| "classes/" + $1 + ".class" }
281
+ f2 = fl.sub(%r{^src/(.*)\.java$}, "classes/\\1.class")
282
+ assert_equal [
283
+ "classes/org/onestepback/a.class",
284
+ "classes/org/onestepback/b.class"
285
+ ].sort,
286
+ f2.sort
287
+ end
288
+
289
+ def test_string_ext
290
+ assert_equal "one.net", "one.two".ext("net")
291
+ assert_equal "one.net", "one.two".ext(".net")
292
+ assert_equal "one.net", "one".ext("net")
293
+ assert_equal "one.net", "one".ext(".net")
294
+ assert_equal "one.two.net", "one.two.c".ext(".net")
295
+ assert_equal "one/two.net", "one/two.c".ext(".net")
296
+ assert_equal "one.x/two.net", "one.x/two.c".ext(".net")
297
+ assert_equal "one.x/two.net", "one.x/two".ext(".net")
298
+ assert_equal ".onerc.net", ".onerc.dot".ext("net")
299
+ assert_equal ".onerc.net", ".onerc".ext("net")
300
+ assert_equal ".a/.onerc.net", ".a/.onerc".ext("net")
301
+ assert_equal "one", "one.two".ext('')
302
+ assert_equal "one", "one.two".ext
303
+ assert_equal ".one", ".one.two".ext
304
+ assert_equal ".one", ".one".ext
305
+ assert_equal ".", ".".ext("c")
306
+ assert_equal "..", "..".ext("c")
307
+ # These only need to work in windows
308
+ if Rake::Win32.windows?
309
+ assert_equal "one.x\\two.net", "one.x\\two.c".ext(".net")
310
+ assert_equal "one.x\\two.net", "one.x\\two".ext(".net")
311
+ end
312
+ end
313
+
314
+ def test_filelist_ext
315
+ assert_equal FileList['one.c', '.one.c'],
316
+ FileList['one.net', '.one'].ext('c')
317
+ end
318
+
319
+ def test_gsub
320
+ fl = FileList["*.c"]
321
+ f2 = fl.gsub(/a/, "A")
322
+ assert_equal ["Abc.c", "x.c", "xyz.c"].sort,
323
+ f2.sort
324
+ end
325
+
326
+ def test_gsub!
327
+ f = FileList["*.c"]
328
+ f.gsub!(/a/, "A")
329
+ assert_equal ["Abc.c", "x.c", "xyz.c"].sort,
330
+ f.sort
331
+ end
332
+
333
+ def test_egrep_returns_0_if_no_matches
334
+ files = FileList['test/lib/*_test.rb'].exclude("test/lib/filelist_test.rb")
335
+ assert_equal 0, files.egrep(/XYZZY/) { }
336
+ end
337
+
338
+ def test_egrep_with_output
339
+ files = FileList['*.txt']
340
+
341
+ out, = capture_io do
342
+ files.egrep(/XYZZY/)
343
+ end
344
+
345
+ assert_equal "xyzzy.txt:2:XYZZY\n", out
346
+ end
347
+
348
+ def test_egrep_with_block
349
+ files = FileList['*.txt']
350
+ found = nil
351
+
352
+ files.egrep(/XYZZY/) do |fn, ln, line|
353
+ found = [fn, ln, line]
354
+ end
355
+
356
+ assert_equal ["xyzzy.txt", 2, "XYZZY\n"], found
357
+ end
358
+
359
+ def test_egrep_with_error
360
+ files = FileList['*.txt']
361
+
362
+ _, err = capture_io do
363
+ files.egrep(/XYZZY/) do |fn, ln, line |
364
+ raise "_EGREP_FAILURE_"
365
+ end
366
+ end
367
+
368
+ assert_equal "Error while processing 'xyzzy.txt': _EGREP_FAILURE_\n", err
369
+ end
370
+
371
+ def test_existing
372
+ fl = FileList['abc.c', 'notthere.c']
373
+ assert_equal ["abc.c"], fl.existing
374
+ assert fl.existing.is_a?(FileList)
375
+ end
376
+
377
+ def test_existing!
378
+ fl = FileList['abc.c', 'notthere.c']
379
+ result = fl.existing!
380
+ assert_equal ["abc.c"], fl
381
+ assert_equal fl.object_id, result.object_id
382
+ end
383
+
384
+ def test_ignore_special
385
+ f = FileList['*']
386
+ assert ! f.include?("CVS"), "Should not contain CVS"
387
+ assert ! f.include?(".svn"), "Should not contain .svn"
388
+ assert ! f.include?(".dummy"), "Should not contain dot files"
389
+ assert ! f.include?("x.bak"), "Should not contain .bak files"
390
+ assert ! f.include?("x~"), "Should not contain ~ files"
391
+ assert ! f.include?("core"), "Should not contain core files"
392
+ end
393
+
394
+ def test_clear_ignore_patterns
395
+ f = FileList['*', '.svn']
396
+ f.clear_exclude
397
+ assert f.include?("abc.c")
398
+ assert f.include?("xyz.c")
399
+ assert f.include?("CVS")
400
+ assert f.include?(".svn")
401
+ assert f.include?("x.bak")
402
+ assert f.include?("x~")
403
+ end
404
+
405
+ def test_exclude_with_alternate_file_seps
406
+ fl = FileList.new
407
+ assert fl.exclude?("x/CVS/y")
408
+ assert fl.exclude?("x\\CVS\\y")
409
+ assert fl.exclude?("x/.svn/y")
410
+ assert fl.exclude?("x\\.svn\\y")
411
+ assert fl.exclude?("x/core")
412
+ assert fl.exclude?("x\\core")
413
+ end
414
+
415
+ def test_add_default_exclude_list
416
+ fl = FileList.new
417
+ fl.exclude(/~\d+$/)
418
+ assert fl.exclude?("x/CVS/y")
419
+ assert fl.exclude?("x\\CVS\\y")
420
+ assert fl.exclude?("x/.svn/y")
421
+ assert fl.exclude?("x\\.svn\\y")
422
+ assert fl.exclude?("x/core")
423
+ assert fl.exclude?("x\\core")
424
+ assert fl.exclude?("x/abc~1")
425
+ end
426
+
427
+ def test_basic_array_functions
428
+ f = FileList['b', 'c', 'a']
429
+ assert_equal 'b', f.first
430
+ assert_equal 'b', f[0]
431
+ assert_equal 'a', f.last
432
+ assert_equal 'a', f[2]
433
+ assert_equal 'a', f[-1]
434
+ assert_equal ['a', 'b', 'c'], f.sort
435
+ f.sort!
436
+ assert_equal ['a', 'b', 'c'], f
437
+ end
438
+
439
+ def test_flatten
440
+ assert_equal ['a', 'x.c', 'xyz.c', 'abc.c'].sort,
441
+ ['a', FileList['*.c']].flatten.sort
442
+ end
443
+
444
+ def test_clone_and_dup
445
+ a = FileList['a', 'b', 'c']
446
+ c = a.clone
447
+ d = a.dup
448
+ a << 'd'
449
+ assert_equal ['a', 'b', 'c', 'd'], a
450
+ assert_equal ['a', 'b', 'c'], c
451
+ assert_equal ['a', 'b', 'c'], d
452
+ end
453
+
454
+ def test_dup_and_clone_replicate_taint
455
+ a = FileList['a', 'b', 'c']
456
+ a.taint
457
+ c = a.clone
458
+ d = a.dup
459
+ assert c.tainted?, "Clone should be tainted"
460
+ assert d.tainted?, "Dup should be tainted"
461
+ end
462
+
463
+ def test_duped_items_will_thaw
464
+ a = FileList['a', 'b', 'c']
465
+ a.freeze
466
+ d = a.dup
467
+ d << 'more'
468
+ assert_equal ['a', 'b', 'c', 'more'], d
469
+ end
470
+
471
+ def test_cloned_items_stay_frozen
472
+ a = FileList['a', 'b', 'c']
473
+ a.freeze
474
+ c = a.clone
475
+ assert_raises(TypeError, RuntimeError) do
476
+ c << 'more'
477
+ end
478
+ end
479
+
480
+ def test_array_comparisons
481
+ fl = FileList['b', 'b']
482
+ a = ['b', 'a']
483
+ b = ['b', 'b']
484
+ c = ['b', 'c']
485
+ assert_equal( 1, fl <=> a )
486
+ assert_equal( 0, fl <=> b )
487
+ assert_equal( -1, fl <=> c )
488
+ assert_equal( -1, a <=> fl )
489
+ assert_equal( 0, b <=> fl )
490
+ assert_equal( 1, c <=> fl )
491
+ end
492
+
493
+ def test_array_equality
494
+ a = FileList['a', 'b']
495
+ b = ['a', 'b']
496
+ assert a == b
497
+ assert b == a
498
+ # assert a.eql?(b)
499
+ # assert b.eql?(a)
500
+ assert ! a.equal?(b)
501
+ assert ! b.equal?(a)
502
+ end
503
+
504
+ def test_enumeration_methods
505
+ a = FileList['a', 'b']
506
+ b = a.collect { |it| it.upcase }
507
+ assert_equal ['A', 'B'], b
508
+ assert_equal FileList, b.class
509
+
510
+ b = a.map { |it| it.upcase }
511
+ assert_equal ['A', 'B'], b
512
+ assert_equal FileList, b.class
513
+
514
+ b = a.sort
515
+ assert_equal ['a', 'b'], b
516
+ assert_equal FileList, b.class
517
+
518
+ b = a.sort_by { |it| it }
519
+ assert_equal ['a', 'b'], b
520
+ assert_equal FileList, b.class
521
+
522
+ b = a.find_all { |it| it == 'b'}
523
+ assert_equal ['b'], b
524
+ assert_equal FileList, b.class
525
+
526
+ b = a.select { |it| it.size == 1 }
527
+ assert_equal ['a', 'b'], b
528
+ assert_equal FileList, b.class
529
+
530
+ b = a.reject { |it| it == 'b' }
531
+ assert_equal ['a'], b
532
+ assert_equal FileList, b.class
533
+
534
+ b = a.grep(/./)
535
+ assert_equal ['a', 'b'], b
536
+ assert_equal FileList, b.class
537
+
538
+ b = a.partition { |it| it == 'b' }
539
+ assert_equal [['b'], ['a']], b
540
+ assert_equal Array, b.class
541
+ assert_equal FileList, b[0].class
542
+ assert_equal FileList, b[1].class
543
+
544
+ b = a.zip(['x', 'y']).to_a
545
+ assert_equal [['a', 'x'], ['b', 'y']], b
546
+ assert_equal Array, b.class
547
+ assert_equal Array, b[0].class
548
+ assert_equal Array, b[1].class
549
+ end
550
+
551
+ def test_array_operators
552
+ a = ['a', 'b']
553
+ b = ['c', 'd']
554
+ f = FileList['x', 'y']
555
+ g = FileList['w', 'z']
556
+
557
+ r = f + g
558
+ assert_equal ['x', 'y', 'w', 'z'], r
559
+ assert_equal FileList, r.class
560
+
561
+ r = a + g
562
+ assert_equal ['a', 'b', 'w', 'z'], r
563
+ assert_equal Array, r.class
564
+
565
+ r = f + b
566
+ assert_equal ['x', 'y', 'c', 'd'], r
567
+ assert_equal FileList, r.class
568
+
569
+ r = FileList['w', 'x', 'y', 'z'] - f
570
+ assert_equal ['w', 'z'], r
571
+ assert_equal FileList, r.class
572
+
573
+ r = FileList['w', 'x', 'y', 'z'] & f
574
+ assert_equal ['x', 'y'], r
575
+ assert_equal FileList, r.class
576
+
577
+ r = f * 2
578
+ assert_equal ['x', 'y', 'x', 'y'], r
579
+ assert_equal FileList, r.class
580
+
581
+ r = f * ','
582
+ assert_equal 'x,y', r
583
+ assert_equal String, r.class
584
+
585
+ r = f | ['a', 'x']
586
+ assert_equal ['a', 'x', 'y'].sort, r.sort
587
+ assert_equal FileList, r.class
588
+ end
589
+
590
+ def test_other_array_returning_methods
591
+ f = FileList['a', nil, 'b']
592
+ r = f.compact
593
+ assert_equal ['a', 'b'], r
594
+ assert_equal FileList, r.class
595
+
596
+ f = FileList['a', 'b']
597
+ r = f.concat(['x', 'y'])
598
+ assert_equal ['a', 'b', 'x', 'y'], r
599
+ assert_equal FileList, r.class
600
+
601
+ f = FileList['a', ['b', 'c'], FileList['d', 'e']]
602
+ r = f.flatten
603
+ assert_equal ['a', 'b', 'c', 'd', 'e'], r
604
+ assert_equal FileList, r.class
605
+
606
+ f = FileList['a', 'b', 'a']
607
+ r = f.uniq
608
+ assert_equal ['a', 'b'], r
609
+ assert_equal FileList, r.class
610
+
611
+ f = FileList['a', 'b', 'c', 'd']
612
+ r = f.values_at(1,3)
613
+ assert_equal ['b', 'd'], r
614
+ assert_equal FileList, r.class
615
+ end
616
+
617
+ def test_file_utils_can_use_filelists
618
+ cfiles = FileList['*.c']
619
+
620
+ cp cfiles, @cdir, :verbose => false
621
+
622
+ assert File.exist?(File.join(@cdir, 'abc.c'))
623
+ assert File.exist?(File.join(@cdir, 'xyz.c'))
624
+ assert File.exist?(File.join(@cdir, 'x.c'))
625
+ end
626
+
627
+ end
628
+