From e6634b234c19aa9fe41c6f21b736ce0e41db057a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Fri, 11 Jun 2021 10:58:00 +0200 Subject: [PATCH] Update vendored dummy repos to our support matrix Now we only support cruby 2.5.0 compatible jrubies, so the vendored repositories need to be updated to that. Dummy repos for older jrubies are no longer necessary. I also committed some other source control changes being generated by running tests. --- spec/sample_bundler/.bundle/config | 6 +- .../vendor/bundle/jruby/2.2.0/bin/rake | 23 - .../bundle/jruby/2.2.0/cache/rake-10.4.2.gem | Bin 130560 -> 0 bytes .../bundle/jruby/2.2.0/cache/rake-10.5.0.gem | Bin 130560 -> 0 bytes .../jruby/2.2.0/gems/rake-10.4.2/.autotest | 7 - .../jruby/2.2.0/gems/rake-10.4.2/.gemtest | 0 .../jruby/2.2.0/gems/rake-10.4.2/.rubocop.yml | 27 - .../jruby/2.2.0/gems/rake-10.4.2/.togglerc | 7 - .../2.2.0/gems/rake-10.4.2/CONTRIBUTING.rdoc | 34 - .../jruby/2.2.0/gems/rake-10.4.2/History.rdoc | 651 ----- .../jruby/2.2.0/gems/rake-10.4.2/Manifest.txt | 166 -- .../jruby/2.2.0/gems/rake-10.4.2/README.rdoc | 140 - .../jruby/2.2.0/gems/rake-10.4.2/Rakefile | 81 - .../jruby/2.2.0/gems/rake-10.4.2/bin/rake | 33 - .../jruby/2.2.0/gems/rake-10.4.2/lib/rake.rb | 79 - .../gems/rake-10.4.2/lib/rake/alt_system.rb | 110 - .../gems/rake-10.4.2/lib/rake/application.rb | 790 ------ .../gems/rake-10.4.2/lib/rake/backtrace.rb | 23 - .../2.2.0/gems/rake-10.4.2/lib/rake/clean.rb | 76 - .../gems/rake-10.4.2/lib/rake/cloneable.rb | 16 - .../rake-10.4.2/lib/rake/contrib/.document | 1 - .../lib/rake/contrib/compositepublisher.rb | 21 - .../rake-10.4.2/lib/rake/contrib/ftptools.rb | 137 - .../rake-10.4.2/lib/rake/contrib/publisher.rb | 81 - .../lib/rake/contrib/rubyforgepublisher.rb | 18 - .../lib/rake/contrib/sshpublisher.rb | 61 - .../gems/rake-10.4.2/lib/rake/contrib/sys.rb | 4 - .../gems/rake-10.4.2/lib/rake/cpu_counter.rb | 125 - .../rake-10.4.2/lib/rake/dsl_definition.rb | 201 -- .../gems/rake-10.4.2/lib/rake/early_time.rb | 21 - .../gems/rake-10.4.2/lib/rake/ext/module.rb | 2 - .../gems/rake-10.4.2/lib/rake/ext/pathname.rb | 25 - .../gems/rake-10.4.2/lib/rake/ext/string.rb | 173 -- .../gems/rake-10.4.2/lib/rake/ext/time.rb | 16 - .../lib/rake/file_creation_task.rb | 24 - .../gems/rake-10.4.2/lib/rake/file_list.rb | 428 --- .../gems/rake-10.4.2/lib/rake/file_utils.rb | 128 - .../rake-10.4.2/lib/rake/file_utils_ext.rb | 144 - .../rake-10.4.2/lib/rake/gempackagetask.rb | 4 - .../rake-10.4.2/lib/rake/invocation_chain.rb | 56 - .../gems/rake-10.4.2/lib/rake/late_time.rb | 17 - .../rake-10.4.2/lib/rake/loaders/makefile.rb | 40 - .../gems/rake-10.4.2/lib/rake/pathmap.rb | 3 - .../rake-10.4.2/lib/rake/private_reader.rb | 20 - .../gems/rake-10.4.2/lib/rake/promise.rb | 99 - .../rake-10.4.2/lib/rake/pseudo_status.rb | 29 - .../gems/rake-10.4.2/lib/rake/rake_module.rb | 38 - .../rake-10.4.2/lib/rake/rake_test_loader.rb | 22 - .../gems/rake-10.4.2/lib/rake/rdoctask.rb | 4 - .../lib/rake/ruby182_test_unit_fix.rb | 29 - .../gems/rake-10.4.2/lib/rake/runtest.rb | 27 - .../2.2.0/gems/rake-10.4.2/lib/rake/task.rb | 383 --- .../lib/rake/task_argument_error.rb | 7 - .../rake-10.4.2/lib/rake/task_arguments.rb | 98 - .../gems/rake-10.4.2/lib/rake/tasklib.rb | 24 - .../gems/rake-10.4.2/lib/rake/testtask.rb | 212 -- .../lib/rake/thread_history_display.rb | 48 - .../gems/rake-10.4.2/lib/rake/thread_pool.rb | 164 -- .../gems/rake-10.4.2/lib/rake/trace_output.rb | 22 - .../gems/rake-10.4.2/lib/rake/version.rb | 7 - .../2.2.0/gems/rake-10.4.2/lib/rake/win32.rb | 56 - .../gems/rake-10.4.2/rakelib/publish.rake | 20 - .../gems/rake-10.4.2/rakelib/test_times.rake | 25 - .../gems/rake-10.4.2/test/file_creation.rb | 34 - .../2.2.0/gems/rake-10.4.2/test/helper.rb | 130 - .../test/support/rakefile_definitions.rb | 478 ---- .../rake-10.4.2/test/support/ruby_runner.rb | 34 - .../rake-10.4.2/test/test_private_reader.rb | 42 - .../2.2.0/gems/rake-10.4.2/test/test_rake.rb | 40 - .../rake-10.4.2/test/test_rake_application.rb | 643 ----- .../test/test_rake_application_options.rb | 466 ---- .../rake-10.4.2/test/test_rake_backtrace.rb | 119 - .../gems/rake-10.4.2/test/test_rake_clean.rb | 61 - .../rake-10.4.2/test/test_rake_cpu_counter.rb | 68 - .../rake-10.4.2/test/test_rake_definitions.rb | 84 - .../test/test_rake_directory_task.rb | 76 - .../gems/rake-10.4.2/test/test_rake_dsl.rb | 40 - .../rake-10.4.2/test/test_rake_early_time.rb | 31 - .../rake-10.4.2/test/test_rake_extension.rb | 59 - .../test/test_rake_file_creation_task.rb | 56 - .../rake-10.4.2/test/test_rake_file_list.rb | 655 ----- .../test/test_rake_file_list_path_map.rb | 8 - .../rake-10.4.2/test/test_rake_file_task.rb | 197 -- .../rake-10.4.2/test/test_rake_file_utils.rb | 309 --- .../rake-10.4.2/test/test_rake_ftp_file.rb | 74 - .../rake-10.4.2/test/test_rake_functional.rb | 482 ---- .../test/test_rake_invocation_chain.rb | 64 - .../rake-10.4.2/test/test_rake_late_time.rb | 18 - .../rake-10.4.2/test/test_rake_linked_list.rb | 84 - .../test/test_rake_makefile_loader.rb | 46 - .../rake-10.4.2/test/test_rake_multi_task.rb | 64 - .../rake-10.4.2/test/test_rake_name_space.rb | 57 - .../test/test_rake_package_task.rb | 79 - .../rake-10.4.2/test/test_rake_path_map.rb | 168 -- .../test/test_rake_path_map_explode.rb | 34 - .../test/test_rake_path_map_partial.rb | 18 - .../test/test_rake_pathname_extensions.rb | 15 - .../test/test_rake_pseudo_status.rb | 21 - .../test/test_rake_rake_test_loader.rb | 20 - .../test/test_rake_reduce_compat.rb | 26 - .../rake-10.4.2/test/test_rake_require.rb | 40 - .../gems/rake-10.4.2/test/test_rake_rules.rb | 388 --- .../gems/rake-10.4.2/test/test_rake_scope.rb | 44 - .../gems/rake-10.4.2/test/test_rake_task.rb | 393 --- .../test/test_rake_task_argument_parsing.rb | 119 - .../test/test_rake_task_arguments.rb | 127 - .../rake-10.4.2/test/test_rake_task_lib.rb | 9 - .../test/test_rake_task_manager.rb | 178 -- ...t_rake_task_manager_argument_resolution.rb | 19 - .../test/test_rake_task_with_arguments.rb | 172 -- .../rake-10.4.2/test/test_rake_test_task.rb | 146 - .../rake-10.4.2/test/test_rake_thread_pool.rb | 145 - .../test/test_rake_top_level_functions.rb | 71 - .../gems/rake-10.4.2/test/test_rake_win32.rb | 72 - .../test/test_thread_history_display.rb | 101 - .../rake-10.4.2/test/test_trace_output.rb | 52 - .../jruby/2.2.0/gems/rake-10.5.0/.autotest | 7 - .../jruby/2.2.0/gems/rake-10.5.0/.rubocop.yml | 27 - .../jruby/2.2.0/gems/rake-10.5.0/.togglerc | 7 - .../2.2.0/gems/rake-10.5.0/CONTRIBUTING.rdoc | 38 - .../jruby/2.2.0/gems/rake-10.5.0/History.rdoc | 659 ----- .../jruby/2.2.0/gems/rake-10.5.0/MIT-LICENSE | 21 - .../jruby/2.2.0/gems/rake-10.5.0/Manifest.txt | 166 -- .../jruby/2.2.0/gems/rake-10.5.0/README.rdoc | 139 - .../jruby/2.2.0/gems/rake-10.5.0/Rakefile | 81 - .../jruby/2.2.0/gems/rake-10.5.0/bin/rake | 33 - .../jruby/2.2.0/gems/rake-10.5.0/lib/rake.rb | 79 - .../gems/rake-10.5.0/lib/rake/alt_system.rb | 110 - .../2.2.0/gems/rake-10.5.0/lib/rake/clean.rb | 76 - .../gems/rake-10.5.0/lib/rake/cloneable.rb | 16 - .../rake-10.5.0/lib/rake/contrib/.document | 1 - .../lib/rake/contrib/compositepublisher.rb | 21 - .../rake-10.5.0/lib/rake/contrib/ftptools.rb | 137 - .../rake-10.5.0/lib/rake/contrib/publisher.rb | 81 - .../lib/rake/contrib/rubyforgepublisher.rb | 18 - .../lib/rake/contrib/sshpublisher.rb | 61 - .../gems/rake-10.5.0/lib/rake/contrib/sys.rb | 4 - .../gems/rake-10.5.0/lib/rake/cpu_counter.rb | 125 - .../rake-10.5.0/lib/rake/default_loader.rb | 14 - .../gems/rake-10.5.0/lib/rake/ext/core.rb | 25 - .../gems/rake-10.5.0/lib/rake/ext/module.rb | 2 - .../gems/rake-10.5.0/lib/rake/ext/pathname.rb | 25 - .../gems/rake-10.5.0/lib/rake/ext/string.rb | 175 -- .../gems/rake-10.5.0/lib/rake/ext/time.rb | 18 - .../lib/rake/file_creation_task.rb | 24 - .../gems/rake-10.5.0/lib/rake/file_list.rb | 428 --- .../gems/rake-10.5.0/lib/rake/file_task.rb | 46 - .../gems/rake-10.5.0/lib/rake/file_utils.rb | 128 - .../rake-10.5.0/lib/rake/gempackagetask.rb | 4 - .../rake-10.5.0/lib/rake/invocation_chain.rb | 56 - .../lib/rake/invocation_exception_mixin.rb | 16 - .../gems/rake-10.5.0/lib/rake/late_time.rb | 17 - .../gems/rake-10.5.0/lib/rake/linked_list.rb | 103 - .../rake-10.5.0/lib/rake/loaders/makefile.rb | 53 - .../gems/rake-10.5.0/lib/rake/multi_task.rb | 13 - .../gems/rake-10.5.0/lib/rake/name_space.rb | 38 - .../gems/rake-10.5.0/lib/rake/packagetask.rb | 199 -- .../gems/rake-10.5.0/lib/rake/pathmap.rb | 3 - .../2.2.0/gems/rake-10.5.0/lib/rake/phony.rb | 15 - .../gems/rake-10.5.0/lib/rake/promise.rb | 99 - .../gems/rake-10.5.0/lib/rake/rake_module.rb | 38 - .../rake-10.5.0/lib/rake/rake_test_loader.rb | 22 - .../gems/rake-10.5.0/lib/rake/rdoctask.rb | 4 - .../lib/rake/ruby182_test_unit_fix.rb | 29 - .../lib/rake/rule_recursion_overflow_error.rb | 20 - .../gems/rake-10.5.0/lib/rake/runtest.rb | 27 - .../2.2.0/gems/rake-10.5.0/lib/rake/scope.rb | 42 - .../rake-10.5.0/lib/rake/task_arguments.rb | 98 - .../gems/rake-10.5.0/lib/rake/task_manager.rb | 307 --- .../gems/rake-10.5.0/lib/rake/tasklib.rb | 24 - .../gems/rake-10.5.0/lib/rake/testtask.rb | 213 -- .../gems/rake-10.5.0/lib/rake/version.rb | 7 - .../2.2.0/gems/rake-10.5.0/lib/rake/win32.rb | 56 - .../gems/rake-10.5.0/rakelib/publish.rake | 20 - .../gems/rake-10.5.0/rakelib/test_times.rake | 25 - .../gems/rake-10.5.0/test/file_creation.rb | 34 - .../2.2.0/gems/rake-10.5.0/test/helper.rb | 129 - .../test/support/rakefile_definitions.rb | 478 ---- .../rake-10.5.0/test/support/ruby_runner.rb | 34 - .../rake-10.5.0/test/test_private_reader.rb | 42 - .../2.2.0/gems/rake-10.5.0/test/test_rake.rb | 40 - .../rake-10.5.0/test/test_rake_application.rb | 643 ----- .../test/test_rake_application_options.rb | 468 ---- .../rake-10.5.0/test/test_rake_backtrace.rb | 119 - .../gems/rake-10.5.0/test/test_rake_clean.rb | 61 - .../rake-10.5.0/test/test_rake_cpu_counter.rb | 68 - .../rake-10.5.0/test/test_rake_definitions.rb | 84 - .../test/test_rake_directory_task.rb | 76 - .../gems/rake-10.5.0/test/test_rake_dsl.rb | 40 - .../rake-10.5.0/test/test_rake_early_time.rb | 31 - .../rake-10.5.0/test/test_rake_extension.rb | 59 - .../test/test_rake_file_creation_task.rb | 56 - .../rake-10.5.0/test/test_rake_file_list.rb | 670 ----- .../test/test_rake_file_list_path_map.rb | 8 - .../rake-10.5.0/test/test_rake_file_task.rb | 197 -- .../rake-10.5.0/test/test_rake_file_utils.rb | 314 --- .../rake-10.5.0/test/test_rake_ftp_file.rb | 74 - .../rake-10.5.0/test/test_rake_functional.rb | 482 ---- .../test/test_rake_invocation_chain.rb | 64 - .../rake-10.5.0/test/test_rake_late_time.rb | 18 - .../rake-10.5.0/test/test_rake_linked_list.rb | 84 - .../test/test_rake_makefile_loader.rb | 46 - .../rake-10.5.0/test/test_rake_multi_task.rb | 64 - .../rake-10.5.0/test/test_rake_name_space.rb | 57 - .../test/test_rake_package_task.rb | 79 - .../rake-10.5.0/test/test_rake_path_map.rb | 168 -- .../test/test_rake_path_map_explode.rb | 34 - .../test/test_rake_path_map_partial.rb | 18 - .../test/test_rake_pathname_extensions.rb | 15 - .../test/test_rake_pseudo_status.rb | 21 - .../test/test_rake_rake_test_loader.rb | 20 - .../test/test_rake_reduce_compat.rb | 26 - .../rake-10.5.0/test/test_rake_require.rb | 40 - .../gems/rake-10.5.0/test/test_rake_rules.rb | 388 --- .../gems/rake-10.5.0/test/test_rake_scope.rb | 44 - .../gems/rake-10.5.0/test/test_rake_task.rb | 393 --- .../test/test_rake_task_argument_parsing.rb | 119 - .../test/test_rake_task_arguments.rb | 127 - .../rake-10.5.0/test/test_rake_task_lib.rb | 9 - .../test/test_rake_task_manager.rb | 178 -- ...t_rake_task_manager_argument_resolution.rb | 19 - .../test/test_rake_task_with_arguments.rb | 172 -- .../rake-10.5.0/test/test_rake_test_task.rb | 146 - .../rake-10.5.0/test/test_rake_thread_pool.rb | 145 - .../test/test_rake_top_level_functions.rb | 71 - .../gems/rake-10.5.0/test/test_rake_win32.rb | 72 - .../test/test_thread_history_display.rb | 101 - .../rake-10.5.0/test/test_trace_output.rb | 52 - .../2.2.0/specifications/rake-10.4.2.gemspec | 43 - .../2.2.0/specifications/rake-10.5.0.gemspec | 43 - .../bundle/jruby/2.3.0/cache/rake-10.5.0.gem | Bin 130560 -> 0 bytes .../jruby/2.3.0/gems/rake-10.5.0/.autotest | 7 - .../jruby/2.3.0/gems/rake-10.5.0/.rubocop.yml | 27 - .../jruby/2.3.0/gems/rake-10.5.0/.togglerc | 7 - .../jruby/2.3.0/gems/rake-10.5.0/History.rdoc | 659 ----- .../jruby/2.3.0/gems/rake-10.5.0/MIT-LICENSE | 21 - .../jruby/2.3.0/gems/rake-10.5.0/Manifest.txt | 166 -- .../jruby/2.3.0/gems/rake-10.5.0/Rakefile | 81 - .../gems/rake-10.5.0/lib/rake/alt_system.rb | 110 - .../gems/rake-10.5.0/lib/rake/application.rb | 790 ------ .../gems/rake-10.5.0/lib/rake/backtrace.rb | 23 - .../rake-10.5.0/lib/rake/contrib/.document | 1 - .../lib/rake/contrib/compositepublisher.rb | 21 - .../rake-10.5.0/lib/rake/contrib/ftptools.rb | 137 - .../rake-10.5.0/lib/rake/contrib/publisher.rb | 81 - .../lib/rake/contrib/rubyforgepublisher.rb | 18 - .../lib/rake/contrib/sshpublisher.rb | 61 - .../gems/rake-10.5.0/lib/rake/contrib/sys.rb | 4 - .../rake-10.5.0/lib/rake/default_loader.rb | 14 - .../rake-10.5.0/lib/rake/dsl_definition.rb | 201 -- .../gems/rake-10.5.0/lib/rake/early_time.rb | 21 - .../gems/rake-10.5.0/lib/rake/ext/core.rb | 25 - .../gems/rake-10.5.0/lib/rake/ext/module.rb | 2 - .../gems/rake-10.5.0/lib/rake/ext/pathname.rb | 25 - .../gems/rake-10.5.0/lib/rake/ext/time.rb | 18 - .../gems/rake-10.5.0/lib/rake/file_task.rb | 46 - .../rake-10.5.0/lib/rake/file_utils_ext.rb | 144 - .../rake-10.5.0/lib/rake/gempackagetask.rb | 4 - .../lib/rake/invocation_exception_mixin.rb | 16 - .../gems/rake-10.5.0/lib/rake/linked_list.rb | 103 - .../gems/rake-10.5.0/lib/rake/multi_task.rb | 13 - .../gems/rake-10.5.0/lib/rake/name_space.rb | 38 - .../gems/rake-10.5.0/lib/rake/packagetask.rb | 199 -- .../gems/rake-10.5.0/lib/rake/pathmap.rb | 3 - .../2.3.0/gems/rake-10.5.0/lib/rake/phony.rb | 15 - .../rake-10.5.0/lib/rake/private_reader.rb | 20 - .../rake-10.5.0/lib/rake/pseudo_status.rb | 29 - .../gems/rake-10.5.0/lib/rake/rake_module.rb | 38 - .../rake-10.5.0/lib/rake/rake_test_loader.rb | 22 - .../gems/rake-10.5.0/lib/rake/rdoctask.rb | 4 - .../lib/rake/ruby182_test_unit_fix.rb | 29 - .../lib/rake/rule_recursion_overflow_error.rb | 20 - .../gems/rake-10.5.0/lib/rake/runtest.rb | 27 - .../2.3.0/gems/rake-10.5.0/lib/rake/scope.rb | 42 - .../2.3.0/gems/rake-10.5.0/lib/rake/task.rb | 383 --- .../lib/rake/task_argument_error.rb | 7 - .../gems/rake-10.5.0/lib/rake/task_manager.rb | 307 --- .../gems/rake-10.5.0/lib/rake/tasklib.rb | 24 - .../lib/rake/thread_history_display.rb | 48 - .../gems/rake-10.5.0/lib/rake/thread_pool.rb | 164 -- .../gems/rake-10.5.0/lib/rake/trace_output.rb | 22 - .../gems/rake-10.5.0/lib/rake/version.rb | 7 - .../gems/rake-10.5.0/rakelib/publish.rake | 20 - .../gems/rake-10.5.0/rakelib/test_times.rake | 25 - .../gems/rake-10.5.0/test/file_creation.rb | 34 - .../2.3.0/gems/rake-10.5.0/test/helper.rb | 129 - .../test/support/rakefile_definitions.rb | 478 ---- .../rake-10.5.0/test/support/ruby_runner.rb | 34 - .../rake-10.5.0/test/test_private_reader.rb | 42 - .../2.3.0/gems/rake-10.5.0/test/test_rake.rb | 40 - .../rake-10.5.0/test/test_rake_application.rb | 643 ----- .../test/test_rake_application_options.rb | 468 ---- .../rake-10.5.0/test/test_rake_backtrace.rb | 119 - .../gems/rake-10.5.0/test/test_rake_clean.rb | 61 - .../rake-10.5.0/test/test_rake_cpu_counter.rb | 68 - .../rake-10.5.0/test/test_rake_definitions.rb | 84 - .../test/test_rake_directory_task.rb | 76 - .../gems/rake-10.5.0/test/test_rake_dsl.rb | 40 - .../rake-10.5.0/test/test_rake_early_time.rb | 31 - .../rake-10.5.0/test/test_rake_extension.rb | 59 - .../test/test_rake_file_creation_task.rb | 56 - .../rake-10.5.0/test/test_rake_file_list.rb | 670 ----- .../test/test_rake_file_list_path_map.rb | 8 - .../rake-10.5.0/test/test_rake_file_task.rb | 197 -- .../rake-10.5.0/test/test_rake_file_utils.rb | 314 --- .../rake-10.5.0/test/test_rake_ftp_file.rb | 74 - .../rake-10.5.0/test/test_rake_functional.rb | 482 ---- .../test/test_rake_invocation_chain.rb | 64 - .../rake-10.5.0/test/test_rake_late_time.rb | 18 - .../rake-10.5.0/test/test_rake_linked_list.rb | 84 - .../test/test_rake_makefile_loader.rb | 46 - .../rake-10.5.0/test/test_rake_multi_task.rb | 64 - .../rake-10.5.0/test/test_rake_name_space.rb | 57 - .../test/test_rake_package_task.rb | 79 - .../rake-10.5.0/test/test_rake_path_map.rb | 168 -- .../test/test_rake_path_map_explode.rb | 34 - .../test/test_rake_path_map_partial.rb | 18 - .../test/test_rake_pathname_extensions.rb | 15 - .../test/test_rake_pseudo_status.rb | 21 - .../test/test_rake_rake_test_loader.rb | 20 - .../test/test_rake_reduce_compat.rb | 26 - .../rake-10.5.0/test/test_rake_require.rb | 40 - .../gems/rake-10.5.0/test/test_rake_rules.rb | 388 --- .../gems/rake-10.5.0/test/test_rake_scope.rb | 44 - .../gems/rake-10.5.0/test/test_rake_task.rb | 393 --- .../test/test_rake_task_argument_parsing.rb | 119 - .../test/test_rake_task_arguments.rb | 127 - .../rake-10.5.0/test/test_rake_task_lib.rb | 9 - .../test/test_rake_task_manager.rb | 178 -- ...t_rake_task_manager_argument_resolution.rb | 19 - .../test/test_rake_task_with_arguments.rb | 172 -- .../rake-10.5.0/test/test_rake_test_task.rb | 146 - .../rake-10.5.0/test/test_rake_thread_pool.rb | 145 - .../test/test_rake_top_level_functions.rb | 71 - .../gems/rake-10.5.0/test/test_rake_win32.rb | 72 - .../test/test_thread_history_display.rb | 101 - .../rake-10.5.0/test/test_trace_output.rb | 52 - .../2.3.0/specifications/rake-10.5.0.gemspec | 43 - .../bundle/jruby/{2.3.0 => 2.5.0}/bin/rake | 5 + .../bundle/jruby/2.5.0/cache/rake-12.3.3.gem | Bin 0 -> 87040 bytes .../gems/rake-12.3.3}/CONTRIBUTING.rdoc | 21 +- .../jruby/2.5.0/gems/rake-12.3.3/Gemfile | 3 + .../jruby/2.5.0/gems/rake-12.3.3/History.rdoc | 2344 +++++++++++++++++ .../gems/rake-12.3.3}/MIT-LICENSE | 0 .../gems/rake-12.3.3}/README.rdoc | 39 +- .../jruby/2.5.0/gems/rake-12.3.3/Rakefile | 41 + .../gems/rake-12.3.3/azure-pipelines.yml | 11 + .../jruby/2.5.0/gems/rake-12.3.3/bin/bundle | 105 + .../jruby/2.5.0/gems/rake-12.3.3/bin/console | 7 + .../jruby/2.5.0/gems/rake-12.3.3/bin/rake | 29 + .../jruby/2.5.0/gems/rake-12.3.3/bin/rdoc | 29 + .../jruby/2.5.0/gems/rake-12.3.3/bin/rubocop | 29 + .../jruby/2.5.0/gems/rake-12.3.3/bin/setup | 6 + .../bin => 2.5.0/gems/rake-12.3.3/exe}/rake | 8 +- .../gems/rake-12.3.3}/lib/rake.rb | 78 +- .../gems/rake-12.3.3}/lib/rake/application.rb | 214 +- .../gems/rake-12.3.3}/lib/rake/backtrace.rb | 5 +- .../gems/rake-12.3.3}/lib/rake/clean.rb | 8 +- .../gems/rake-12.3.3}/lib/rake/cloneable.rb | 1 + .../gems/rake-12.3.3}/lib/rake/cpu_counter.rb | 38 +- .../rake-12.3.3}/lib/rake/default_loader.rb | 1 + .../rake-12.3.3}/lib/rake/dsl_definition.rb | 16 +- .../gems/rake-12.3.3}/lib/rake/early_time.rb | 1 + .../gems/rake-12.3.3}/lib/rake/ext/core.rb | 1 + .../gems/rake-12.3.3}/lib/rake/ext/string.rb | 43 +- .../lib/rake/file_creation_task.rb | 7 +- .../gems/rake-12.3.3}/lib/rake/file_list.rb | 61 +- .../gems/rake-12.3.3}/lib/rake/file_task.rb | 16 +- .../gems/rake-12.3.3}/lib/rake/file_utils.rb | 55 +- .../rake-12.3.3}/lib/rake/file_utils_ext.rb | 7 +- .../rake-12.3.3}/lib/rake/invocation_chain.rb | 1 + .../lib/rake/invocation_exception_mixin.rb | 1 + .../gems/rake-12.3.3}/lib/rake/late_time.rb | 3 +- .../gems/rake-12.3.3}/lib/rake/linked_list.rb | 39 +- .../rake-12.3.3}/lib/rake/loaders/makefile.rb | 9 +- .../gems/rake-12.3.3}/lib/rake/multi_task.rb | 3 +- .../gems/rake-12.3.3}/lib/rake/name_space.rb | 2 +- .../gems/rake-12.3.3}/lib/rake/packagetask.rb | 42 +- .../gems/rake-12.3.3}/lib/rake/phony.rb | 3 +- .../rake-12.3.3}/lib/rake/private_reader.rb | 1 + .../gems/rake-12.3.3}/lib/rake/promise.rb | 25 +- .../rake-12.3.3}/lib/rake/pseudo_status.rb | 1 + .../gems/rake-12.3.3/lib/rake/rake_module.rb | 67 + .../rake-12.3.3/lib/rake/rake_test_loader.rb | 27 + .../lib/rake/rule_recursion_overflow_error.rb | 4 +- .../gems/rake-12.3.3}/lib/rake/scope.rb | 5 +- .../gems/rake-12.3.3}/lib/rake/task.rb | 92 +- .../lib/rake/task_argument_error.rb | 1 + .../rake-12.3.3}/lib/rake/task_arguments.rb | 19 +- .../rake-12.3.3}/lib/rake/task_manager.rb | 52 +- .../gems/rake-12.3.3/lib/rake/tasklib.rb | 12 + .../gems/rake-12.3.3}/lib/rake/testtask.rb | 67 +- .../lib/rake/thread_history_display.rb | 7 +- .../gems/rake-12.3.3}/lib/rake/thread_pool.rb | 33 +- .../rake-12.3.3}/lib/rake/trace_output.rb | 3 +- .../gems/rake-12.3.3/lib/rake/version.rb | 10 + .../gems/rake-12.3.3}/lib/rake/win32.rb | 25 +- .../jruby/2.5.0/gems/rake-12.3.3/rake.gemspec | 42 + .../2.5.0/specifications/rake-12.3.3.gemspec | 49 + spec/sample_war/webserver.properties | 1 + 400 files changed, 3420 insertions(+), 35566 deletions(-) delete mode 100755 spec/sample_bundler/vendor/bundle/jruby/2.2.0/bin/rake delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/cache/rake-10.4.2.gem delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/cache/rake-10.5.0.gem delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.autotest delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.gemtest delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.rubocop.yml delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.togglerc delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/CONTRIBUTING.rdoc delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/History.rdoc delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/Manifest.txt delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/README.rdoc delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/Rakefile delete mode 100755 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/bin/rake delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/alt_system.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/application.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/backtrace.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/clean.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/cloneable.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/.document delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/compositepublisher.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/ftptools.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/publisher.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/rubyforgepublisher.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/sshpublisher.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/sys.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/cpu_counter.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/dsl_definition.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/early_time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/module.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/pathname.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/string.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_creation_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_list.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_utils.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_utils_ext.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/gempackagetask.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/invocation_chain.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/late_time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/loaders/makefile.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/pathmap.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/private_reader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/promise.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/pseudo_status.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rake_module.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rake_test_loader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rdoctask.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ruby182_test_unit_fix.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/runtest.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task_argument_error.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task_arguments.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/tasklib.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/testtask.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/thread_history_display.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/thread_pool.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/trace_output.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/version.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/win32.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/rakelib/publish.rake delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/rakelib/test_times.rake delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/file_creation.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/helper.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/support/rakefile_definitions.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/support/ruby_runner.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_private_reader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_application.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_application_options.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_backtrace.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_clean.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_cpu_counter.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_definitions.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_directory_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_dsl.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_early_time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_extension.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_creation_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_list.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_list_path_map.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_utils.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_ftp_file.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_functional.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_invocation_chain.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_late_time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_linked_list.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_makefile_loader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_multi_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_name_space.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_package_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_path_map.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_path_map_explode.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_path_map_partial.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_pathname_extensions.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_pseudo_status.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_rake_test_loader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_reduce_compat.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_require.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_rules.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_scope.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_argument_parsing.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_arguments.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_lib.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_manager.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_manager_argument_resolution.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_with_arguments.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_test_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_thread_pool.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_top_level_functions.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_win32.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_thread_history_display.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_trace_output.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/.autotest delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/.rubocop.yml delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/.togglerc delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/CONTRIBUTING.rdoc delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/History.rdoc delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/MIT-LICENSE delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/Manifest.txt delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/README.rdoc delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/Rakefile delete mode 100755 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/bin/rake delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/alt_system.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/clean.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/cloneable.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/.document delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/publisher.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/sys.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/cpu_counter.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/default_loader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/core.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/module.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/pathname.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/string.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_creation_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_list.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_utils.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/gempackagetask.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/invocation_chain.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/late_time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/linked_list.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/loaders/makefile.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/multi_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/name_space.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/packagetask.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/pathmap.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/phony.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/promise.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rake_module.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rdoctask.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/runtest.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/scope.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task_arguments.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task_manager.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/tasklib.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/testtask.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/version.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/win32.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/rakelib/publish.rake delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/rakelib/test_times.rake delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/file_creation.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/helper.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/support/rakefile_definitions.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/support/ruby_runner.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_private_reader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_application.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_application_options.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_backtrace.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_clean.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_cpu_counter.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_definitions.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_directory_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_dsl.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_early_time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_extension.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_creation_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_list.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_utils.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_ftp_file.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_functional.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_invocation_chain.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_late_time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_linked_list.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_makefile_loader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_multi_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_name_space.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_package_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_path_map.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_path_map_explode.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_path_map_partial.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_pseudo_status.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_reduce_compat.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_require.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_rules.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_scope.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_arguments.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_lib.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_manager.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_test_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_thread_pool.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_top_level_functions.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_win32.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_thread_history_display.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_trace_output.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/specifications/rake-10.4.2.gemspec delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.2.0/specifications/rake-10.5.0.gemspec delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/cache/rake-10.5.0.gem delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/.autotest delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/.rubocop.yml delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/.togglerc delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/History.rdoc delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/MIT-LICENSE delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/Manifest.txt delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/Rakefile delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/alt_system.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/application.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/backtrace.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/.document delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/publisher.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/sys.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/default_loader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/dsl_definition.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/early_time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/core.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/module.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/pathname.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_utils_ext.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/gempackagetask.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/linked_list.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/multi_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/name_space.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/packagetask.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/pathmap.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/phony.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/private_reader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/pseudo_status.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rake_module.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rdoctask.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/runtest.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/scope.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task_argument_error.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task_manager.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/tasklib.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/thread_history_display.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/thread_pool.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/trace_output.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/version.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/rakelib/publish.rake delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/rakelib/test_times.rake delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/file_creation.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/helper.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/support/rakefile_definitions.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/support/ruby_runner.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_private_reader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_application.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_application_options.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_backtrace.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_clean.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_cpu_counter.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_definitions.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_directory_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_dsl.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_early_time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_extension.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_creation_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_list.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_utils.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_ftp_file.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_functional.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_invocation_chain.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_late_time.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_linked_list.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_makefile_loader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_multi_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_name_space.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_package_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_path_map.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_path_map_explode.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_path_map_partial.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_pseudo_status.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_reduce_compat.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_require.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_rules.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_scope.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_arguments.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_lib.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_manager.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_test_task.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_thread_pool.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_top_level_functions.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_win32.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_thread_history_display.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_trace_output.rb delete mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.3.0/specifications/rake-10.5.0.gemspec rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0 => 2.5.0}/bin/rake (81%) create mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.5.0/cache/rake-12.3.3.gem rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/CONTRIBUTING.rdoc (68%) create mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/Gemfile create mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/History.rdoc rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/MIT-LICENSE (100%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/README.rdoc (73%) create mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/Rakefile create mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/azure-pipelines.yml create mode 100755 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/bundle create mode 100755 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/console create mode 100755 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rake create mode 100755 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rdoc create mode 100755 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rubocop create mode 100755 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/setup rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0/bin => 2.5.0/gems/rake-12.3.3/exe}/rake (93%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake.rb (54%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/application.rb (81%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/backtrace.rb (85%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/clean.rb (90%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/cloneable.rb (93%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/cpu_counter.rb (71%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/lib/rake/default_loader.rb (88%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/dsl_definition.rb (94%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/early_time.rb (91%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/lib/rake/ext/core.rb (95%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/ext/string.rb (88%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/file_creation_task.rb (84%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/file_list.rb (89%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/lib/rake/file_task.rb (70%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/file_utils.rb (77%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/file_utils_ext.rb (95%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/invocation_chain.rb (97%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/lib/rake/invocation_exception_mixin.rb (93%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/late_time.rb (83%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/lib/rake/linked_list.rb (71%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/loaders/makefile.rb (86%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/lib/rake/multi_task.rb (91%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/lib/rake/name_space.rb (95%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/lib/rake/packagetask.rb (84%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/lib/rake/phony.rb (88%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/private_reader.rb (92%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/promise.rb (75%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/pseudo_status.rb (92%) create mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_module.rb create mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/lib/rake/rule_recursion_overflow_error.rb (76%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/lib/rake/scope.rb (88%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/task.rb (81%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/task_argument_error.rb (79%) rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/task_arguments.rb (84%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.4.2 => 2.5.0/gems/rake-12.3.3}/lib/rake/task_manager.rb (83%) create mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/tasklib.rb rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/testtask.rb (79%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/thread_history_display.rb (89%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/thread_pool.rb (85%) rename spec/sample_bundler/vendor/bundle/jruby/{2.2.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/trace_output.rb (87%) create mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/version.rb rename spec/sample_bundler/vendor/bundle/jruby/{2.3.0/gems/rake-10.5.0 => 2.5.0/gems/rake-12.3.3}/lib/rake/win32.rb (67%) create mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/rake.gemspec create mode 100644 spec/sample_bundler/vendor/bundle/jruby/2.5.0/specifications/rake-12.3.3.gemspec create mode 100644 spec/sample_war/webserver.properties diff --git a/spec/sample_bundler/.bundle/config b/spec/sample_bundler/.bundle/config index b3fe9032..b50fd3d5 100644 --- a/spec/sample_bundler/.bundle/config +++ b/spec/sample_bundler/.bundle/config @@ -1,4 +1,4 @@ --- -BUNDLE_FROZEN: '1' -BUNDLE_PATH: vendor/bundle -BUNDLE_DISABLE_SHARED_GEMS: '1' +BUNDLE_FROZEN: "true" +BUNDLE_PATH: "vendor/bundle" +BUNDLE_DISABLE_SHARED_GEMS: "1" diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/bin/rake b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/bin/rake deleted file mode 100755 index a08cade8..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/bin/rake +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env jruby -# -# This file was generated by RubyGems. -# -# The application 'rake' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require 'rubygems' - -version = ">= 0" - -if ARGV.first - str = ARGV.first - str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding - if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then - version = $1 - ARGV.shift - end -end - -gem 'rake', version -load Gem.bin_path('rake', 'rake', version) diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/cache/rake-10.4.2.gem b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/cache/rake-10.4.2.gem deleted file mode 100644 index 0bea3c015a9245240eada0dfa03a6153fb87fb7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130560 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%0Al!==_zXZ61EhPzXi^K(q06*ijm}ZSY(OQ=X>djm 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

$C#l~q2 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 diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/cache/rake-10.5.0.gem b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/cache/rake-10.5.0.gem deleted file mode 100644 index 0fe2757cbc0fc5ce6005112d8d50340fe35dbeed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130560 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

BN|{Wziy8)0qQ&jEtQv`AZi>MlWu}Yz#nqP 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 M{@Vlp*FEq*02o?;L;wH) diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.autotest b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.autotest deleted file mode 100644 index 0988b12a..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.autotest +++ /dev/null @@ -1,7 +0,0 @@ -require 'autotest/restart' - -Autotest.add_hook :initialize do |at| - at.testlib = '' - at.add_exception '.git' -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.gemtest b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.gemtest deleted file mode 100644 index e69de29b..00000000 diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.rubocop.yml b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.rubocop.yml deleted file mode 100644 index 6d2bfcdb..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.rubocop.yml +++ /dev/null @@ -1,27 +0,0 @@ -StringLiterals: - Enabled: false - -MultilineBlocks: - Enabled: false - -SingleLineBlocks: - Enabled: false - -NewLambdaLiteral: - Enabled: false - -SpaceAroundEqualsInParameterDefault: - Enabled: false - -HashSyntax: - Enabled: false - -LineLength: - Enabled: true - Max: 90 - -WhileUntilModifier: - Enabled: false - -IfUnlessModifier: - Enabled: false diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.togglerc b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.togglerc deleted file mode 100644 index c8c5a0a9..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/.togglerc +++ /dev/null @@ -1,7 +0,0 @@ -(add-to-list - 'toggle-mapping-styles - '(rake . ( - ("test/test_rake_\\1.rb" . "lib/rake/\\1.rb") - ) )) - -(buffer-toggle-style 'rake) diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/CONTRIBUTING.rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/CONTRIBUTING.rdoc deleted file mode 100644 index 243cfe84..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/CONTRIBUTING.rdoc +++ /dev/null @@ -1,34 +0,0 @@ -= Source Repository - -Rake is currently hosted at github. The github web page is -http://github.com/ruby/rake . The public git clone URL is - - git://github.com/ruby/rake.git - -= Running the Rake Test Suite - -If you wish to run the unit and functional tests that come with Rake: - -* CD into the top project directory of rake. -* Type one of the following: - - rake newb # If you have never run rake's tests - rake # If you have run rake's tests - -= Issues and Bug Reports - -Feel free to submit commits or feature requests. If you send a patch, -remember to update the corresponding unit tests. In fact, I prefer -new feature to be submitted in the form of new unit tests. - -For other information, feel free to ask on the ruby-talk mailing list. - -If you have found a bug in rake please try with the latest version of rake -before filing an issue. Also check History.rdoc for bug fixes that may have -addressed your issue. - -When submitting pull requests please check the rake Travis-CI page for test -failures: - - https://travis-ci.org/ruby/rake - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/History.rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/History.rdoc deleted file mode 100644 index e50d2370..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/History.rdoc +++ /dev/null @@ -1,651 +0,0 @@ -=== 10.4.2 / 2014-12-02 - -Bug fixes: - -* Rake no longer edits ARGV. This allows you to re-exec rake from a rake - task. Pull requset #9 by Matt Palmer. -* Documented how Rake::DSL#desc handles sentences in task descriptions. - Issue #7 by Raza Sayed. -* Fixed test error on 1.9.3 with legacy RubyGems. Issue #8 by Matt Palmer. -* Deleted duplicated History entry. Pull request #10 by Yuji Yamamoto. - -=== 10.4.1 / 2014-12-01 - -Bug fixes: - -* Reverted fix for #277 as it caused numerous issues for rake users. - rails/spring issue #366 by Gustavo Dutra. - -=== 10.4.0 / 2014-11-22 - -Enhancements: - -* Upgraded to minitest 5. Pull request #292 by Teo Ljungberg. -* Added support for Pathname in rake tasks. Pull request #271 by Randy - Coulman. -* Rake now ignores falsy dependencies which allows for easier programmatic - creation of tasks. Pull request #273 by Manav. -* Rake no longer edits ARGV. This allows you to re-exec rake from a rake - task. Issue #277 by Matt Palmer. -* Etc.nprocessors is used for counting the number of CPUs. - -Bug fixes: - -* Updated rake manpage. Issue #283 by Nathan Long, pull request #291 by - skittleys. -* Add Rake::LATE to allow rebuilding of files that depend on deleted files. - Bug #286, pull request #287 by David Grayson. -* Fix relinking of files when repackaging. Bug #276 by Muenze. -* Fixed some typos. Pull request #280 by Jed Northridge. -* Try counting CPUs via cpuinfo if host_os was not matched. Pull request - #282 by Edouard B. - -=== 10.3.2 / 2014-05-15 - -Bug fixes: - -* Rake no longer infinitely loops when showing exception causes that refer to - each other. Bug #272 by Chris Bandy. -* Fixed documentation typos. Bug #275 by Jake Worth. - -=== 10.3.1 / 2014-04-17 - -Bug fixes: - -* Really stop reporting an error when cleaning already-deleted files. Pull - request #269 by Randy Coulman -* Fixed infinite loop when cleaning already-deleted files on windows. - -=== 10.3 / 2014-04-15 - -Enhancements: - -* Added --build-all option to rake which treats all file prerequisites as - out-of-date. Pull request #254 by Andrew Gilbert. -* Added Rake::NameSpace#scope. Issue #263 by Jon San Miguel. - -Bug fixes: - -* Suppress org.jruby package files in rake error messages for JRuby users. - Issue #213 by Charles Nutter. -* Fixed typo, removed extra "h". Pull request #267 by Hsing-Hui Hsu. -* Rake no longer reports an error when cleaning already-deleted files. Pull - request #266 by Randy Coulman. -* Consume stderr while determining CPU count to avoid hang. Issue #268 by - Albert Sun. - -=== 10.2.2 / 2014-03-27 - -Bug fixes: - -* Restored Ruby 1.8.7 compatibility - -=== 10.2.1 / 2014-03-25 - -Bug fixes: - -* File tasks including a ':' are now top-level tasks again. Issue #262 by - Josh Holtrop. -* Use sysctl for CPU count for all BSDs. Pull request #261 by Joshua Stein. -* Fixed CPU detection for unknown platforms. - -=== 10.2.0 / 2014-03-24 - -Enhancements: - -* Rake now requires Ruby 1.9 or newer. For me, this is a breaking change, but - it seems that Jim planned to release it with Rake 10.2. See also pull - request #247 by Philip Arndt. -* Rake now allows you to declare tasks under a namespace like: - - task 'a:b' do ... end - - Pull request #232 by Judson Lester. -* Task#source defaults to the first prerequisite in non-rule tasks. Pull - request #215 by Avdi Grimm. -* Rake now automatically rebuilds and reloads imported files. Pull request - #209 by Randy Coulman. -* The rake task arguments can contain escaped commas. Pull request #214 by - Filip Hrbek. -* Rake now prints the exception class on errors. Patch #251 by David Cornu. - -Bug fixes: - -* Fixed typos. Pull request #256 by Valera Rozuvan, #250 via Jake Worth, #260 - by Zachary Scott. -* Fixed documentation for calling tasks with arguments. Pull request #235 by - John Varghese. -* Clarified `rake -f` usage message. Pull request #252 by Marco Pfatschbacher. -* Fixed a test failure on windows. Pull request #231 by Hiroshi Shirosaki. -* Fixed corrupted rake.1.gz. Pull request #225 by Michel Boaventura. -* Fixed bug in can_detect_signals? in test. Patch from #243 by Alexey - Borzenkov. - -=== 10.1.1 and earlier - -Additions to the old CHANGES file were not made consistently so some -versions are missing from this file. These changes are usually described in -the individual release notes files. - -=== 0.9.3 - -* The rake test loader now removes arguments it has processed. Issue #51 -* Rake::TaskArguments now responds to #values_at -* RakeFileUtils.verbose_flag = nil silences output the same as 0.8.7 -* Rake tests are now directory-independent -* Rake tests are no longer require flexmock -* Commands constant is no longer polluting top level namespace. -* Show only the interesting portion of the backtrace by default (James M. Lawrence). -* Added --reduce-compat optiont to remove backward compatible DSL hacks (James M. Lawrence). -* lib/rake/file_list.rb (Rake::FileList#egrep): there is no need to - open files in binary mode. (NAKAMURA Usaku) - -=== 0.9.2 - -* Unknown - -=== 0.9.1 - -* Added deprecation warnings to the Rake DSL methods. - -=== 0.9.0 - -* *Incompatible* *change*: Rake DSL commands ('task', 'file', etc.) are - no longer private methods in Object. If you need to call 'task :xzy' inside - your class, include Rake::DSL into the class. The DSL is still available at - the top level scope (via the top level object which extends Rake::DSL). - -* Rake now warns when the deprecated :needs syntax used. - -* Rake history is now UTF-8 encoded. - -* Rake now uses case-insensitive comparisons to find the Rakefile on Windows. - Based on patch by Roger Pack. - -* Rake now requires (instead of loads) files in the test task. Patch by Cezary - Baginski. - -* Fixed typos. Patches by Sean Scot August Moon and R.T. Lechow. - -* Rake now prints the Rakefile directory only when it's different from the - current directory. Patch by Alex Chaffee. - -* Improved rakefile_location discovery on Windows. Patch by James Tucker. - -* Rake now recognizes "Windows Server" as a windows system. Patch by Matthias - Lüdtke - -* Rake::RDocTask is deprecated. Use RDoc::Task from RDoc 2.4.2+ (require - 'rdoc/task') - -* Rake::GemPackageTask is deprecated. Use Gem::PackageTask (require - 'rubygems/package_task') - -* Rake now outputs various messages to $stderr instead of $stdout. - -* Rake no longer emits warnings for Config. Patch by Santiago Pastorino. - -* Split rake.rb into individual files. - -* Support for the --where (-W) flag for showing where a task is defined. - -* Fixed quoting in test task. - (http://onestepback.org/redmine/issues/show/44, - http://www.pivotaltracker.com/story/show/1223138) - -* Fixed the silent option parsing problem. - (http://onestepback.org/redmine/issues/show/47) - -* Fixed :verbose=>false flag on sh and ruby commands. - -* Rake command line options may be given by default in a RAKEOPT - environment variable. - -* Errors in Rake will now display the task invocation chain in effect - at the time of the error. - -* Accepted change by warnickr to not expand test patterns in shell - (allowing more files in the test suite). - -* Fixed that file tasks did not perform prereq lookups in scope - (Redmine #57). - -=== 0.8.7 - -* Fixed EXEEXT for JRuby on windows. - -=== 0.8.6 - -* Minor fixes to the RDoc generation (removed dependency on darkfish - and removed inline source option). - -* Now allow # comments to comment a task definition. - -=== 0.8.5 - -* Better support for the system command on Windows. - -=== 0.8.4 - -* Preserve case when locating rakefiles (patch from James - M. Lawrence/quix) - -* Better support for windows paths in the test task (patch from Simon - Chiang/bahuvrihi) - -* Windows system dir search order is now: HOME, HOMEDRIVE + HOMEPATH, - APPDATA, USERPROFILE (patch from Luis Lavena) - -* MingGW is now recognized as a windows platform. (patch from Luis - Lavena) - -* Numerous fixes to the windows test suite (patch from Luis Lavena). - -* Improved Rakefile case insensitivity testing (patch from Luis - Lavena). - -* Fixed stray ARGV option problem that was interfering with - Test::Unit::Runner. - -* Fixed default verbose mode (was accidently changed to false). - -* Removed reference to manage_gem to fix the warning produced by the - gem package task. - -=== 0.8.3 - -* Enhanced the system directory detection in windows. We now check - HOMEDRIVE/HOMEPATH and USERPROFILE if APPDATA isn't found. (Patch - supplied by James Tucker). Rake no long aborts if it can't find the - directory. - -* Added fix to handle ruby installations in directories with spaces in - their name. - -=== 0.8.2 - -* Fixed bug in package task so that it will include the subdir - directory in the package for testing. (Bug found by Adam Majer) - -* Added ENV var to rakefile to prevent OS X from including extended - attribute junk in a tar file. (Bug found by Adam Majer) - -* Fixed filename dependency order bug in test_inspect_pending and - test_to_s_pending. (Bug found by Adam Majer) - -* Fixed check for file utils options to make them immune to the - symbol/string differences. (Patch supplied by Edwin Pratomo) - -* Fixed bug with rules involving multiple source (Patch supplied by - Emanuel Indermühle) - -* Switched from getoptlong to optparse (patches supplied by Edwin - Pratomo) - -* The -T option will now attempt to dynamically sense the size of the - terminal. RAKE_COLUMNS will override any dynamic sensing. - -* FileList#clone and FileList#dup have better sematics w.r.t. taint - and freeze. - -* Added ability clear prerequisites, and/or actions from an existing - task. - -* Added the ability to reenable a task to be invoked a second time. - -* Changed RDoc test task to have no default template. This makes it - easier for the tempate to pick up the template from the environment. - -* Changed from using Mutex to Monitor. Evidently Mutex causes thread - join errors when Ruby is compiled with -disable-pthreads. (Patch - supplied by Ittay Dror) - -* Fixed bug in makefile parser that had problems with extra spaces in - file task names. (Patch supplied by Ittay Dror) - -* Added a performance patch for reading large makefile dependency - files. (Patch supplied by Ittay Dror) - -* Default values for task arguments can easily be specified with the - :with_defaults method. (Idea for default argument merging supplied - by (Adam Q. Salter) - -* The -T output will only self-truncate if the output is a tty. - However, if RAKE_COLUMNS is explicitly set, it will be honored in - any case. (Patch provided by Gavin Stark). - -* Numerous fixes for running under windows. A big thanks to Bheeshmar - Redheendran for spending a good part of the afternoon at the - Lonestar Ruby Conference to help me work out these issues. - -=== 0.8.1 - -* Removed requires on parsedate.rb (in Ftptools) -* Removed ftools from rake.rb. Made it options in sys.rb - -=== 0.8.0 - -* Added task parameters (e.g. "rake build[version7]") -* Made task parameters passable to prerequisites. -* Comments are limited to 80 columns or so (suggested by Jamis Buck). -* Added -D to display full comments (suggested by Jamis Buck). -* The rake program will set the status value used in any explicit - exit(n) calls. (patch provided by Stephen Touset) -* Fixed error in functional tests that were not including session (and - silently skipping the functionl tests. -* Removed --usage and make -h the same as -H. -* Make a prettier inspect for tasks. - -=== 0.7.3 - -* Added existing and existing! methods to FileList -* FileLists now claim to be Arrays (via is_a?) to get better support - from the FileUtil module. -* Added init and top_level for custom rake applications. - -=== 0.7.2 - -* Error messages are now send to stderr rather than stdout (from - Payton Quackenbush). -* Better error handling on invalid command line arguments (from Payton - Quackenbush). -* Added rcov task and updated unit testing for better code coverage. -* Fixed some bugs where the application object was going to the global - appliation instead of using its own data. -* Added square and curly bracket patterns to FileList#include (Tilman - Sauerbeck). -* Added plain filename support to rule dependents (suggested by Nobu - Nakada). -* Added pathmap support to rule dependents. -* Added a 'tasks' method to a namespace to get a list of tasks - associated with the namespace. -* Fixed the method name leak from FileUtils (bug found by Glenn - Vanderburg). -* Added rake_extension to handle detection of extension collisions. -* Added test for noop, bad_option and verbose flags to sh command. -* Removed dependency on internal fu_xxx functions from FileUtils. -* Added a 'shame' task to the Rakefile. -* Added tar_command and zip_command options to the Package task. -* Added a description to the gem task in GemPackageTask. -* Fixed a bug when rules have multiple prerequisites (patch by Joel - VanderWerf) -* Added a protected 'require "rubygems"' to test/test_application to - unbreak cruisecontrol.rb. -* Added the handful of RakeFileUtils to the private method as well. -* Added block based exclusion. -* The clean task will no longer delete 'core' if it is a directory. -* Removed rake_dup. Now we just simply rescue a bad dup. -* Refactored the FileList reject logic to remove duplication. -* Removed if __FILE__ at the end of the rake.rb file. - -=== 0.7.1 - -* Added optional filter parameter to the --tasks command line option. -* Added flatten to allow rule transform procs to return lists of - prereqs (Joel VanderWerf provided patch). -* Added pathmap to String and FileList. -* The -r option will now load .rake files (but a straight require - doesn't yet). NOTE: This is experimental ... it may be - discontinued. -* The -f option without a value will disable the search for a - Rakefile. The assumption is that the -r files are adequate. -* Fixed the safe_ln function to fall back to cp in more error - scenarios. - -=== 0.7.0 - -* Added Rake.original_dir to return the original starting directory of - the rake application. -* Added safe_ln support for openAFS (from Ludvig Omholt). -* Added --trace reminder on short exception messages (David Heinemeier - Hansson suggestion). -* Added multitask declaration that executes prerequisites in - parallel. (Doug Young providied an initial implementation). -* Fixed missing_const hack to be compatible with Rails. (Jamis Buck - supplied test case). -* Made the RDoc task default to internal (in-process) RDoc formatting. - The old behavior is still available by setting the +external+ flag - to true. -* Rakefiles are now loaded with the expanded path to prevent - accidental polution from the Ruby load path. -* The +namespace+ command now returns a NameSpace object that can be - used to lookup tasks defined in that namespace. This allows for - better anonymous namespace behavior. -* Task objects my now be used in prerequisite lists directly. - -=== 0.6.1 - -* Rebuilt 0.6.0 gem without signing. - -=== 0.6.0 - -* Fixed file creation bug in the unit tests (caused infinite loop on - windows). -* Fixed bug where session based functional tests were run under - windows. -* Fixed bug in directory tasks so that updating a directory will not - retrigger file tasks depending on the directory (see - FileCreationTask and EarlyTime). -* Added egrep to FileList -* ruby command now runs same ruby version as rake. -* Added investigation to task object. (suggested by Martin Fowler) -* Added ruby_opts to the test task to allow arbitrary ruby options to - be passed to the test script. (Greg Fast) -* Fixed the test loader to ignore options. (Greg Fast) -* Moved Task, FileTask, FileCreationTask and RakeApp into the Rake - module namespace. Old style namespace behavior can be invoked via - the --classic-namespace option. (requested by Kelly Felkins). -* GemTask is now sensitive to the gem platform (Masao Mutoh). -* A non-existing file prerequisite will no longer cause an exception - (Philipp Neubeck). -* Multiple prerequisites on Rake rules now allowed (initial patch - supplied by Stuart Jansen). - -=== 0.5.4 - -* Added double quotes to the test runner. -* Added .svn to default ignore list. -* Updated FileList#include to support nested arrays and filelists. - -=== 0.5.3 - -* Added support for importing Rakefile and other dependencies. -* Fixed bug so that now rules can chain off of existing tasks as well - as existing files. -* Fixed verbose flag bug in the testing task. Shortened some failure - messages. -* Make FileUtils methods private at the top level module to avoid - accidental method leaking into other objects. -* Added test loader option to test task. "testrb" is no longer the - default test loader. It is now eating syntax errors that should - halt the unit tests. -* Revamped FileList so that it works more like and array (addressed - flatten bug). Added many tests around file list. -* Added +ext+ method to both String and FileList. - -=== 0.5.0 - -* Fixed documentation that was lacking the Rake module name (Tilman - Sauerbeck). -* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck). -* Recursive rules are now supported (Tilman Sauerbeck). -* Added warning option for the Test Task (requested by Eric Hodel). -* The jamis rdoc template is only used if it exists. -* Added fix for Ruby 1.8.2 test/unit and rails problem. -* Added contributed rake man file (Jani Monoses). -* Added Brian Candler's fix for problems in --trace and --dry-run - mode. - -=== 0.4.15 - -* Fixed a bug that prevented the TESTOPTS flag from working with the - revised for 1.8.2 test task. -* Updated the docs on --trace to indicate that it also enables a full - backtrace on errors. - -=== 0.4.14 - -* Modified the TestTask to workaround the Ruby 1.8.2 change in - autoexecuting unit tests. - -=== 0.4.13 - -* Fixed the dry-run flag so it is operating again. -* Multiple arguments to sh and ruby commands will not be interpreted - by the shell (patch provided by Jonathan Paisley). - -=== 0.4.12 - -* Added --silent (-s) to suppress the (in directory) rake message. - -=== 0.4.11 - -* Changed the "don't know how to rake" message (finally) -* Changes references to a literal "Rakefile" to reference the global - variable $rakefile (which contains the actual name of the rakefile). - -=== 0.4.10 - -* Added block support to the "sh" command, allowing users to take - special actions on the result of the system call. E.g. - - sh "shell_command" do |ok, res| - puts "Program returned #{res.exitstatus}" if ! ok - end - -=== 0.4.9 - -* Switched to Jamis Buck's RDoc template. -* Removed autorequire from Rake's gem spec. This prevents the Rake - libraries from loading while using rails. - -=== 0.4.8 - -* Added support for .rb versions of Rakefile. -* Removed \\\n's from test task. -* Fixed Ruby 1.9 compatibility issue with FileList. - -=== 0.4.7 - -* Fixed problem in FileList that caused Ruby 1.9 to go into infinite - recursion. Since to_a was removed from Object, it does not need to - added back into the list of methods to rewrite in FileList. (Thanks - to Kent Sibilev for pointing this out). - -=== 0.4.6 -* Removed test version of ln in FileUtils that prevented safe_ln from - using ln. - -=== 0.4.5 -* Upgraded comments in TestTask. -* FileList to_s and inspect now automatically resolve pending changes. -* FileList#exclude properly returns the FileList. - -=== 0.4.4 -* Fixed initialization problem with @comment. -* Now using multi -r technique in TestTask. Switch Rakefile back to - using the built-in test task macros because the rake runtime is no - longer needed. -* Added 'TEST=filename' and 'TESTOPTS=options' to the Test Task - macros. -* Allow a +test_files+ attribute in test tasks. This allows more - flexibility in specifying test files. - -=== 0.4.3 -* Fixed Comment leakage. - -=== 0.4.2 -* Added safe_ln that falls back to a copy if a file link is not supported. -* Package builder now uses safe_ln. - -=== 0.4.1 -* Task comments are now additive, combined with "/". -* Works with (soon to be released) rubygems 0.6.2 (or 0.7.0) - -=== 0.4.0 -* FileList now uses deferred loading. The file system is not searched - until the first call that needs the file names. -* VAR=VALUE options are now accepted on the command line and are - treated like environment variables. The values may be tested in a - Rakefile by referencing ENV['VAR']. -* File.mtime is now used (instead of File.new().mtime). - -=== 0.3.2.x - -* Removed some hidden dependencies on rubygems. Tests now will test - gems only if they are installed. -* Removed Sys from some example files. I believe that is that last - reference to Sys outside of the contrib area. -* Updated all copyright notices to include 2004. - -=== 0.3.2 - -* GEM Installation now works with the application stub. - -=== 0.3.1 - -* FileLists now automatically ignore CVS, .bak, ! -* GEM Installation now works. - -=== 0.3.0 - -Promoted 0.2.10. - -=== 0.2.10 -General - -* Added title to Rake's rdocs -* Contrib packages are no longer included in the documentation. - -RDoc Issues - -* Removed default for the '--main' option -* Fixed rendering of the rdoc options -* Fixed clean/clobber confusion with rerdoc -* 'title' attribute added - -Package Task Library Issues - -* Version (or explicit :noversion) is required. -* +package_file+ attribute is now writable - -FileList Issues - -* Dropped bang version of exclude. Now using ant-like include/exclude semantics. -* Enabled the "yield self" idiom in FileList#initialize. - -=== 0.2.9 - -This version contains numerous changes as the RubyConf.new(2003) -presentation was being prepared. The changes include: - -* The monolithic rubyapp task library is in the process of being - dropped in favor of lighter weight task libraries. - -=== 0.2.7 - -* Added "desc" for task descriptions. -* -T will now display tasks with descriptions. -* -P will display tasks and prerequisites. -* Dropped the Sys module in favor of the 1.8.x FileUtils module. Sys - is still supported in the contrib area. - -=== 0.2.6 - -* Moved to RubyForge - -=== 0.2.5 - -* Switched to standard ruby app builder. -* Added no_match option to file matcher. - -=== 0.2.4 - -* Fixed indir, which neglected to actually change directories. - -=== 0.2.3 - -* Added rake module for a help target -* Added 'for_files' to Sys -* Added a $rakefile constant -* Added test for selecting proper rule with multiple targets. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/Manifest.txt b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/Manifest.txt deleted file mode 100644 index a7829c97..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/Manifest.txt +++ /dev/null @@ -1,166 +0,0 @@ -.autotest -.rubocop.yml -.togglerc -CONTRIBUTING.rdoc -History.rdoc -MIT-LICENSE -Manifest.txt -README.rdoc -Rakefile -bin/rake -doc/command_line_usage.rdoc -doc/example/Rakefile1 -doc/example/Rakefile2 -doc/example/a.c -doc/example/b.c -doc/example/main.c -doc/glossary.rdoc -doc/jamis.rb -doc/proto_rake.rdoc -doc/rake.1 -doc/rakefile.rdoc -doc/rational.rdoc -doc/release_notes/rake-0.4.14.rdoc -doc/release_notes/rake-0.4.15.rdoc -doc/release_notes/rake-0.5.0.rdoc -doc/release_notes/rake-0.5.3.rdoc -doc/release_notes/rake-0.5.4.rdoc -doc/release_notes/rake-0.6.0.rdoc -doc/release_notes/rake-0.7.0.rdoc -doc/release_notes/rake-0.7.1.rdoc -doc/release_notes/rake-0.7.2.rdoc -doc/release_notes/rake-0.7.3.rdoc -doc/release_notes/rake-0.8.0.rdoc -doc/release_notes/rake-0.8.2.rdoc -doc/release_notes/rake-0.8.3.rdoc -doc/release_notes/rake-0.8.4.rdoc -doc/release_notes/rake-0.8.5.rdoc -doc/release_notes/rake-0.8.6.rdoc -doc/release_notes/rake-0.8.7.rdoc -doc/release_notes/rake-0.9.0.rdoc -doc/release_notes/rake-0.9.1.rdoc -doc/release_notes/rake-0.9.2.2.rdoc -doc/release_notes/rake-0.9.2.rdoc -doc/release_notes/rake-0.9.3.rdoc -doc/release_notes/rake-0.9.4.rdoc -doc/release_notes/rake-0.9.5.rdoc -doc/release_notes/rake-0.9.6.rdoc -doc/release_notes/rake-10.0.0.rdoc -doc/release_notes/rake-10.0.1.rdoc -doc/release_notes/rake-10.0.2.rdoc -doc/release_notes/rake-10.0.3.rdoc -doc/release_notes/rake-10.1.0.rdoc -lib/rake.rb -lib/rake/alt_system.rb -lib/rake/application.rb -lib/rake/backtrace.rb -lib/rake/clean.rb -lib/rake/cloneable.rb -lib/rake/contrib/.document -lib/rake/contrib/compositepublisher.rb -lib/rake/contrib/ftptools.rb -lib/rake/contrib/publisher.rb -lib/rake/contrib/rubyforgepublisher.rb -lib/rake/contrib/sshpublisher.rb -lib/rake/contrib/sys.rb -lib/rake/cpu_counter.rb -lib/rake/default_loader.rb -lib/rake/dsl_definition.rb -lib/rake/early_time.rb -lib/rake/ext/core.rb -lib/rake/ext/module.rb -lib/rake/ext/pathname.rb -lib/rake/ext/string.rb -lib/rake/ext/time.rb -lib/rake/file_creation_task.rb -lib/rake/file_list.rb -lib/rake/file_task.rb -lib/rake/file_utils.rb -lib/rake/file_utils_ext.rb -lib/rake/gempackagetask.rb -lib/rake/invocation_chain.rb -lib/rake/invocation_exception_mixin.rb -lib/rake/late_time.rb -lib/rake/linked_list.rb -lib/rake/loaders/makefile.rb -lib/rake/multi_task.rb -lib/rake/name_space.rb -lib/rake/packagetask.rb -lib/rake/pathmap.rb -lib/rake/phony.rb -lib/rake/private_reader.rb -lib/rake/promise.rb -lib/rake/pseudo_status.rb -lib/rake/rake_module.rb -lib/rake/rake_test_loader.rb -lib/rake/rdoctask.rb -lib/rake/ruby182_test_unit_fix.rb -lib/rake/rule_recursion_overflow_error.rb -lib/rake/runtest.rb -lib/rake/scope.rb -lib/rake/task.rb -lib/rake/task_argument_error.rb -lib/rake/task_arguments.rb -lib/rake/task_manager.rb -lib/rake/tasklib.rb -lib/rake/testtask.rb -lib/rake/thread_history_display.rb -lib/rake/thread_pool.rb -lib/rake/trace_output.rb -lib/rake/version.rb -lib/rake/win32.rb -rakelib/publish.rake -rakelib/test_times.rake -test/file_creation.rb -test/helper.rb -test/support/rakefile_definitions.rb -test/support/ruby_runner.rb -test/test_private_reader.rb -test/test_rake.rb -test/test_rake_application.rb -test/test_rake_application_options.rb -test/test_rake_backtrace.rb -test/test_rake_clean.rb -test/test_rake_cpu_counter.rb -test/test_rake_definitions.rb -test/test_rake_directory_task.rb -test/test_rake_dsl.rb -test/test_rake_early_time.rb -test/test_rake_extension.rb -test/test_rake_file_creation_task.rb -test/test_rake_file_list.rb -test/test_rake_file_list_path_map.rb -test/test_rake_file_task.rb -test/test_rake_file_utils.rb -test/test_rake_ftp_file.rb -test/test_rake_functional.rb -test/test_rake_invocation_chain.rb -test/test_rake_late_time.rb -test/test_rake_linked_list.rb -test/test_rake_makefile_loader.rb -test/test_rake_multi_task.rb -test/test_rake_name_space.rb -test/test_rake_package_task.rb -test/test_rake_path_map.rb -test/test_rake_path_map_explode.rb -test/test_rake_path_map_partial.rb -test/test_rake_pathname_extensions.rb -test/test_rake_pseudo_status.rb -test/test_rake_rake_test_loader.rb -test/test_rake_reduce_compat.rb -test/test_rake_require.rb -test/test_rake_rules.rb -test/test_rake_scope.rb -test/test_rake_task.rb -test/test_rake_task_argument_parsing.rb -test/test_rake_task_arguments.rb -test/test_rake_task_lib.rb -test/test_rake_task_manager.rb -test/test_rake_task_manager_argument_resolution.rb -test/test_rake_task_with_arguments.rb -test/test_rake_test_task.rb -test/test_rake_thread_pool.rb -test/test_rake_top_level_functions.rb -test/test_rake_win32.rb -test/test_thread_history_display.rb -test/test_trace_output.rb diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/README.rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/README.rdoc deleted file mode 100644 index 683e0c0e..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/README.rdoc +++ /dev/null @@ -1,140 +0,0 @@ -= RAKE -- Ruby Make - -home :: https://github.com/ruby/rake -bugs :: https://github.com/ruby/rake/issues -docs :: http://docs.seattlerb.org/rake - -== Description - -Rake is a Make-like program implemented in Ruby. Tasks and dependencies are -specified in standard Ruby syntax. - -Rake has the following features: - -* Rakefiles (rake's version of Makefiles) are completely defined in - standard Ruby syntax. No XML files to edit. No quirky Makefile - syntax to worry about (is that a tab or a space?) - -* Users can specify tasks with prerequisites. - -* Rake supports rule patterns to synthesize implicit tasks. - -* Flexible FileLists that act like arrays but know about manipulating - file names and paths. - -* A library of prepackaged tasks to make building rakefiles easier. For example, - tasks for building tarballs and publishing to FTP or SSH sites. (Formerly - tasks for building RDoc and Gems were included in rake but they're now - available in RDoc and RubyGems respectively.) - -* Supports parallel execution of tasks. - -== Installation - -=== Gem Installation - -Download and install rake with the following. - - gem install rake - -== Usage - -=== Simple Example - -First, you must write a "Rakefile" file which contains the build rules. Here's -a simple example: - - task default: %w[test] - - task :test do - ruby "test/unittest.rb" - end - -This Rakefile has two tasks: - -* A task named "test", which -- upon invocation -- will run a unit test file - in Ruby. -* A task named "default". This task does nothing by itself, but it has exactly - one dependency, namely the "test" task. Invoking the "default" task will - cause Rake to invoke the "test" task as well. - -Running the "rake" command without any options will cause it to run the -"default" task in the Rakefile: - - % ls - Rakefile test/ - % rake - (in /home/some_user/Projects/rake) - ruby test/unittest.rb - ....unit test output here... - -Type "rake --help" for all available options. - -== Resources - -=== Rake Information - -* {Rake command-line}[rdoc-ref:doc/command_line_usage.rdoc] -* {Writing Rakefiles}[rdoc-ref:doc/rakefile.rdoc] -* The original {Rake announcement}[rdoc-ref:doc/rational.rdoc] -* Rake {glossary}[rdoc-ref:doc/glossary.rdoc] - -=== Presentations and Articles about Rake - -* Avdi Grimm's rake series: - 1. {Rake Basics}[http://devblog.avdi.org/2014/04/21/rake-part-1-basics/] - 2. {Rake File Lists}[http://devblog.avdi.org/2014/04/22/rake-part-2-file-lists/] - 3. {Rake Rules}[http://devblog.avdi.org/2014/04/23/rake-part-3-rules/] - 4. {Rake Pathmap}[http://devblog.avdi.org/2014/04/24/rake-part-4-pathmap/] - 5. {File Operations}[http://devblog.avdi.org/2014/04/25/rake-part-5-file-operations/] - 6. {Clean and Clobber}[http://devblog.avdi.org/2014/04/28/rake-part-6-clean-and-clobber/] - 7. {MultiTask}[http://devblog.avdi.org/2014/04/29/rake-part-7-multitask/] -* Jim Weirich's 2003 RubyConf presentation: - http://onestepback.org/articles/buildingwithrake/ -* Martin Fowler's article on Rake: http://martinfowler.com/articles/rake.html - -== Other Make Re-envisionings ... - -Rake is a late entry in the make replacement field. Here are links to -other projects with similar (and not so similar) goals. - -* http://directory.fsf.org/bras.html -- Bras, one of earliest - implementations of "make in a scripting language". -* http://www.a-a-p.org -- Make in Python -* http://www.aromatic.com/tools/jam.txt -- JAM, Java Automated Make -* http://ant.apache.org -- The Ant project -* http://search.cpan.org/search?query=PerlBuildSystem -- The Perl Build System -* http://rubydoc.info/gems/rant/0.5.7/frames -- Rant, another Ruby make tool. - -== Credits - -[Ryan Dlugosz] For the initial conversation that sparked Rake. - -[nobu.nokada@softhome.net] For the initial patch for rule support. - -[Tilman Sauerbeck ] For the recursive rule patch. - -[Eric Hodel] For aid in maintaining rake. - -== License - -Rake is available under an MIT-style license. - -:include: MIT-LICENSE - ---- - -= Other stuff - -Author:: Jim Weirich -Requires:: Ruby 1.8.7 or later -License:: Copyright Jim Weirich. - Released under an MIT-style license. See the MIT-LICENSE - file included in the distribution. - -== Warranty - -This software is provided "as is" and without any express or implied -warranties, including, without limitation, the implied warranties of -merchantability and fitness for a particular purpose. - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/Rakefile b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/Rakefile deleted file mode 100644 index 375ca880..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/Rakefile +++ /dev/null @@ -1,81 +0,0 @@ -# Rakefile for rake -*- ruby -*- - -# Copyright 2003, 2004, 2005 by Jim Weirich (jim@weirichhouse.org) -# All rights reserved. - -# This file may be distributed under an MIT style license. See -# MIT-LICENSE for details. - -require 'rbconfig' - -system_rake = File.join RbConfig::CONFIG['rubylibdir'], 'rake.rb' - -# Use our rake, not the installed rake from system -if $".include? system_rake or $".grep(/rake\/name_space\.rb$/).empty? then - exec Gem.ruby, '-Ilib', 'bin/rake', *ARGV -end - -require 'hoe' - -Hoe.plugin :git -Hoe.plugin :minitest -Hoe.plugin :travis - -hoe = Hoe.spec 'rake' do - developer 'Eric Hodel', 'drbrain@segment7.net' - developer 'Jim Weirich', '' - - require_ruby_version '>= 1.8.7' - require_rubygems_version '>= 1.3.2' - - dependency 'minitest', '~> 5.0', :developer - - license "MIT" - - self.readme_file = 'README.rdoc' - self.history_file = 'History.rdoc' - - self.extra_rdoc_files.concat FileList[ - 'MIT-LICENSE', - 'doc/**/*.rdoc', - '*.rdoc', - ] - - self.local_rdoc_dir = 'html' - self.rsync_args = '-avz --delete' - rdoc_locations << 'docs.seattlerb.org:/data/www/docs.seattlerb.org/rake/' - - self.clean_globs += [ - '**/*.o', - '**/*.rbc', - '*.dot', - 'TAGS', - 'doc/example/main', - ] -end - -hoe.test_prelude = 'gem "minitest", "~> 5.0"' - -# Use custom rdoc task due to existence of doc directory - -Rake::Task['docs'].clear -Rake::Task['clobber_docs'].clear - -begin - require 'rdoc/task' - - RDoc::Task.new :rdoc => 'docs', :clobber_rdoc => 'clobber_docs' do |doc| - doc.main = hoe.readme_file - doc.title = 'Rake -- Ruby Make' - - rdoc_files = Rake::FileList.new %w[lib History.rdoc MIT-LICENSE doc] - rdoc_files.add hoe.extra_rdoc_files - - doc.rdoc_files = rdoc_files - - doc.rdoc_dir = 'html' - end -rescue LoadError - warn 'run `rake newb` to install rdoc' -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/bin/rake b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/bin/rake deleted file mode 100755 index 4e0bbb7b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/bin/rake +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env ruby - -#-- -# Copyright (c) 2003, 2004, 2005, 2006, 2007 Jim Weirich -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -#++ - -begin - require 'rubygems' - gem 'rake' -rescue LoadError -end - -require 'rake' - -Rake.application.run diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake.rb deleted file mode 100644 index 7366862a..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake.rb +++ /dev/null @@ -1,79 +0,0 @@ -#-- -# Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -#++ - -module Rake - VERSION = '10.4.2' -end - -require 'rake/version' - -# :stopdoc: -# TODO: Remove in Rake 11 -RAKEVERSION = Rake::VERSION -# :startdoc: - -require 'rbconfig' -require 'fileutils' -require 'singleton' -require 'monitor' -require 'optparse' -require 'ostruct' - -require 'rake/ext/module' -require 'rake/ext/string' -require 'rake/ext/time' - -require 'rake/win32' - -require 'rake/linked_list' -require 'rake/cpu_counter' -require 'rake/scope' -require 'rake/task_argument_error' -require 'rake/rule_recursion_overflow_error' -require 'rake/rake_module' -require 'rake/trace_output' -require 'rake/pseudo_status' -require 'rake/task_arguments' -require 'rake/invocation_chain' -require 'rake/task' -require 'rake/file_task' -require 'rake/file_creation_task' -require 'rake/multi_task' -require 'rake/dsl_definition' -require 'rake/file_utils_ext' -require 'rake/file_list' -require 'rake/default_loader' -require 'rake/early_time' -require 'rake/late_time' -require 'rake/name_space' -require 'rake/task_manager' -require 'rake/application' -require 'rake/backtrace' - -$trace = false - -# :stopdoc: -# -# Some top level Constants. - -FileList = Rake::FileList -RakeFileUtils = Rake::FileUtilsExt diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/alt_system.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/alt_system.rb deleted file mode 100644 index aa7b7791..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/alt_system.rb +++ /dev/null @@ -1,110 +0,0 @@ -# -# Copyright (c) 2008 James M. Lawrence -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation files -# (the "Software"), to deal in the Software without restriction, -# including without limitation the rights to use, copy, modify, merge, -# publish, distribute, sublicense, and/or sell copies of the Software, -# and to permit persons to whom the Software is furnished to do so, -# subject to the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# - -require 'rbconfig' - -## -# Alternate implementations of system() and backticks `` on Windows -# for ruby-1.8 and earlier. -#-- -# TODO: Remove in Rake 11 - -module Rake::AltSystem # :nodoc: all - WINDOWS = RbConfig::CONFIG["host_os"] =~ - %r!(msdos|mswin|djgpp|mingw|[Ww]indows)! - - class << self - def define_module_function(name, &block) - define_method(name, &block) - module_function(name) - end - end - - if WINDOWS && RUBY_VERSION < "1.9.0" - RUNNABLE_EXTS = %w[com exe bat cmd] - RUNNABLE_PATTERN = %r!\.(#{RUNNABLE_EXTS.join('|')})\Z!i - - define_module_function :kernel_system, &Kernel.method(:system) - define_module_function :kernel_backticks, &Kernel.method(:'`') - - module_function - - def repair_command(cmd) - "call " + ( - if cmd =~ %r!\A\s*\".*?\"! - # already quoted - cmd - elsif match = cmd.match(%r!\A\s*(\S+)!) - if match[1] =~ %r!/! - # avoid x/y.bat interpretation as x with option /y - %Q!"#{match[1]}"! + match.post_match - else - # a shell command will fail if quoted - cmd - end - else - # empty or whitespace - cmd - end - ) - end - - def find_runnable(file) - if file =~ RUNNABLE_PATTERN - file - else - RUNNABLE_EXTS.each { |ext| - test = "#{file}.#{ext}" - return test if File.exist?(test) - } - nil - end - end - - def system(cmd, *args) - repaired = ( - if args.empty? - [repair_command(cmd)] - elsif runnable = find_runnable(cmd) - [File.expand_path(runnable), *args] - else - # non-existent file - [cmd, *args] - end - ) - kernel_system(*repaired) - end - - def backticks(cmd) - kernel_backticks(repair_command(cmd)) - end - - define_module_function :'`', &method(:backticks) - else - # Non-Windows or ruby-1.9+: same as Kernel versions - define_module_function :system, &Kernel.method(:system) - define_module_function :backticks, &Kernel.method(:'`') - define_module_function :'`', &Kernel.method(:'`') - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/application.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/application.rb deleted file mode 100644 index bd72a2ef..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/application.rb +++ /dev/null @@ -1,790 +0,0 @@ -require 'shellwords' -require 'optparse' - -require 'rake/task_manager' -require 'rake/file_list' -require 'rake/thread_pool' -require 'rake/thread_history_display' -require 'rake/trace_output' -require 'rake/win32' - -module Rake - - CommandLineOptionError = Class.new(StandardError) - - ## - # Rake main application object. When invoking +rake+ from the - # command line, a Rake::Application object is created and run. - - class Application - include TaskManager - include TraceOutput - - # The name of the application (typically 'rake') - attr_reader :name - - # The original directory where rake was invoked. - attr_reader :original_dir - - # Name of the actual rakefile used. - attr_reader :rakefile - - # Number of columns on the terminal - attr_accessor :terminal_columns - - # List of the top level task names (task names from the command line). - attr_reader :top_level_tasks - - DEFAULT_RAKEFILES = [ - 'rakefile', - 'Rakefile', - 'rakefile.rb', - 'Rakefile.rb' - ].freeze - - # Initialize a Rake::Application object. - def initialize - super - @name = 'rake' - @rakefiles = DEFAULT_RAKEFILES.dup - @rakefile = nil - @pending_imports = [] - @imported = [] - @loaders = {} - @default_loader = Rake::DefaultLoader.new - @original_dir = Dir.pwd - @top_level_tasks = [] - add_loader('rb', DefaultLoader.new) - add_loader('rf', DefaultLoader.new) - add_loader('rake', DefaultLoader.new) - @tty_output = STDOUT.tty? - @terminal_columns = ENV['RAKE_COLUMNS'].to_i - end - - # Run the Rake application. The run method performs the following - # three steps: - # - # * Initialize the command line options (+init+). - # * Define the tasks (+load_rakefile+). - # * Run the top level tasks (+top_level+). - # - # If you wish to build a custom rake command, you should call - # +init+ on your application. Then define any tasks. Finally, - # call +top_level+ to run your top level tasks. - def run - standard_exception_handling do - init - load_rakefile - top_level - end - end - - # Initialize the command line parameters and app name. - def init(app_name='rake') - standard_exception_handling do - @name = app_name - args = handle_options - collect_command_line_tasks(args) - end - end - - # Find the rakefile and then load it and any pending imports. - def load_rakefile - standard_exception_handling do - raw_load_rakefile - end - end - - # Run the top level tasks of a Rake application. - def top_level - run_with_threads do - if options.show_tasks - display_tasks_and_comments - elsif options.show_prereqs - display_prerequisites - else - top_level_tasks.each { |task_name| invoke_task(task_name) } - end - end - end - - # Run the given block with the thread startup and shutdown. - def run_with_threads - thread_pool.gather_history if options.job_stats == :history - - yield - - thread_pool.join - if options.job_stats - stats = thread_pool.statistics - puts "Maximum active threads: #{stats[:max_active_threads]} + main" - puts "Total threads in play: #{stats[:total_threads_in_play]} + main" - end - ThreadHistoryDisplay.new(thread_pool.history).show if - options.job_stats == :history - end - - # Add a loader to handle imported files ending in the extension - # +ext+. - def add_loader(ext, loader) - ext = ".#{ext}" unless ext =~ /^\./ - @loaders[ext] = loader - end - - # Application options from the command line - def options - @options ||= OpenStruct.new - end - - # Return the thread pool used for multithreaded processing. - def thread_pool # :nodoc: - @thread_pool ||= ThreadPool.new(options.thread_pool_size || Rake.suggested_thread_count-1) - end - - # internal ---------------------------------------------------------------- - - # Invokes a task with arguments that are extracted from +task_string+ - def invoke_task(task_string) # :nodoc: - name, args = parse_task_string(task_string) - t = self[name] - t.invoke(*args) - end - - def parse_task_string(string) # :nodoc: - /^([^\[]+)(?:\[(.*)\])$/ =~ string.to_s - - name = $1 - remaining_args = $2 - - return string, [] unless name - return name, [] if remaining_args.empty? - - args = [] - - begin - /((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args - - remaining_args = $2 - args << $1.gsub(/\\(.)/, '\1') - end while remaining_args - - return name, args - end - - # Provide standard exception handling for the given block. - def standard_exception_handling # :nodoc: - yield - rescue SystemExit - # Exit silently with current status - raise - rescue OptionParser::InvalidOption => ex - $stderr.puts ex.message - exit(false) - rescue Exception => ex - # Exit with error message - display_error_message(ex) - exit_because_of_exception(ex) - end - - # Exit the program because of an unhandle exception. - # (may be overridden by subclasses) - def exit_because_of_exception(ex) # :nodoc: - exit(false) - end - - # Display the error message that caused the exception. - def display_error_message(ex) # :nodoc: - trace "#{name} aborted!" - display_exception_details(ex) - trace "Tasks: #{ex.chain}" if has_chain?(ex) - trace "(See full trace by running task with --trace)" unless - options.backtrace - end - - def display_exception_details(ex) # :nodoc: - seen = Thread.current[:rake_display_exception_details_seen] ||= [] - return if seen.include? ex - seen << ex - - display_exception_message_details(ex) - display_exception_backtrace(ex) - display_exception_details(ex.cause) if has_cause?(ex) - end - - def has_cause?(ex) # :nodoc: - ex.respond_to?(:cause) && ex.cause - end - - def display_exception_message_details(ex) # :nodoc: - if ex.instance_of?(RuntimeError) - trace ex.message - else - trace "#{ex.class.name}: #{ex.message}" - end - end - - def display_exception_backtrace(ex) # :nodoc: - if options.backtrace - trace ex.backtrace.join("\n") - else - trace Backtrace.collapse(ex.backtrace).join("\n") - end - end - - # Warn about deprecated usage. - # - # Example: - # Rake.application.deprecate("import", "Rake.import", caller.first) - # - def deprecate(old_usage, new_usage, call_site) # :nodoc: - unless options.ignore_deprecate - $stderr.puts "WARNING: '#{old_usage}' is deprecated. " + - "Please use '#{new_usage}' instead.\n" + - " at #{call_site}" - end - end - - # Does the exception have a task invocation chain? - def has_chain?(exception) # :nodoc: - exception.respond_to?(:chain) && exception.chain - end - private :has_chain? - - # True if one of the files in RAKEFILES is in the current directory. - # If a match is found, it is copied into @rakefile. - def have_rakefile # :nodoc: - @rakefiles.each do |fn| - if File.exist?(fn) - others = FileList.glob(fn, File::FNM_CASEFOLD) - return others.size == 1 ? others.first : fn - elsif fn == '' - return fn - end - end - return nil - end - - # True if we are outputting to TTY, false otherwise - def tty_output? # :nodoc: - @tty_output - end - - # Override the detected TTY output state (mostly for testing) - def tty_output=(tty_output_state) # :nodoc: - @tty_output = tty_output_state - end - - # We will truncate output if we are outputting to a TTY or if we've been - # given an explicit column width to honor - def truncate_output? # :nodoc: - tty_output? || @terminal_columns.nonzero? - end - - # Display the tasks and comments. - def display_tasks_and_comments # :nodoc: - displayable_tasks = tasks.select { |t| - (options.show_all_tasks || t.comment) && - t.name =~ options.show_task_pattern - } - case options.show_tasks - when :tasks - width = displayable_tasks.map { |t| t.name_with_args.length }.max || 10 - if truncate_output? - max_column = terminal_width - name.size - width - 7 - else - max_column = nil - end - - displayable_tasks.each do |t| - printf("#{name} %-#{width}s # %s\n", - t.name_with_args, - max_column ? truncate(t.comment, max_column) : t.comment) - end - when :describe - displayable_tasks.each do |t| - puts "#{name} #{t.name_with_args}" - comment = t.full_comment || "" - comment.split("\n").each do |line| - puts " #{line}" - end - puts - end - when :lines - displayable_tasks.each do |t| - t.locations.each do |loc| - printf "#{name} %-30s %s\n", t.name_with_args, loc - end - end - else - fail "Unknown show task mode: '#{options.show_tasks}'" - end - end - - def terminal_width # :nodoc: - if @terminal_columns.nonzero? - result = @terminal_columns - else - result = unix? ? dynamic_width : 80 - end - (result < 10) ? 80 : result - rescue - 80 - end - - # Calculate the dynamic width of the - def dynamic_width # :nodoc: - @dynamic_width ||= (dynamic_width_stty.nonzero? || dynamic_width_tput) - end - - def dynamic_width_stty # :nodoc: - %x{stty size 2>/dev/null}.split[1].to_i - end - - def dynamic_width_tput # :nodoc: - %x{tput cols 2>/dev/null}.to_i - end - - def unix? # :nodoc: - RbConfig::CONFIG['host_os'] =~ - /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i - end - - def windows? # :nodoc: - Win32.windows? - end - - def truncate(string, width) # :nodoc: - if string.nil? - "" - elsif string.length <= width - string - else - (string[0, width - 3] || "") + "..." - end - end - - # Display the tasks and prerequisites - def display_prerequisites # :nodoc: - tasks.each do |t| - puts "#{name} #{t.name}" - t.prerequisites.each { |pre| puts " #{pre}" } - end - end - - def trace(*strings) # :nodoc: - options.trace_output ||= $stderr - trace_on(options.trace_output, *strings) - end - - def sort_options(options) # :nodoc: - options.sort_by { |opt| - opt.select { |o| o =~ /^-/ }.map { |o| o.downcase }.sort.reverse - } - end - private :sort_options - - # A list of all the standard options used in rake, suitable for - # passing to OptionParser. - def standard_rake_options # :nodoc: - sort_options( - [ - ['--all', '-A', - "Show all tasks, even uncommented ones (in combination with -T or -D)", - lambda { |value| - options.show_all_tasks = value - } - ], - ['--backtrace=[OUT]', - "Enable full backtrace. OUT can be stderr (default) or stdout.", - lambda { |value| - options.backtrace = true - select_trace_output(options, 'backtrace', value) - } - ], - ['--build-all', '-B', - "Build all prerequisites, including those which are up-to-date.", - lambda { |value| - options.build_all = true - } - ], - ['--comments', - "Show commented tasks only", - lambda { |value| - options.show_all_tasks = !value - } - ], - ['--describe', '-D [PATTERN]', - "Describe the tasks (matching optional PATTERN), then exit.", - lambda { |value| - select_tasks_to_show(options, :describe, value) - } - ], - ['--dry-run', '-n', - "Do a dry run without executing actions.", - lambda { |value| - Rake.verbose(true) - Rake.nowrite(true) - options.dryrun = true - options.trace = true - } - ], - ['--execute', '-e CODE', - "Execute some Ruby code and exit.", - lambda { |value| - eval(value) - exit - } - ], - ['--execute-print', '-p CODE', - "Execute some Ruby code, print the result, then exit.", - lambda { |value| - puts eval(value) - exit - } - ], - ['--execute-continue', '-E CODE', - "Execute some Ruby code, " + - "then continue with normal task processing.", - lambda { |value| eval(value) } - ], - ['--jobs', '-j [NUMBER]', - "Specifies the maximum number of tasks to execute in parallel. " + - "(default is number of CPU cores + 4)", - lambda { |value| - if value.nil? || value == '' - value = FIXNUM_MAX - elsif value =~ /^\d+$/ - value = value.to_i - else - value = Rake.suggested_thread_count - end - value = 1 if value < 1 - options.thread_pool_size = value - 1 - } - ], - ['--job-stats [LEVEL]', - "Display job statistics. " + - "LEVEL=history displays a complete job list", - lambda { |value| - if value =~ /^history/i - options.job_stats = :history - else - options.job_stats = true - end - } - ], - ['--libdir', '-I LIBDIR', - "Include LIBDIR in the search path for required modules.", - lambda { |value| $:.push(value) } - ], - ['--multitask', '-m', - "Treat all tasks as multitasks.", - lambda { |value| options.always_multitask = true } - ], - ['--no-search', '--nosearch', - '-N', "Do not search parent directories for the Rakefile.", - lambda { |value| options.nosearch = true } - ], - ['--prereqs', '-P', - "Display the tasks and dependencies, then exit.", - lambda { |value| options.show_prereqs = true } - ], - ['--quiet', '-q', - "Do not log messages to standard output.", - lambda { |value| Rake.verbose(false) } - ], - ['--rakefile', '-f [FILENAME]', - "Use FILENAME as the rakefile to search for.", - lambda { |value| - value ||= '' - @rakefiles.clear - @rakefiles << value - } - ], - ['--rakelibdir', '--rakelib', '-R RAKELIBDIR', - "Auto-import any .rake files in RAKELIBDIR. " + - "(default is 'rakelib')", - lambda { |value| - options.rakelib = value.split(File::PATH_SEPARATOR) - } - ], - ['--require', '-r MODULE', - "Require MODULE before executing rakefile.", - lambda { |value| - begin - require value - rescue LoadError => ex - begin - rake_require value - rescue LoadError - raise ex - end - end - } - ], - ['--rules', - "Trace the rules resolution.", - lambda { |value| options.trace_rules = true } - ], - ['--silent', '-s', - "Like --quiet, but also suppresses the " + - "'in directory' announcement.", - lambda { |value| - Rake.verbose(false) - options.silent = true - } - ], - ['--suppress-backtrace PATTERN', - "Suppress backtrace lines matching regexp PATTERN. " + - "Ignored if --trace is on.", - lambda { |value| - options.suppress_backtrace_pattern = Regexp.new(value) - } - ], - ['--system', '-g', - "Using system wide (global) rakefiles " + - "(usually '~/.rake/*.rake').", - lambda { |value| options.load_system = true } - ], - ['--no-system', '--nosystem', '-G', - "Use standard project Rakefile search paths, " + - "ignore system wide rakefiles.", - lambda { |value| options.ignore_system = true } - ], - ['--tasks', '-T [PATTERN]', - "Display the tasks (matching optional PATTERN) " + - "with descriptions, then exit.", - lambda { |value| - select_tasks_to_show(options, :tasks, value) - } - ], - ['--trace=[OUT]', '-t', - "Turn on invoke/execute tracing, enable full backtrace. " + - "OUT can be stderr (default) or stdout.", - lambda { |value| - options.trace = true - options.backtrace = true - select_trace_output(options, 'trace', value) - Rake.verbose(true) - } - ], - ['--verbose', '-v', - "Log message to standard output.", - lambda { |value| Rake.verbose(true) } - ], - ['--version', '-V', - "Display the program version.", - lambda { |value| - puts "rake, version #{RAKEVERSION}" - exit - } - ], - ['--where', '-W [PATTERN]', - "Describe the tasks (matching optional PATTERN), then exit.", - lambda { |value| - select_tasks_to_show(options, :lines, value) - options.show_all_tasks = true - } - ], - ['--no-deprecation-warnings', '-X', - "Disable the deprecation warnings.", - lambda { |value| - options.ignore_deprecate = true - } - ], - ]) - end - - def select_tasks_to_show(options, show_tasks, value) # :nodoc: - options.show_tasks = show_tasks - options.show_task_pattern = Regexp.new(value || '') - Rake::TaskManager.record_task_metadata = true - end - private :select_tasks_to_show - - def select_trace_output(options, trace_option, value) # :nodoc: - value = value.strip unless value.nil? - case value - when 'stdout' - options.trace_output = $stdout - when 'stderr', nil - options.trace_output = $stderr - else - fail CommandLineOptionError, - "Unrecognized --#{trace_option} option '#{value}'" - end - end - private :select_trace_output - - # Read and handle the command line options. Returns the command line - # arguments that we didn't understand, which should (in theory) be just - # task names and env vars. - def handle_options # :nodoc: - options.rakelib = ['rakelib'] - options.trace_output = $stderr - - OptionParser.new do |opts| - opts.banner = "#{Rake.application.name} [-f rakefile] {options} targets..." - opts.separator "" - opts.separator "Options are ..." - - opts.on_tail("-h", "--help", "-H", "Display this help message.") do - puts opts - exit - end - - standard_rake_options.each { |args| opts.on(*args) } - opts.environment('RAKEOPT') - end.parse(ARGV) - end - - # Similar to the regular Ruby +require+ command, but will check - # for *.rake files in addition to *.rb files. - def rake_require(file_name, paths=$LOAD_PATH, loaded=$") # :nodoc: - fn = file_name + ".rake" - return false if loaded.include?(fn) - paths.each do |path| - full_path = File.join(path, fn) - if File.exist?(full_path) - Rake.load_rakefile(full_path) - loaded << fn - return true - end - end - fail LoadError, "Can't find #{file_name}" - end - - def find_rakefile_location # :nodoc: - here = Dir.pwd - until (fn = have_rakefile) - Dir.chdir("..") - return nil if Dir.pwd == here || options.nosearch - here = Dir.pwd - end - [fn, here] - ensure - Dir.chdir(Rake.original_dir) - end - - def print_rakefile_directory(location) # :nodoc: - $stderr.puts "(in #{Dir.pwd})" unless - options.silent or original_dir == location - end - - def raw_load_rakefile # :nodoc: - rakefile, location = find_rakefile_location - if (! options.ignore_system) && - (options.load_system || rakefile.nil?) && - system_dir && File.directory?(system_dir) - print_rakefile_directory(location) - glob("#{system_dir}/*.rake") do |name| - add_import name - end - else - fail "No Rakefile found (looking for: #{@rakefiles.join(', ')})" if - rakefile.nil? - @rakefile = rakefile - Dir.chdir(location) - print_rakefile_directory(location) - Rake.load_rakefile(File.expand_path(@rakefile)) if - @rakefile && @rakefile != '' - options.rakelib.each do |rlib| - glob("#{rlib}/*.rake") do |name| - add_import name - end - end - end - load_imports - end - - def glob(path, &block) # :nodoc: - FileList.glob(path.gsub("\\", '/')).each(&block) - end - private :glob - - # The directory path containing the system wide rakefiles. - def system_dir # :nodoc: - @system_dir ||= - begin - if ENV['RAKE_SYSTEM'] - ENV['RAKE_SYSTEM'] - else - standard_system_dir - end - end - end - - # The standard directory containing system wide rake files. - if Win32.windows? - def standard_system_dir #:nodoc: - Win32.win32_system_dir - end - else - def standard_system_dir #:nodoc: - File.join(File.expand_path('~'), '.rake') - end - end - private :standard_system_dir - - # Collect the list of tasks on the command line. If no tasks are - # given, return a list containing only the default task. - # Environmental assignments are processed at this time as well. - # - # `args` is the list of arguments to peruse to get the list of tasks. - # It should be the command line that was given to rake, less any - # recognised command-line options, which OptionParser.parse will - # have taken care of already. - def collect_command_line_tasks(args) # :nodoc: - @top_level_tasks = [] - args.each do |arg| - if arg =~ /^(\w+)=(.*)$/m - ENV[$1] = $2 - else - @top_level_tasks << arg unless arg =~ /^-/ - end - end - @top_level_tasks.push(default_task_name) if @top_level_tasks.empty? - end - - # Default task name ("default"). - # (May be overridden by subclasses) - def default_task_name # :nodoc: - "default" - end - - # Add a file to the list of files to be imported. - def add_import(fn) # :nodoc: - @pending_imports << fn - end - - # Load the pending list of imported files. - def load_imports # :nodoc: - while fn = @pending_imports.shift - next if @imported.member?(fn) - fn_task = lookup(fn) and fn_task.invoke - ext = File.extname(fn) - loader = @loaders[ext] || @default_loader - loader.load(fn) - if fn_task = lookup(fn) and fn_task.needed? - fn_task.reenable - fn_task.invoke - loader.load(fn) - end - @imported << fn - end - end - - def rakefile_location(backtrace=caller) # :nodoc: - backtrace.map { |t| t[/([^:]+):/, 1] } - - re = /^#{@rakefile}$/ - re = /#{re.source}/i if windows? - - backtrace.find { |str| str =~ re } || '' - end - - private - FIXNUM_MAX = (2**(0.size * 8 - 2) - 1) # :nodoc: - - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/backtrace.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/backtrace.rb deleted file mode 100644 index dc187734..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/backtrace.rb +++ /dev/null @@ -1,23 +0,0 @@ -module Rake - module Backtrace # :nodoc: all - SYS_KEYS = RbConfig::CONFIG.keys.grep(/(?:[a-z]prefix|libdir)\z/) - SYS_PATHS = RbConfig::CONFIG.values_at(*SYS_KEYS).uniq + - [ File.join(File.dirname(__FILE__), "..") ] - - SUPPRESSED_PATHS = SYS_PATHS. - map { |s| s.gsub("\\", "/") }. - map { |f| File.expand_path(f) }. - reject { |s| s.nil? || s =~ /^ *$/ } - SUPPRESSED_PATHS_RE = SUPPRESSED_PATHS.map { |f| Regexp.quote(f) }.join("|") - SUPPRESSED_PATHS_RE << "|^org\\/jruby\\/\\w+\\.java" if - Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == 'jruby' - - SUPPRESS_PATTERN = %r!(\A(#{SUPPRESSED_PATHS_RE})|bin/rake:\d+)!i - - def self.collapse(backtrace) - pattern = Rake.application.options.suppress_backtrace_pattern || - SUPPRESS_PATTERN - backtrace.reject { |elem| elem =~ pattern } - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/clean.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/clean.rb deleted file mode 100644 index a49cd441..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/clean.rb +++ /dev/null @@ -1,76 +0,0 @@ -# The 'rake/clean' file defines two file lists (CLEAN and CLOBBER) and -# two rake tasks (:clean and :clobber). -# -# [:clean] Clean up the project by deleting scratch files and backup -# files. Add files to the CLEAN file list to have the :clean -# target handle them. -# -# [:clobber] Clobber all generated and non-source files in a project. -# The task depends on :clean, so all the clean files will -# be deleted as well as files in the CLOBBER file list. -# The intent of this task is to return a project to its -# pristine, just unpacked state. - -require 'rake' - -# :stopdoc: - -module Rake - module Cleaner - extend FileUtils - - module_function - - def cleanup_files(file_names) - file_names.each do |file_name| - cleanup(file_name) - end - end - - def cleanup(file_name, opts={}) - begin - rm_r file_name, opts - rescue StandardError => ex - puts "Failed to remove #{file_name}: #{ex}" unless file_already_gone?(file_name) - end - end - - def file_already_gone?(file_name) - return false if File.exist?(file_name) - - path = file_name - prev = nil - - while path = File.dirname(path) - return false if cant_be_deleted?(path) - break if [prev, "."].include?(path) - prev = path - end - true - end - private_class_method :file_already_gone? - - def cant_be_deleted?(path_name) - File.exist?(path_name) && - (!File.readable?(path_name) || !File.executable?(path_name)) - end - private_class_method :cant_be_deleted? - end -end - -CLEAN = ::Rake::FileList["**/*~", "**/*.bak", "**/core"] -CLEAN.clear_exclude.exclude { |fn| - fn.pathmap("%f").downcase == 'core' && File.directory?(fn) -} - -desc "Remove any temporary products." -task :clean do - Rake::Cleaner.cleanup_files(CLEAN) -end - -CLOBBER = ::Rake::FileList.new - -desc "Remove any generated file." -task :clobber => [:clean] do - Rake::Cleaner.cleanup_files(CLOBBER) -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/cloneable.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/cloneable.rb deleted file mode 100644 index d53645f2..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/cloneable.rb +++ /dev/null @@ -1,16 +0,0 @@ -module Rake - ## - # Mixin for creating easily cloned objects. - - module Cloneable # :nodoc: - # The hook that is invoked by 'clone' and 'dup' methods. - def initialize_copy(source) - super - source.instance_variables.each do |var| - src_value = source.instance_variable_get(var) - value = src_value.clone rescue src_value - instance_variable_set(var, value) - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/.document b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/.document deleted file mode 100644 index 8b137891..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/.document +++ /dev/null @@ -1 +0,0 @@ - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/compositepublisher.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/compositepublisher.rb deleted file mode 100644 index 69952a08..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/compositepublisher.rb +++ /dev/null @@ -1,21 +0,0 @@ -module Rake - - # Manage several publishers as a single entity. - class CompositePublisher - def initialize - @publishers = [] - end - - # Add a publisher to the composite. - def add(pub) - @publishers << pub - end - - # Upload all the individual publishers. - def upload - @publishers.each { |p| p.upload } - end - end - -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/ftptools.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/ftptools.rb deleted file mode 100644 index b178523b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/ftptools.rb +++ /dev/null @@ -1,137 +0,0 @@ -# = Tools for FTP uploading. -# -# This file is still under development and is not released for general -# use. - -require 'date' -require 'net/ftp' -require 'rake/file_list' - -module Rake # :nodoc: - - class FtpFile # :nodoc: all - attr_reader :name, :size, :owner, :group, :time - - def self.date - @date_class ||= Date - end - - def self.time - @time_class ||= Time - end - - def initialize(path, entry) - @path = path - @mode, _, @owner, @group, size, d1, d2, d3, @name = entry.split(' ') - @size = size.to_i - @time = determine_time(d1, d2, d3) - end - - def path - File.join(@path, @name) - end - - def directory? - @mode[0] == ?d - end - - def mode - parse_mode(@mode) - end - - def symlink? - @mode[0] == ?l - end - - private # -------------------------------------------------------- - - def parse_mode(m) - result = 0 - (1..9).each do |i| - result = 2 * result + ((m[i] == ?-) ? 0 : 1) - end - result - end - - def determine_time(d1, d2, d3) - now = self.class.time.now - if /:/ !~ d3 - result = Time.parse("#{d1} #{d2} #{d3}") - else - result = Time.parse("#{d1} #{d2} #{now.year} #{d3}") - result = Time.parse("#{d1} #{d2} #{now.year - 1} #{d3}") if - result > now - end - result - end - end - - ## - # Manage the uploading of files to an FTP account. - class FtpUploader # :nodoc: - - # Log uploads to standard output when true. - attr_accessor :verbose - - class << FtpUploader - # Create an uploader and pass it to the given block as +up+. - # When the block is complete, close the uploader. - def connect(path, host, account, password) - up = self.new(path, host, account, password) - begin - yield(up) - ensure - up.close - end - end - end - - # Create an FTP uploader targeting the directory +path+ on +host+ - # using the given account and password. +path+ will be the root - # path of the uploader. - def initialize(path, host, account, password) - @created = Hash.new - @path = path - @ftp = Net::FTP.new(host, account, password) - makedirs(@path) - @ftp.chdir(@path) - end - - # Create the directory +path+ in the uploader root path. - def makedirs(path) - route = [] - File.split(path).each do |dir| - route << dir - current_dir = File.join(route) - if @created[current_dir].nil? - @created[current_dir] = true - $stderr.puts "Creating Directory #{current_dir}" if @verbose - @ftp.mkdir(current_dir) rescue nil - end - end - end - - # Upload all files matching +wildcard+ to the uploader's root - # path. - def upload_files(wildcard) - FileList.glob(wildcard).each do |fn| - upload(fn) - end - end - - # Close the uploader. - def close - @ftp.close - end - - private # -------------------------------------------------------- - - # Upload a single file to the uploader's root path. - def upload(file) - $stderr.puts "Uploading #{file}" if @verbose - dir = File.dirname(file) - makedirs(dir) - @ftp.putbinaryfile(file, file) unless File.directory?(file) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/publisher.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/publisher.rb deleted file mode 100644 index f4ee1abf..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/publisher.rb +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com) -# All rights reserved. - -# :stopdoc: - -# Configuration information about an upload host system. -# name :: Name of host system. -# webdir :: Base directory for the web information for the -# application. The application name (APP) is appended to -# this directory before using. -# pkgdir :: Directory on the host system where packages can be -# placed. -HostInfo = Struct.new(:name, :webdir, :pkgdir) - -# :startdoc: - -# TODO: Move to contrib/sshpublisher -#-- -# Manage several publishers as a single entity. -class CompositePublisher # :nodoc: - def initialize - @publishers = [] - end - - # Add a publisher to the composite. - def add(pub) - @publishers << pub - end - - # Upload all the individual publishers. - def upload - @publishers.each { |p| p.upload } - end -end - -# TODO: Remove in Rake 11, duplicated -#-- -# Publish an entire directory to an existing remote directory using -# SSH. -class SshDirPublisher # :nodoc: all - def initialize(host, remote_dir, local_dir) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - end - - def upload - run %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}} - end -end - -# TODO: Remove in Rake 11, duplicated -#-- -# Publish an entire directory to a fresh remote directory using SSH. -class SshFreshDirPublisher < SshDirPublisher # :nodoc: all - def upload - run %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil - run %{ssh #{@host} mkdir #{@remote_dir}} - super - end -end - -# TODO: Remove in Rake 11, duplicated -#-- -# Publish a list of files to an existing remote directory. -class SshFilePublisher # :nodoc: all - # Create a publisher using the give host information. - def initialize(host, remote_dir, local_dir, *files) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - @files = files - end - - # Upload the local directory to the remote directory. - def upload - @files.each do |fn| - run %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}} - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/rubyforgepublisher.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/rubyforgepublisher.rb deleted file mode 100644 index 00889ad7..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/rubyforgepublisher.rb +++ /dev/null @@ -1,18 +0,0 @@ -# TODO: Remove in Rake 11 - -require 'rake/contrib/sshpublisher' - -module Rake - - class RubyForgePublisher < SshDirPublisher # :nodoc: all - attr_reader :project, :proj_id, :user - - def initialize(projname, user) - super( - "#{user}@rubyforge.org", - "/var/www/gforge-projects/#{projname}", - "html") - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/sshpublisher.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/sshpublisher.rb deleted file mode 100644 index 64f57701..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/sshpublisher.rb +++ /dev/null @@ -1,61 +0,0 @@ -require 'rake/dsl_definition' -require 'rake/contrib/compositepublisher' - -module Rake - - # Publish an entire directory to an existing remote directory using - # SSH. - class SshDirPublisher - include Rake::DSL - - # Creates an SSH publisher which will scp all files in +local_dir+ to - # +remote_dir+ on +host+ - - def initialize(host, remote_dir, local_dir) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - end - - # Uploads the files - - def upload - sh "scp", "-rq", "#{@local_dir}/*", "#{@host}:#{@remote_dir}" - end - end - - # Publish an entire directory to a fresh remote directory using SSH. - class SshFreshDirPublisher < SshDirPublisher - - # Uploads the files after removing the existing remote directory. - - def upload - sh "ssh", @host, "rm", "-rf", @remote_dir rescue nil - sh "ssh", @host, "mkdir", @remote_dir - super - end - end - - # Publish a list of files to an existing remote directory. - class SshFilePublisher - include Rake::DSL - - # Creates an SSH publisher which will scp all +files+ in +local_dir+ to - # +remote_dir+ on +host+. - - def initialize(host, remote_dir, local_dir, *files) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - @files = files - end - - # Uploads the files - - def upload - @files.each do |fn| - sh "scp", "-q", "#{@local_dir}/#{fn}", "#{@host}:#{@remote_dir}" - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/sys.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/sys.rb deleted file mode 100644 index 8d4c7354..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/contrib/sys.rb +++ /dev/null @@ -1,4 +0,0 @@ -# TODO: Remove in Rake 11 - -fail "ERROR: 'rake/contrib/sys' is obsolete and no longer supported. " + - "Use 'FileUtils' instead." diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/cpu_counter.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/cpu_counter.rb deleted file mode 100644 index f29778ed..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/cpu_counter.rb +++ /dev/null @@ -1,125 +0,0 @@ -module Rake - - # Based on a script at: - # http://stackoverflow.com/questions/891537/ruby-detect-number-of-cpus-installed - class CpuCounter # :nodoc: all - def self.count - new.count_with_default - end - - def count_with_default(default=4) - count || default - rescue StandardError - default - end - - begin - require 'etc' - rescue LoadError - else - if Etc.respond_to?(:nprocessors) - def count - return Etc.nprocessors - end - end - end - end -end - -unless Rake::CpuCounter.method_defined?(:count) - Rake::CpuCounter.class_eval <<-'end;', __FILE__, __LINE__+1 - require 'rbconfig' - - # TODO: replace with IO.popen using array-style arguments in Rake 11 - require 'open3' - - def count - if defined?(Java::Java) - count_via_java_runtime - else - case RbConfig::CONFIG['host_os'] - when /darwin9/ - count_via_hwprefs_cpu_count - when /darwin/ - count_via_hwprefs_thread_count || count_via_sysctl - when /linux/ - count_via_cpuinfo - when /bsd/ - count_via_sysctl - when /mswin|mingw/ - count_via_win32 - else - # Try everything - count_via_win32 || - count_via_sysctl || - count_via_hwprefs_thread_count || - count_via_hwprefs_cpu_count || - count_via_cpuinfo - end - end - end - - def count_via_java_runtime - Java::Java.lang.Runtime.getRuntime.availableProcessors - rescue StandardError - nil - end - - def count_via_win32 - require 'win32ole' - wmi = WIN32OLE.connect("winmgmts://") - cpu = wmi.ExecQuery("select NumberOfCores from Win32_Processor") # TODO count hyper-threaded in this - cpu.to_enum.first.NumberOfCores - rescue StandardError, LoadError - nil - end - - def count_via_cpuinfo - open('/proc/cpuinfo') { |f| f.readlines }.grep(/processor/).size - rescue StandardError - nil - end - - def count_via_hwprefs_thread_count - run 'hwprefs', 'thread_count' - end - - def count_via_hwprefs_cpu_count - run 'hwprefs', 'cpu_count' - end - - def count_via_sysctl - run 'sysctl', '-n', 'hw.ncpu' - end - - def run(command, *args) - cmd = resolve_command(command) - if cmd - Open3.popen3 cmd, *args do |inn, out, err,| - inn.close - err.read - out.read.to_i - end - else - nil - end - end - - def resolve_command(command) - look_for_command("/usr/sbin", command) || - look_for_command("/sbin", command) || - in_path_command(command) - end - - def look_for_command(dir, command) - path = File.join(dir, command) - File.exist?(path) ? path : nil - end - - def in_path_command(command) - Open3.popen3 'which', command do |_, out,| - out.eof? ? nil : command - end - end - end; -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/dsl_definition.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/dsl_definition.rb deleted file mode 100644 index 26f4ca82..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/dsl_definition.rb +++ /dev/null @@ -1,201 +0,0 @@ -# Rake DSL functions. -require 'rake/file_utils_ext' - -module Rake - - ## - # DSL is a module that provides #task, #desc, #namespace, etc. Use this - # when you'd like to use rake outside the top level scope. - # - # For a Rakefile you run from the comamnd line this module is automatically - # included. - - module DSL - - #-- - # Include the FileUtils file manipulation functions in the top - # level module, but mark them private so that they don't - # unintentionally define methods on other objects. - #++ - - include FileUtilsExt - private(*FileUtils.instance_methods(false)) - private(*FileUtilsExt.instance_methods(false)) - - private - - # :call-seq: - # task task_name - # task task_name: dependencies - # task task_name, arguments => dependencies - # task task_name, argument[, argument ...], :needs: dependencies - # - # Declare a basic task. The +task_name+ is always the first argument. If - # the task name contains a ":" it is defined in that namespace. - # - # The +dependencies+ may be a single task name or an Array of task names. - # The +argument+ (a single name) or +arguments+ (an Array of names) define - # the arguments provided to the task. - # - # The task, argument and dependency names may be either symbols or - # strings. - # - # A task with a single dependency: - # - # task clobber: %w[clean] do - # rm_rf "html" - # end - # - # A task with an argument and a dependency: - # - # task :package, [:version] => :test do |t, args| - # # ... - # end - # - # To invoke this task from the command line: - # - # $ rake package[1.2.3] - # - # Alternate definition: - # - # task :package, :version, needs: :test do |t, args| - # # ... - # end - # - def task(*args, &block) # :doc: - Rake::Task.define_task(*args, &block) - end - - # Declare a file task. - # - # Example: - # file "config.cfg" => ["config.template"] do - # open("config.cfg", "w") do |outfile| - # open("config.template") do |infile| - # while line = infile.gets - # outfile.puts line - # end - # end - # end - # end - # - def file(*args, &block) # :doc: - Rake::FileTask.define_task(*args, &block) - end - - # Declare a file creation task. - # (Mainly used for the directory command). - def file_create(*args, &block) - Rake::FileCreationTask.define_task(*args, &block) - end - - # Declare a set of files tasks to create the given directories on - # demand. - # - # Example: - # directory "testdata/doc" - # - def directory(*args, &block) # :doc: - result = file_create(*args, &block) - dir, _ = *Rake.application.resolve_args(args) - dir = Rake.from_pathname(dir) - Rake.each_dir_parent(dir) do |d| - file_create d do |t| - mkdir_p t.name unless File.exist?(t.name) - end - end - result - end - - # Declare a task that performs its prerequisites in - # parallel. Multitasks does *not* guarantee that its prerequisites - # will execute in any given order (which is obvious when you think - # about it) - # - # Example: - # multitask deploy: %w[deploy_gem deploy_rdoc] - # - def multitask(*args, &block) # :doc: - Rake::MultiTask.define_task(*args, &block) - end - - # Create a new rake namespace and use it for evaluating the given - # block. Returns a NameSpace object that can be used to lookup - # tasks defined in the namespace. - # - # Example: - # - # ns = namespace "nested" do - # # the "nested:run" task - # task :run - # end - # task_run = ns[:run] # find :run in the given namespace. - # - # Tasks can also be defined in a namespace by using a ":" in the task - # name: - # - # task "nested:test" do - # # ... - # end - # - def namespace(name=nil, &block) # :doc: - name = name.to_s if name.kind_of?(Symbol) - name = name.to_str if name.respond_to?(:to_str) - unless name.kind_of?(String) || name.nil? - raise ArgumentError, "Expected a String or Symbol for a namespace name" - end - Rake.application.in_namespace(name, &block) - end - - # Declare a rule for auto-tasks. - # - # Example: - # rule '.o' => '.c' do |t| - # sh 'cc', '-o', t.name, t.source - # end - # - def rule(*args, &block) # :doc: - Rake::Task.create_rule(*args, &block) - end - - # Describes the next rake task. Duplicate descriptions are discarded. - # Descriptions are shown with rake -T (up to the first - # sentence) and rake -D (the entire description). - # - # Example: - # desc "Run the Unit Tests" - # task test: [:build] - # # ... run tests - # end - # - def desc(description) # :doc: - Rake.application.last_description = description - end - - # Import the partial Rakefiles +fn+. Imported files are loaded - # _after_ the current file is completely loaded. This allows the - # import statement to appear anywhere in the importing file, and yet - # allowing the imported files to depend on objects defined in the - # importing file. - # - # A common use of the import statement is to include files - # containing dependency declarations. - # - # See also the --rakelibdir command line option. - # - # Example: - # import ".depend", "my_rules" - # - def import(*fns) # :doc: - fns.each do |fn| - Rake.application.add_import(fn) - end - end - end - extend FileUtilsExt -end - -# Extend the main object with the DSL commands. This allows top-level -# calls to task, etc. to work from a Rakefile without polluting the -# object inheritance tree. -self.extend Rake::DSL diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/early_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/early_time.rb deleted file mode 100644 index abcb1872..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/early_time.rb +++ /dev/null @@ -1,21 +0,0 @@ -module Rake - - # EarlyTime is a fake timestamp that occurs _before_ any other time value. - class EarlyTime - include Comparable - include Singleton - - ## - # The EarlyTime always comes before +other+! - - def <=>(other) - -1 - end - - def to_s # :nodoc: - "" - end - end - - EARLY = EarlyTime.instance -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/module.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/module.rb deleted file mode 100644 index 3ee155ff..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/module.rb +++ /dev/null @@ -1,2 +0,0 @@ - -# TODO: remove in Rake 11 diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/pathname.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/pathname.rb deleted file mode 100644 index 49e2cd47..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/pathname.rb +++ /dev/null @@ -1,25 +0,0 @@ -require 'rake/ext/core' -require 'pathname' - -class Pathname - - rake_extension("ext") do - # Return a new Pathname with String#ext applied to it. - # - # This Pathname extension comes from Rake - def ext(newext='') - Pathname.new(Rake.from_pathname(self).ext(newext)) - end - end - - rake_extension("pathmap") do - # Apply the pathmap spec to the Pathname, returning a - # new Pathname with the modified paths. (See String#pathmap for - # details.) - # - # This Pathname extension comes from Rake - def pathmap(spec=nil, &block) - Pathname.new(Rake.from_pathname(self).pathmap(spec, &block)) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/string.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/string.rb deleted file mode 100644 index b47b055a..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/string.rb +++ /dev/null @@ -1,173 +0,0 @@ -require 'rake/ext/core' - -class String - - rake_extension("ext") do - # Replace the file extension with +newext+. If there is no extension on - # the string, append the new extension to the end. If the new extension - # is not given, or is the empty string, remove any existing extension. - # - # +ext+ is a user added method for the String class. - # - # This String extension comes from Rake - def ext(newext='') - return self.dup if ['.', '..'].include? self - newext = (newext =~ /^\./) ? newext : ("." + newext) if newext != '' - self.chomp(File.extname(self)) << newext - end - end - - rake_extension("pathmap") do - # Explode a path into individual components. Used by +pathmap+. - # - # This String extension comes from Rake - def pathmap_explode - head, tail = File.split(self) - return [self] if head == self - return [tail] if head == '.' || tail == '/' - return [head, tail] if head == '/' - return head.pathmap_explode + [tail] - end - protected :pathmap_explode - - # Extract a partial path from the path. Include +n+ directories from the - # front end (left hand side) if +n+ is positive. Include |+n+| - # directories from the back end (right hand side) if +n+ is negative. - # - # This String extension comes from Rake - def pathmap_partial(n) - dirs = File.dirname(self).pathmap_explode - partial_dirs = - if n > 0 - dirs[0...n] - elsif n < 0 - dirs.reverse[0...-n].reverse - else - "." - end - File.join(partial_dirs) - end - protected :pathmap_partial - - # Perform the pathmap replacement operations on the given path. The - # patterns take the form 'pat1,rep1;pat2,rep2...'. - # - # This String extension comes from Rake - def pathmap_replace(patterns, &block) - result = self - patterns.split(';').each do |pair| - pattern, replacement = pair.split(',') - pattern = Regexp.new(pattern) - if replacement == '*' && block_given? - result = result.sub(pattern, &block) - elsif replacement - result = result.sub(pattern, replacement) - else - result = result.sub(pattern, '') - end - end - result - end - protected :pathmap_replace - - # Map the path according to the given specification. The specification - # controls the details of the mapping. The following special patterns are - # recognized: - # - # %p :: The complete path. - # %f :: The base file name of the path, with its file extension, - # but without any directories. - # %n :: The file name of the path without its file extension. - # %d :: The directory list of the path. - # %x :: The file extension of the path. An empty string if there - # is no extension. - # %X :: Everything *but* the file extension. - # %s :: The alternate file separator if defined, otherwise use # - # the standard file separator. - # %% :: A percent sign. - # - # The %d specifier can also have a numeric prefix (e.g. '%2d'). - # If the number is positive, only return (up to) +n+ directories in the - # path, starting from the left hand side. If +n+ is negative, return (up - # to) +n+ directories from the right hand side of the path. - # - # Examples: - # - # 'a/b/c/d/file.txt'.pathmap("%2d") => 'a/b' - # 'a/b/c/d/file.txt'.pathmap("%-2d") => 'c/d' - # - # Also the %d, %p, %f, %n, - # %x, and %X operators can take a pattern/replacement - # argument to perform simple string substitutions on a particular part of - # the path. The pattern and replacement are separated by a comma and are - # enclosed by curly braces. The replacement spec comes after the % - # character but before the operator letter. (e.g. "%{old,new}d"). - # Multiple replacement specs should be separated by semi-colons (e.g. - # "%{old,new;src,bin}d"). - # - # Regular expressions may be used for the pattern, and back refs may be - # used in the replacement text. Curly braces, commas and semi-colons are - # excluded from both the pattern and replacement text (let's keep parsing - # reasonable). - # - # For example: - # - # "src/org/onestepback/proj/A.java".pathmap("%{^src,class}X.class") - # - # returns: - # - # "class/org/onestepback/proj/A.class" - # - # If the replacement text is '*', then a block may be provided to perform - # some arbitrary calculation for the replacement. - # - # For example: - # - # "/path/to/file.TXT".pathmap("%X%{.*,*}x") { |ext| - # ext.downcase - # } - # - # Returns: - # - # "/path/to/file.txt" - # - # This String extension comes from Rake - def pathmap(spec=nil, &block) - return self if spec.nil? - result = '' - spec.scan(/%\{[^}]*\}-?\d*[sdpfnxX%]|%-?\d+d|%.|[^%]+/) do |frag| - case frag - when '%f' - result << File.basename(self) - when '%n' - result << File.basename(self).ext - when '%d' - result << File.dirname(self) - when '%x' - result << File.extname(self) - when '%X' - result << self.ext - when '%p' - result << self - when '%s' - result << (File::ALT_SEPARATOR || File::SEPARATOR) - when '%-' - # do nothing - when '%%' - result << "%" - when /%(-?\d+)d/ - result << pathmap_partial($1.to_i) - when /^%\{([^}]*)\}(\d*[dpfnxX])/ - patterns, operator = $1, $2 - result << pathmap('%' + operator).pathmap_replace(patterns, &block) - when /^%/ - fail ArgumentError, "Unknown pathmap specifier #{frag} in '#{spec}'" - else - result << frag - end - end - result - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/time.rb deleted file mode 100644 index d3b8cf9d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/time.rb +++ /dev/null @@ -1,16 +0,0 @@ -#-- -# Extensions to time to allow comparisons with early and late time classes. - -require 'rake/early_time' -require 'rake/late_time' - -class Time # :nodoc: all - alias rake_original_time_compare :<=> - def <=>(other) - if Rake::EarlyTime === other || Rake::LateTime === other - - other.<=>(self) - else - rake_original_time_compare(other) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_creation_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_creation_task.rb deleted file mode 100644 index c87e2192..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_creation_task.rb +++ /dev/null @@ -1,24 +0,0 @@ -require 'rake/file_task' -require 'rake/early_time' - -module Rake - - # A FileCreationTask is a file task that when used as a dependency will be - # needed if and only if the file has not been created. Once created, it is - # not re-triggered if any of its dependencies are newer, nor does trigger - # any rebuilds of tasks that depend on it whenever it is updated. - # - class FileCreationTask < FileTask - # Is this file task needed? Yes if it doesn't exist. - def needed? - ! File.exist?(name) - end - - # Time stamp for file creation task. This time stamp is earlier - # than any other time stamp. - def timestamp - Rake::EARLY - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_list.rb deleted file mode 100644 index 006ec770..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_list.rb +++ /dev/null @@ -1,428 +0,0 @@ -require 'rake/cloneable' -require 'rake/file_utils_ext' -require 'rake/pathmap' - - -module Rake - - ## - # A FileList is essentially an array with a few helper methods defined to - # make file manipulation a bit easier. - # - # FileLists are lazy. When given a list of glob patterns for possible files - # to be included in the file list, instead of searching the file structures - # to find the files, a FileList holds the pattern for latter use. - # - # This allows us to define a number of FileList to match any number of - # files, but only search out the actual files when then FileList itself is - # actually used. The key is that the first time an element of the - # FileList/Array is requested, the pending patterns are resolved into a real - # list of file names. - # - class FileList - - include Cloneable - - # == Method Delegation - # - # The lazy evaluation magic of FileLists happens by implementing all the - # array specific methods to call +resolve+ before delegating the heavy - # lifting to an embedded array object (@items). - # - # In addition, there are two kinds of delegation calls. The regular kind - # delegates to the @items array and returns the result directly. Well, - # almost directly. It checks if the returned value is the @items object - # itself, and if so will return the FileList object instead. - # - # The second kind of delegation call is used in methods that normally - # return a new Array object. We want to capture the return value of these - # methods and wrap them in a new FileList object. We enumerate these - # methods in the +SPECIAL_RETURN+ list below. - - # List of array methods (that are not in +Object+) that need to be - # delegated. - ARRAY_METHODS = (Array.instance_methods - Object.instance_methods). - map { |n| n.to_s } - - # List of additional methods that must be delegated. - MUST_DEFINE = %w[inspect <=>] - - # List of methods that should not be delegated here (we define special - # versions of them explicitly below). - MUST_NOT_DEFINE = %w[to_a to_ary partition * <<] - - # List of delegated methods that return new array values which need - # wrapping. - SPECIAL_RETURN = %w[ - map collect sort sort_by select find_all reject grep - compact flatten uniq values_at - + - & | - ] - - DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE). - map { |s| s.to_s }.sort.uniq - - # Now do the delegation. - DELEGATING_METHODS.each do |sym| - if SPECIAL_RETURN.include?(sym) - ln = __LINE__ + 1 - class_eval %{ - def #{sym}(*args, &block) - resolve - result = @items.send(:#{sym}, *args, &block) - FileList.new.import(result) - end - }, __FILE__, ln - else - ln = __LINE__ + 1 - class_eval %{ - def #{sym}(*args, &block) - resolve - result = @items.send(:#{sym}, *args, &block) - result.object_id == @items.object_id ? self : result - end - }, __FILE__, ln - end - end - - # Create a file list from the globbable patterns given. If you wish to - # perform multiple includes or excludes at object build time, use the - # "yield self" pattern. - # - # Example: - # file_list = FileList.new('lib/**/*.rb', 'test/test*.rb') - # - # pkg_files = FileList.new('lib/**/*') do |fl| - # fl.exclude(/\bCVS\b/) - # end - # - def initialize(*patterns) - @pending_add = [] - @pending = false - @exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup - @exclude_procs = DEFAULT_IGNORE_PROCS.dup - @items = [] - patterns.each { |pattern| include(pattern) } - yield self if block_given? - end - - # Add file names defined by glob patterns to the file list. If an array - # is given, add each element of the array. - # - # Example: - # file_list.include("*.java", "*.cfg") - # file_list.include %w( math.c lib.h *.o ) - # - def include(*filenames) - # TODO: check for pending - filenames.each do |fn| - if fn.respond_to? :to_ary - include(*fn.to_ary) - else - @pending_add << Rake.from_pathname(fn) - end - end - @pending = true - self - end - alias :add :include - - # Register a list of file name patterns that should be excluded from the - # list. Patterns may be regular expressions, glob patterns or regular - # strings. In addition, a block given to exclude will remove entries that - # return true when given to the block. - # - # Note that glob patterns are expanded against the file system. If a file - # is explicitly added to a file list, but does not exist in the file - # system, then an glob pattern in the exclude list will not exclude the - # file. - # - # Examples: - # FileList['a.c', 'b.c'].exclude("a.c") => ['b.c'] - # FileList['a.c', 'b.c'].exclude(/^a/) => ['b.c'] - # - # If "a.c" is a file, then ... - # FileList['a.c', 'b.c'].exclude("a.*") => ['b.c'] - # - # If "a.c" is not a file, then ... - # FileList['a.c', 'b.c'].exclude("a.*") => ['a.c', 'b.c'] - # - def exclude(*patterns, &block) - patterns.each do |pat| - @exclude_patterns << Rake.from_pathname(pat) - end - @exclude_procs << block if block_given? - resolve_exclude unless @pending - self - end - - # Clear all the exclude patterns so that we exclude nothing. - def clear_exclude - @exclude_patterns = [] - @exclude_procs = [] - self - end - - # A FileList is equal through array equality. - def ==(array) - to_ary == array - end - - # Return the internal array object. - def to_a - resolve - @items - end - - # Return the internal array object. - def to_ary - to_a - end - - # Lie about our class. - def is_a?(klass) - klass == Array || super(klass) - end - alias kind_of? is_a? - - # Redefine * to return either a string or a new file list. - def *(other) - result = @items * other - case result - when Array - FileList.new.import(result) - else - result - end - end - - def <<(obj) - resolve - @items << Rake.from_pathname(obj) - self - end - - # Resolve all the pending adds now. - def resolve - if @pending - @pending = false - @pending_add.each do |fn| resolve_add(fn) end - @pending_add = [] - resolve_exclude - end - self - end - - def resolve_add(fn) # :nodoc: - case fn - when %r{[*?\[\{]} - add_matching(fn) - else - self << fn - end - end - private :resolve_add - - def resolve_exclude # :nodoc: - reject! { |fn| excluded_from_list?(fn) } - self - end - private :resolve_exclude - - # Return a new FileList with the results of running +sub+ against each - # element of the original list. - # - # Example: - # FileList['a.c', 'b.c'].sub(/\.c$/, '.o') => ['a.o', 'b.o'] - # - def sub(pat, rep) - inject(FileList.new) { |res, fn| res << fn.sub(pat, rep) } - end - - # Return a new FileList with the results of running +gsub+ against each - # element of the original list. - # - # Example: - # FileList['lib/test/file', 'x/y'].gsub(/\//, "\\") - # => ['lib\\test\\file', 'x\\y'] - # - def gsub(pat, rep) - inject(FileList.new) { |res, fn| res << fn.gsub(pat, rep) } - end - - # Same as +sub+ except that the original file list is modified. - def sub!(pat, rep) - each_with_index { |fn, i| self[i] = fn.sub(pat, rep) } - self - end - - # Same as +gsub+ except that the original file list is modified. - def gsub!(pat, rep) - each_with_index { |fn, i| self[i] = fn.gsub(pat, rep) } - self - end - - # Apply the pathmap spec to each of the included file names, returning a - # new file list with the modified paths. (See String#pathmap for - # details.) - def pathmap(spec=nil) - collect { |fn| fn.pathmap(spec) } - end - - # Return a new FileList with String#ext method applied to - # each member of the array. - # - # This method is a shortcut for: - # - # array.collect { |item| item.ext(newext) } - # - # +ext+ is a user added method for the Array class. - def ext(newext='') - collect { |fn| fn.ext(newext) } - end - - # Grep each of the files in the filelist using the given pattern. If a - # block is given, call the block on each matching line, passing the file - # name, line number, and the matching line of text. If no block is given, - # a standard emacs style file:linenumber:line message will be printed to - # standard out. Returns the number of matched items. - def egrep(pattern, *options) - matched = 0 - each do |fn| - begin - open(fn, "r", *options) do |inf| - count = 0 - inf.each do |line| - count += 1 - if pattern.match(line) - matched += 1 - if block_given? - yield fn, count, line - else - puts "#{fn}:#{count}:#{line}" - end - end - end - end - rescue StandardError => ex - $stderr.puts "Error while processing '#{fn}': #{ex}" - end - end - matched - end - - # Return a new file list that only contains file names from the current - # file list that exist on the file system. - def existing - select { |fn| File.exist?(fn) } - end - - # Modify the current file list so that it contains only file name that - # exist on the file system. - def existing! - resolve - @items = @items.select { |fn| File.exist?(fn) } - self - end - - # FileList version of partition. Needed because the nested arrays should - # be FileLists in this version. - def partition(&block) # :nodoc: - resolve - result = @items.partition(&block) - [ - FileList.new.import(result[0]), - FileList.new.import(result[1]), - ] - end - - # Convert a FileList to a string by joining all elements with a space. - def to_s - resolve - self.join(' ') - end - - # Add matching glob patterns. - def add_matching(pattern) - FileList.glob(pattern).each do |fn| - self << fn unless excluded_from_list?(fn) - end - end - private :add_matching - - # Should the given file name be excluded from the list? - # - # NOTE: This method was formerly named "exclude?", but Rails - # introduced an exclude? method as an array method and setup a - # conflict with file list. We renamed the method to avoid - # confusion. If you were using "FileList#exclude?" in your user - # code, you will need to update. - def excluded_from_list?(fn) - return true if @exclude_patterns.any? do |pat| - case pat - when Regexp - fn =~ pat - when /[*?]/ - File.fnmatch?(pat, fn, File::FNM_PATHNAME) - else - fn == pat - end - end - @exclude_procs.any? { |p| p.call(fn) } - end - - DEFAULT_IGNORE_PATTERNS = [ - /(^|[\/\\])CVS([\/\\]|$)/, - /(^|[\/\\])\.svn([\/\\]|$)/, - /\.bak$/, - /~$/ - ] - DEFAULT_IGNORE_PROCS = [ - proc { |fn| fn =~ /(^|[\/\\])core$/ && ! File.directory?(fn) } - ] - - def import(array) # :nodoc: - @items = array - self - end - - class << self - # Create a new file list including the files listed. Similar to: - # - # FileList.new(*args) - def [](*args) - new(*args) - end - - # Get a sorted list of files matching the pattern. This method - # should be preferred to Dir[pattern] and Dir.glob(pattern) because - # the files returned are guaranteed to be sorted. - def glob(pattern, *args) - Dir.glob(pattern, *args).sort - end - end - end -end - -module Rake - class << self - - # Yield each file or directory component. - def each_dir_parent(dir) # :nodoc: - old_length = nil - while dir != '.' && dir.length != old_length - yield(dir) - old_length = dir.length - dir = File.dirname(dir) - end - end - - # Convert Pathname and Pathname-like objects to strings; - # leave everything else alone - def from_pathname(path) # :nodoc: - path = path.to_path if path.respond_to?(:to_path) - path = path.to_str if path.respond_to?(:to_str) - path - end - end -end # module Rake diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_utils.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_utils.rb deleted file mode 100644 index 27f4e2e1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_utils.rb +++ /dev/null @@ -1,128 +0,0 @@ -require 'rbconfig' -require 'fileutils' - -#-- -# This a FileUtils extension that defines several additional commands to be -# added to the FileUtils utility functions. -module FileUtils - # Path to the currently running Ruby program - RUBY = ENV['RUBY'] || File.join( - RbConfig::CONFIG['bindir'], - RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT']). - sub(/.*\s.*/m, '"\&"') - - OPT_TABLE['sh'] = %w(noop verbose) - OPT_TABLE['ruby'] = %w(noop verbose) - - # Run the system command +cmd+. If multiple arguments are given the command - # is run directly (without the shell, same semantics as Kernel::exec and - # Kernel::system). - # - # It is recommended you use the multiple argument form over interpolating - # user input for both usability and security reasons. With the multiple - # argument form you can easily process files with spaces or other shell - # reserved characters in them. With the multiple argument form your rake - # tasks are not vulnerable to users providing an argument like - # ; rm # -rf /. - # - # If a block is given, upon command completion the block is called with an - # OK flag (true on a zero exit status) and a Process::Status object. - # Without a block a RuntimeError is raised when the command exits non-zero. - # - # Examples: - # - # sh 'ls -ltr' - # - # sh 'ls', 'file with spaces' - # - # # check exit status after command runs - # sh %{grep pattern file} do |ok, res| - # if ! ok - # puts "pattern not found (status = #{res.exitstatus})" - # end - # end - # - def sh(*cmd, &block) - options = (Hash === cmd.last) ? cmd.pop : {} - shell_runner = block_given? ? block : create_shell_runner(cmd) - set_verbose_option(options) - options[:noop] ||= Rake::FileUtilsExt.nowrite_flag - Rake.rake_check_options options, :noop, :verbose - Rake.rake_output_message cmd.join(" ") if options[:verbose] - - unless options[:noop] - res = rake_system(*cmd) - status = $? - status = Rake::PseudoStatus.new(1) if !res && status.nil? - shell_runner.call(res, status) - end - end - - def create_shell_runner(cmd) # :nodoc: - show_command = cmd.join(" ") - show_command = show_command[0, 42] + "..." unless $trace - lambda do |ok, status| - ok or - fail "Command failed with status (#{status.exitstatus}): " + - "[#{show_command}]" - end - end - private :create_shell_runner - - def set_verbose_option(options) # :nodoc: - unless options.key? :verbose - options[:verbose] = - (Rake::FileUtilsExt.verbose_flag == Rake::FileUtilsExt::DEFAULT) || - Rake::FileUtilsExt.verbose_flag - end - end - private :set_verbose_option - - def rake_system(*cmd) # :nodoc: - Rake::AltSystem.system(*cmd) - end - private :rake_system - - # Run a Ruby interpreter with the given arguments. - # - # Example: - # ruby %{-pe '$_.upcase!' 1 - sh(*([RUBY] + args + [options]), &block) - else - sh("#{RUBY} #{args.first}", options, &block) - end - end - - LN_SUPPORTED = [true] - - # Attempt to do a normal file link, but fall back to a copy if the link - # fails. - def safe_ln(*args) - if ! LN_SUPPORTED[0] - cp(*args) - else - begin - ln(*args) - rescue StandardError, NotImplementedError - LN_SUPPORTED[0] = false - cp(*args) - end - end - end - - # Split a file path into individual directory names. - # - # Example: - # split_all("a/b/c") => ['a', 'b', 'c'] - # - def split_all(path) - head, tail = File.split(path) - return [tail] if head == '.' || tail == '/' - return [head, tail] if head == '/' - return split_all(head) + [tail] - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_utils_ext.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_utils_ext.rb deleted file mode 100644 index 309159ae..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_utils_ext.rb +++ /dev/null @@ -1,144 +0,0 @@ -require 'rake/file_utils' - -module Rake - # - # FileUtilsExt provides a custom version of the FileUtils methods - # that respond to the verbose and nowrite - # commands. - # - module FileUtilsExt - include FileUtils - - class << self - attr_accessor :verbose_flag, :nowrite_flag - end - - DEFAULT = Object.new - - FileUtilsExt.verbose_flag = DEFAULT - FileUtilsExt.nowrite_flag = false - - FileUtils.commands.each do |name| - opts = FileUtils.options_of name - default_options = [] - if opts.include?("verbose") - default_options << ':verbose => FileUtilsExt.verbose_flag' - end - if opts.include?("noop") - default_options << ':noop => FileUtilsExt.nowrite_flag' - end - - next if default_options.empty? - module_eval(<<-EOS, __FILE__, __LINE__ + 1) - def #{name}( *args, &block ) - super( - *rake_merge_option(args, - #{default_options.join(', ')} - ), &block) - end - EOS - end - - # Get/set the verbose flag controlling output from the FileUtils - # utilities. If verbose is true, then the utility method is - # echoed to standard output. - # - # Examples: - # verbose # return the current value of the - # # verbose flag - # verbose(v) # set the verbose flag to _v_. - # verbose(v) { code } # Execute code with the verbose flag set - # # temporarily to _v_. Return to the - # # original value when code is done. - def verbose(value=nil) - oldvalue = FileUtilsExt.verbose_flag - FileUtilsExt.verbose_flag = value unless value.nil? - if block_given? - begin - yield - ensure - FileUtilsExt.verbose_flag = oldvalue - end - end - FileUtilsExt.verbose_flag - end - - # Get/set the nowrite flag controlling output from the FileUtils - # utilities. If verbose is true, then the utility method is - # echoed to standard output. - # - # Examples: - # nowrite # return the current value of the - # # nowrite flag - # nowrite(v) # set the nowrite flag to _v_. - # nowrite(v) { code } # Execute code with the nowrite flag set - # # temporarily to _v_. Return to the - # # original value when code is done. - def nowrite(value=nil) - oldvalue = FileUtilsExt.nowrite_flag - FileUtilsExt.nowrite_flag = value unless value.nil? - if block_given? - begin - yield - ensure - FileUtilsExt.nowrite_flag = oldvalue - end - end - oldvalue - end - - # Use this function to prevent potentially destructive ruby code - # from running when the :nowrite flag is set. - # - # Example: - # - # when_writing("Building Project") do - # project.build - # end - # - # The following code will build the project under normal - # conditions. If the nowrite(true) flag is set, then the example - # will print: - # - # DRYRUN: Building Project - # - # instead of actually building the project. - # - def when_writing(msg=nil) - if FileUtilsExt.nowrite_flag - $stderr.puts "DRYRUN: #{msg}" if msg - else - yield - end - end - - # Merge the given options with the default values. - def rake_merge_option(args, defaults) - if Hash === args.last - defaults.update(args.last) - args.pop - end - args.push defaults - args - end - - # Send the message to the default rake output (which is $stderr). - def rake_output_message(message) - $stderr.puts(message) - end - - # Check that the options do not contain options not listed in - # +optdecl+. An ArgumentError exception is thrown if non-declared - # options are found. - def rake_check_options(options, *optdecl) - h = options.dup - optdecl.each do |name| - h.delete name - end - raise ArgumentError, "no such option: #{h.keys.join(' ')}" unless - h.empty? - end - - extend self - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/gempackagetask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/gempackagetask.rb deleted file mode 100644 index 16e7ce04..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/gempackagetask.rb +++ /dev/null @@ -1,4 +0,0 @@ -# TODO: Remove in Rake 11 - -fail "ERROR: 'rake/gempackagetask' is obsolete and no longer supported. " + - "Use 'rubygems/package_task' instead." diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/invocation_chain.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/invocation_chain.rb deleted file mode 100644 index 54062895..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/invocation_chain.rb +++ /dev/null @@ -1,56 +0,0 @@ -module Rake - - # InvocationChain tracks the chain of task invocations to detect - # circular dependencies. - class InvocationChain < LinkedList - - # Is the invocation already in the chain? - def member?(invocation) - head == invocation || tail.member?(invocation) - end - - # Append an invocation to the chain of invocations. It is an error - # if the invocation already listed. - def append(invocation) - if member?(invocation) - fail RuntimeError, "Circular dependency detected: #{to_s} => #{invocation}" - end - conj(invocation) - end - - # Convert to string, ie: TOP => invocation => invocation - def to_s - "#{prefix}#{head}" - end - - # Class level append. - def self.append(invocation, chain) - chain.append(invocation) - end - - private - - def prefix - "#{tail} => " - end - - # Null object for an empty chain. - class EmptyInvocationChain < LinkedList::EmptyLinkedList - @parent = InvocationChain - - def member?(obj) - false - end - - def append(invocation) - conj(invocation) - end - - def to_s - "TOP" - end - end - - EMPTY = EmptyInvocationChain.new - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/late_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/late_time.rb deleted file mode 100644 index d959a782..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/late_time.rb +++ /dev/null @@ -1,17 +0,0 @@ -module Rake - # LateTime is a fake timestamp that occurs _after_ any other time value. - class LateTime - include Comparable - include Singleton - - def <=>(other) - 1 - end - - def to_s - '' - end - end - - LATE = LateTime.instance -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/loaders/makefile.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/loaders/makefile.rb deleted file mode 100644 index 4ece4323..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/loaders/makefile.rb +++ /dev/null @@ -1,40 +0,0 @@ -module Rake - - # Makefile loader to be used with the import file loader. - class MakefileLoader - include Rake::DSL - - SPACE_MARK = "\0" - - # Load the makefile dependencies in +fn+. - def load(fn) - lines = File.read fn - lines.gsub!(/\\ /, SPACE_MARK) - lines.gsub!(/#[^\n]*\n/m, "") - lines.gsub!(/\\\n/, ' ') - lines.each_line do |line| - process_line(line) - end - end - - private - - # Process one logical line of makefile data. - def process_line(line) - file_tasks, args = line.split(':', 2) - return if args.nil? - dependents = args.split.map { |d| respace(d) } - file_tasks.scan(/\S+/) do |file_task| - file_task = respace(file_task) - file file_task => dependents - end - end - - def respace(str) - str.tr SPACE_MARK, ' ' - end - end - - # Install the handler - Rake.application.add_loader('mf', MakefileLoader.new) -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/pathmap.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/pathmap.rb deleted file mode 100644 index 9a840cda..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/pathmap.rb +++ /dev/null @@ -1,3 +0,0 @@ -# TODO: Remove in Rake 11 - -require 'rake/ext/string' diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/private_reader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/private_reader.rb deleted file mode 100644 index 16209785..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/private_reader.rb +++ /dev/null @@ -1,20 +0,0 @@ -module Rake - - # Include PrivateReader to use +private_reader+. - module PrivateReader # :nodoc: all - - def self.included(base) - base.extend(ClassMethods) - end - - module ClassMethods - - # Declare a list of private accessors - def private_reader(*names) - attr_reader(*names) - private(*names) - end - end - - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/promise.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/promise.rb deleted file mode 100644 index 31c45634..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/promise.rb +++ /dev/null @@ -1,99 +0,0 @@ -module Rake - - # A Promise object represents a promise to do work (a chore) in the - # future. The promise is created with a block and a list of - # arguments for the block. Calling value will return the value of - # the promised chore. - # - # Used by ThreadPool. - # - class Promise # :nodoc: all - NOT_SET = Object.new.freeze # :nodoc: - - attr_accessor :recorder - - # Create a promise to do the chore specified by the block. - def initialize(args, &block) - @mutex = Mutex.new - @result = NOT_SET - @error = NOT_SET - @args = args - @block = block - end - - # Return the value of this promise. - # - # If the promised chore is not yet complete, then do the work - # synchronously. We will wait. - def value - unless complete? - stat :sleeping_on, :item_id => object_id - @mutex.synchronize do - stat :has_lock_on, :item_id => object_id - chore - stat :releasing_lock_on, :item_id => object_id - end - end - error? ? raise(@error) : @result - end - - # If no one else is working this promise, go ahead and do the chore. - def work - stat :attempting_lock_on, :item_id => object_id - if @mutex.try_lock - stat :has_lock_on, :item_id => object_id - chore - stat :releasing_lock_on, :item_id => object_id - @mutex.unlock - else - stat :bailed_on, :item_id => object_id - end - end - - private - - # Perform the chore promised - def chore - if complete? - stat :found_completed, :item_id => object_id - return - end - stat :will_execute, :item_id => object_id - begin - @result = @block.call(*@args) - rescue Exception => e - @error = e - end - stat :did_execute, :item_id => object_id - discard - end - - # Do we have a result for the promise - def result? - ! @result.equal?(NOT_SET) - end - - # Did the promise throw an error - def error? - ! @error.equal?(NOT_SET) - end - - # Are we done with the promise - def complete? - result? || error? - end - - # free up these items for the GC - def discard - @args = nil - @block = nil - end - - # Record execution statistics if there is a recorder - def stat(*args) - @recorder.call(*args) if @recorder - end - - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/pseudo_status.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/pseudo_status.rb deleted file mode 100644 index 16e1903b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/pseudo_status.rb +++ /dev/null @@ -1,29 +0,0 @@ -module Rake - - ## - # Exit status class for times the system just gives us a nil. - class PseudoStatus # :nodoc: all - attr_reader :exitstatus - - def initialize(code=0) - @exitstatus = code - end - - def to_i - @exitstatus << 8 - end - - def >>(n) - to_i >> n - end - - def stopped? - false - end - - def exited? - true - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rake_module.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rake_module.rb deleted file mode 100644 index 36927534..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rake_module.rb +++ /dev/null @@ -1,38 +0,0 @@ -require 'rake/application' - -module Rake - - class << self - # Current Rake Application - def application - @application ||= Rake::Application.new - end - - # Set the current Rake application object. - def application=(app) - @application = app - end - - def suggested_thread_count # :nodoc: - @cpu_count ||= Rake::CpuCounter.count - @cpu_count + 4 - end - - # Return the original directory where the Rake application was started. - def original_dir - application.original_dir - end - - # Load a rakefile. - def load_rakefile(path) - load(path) - end - - # Add files to the rakelib list - def add_rakelib(*files) - application.options.rakelib ||= [] - application.options.rakelib.concat(files) - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rake_test_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rake_test_loader.rb deleted file mode 100644 index 7e3a6b3f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rake_test_loader.rb +++ /dev/null @@ -1,22 +0,0 @@ -require 'rake' - -# Load the test files from the command line. -argv = ARGV.select do |argument| - case argument - when /^-/ then - argument - when /\*/ then - FileList[argument].to_a.each do |file| - require File.expand_path file - end - - false - else - require File.expand_path argument - - false - end -end - -ARGV.replace argv - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rdoctask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rdoctask.rb deleted file mode 100644 index 8d7df4f1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rdoctask.rb +++ /dev/null @@ -1,4 +0,0 @@ -# TODO: Remove in Rake 11 - -fail "ERROR: 'rake/rdoctask' is obsolete and no longer supported. " + - "Use 'rdoc/task' (available in RDoc 2.4.2+) instead." diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ruby182_test_unit_fix.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ruby182_test_unit_fix.rb deleted file mode 100644 index 40b30a6f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ruby182_test_unit_fix.rb +++ /dev/null @@ -1,29 +0,0 @@ -# TODO: Remove in rake 11 - -# Local Rake override to fix bug in Ruby 0.8.2 -module Test # :nodoc: - # Local Rake override to fix bug in Ruby 0.8.2 - module Unit # :nodoc: - # Local Rake override to fix bug in Ruby 0.8.2 - module Collector # :nodoc: - # Local Rake override to fix bug in Ruby 0.8.2 - class Dir # :nodoc: - undef collect_file - def collect_file(name, suites, already_gathered) # :nodoc: - dir = File.dirname(File.expand_path(name)) - $:.unshift(dir) unless $:.first == dir - if @req - @req.require(name) - else - require(name) - end - find_test_cases(already_gathered).each do |t| - add_suite(suites, t.suite) - end - ensure - $:.delete_at $:.rindex(dir) - end - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/runtest.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/runtest.rb deleted file mode 100644 index 4774b0e2..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/runtest.rb +++ /dev/null @@ -1,27 +0,0 @@ -require 'test/unit' -require 'test/unit/assertions' -require 'rake/file_list' - -module Rake - include Test::Unit::Assertions - - ## - # Deprecated way of running tests in process, but only for Test::Unit. - #-- - # TODO: Remove in rake 11 - - def run_tests(pattern='test/test*.rb', log_enabled=false) # :nodoc: - FileList.glob(pattern).each do |fn| - $stderr.puts fn if log_enabled - begin - require fn - rescue Exception => ex - $stderr.puts "Error in #{fn}: #{ex.message}" - $stderr.puts ex.backtrace - assert false - end - end - end - - extend self -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task.rb deleted file mode 100644 index 9bcf7255..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task.rb +++ /dev/null @@ -1,383 +0,0 @@ -require 'rake/invocation_exception_mixin' - -module Rake - - ## - # A Task is the basic unit of work in a Rakefile. Tasks have associated - # actions (possibly more than one) and a list of prerequisites. When - # invoked, a task will first ensure that all of its prerequisites have an - # opportunity to run and then it will execute its own actions. - # - # Tasks are not usually created directly using the new method, but rather - # use the +file+ and +task+ convenience methods. - # - class Task - # List of prerequisites for a task. - attr_reader :prerequisites - - # List of actions attached to a task. - attr_reader :actions - - # Application owning this task. - attr_accessor :application - - # Array of nested namespaces names used for task lookup by this task. - attr_reader :scope - - # File/Line locations of each of the task definitions for this - # task (only valid if the task was defined with the detect - # location option set). - attr_reader :locations - - # Return task name - def to_s - name - end - - def inspect # :nodoc: - "<#{self.class} #{name} => [#{prerequisites.join(', ')}]>" - end - - # List of sources for task. - attr_writer :sources - def sources - if defined?(@sources) - @sources - else - prerequisites - end - end - - # List of prerequisite tasks - def prerequisite_tasks - prerequisites.map { |pre| lookup_prerequisite(pre) } - end - - def lookup_prerequisite(prerequisite_name) # :nodoc: - application[prerequisite_name, @scope] - end - private :lookup_prerequisite - - # List of all unique prerequisite tasks including prerequisite tasks' - # prerequisites. - # Includes self when cyclic dependencies are found. - def all_prerequisite_tasks - seen = {} - collect_prerequisites(seen) - seen.values - end - - def collect_prerequisites(seen) # :nodoc: - prerequisite_tasks.each do |pre| - next if seen[pre.name] - seen[pre.name] = pre - pre.collect_prerequisites(seen) - end - end - protected :collect_prerequisites - - # First source from a rule (nil if no sources) - def source - sources.first - end - - # Create a task named +task_name+ with no actions or prerequisites. Use - # +enhance+ to add actions and prerequisites. - def initialize(task_name, app) - @name = task_name.to_s - @prerequisites = [] - @actions = [] - @already_invoked = false - @comments = [] - @lock = Monitor.new - @application = app - @scope = app.current_scope - @arg_names = nil - @locations = [] - end - - # Enhance a task with prerequisites or actions. Returns self. - def enhance(deps=nil, &block) - @prerequisites |= deps if deps - @actions << block if block_given? - self - end - - # Name of the task, including any namespace qualifiers. - def name - @name.to_s - end - - # Name of task with argument list description. - def name_with_args # :nodoc: - if arg_description - "#{name}#{arg_description}" - else - name - end - end - - # Argument description (nil if none). - def arg_description # :nodoc: - @arg_names ? "[#{arg_names.join(',')}]" : nil - end - - # Name of arguments for this task. - def arg_names - @arg_names || [] - end - - # Reenable the task, allowing its tasks to be executed if the task - # is invoked again. - def reenable - @already_invoked = false - end - - # Clear the existing prerequisites and actions of a rake task. - def clear - clear_prerequisites - clear_actions - clear_comments - self - end - - # Clear the existing prerequisites of a rake task. - def clear_prerequisites - prerequisites.clear - self - end - - # Clear the existing actions on a rake task. - def clear_actions - actions.clear - self - end - - # Clear the existing comments on a rake task. - def clear_comments - @comments = [] - self - end - - # Invoke the task if it is needed. Prerequisites are invoked first. - def invoke(*args) - task_args = TaskArguments.new(arg_names, args) - invoke_with_call_chain(task_args, InvocationChain::EMPTY) - end - - # Same as invoke, but explicitly pass a call chain to detect - # circular dependencies. - def invoke_with_call_chain(task_args, invocation_chain) # :nodoc: - new_chain = InvocationChain.append(self, invocation_chain) - @lock.synchronize do - if application.options.trace - application.trace "** Invoke #{name} #{format_trace_flags}" - end - return if @already_invoked - @already_invoked = true - invoke_prerequisites(task_args, new_chain) - execute(task_args) if needed? - end - rescue Exception => ex - add_chain_to(ex, new_chain) - raise ex - end - protected :invoke_with_call_chain - - def add_chain_to(exception, new_chain) # :nodoc: - exception.extend(InvocationExceptionMixin) unless - exception.respond_to?(:chain) - exception.chain = new_chain if exception.chain.nil? - end - private :add_chain_to - - # Invoke all the prerequisites of a task. - def invoke_prerequisites(task_args, invocation_chain) # :nodoc: - if application.options.always_multitask - invoke_prerequisites_concurrently(task_args, invocation_chain) - else - prerequisite_tasks.each { |p| - prereq_args = task_args.new_scope(p.arg_names) - p.invoke_with_call_chain(prereq_args, invocation_chain) - } - end - end - - # Invoke all the prerequisites of a task in parallel. - def invoke_prerequisites_concurrently(task_args, invocation_chain)# :nodoc: - futures = prerequisite_tasks.map do |p| - prereq_args = task_args.new_scope(p.arg_names) - application.thread_pool.future(p) do |r| - r.invoke_with_call_chain(prereq_args, invocation_chain) - end - end - futures.each { |f| f.value } - end - - # Format the trace flags for display. - def format_trace_flags - flags = [] - flags << "first_time" unless @already_invoked - flags << "not_needed" unless needed? - flags.empty? ? "" : "(" + flags.join(", ") + ")" - end - private :format_trace_flags - - # Execute the actions associated with this task. - def execute(args=nil) - args ||= EMPTY_TASK_ARGS - if application.options.dryrun - application.trace "** Execute (dry run) #{name}" - return - end - application.trace "** Execute #{name}" if application.options.trace - application.enhance_with_matching_rule(name) if @actions.empty? - @actions.each do |act| - case act.arity - when 1 - act.call(self) - else - act.call(self, args) - end - end - end - - # Is this task needed? - def needed? - true - end - - # Timestamp for this task. Basic tasks return the current time for their - # time stamp. Other tasks can be more sophisticated. - def timestamp - Time.now - end - - # Add a description to the task. The description can consist of an option - # argument list (enclosed brackets) and an optional comment. - def add_description(description) - return unless description - comment = description.strip - add_comment(comment) if comment && ! comment.empty? - end - - def comment=(comment) # :nodoc: - add_comment(comment) - end - - def add_comment(comment) # :nodoc: - return if comment.nil? - @comments << comment unless @comments.include?(comment) - end - private :add_comment - - # Full collection of comments. Multiple comments are separated by - # newlines. - def full_comment - transform_comments("\n") - end - - # First line (or sentence) of all comments. Multiple comments are - # separated by a "/". - def comment - transform_comments(" / ") { |c| first_sentence(c) } - end - - # Transform the list of comments as specified by the block and - # join with the separator. - def transform_comments(separator, &block) - if @comments.empty? - nil - else - block ||= lambda { |c| c } - @comments.map(&block).join(separator) - end - end - private :transform_comments - - # Get the first sentence in a string. The sentence is terminated - # by the first period or the end of the line. Decimal points do - # not count as periods. - def first_sentence(string) - string.split(/\.[ \t]|\.$|\n/).first - end - private :first_sentence - - # Set the names of the arguments for this task. +args+ should be - # an array of symbols, one for each argument name. - def set_arg_names(args) - @arg_names = args.map { |a| a.to_sym } - end - - # Return a string describing the internal state of a task. Useful for - # debugging. - def investigation - result = "------------------------------\n" - result << "Investigating #{name}\n" - result << "class: #{self.class}\n" - result << "task needed: #{needed?}\n" - result << "timestamp: #{timestamp}\n" - result << "pre-requisites: \n" - prereqs = prerequisite_tasks - prereqs.sort! { |a, b| a.timestamp <=> b.timestamp } - prereqs.each do |p| - result << "--#{p.name} (#{p.timestamp})\n" - end - latest_prereq = prerequisite_tasks.map { |pre| pre.timestamp }.max - result << "latest-prerequisite time: #{latest_prereq}\n" - result << "................................\n\n" - return result - end - - # ---------------------------------------------------------------- - # Rake Module Methods - # - class << self - - # Clear the task list. This cause rake to immediately forget all the - # tasks that have been assigned. (Normally used in the unit tests.) - def clear - Rake.application.clear - end - - # List of all defined tasks. - def tasks - Rake.application.tasks - end - - # Return a task with the given name. If the task is not currently - # known, try to synthesize one from the defined rules. If no rules are - # found, but an existing file matches the task name, assume it is a file - # task with no dependencies or actions. - def [](task_name) - Rake.application[task_name] - end - - # TRUE if the task name is already defined. - def task_defined?(task_name) - Rake.application.lookup(task_name) != nil - end - - # Define a task given +args+ and an option block. If a rule with the - # given name already exists, the prerequisites and actions are added to - # the existing task. Returns the defined task. - def define_task(*args, &block) - Rake.application.define_task(self, *args, &block) - end - - # Define a rule for synthesizing tasks. - def create_rule(*args, &block) - Rake.application.create_rule(*args, &block) - end - - # Apply the scope to the task name according to the rules for - # this kind of task. Generic tasks will accept the scope as - # part of the name. - def scope_name(scope, task_name) -# (scope + [task_name]).join(':') - scope.path_with_task_name(task_name) - end - - end # class << Rake::Task - end # class Rake::Task -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task_argument_error.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task_argument_error.rb deleted file mode 100644 index 3e1dda64..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task_argument_error.rb +++ /dev/null @@ -1,7 +0,0 @@ -module Rake - - # Error indicating an ill-formed task declaration. - class TaskArgumentError < ArgumentError - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task_arguments.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task_arguments.rb deleted file mode 100644 index fc0d6572..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task_arguments.rb +++ /dev/null @@ -1,98 +0,0 @@ -module Rake - - ## - # TaskArguments manage the arguments passed to a task. - # - class TaskArguments - include Enumerable - - # Argument names - attr_reader :names - - # Create a TaskArgument object with a list of argument +names+ and a set - # of associated +values+. +parent+ is the parent argument object. - def initialize(names, values, parent=nil) - @names = names - @parent = parent - @hash = {} - @values = values - names.each_with_index { |name, i| - @hash[name.to_sym] = values[i] unless values[i].nil? - } - end - - # Retrieve the complete array of sequential values - def to_a - @values.dup - end - - # Retrieve the list of values not associated with named arguments - def extras - @values[@names.length..-1] || [] - end - - # Create a new argument scope using the prerequisite argument - # names. - def new_scope(names) - values = names.map { |n| self[n] } - self.class.new(names, values + extras, self) - end - - # Find an argument value by name or index. - def [](index) - lookup(index.to_sym) - end - - # Specify a hash of default values for task arguments. Use the - # defaults only if there is no specific value for the given - # argument. - def with_defaults(defaults) - @hash = defaults.merge(@hash) - end - - # Enumerates the arguments and their values - def each(&block) - @hash.each(&block) - end - - # Extracts the argument values at +keys+ - def values_at(*keys) - keys.map { |k| lookup(k) } - end - - # Returns the value of the given argument via method_missing - def method_missing(sym, *args) - lookup(sym.to_sym) - end - - # Returns a Hash of arguments and their values - def to_hash - @hash - end - - def to_s # :nodoc: - @hash.inspect - end - - def inspect # :nodoc: - to_s - end - - # Returns true if +key+ is one of the arguments - def has_key?(key) - @hash.has_key?(key) - end - - protected - - def lookup(name) # :nodoc: - if @hash.has_key?(name) - @hash[name] - elsif @parent - @parent.lookup(name) - end - end - end - - EMPTY_TASK_ARGS = TaskArguments.new([], []) # :nodoc: -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/tasklib.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/tasklib.rb deleted file mode 100644 index 6203d940..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/tasklib.rb +++ /dev/null @@ -1,24 +0,0 @@ -require 'rake' - -module Rake - - # Base class for Task Libraries. - class TaskLib - include Cloneable - include Rake::DSL - - # Make a symbol by pasting two strings together. - # - # NOTE: DEPRECATED! This method is kinda stupid. I don't know why - # I didn't just use string interpolation. But now other task - # libraries depend on this so I can't remove it without breaking - # other people's code. So for now it stays for backwards - # compatibility. BUT DON'T USE IT. - #-- - # TODO: Remove in Rake 11 - def paste(a, b) # :nodoc: - (a.to_s + b.to_s).intern - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/testtask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/testtask.rb deleted file mode 100644 index 2daa5896..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/testtask.rb +++ /dev/null @@ -1,212 +0,0 @@ -require 'rake' -require 'rake/tasklib' - -module Rake - - # Create a task that runs a set of tests. - # - # Example: - # - # Rake::TestTask.new do |t| - # t.libs << "test" - # t.test_files = FileList['test/test*.rb'] - # t.verbose = true - # end - # - # If rake is invoked with a "TEST=filename" command line option, - # then the list of test files will be overridden to include only the - # filename specified on the command line. This provides an easy way - # to run just one test. - # - # If rake is invoked with a "TESTOPTS=options" command line option, - # then the given options are passed to the test process after a - # '--'. This allows Test::Unit options to be passed to the test - # suite. - # - # Examples: - # - # rake test # run tests normally - # rake test TEST=just_one_file.rb # run just one test file. - # rake test TESTOPTS="-v" # run in verbose mode - # rake test TESTOPTS="--runner=fox" # use the fox test runner - # - class TestTask < TaskLib - - # Name of test task. (default is :test) - attr_accessor :name - - # List of directories to added to $LOAD_PATH before running the - # tests. (default is 'lib') - attr_accessor :libs - - # True if verbose test output desired. (default is false) - attr_accessor :verbose - - # Test options passed to the test suite. An explicit - # TESTOPTS=opts on the command line will override this. (default - # is NONE) - attr_accessor :options - - # Request that the tests be run with the warning flag set. - # E.g. warning=true implies "ruby -w" used to run the tests. - attr_accessor :warning - - # Glob pattern to match test files. (default is 'test/test*.rb') - attr_accessor :pattern - - # Style of test loader to use. Options are: - # - # * :rake -- Rake provided test loading script (default). - # * :testrb -- Ruby provided test loading script. - # * :direct -- Load tests using command line loader. - # - attr_accessor :loader - - # Array of commandline options to pass to ruby when running test loader. - attr_accessor :ruby_opts - - # Description of the test task. (default is 'Run tests') - attr_accessor :description - - # Explicitly define the list of test files to be included in a - # test. +list+ is expected to be an array of file names (a - # FileList is acceptable). If both +pattern+ and +test_files+ are - # used, then the list of test files is the union of the two. - def test_files=(list) - @test_files = list - end - - # Create a testing task. - def initialize(name=:test) - @name = name - @libs = ["lib"] - @pattern = nil - @options = nil - @test_files = nil - @verbose = false - @warning = false - @loader = :rake - @ruby_opts = [] - @description = "Run tests" + (@name == :test ? "" : " for #{@name}") - yield self if block_given? - @pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil? - define - end - - # Create the tasks defined by this task lib. - def define - desc @description - task @name do - FileUtilsExt.verbose(@verbose) do - args = - "#{ruby_opts_string} #{run_code} " + - "#{file_list_string} #{option_list}" - ruby args do |ok, status| - if !ok && status.respond_to?(:signaled?) && status.signaled? - raise SignalException.new(status.termsig) - elsif !ok - fail "Command failed with status (#{status.exitstatus}): " + - "[ruby #{args}]" - end - end - end - end - self - end - - def option_list # :nodoc: - (ENV['TESTOPTS'] || - ENV['TESTOPT'] || - ENV['TEST_OPTS'] || - ENV['TEST_OPT'] || - @options || - "") - end - - def ruby_opts_string # :nodoc: - opts = @ruby_opts.dup - opts.unshift("-I\"#{lib_path}\"") unless @libs.empty? - opts.unshift("-w") if @warning - opts.join(" ") - end - - def lib_path # :nodoc: - @libs.join(File::PATH_SEPARATOR) - end - - def file_list_string # :nodoc: - file_list.map { |fn| "\"#{fn}\"" }.join(' ') - end - - def file_list # :nodoc: - if ENV['TEST'] - FileList[ENV['TEST']] - else - result = [] - result += @test_files.to_a if @test_files - result << @pattern if @pattern - result - end - end - - def fix # :nodoc: - case ruby_version - when '1.8.2' - "\"#{find_file 'rake/ruby182_test_unit_fix'}\"" - else - nil - end || '' - end - - def ruby_version # :nodoc: - RUBY_VERSION - end - - def run_code # :nodoc: - case @loader - when :direct - "-e \"ARGV.each{|f| require f}\"" - when :testrb - "-S testrb #{fix}" - when :rake - "#{rake_include_arg} \"#{rake_loader}\"" - end - end - - def rake_loader # :nodoc: - find_file('rake/rake_test_loader') or - fail "unable to find rake test loader" - end - - def find_file(fn) # :nodoc: - $LOAD_PATH.each do |path| - file_path = File.join(path, "#{fn}.rb") - return file_path if File.exist? file_path - end - nil - end - - def rake_include_arg # :nodoc: - spec = Gem.loaded_specs['rake'] - if spec.respond_to?(:default_gem?) && spec.default_gem? - "" - else - "-I\"#{rake_lib_dir}\"" - end - end - - def rake_lib_dir # :nodoc: - find_dir('rake') or - fail "unable to find rake lib" - end - - def find_dir(fn) # :nodoc: - $LOAD_PATH.each do |path| - file_path = File.join(path, "#{fn}.rb") - return path if File.exist? file_path - end - nil - end - - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/thread_history_display.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/thread_history_display.rb deleted file mode 100644 index c2af9ece..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/thread_history_display.rb +++ /dev/null @@ -1,48 +0,0 @@ -require 'rake/private_reader' - -module Rake - - class ThreadHistoryDisplay # :nodoc: all - include Rake::PrivateReader - - private_reader :stats, :items, :threads - - def initialize(stats) - @stats = stats - @items = { :_seq_ => 1 } - @threads = { :_seq_ => "A" } - end - - def show - puts "Job History:" - stats.each do |stat| - stat[:data] ||= {} - rename(stat, :thread, threads) - rename(stat[:data], :item_id, items) - rename(stat[:data], :new_thread, threads) - rename(stat[:data], :deleted_thread, threads) - printf("%8d %2s %-20s %s\n", - (stat[:time] * 1_000_000).round, - stat[:thread], - stat[:event], - stat[:data].map do |k, v| "#{k}:#{v}" end.join(" ")) - end - end - - private - - def rename(hash, key, renames) - if hash && hash[key] - original = hash[key] - value = renames[original] - unless value - value = renames[:_seq_] - renames[:_seq_] = renames[:_seq_].succ - renames[original] = value - end - hash[key] = value - end - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/thread_pool.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/thread_pool.rb deleted file mode 100644 index d2ac6e7a..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/thread_pool.rb +++ /dev/null @@ -1,164 +0,0 @@ -require 'thread' -require 'set' - -require 'rake/promise' - -module Rake - - class ThreadPool # :nodoc: all - - # Creates a ThreadPool object. The +thread_count+ parameter is the size - # of the pool. - def initialize(thread_count) - @max_active_threads = [thread_count, 0].max - @threads = Set.new - @threads_mon = Monitor.new - @queue = Queue.new - @join_cond = @threads_mon.new_cond - - @history_start_time = nil - @history = [] - @history_mon = Monitor.new - @total_threads_in_play = 0 - end - - # Creates a future executed by the +ThreadPool+. - # - # The args are passed to the block when executing (similarly to - # Thread#new) The return value is an object representing - # a future which has been created and added to the queue in the - # pool. Sending #value to the object will sleep the - # current thread until the future is finished and will return the - # result (or raise an exception thrown from the future) - def future(*args, &block) - promise = Promise.new(args, &block) - promise.recorder = lambda { |*stats| stat(*stats) } - - @queue.enq promise - stat :queued, :item_id => promise.object_id - start_thread - promise - end - - # Waits until the queue of futures is empty and all threads have exited. - def join - @threads_mon.synchronize do - begin - stat :joining - @join_cond.wait unless @threads.empty? - stat :joined - rescue Exception => e - stat :joined - $stderr.puts e - $stderr.print "Queue contains #{@queue.size} items. " + - "Thread pool contains #{@threads.count} threads\n" - $stderr.print "Current Thread #{Thread.current} status = " + - "#{Thread.current.status}\n" - $stderr.puts e.backtrace.join("\n") - @threads.each do |t| - $stderr.print "Thread #{t} status = #{t.status}\n" - # 1.8 doesn't support Thread#backtrace - $stderr.puts t.backtrace.join("\n") if t.respond_to? :backtrace - end - raise e - end - end - end - - # Enable the gathering of history events. - def gather_history #:nodoc: - @history_start_time = Time.now if @history_start_time.nil? - end - - # Return a array of history events for the thread pool. - # - # History gathering must be enabled to be able to see the events - # (see #gather_history). Best to call this when the job is - # complete (i.e. after ThreadPool#join is called). - def history # :nodoc: - @history_mon.synchronize { @history.dup }. - sort_by { |i| i[:time] }. - each { |i| i[:time] -= @history_start_time } - end - - # Return a hash of always collected statistics for the thread pool. - def statistics # :nodoc: - { - :total_threads_in_play => @total_threads_in_play, - :max_active_threads => @max_active_threads, - } - end - - private - - # processes one item on the queue. Returns true if there was an - # item to process, false if there was no item - def process_queue_item #:nodoc: - return false if @queue.empty? - - # Even though we just asked if the queue was empty, it - # still could have had an item which by this statement - # is now gone. For this reason we pass true to Queue#deq - # because we will sleep indefinitely if it is empty. - promise = @queue.deq(true) - stat :dequeued, :item_id => promise.object_id - promise.work - return true - - rescue ThreadError # this means the queue is empty - false - end - - def safe_thread_count - @threads_mon.synchronize do - @threads.count - end - end - - def start_thread # :nodoc: - @threads_mon.synchronize do - next unless @threads.count < @max_active_threads - - t = Thread.new do - begin - while safe_thread_count <= @max_active_threads - break unless process_queue_item - end - ensure - @threads_mon.synchronize do - @threads.delete Thread.current - stat :ended, :thread_count => @threads.count - @join_cond.broadcast if @threads.empty? - end - end - end - - @threads << t - stat( - :spawned, - :new_thread => t.object_id, - :thread_count => @threads.count) - @total_threads_in_play = @threads.count if - @threads.count > @total_threads_in_play - end - end - - def stat(event, data=nil) # :nodoc: - return if @history_start_time.nil? - info = { - :event => event, - :data => data, - :time => Time.now, - :thread => Thread.current.object_id, - } - @history_mon.synchronize { @history << info } - end - - # for testing only - - def __queue__ # :nodoc: - @queue - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/trace_output.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/trace_output.rb deleted file mode 100644 index 396096d4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/trace_output.rb +++ /dev/null @@ -1,22 +0,0 @@ -module Rake - module TraceOutput # :nodoc: all - - # Write trace output to output stream +out+. - # - # The write is done as a single IO call (to print) to lessen the - # chance that the trace output is interrupted by other tasks also - # producing output. - def trace_on(out, *strings) - sep = $\ || "\n" - if strings.empty? - output = sep - else - output = strings.map { |s| - next if s.nil? - s =~ /#{sep}$/ ? s : s + sep - }.join - end - out.print(output) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/version.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/version.rb deleted file mode 100644 index b9b1b2d4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/version.rb +++ /dev/null @@ -1,7 +0,0 @@ -module Rake - module Version # :nodoc: all - MAJOR, MINOR, BUILD, *OTHER = Rake::VERSION.split '.' - - NUMBERS = [MAJOR, MINOR, BUILD, *OTHER] - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/win32.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/win32.rb deleted file mode 100644 index 6b4873da..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/win32.rb +++ /dev/null @@ -1,56 +0,0 @@ - -module Rake - require 'rake/alt_system' - - # Win 32 interface methods for Rake. Windows specific functionality - # will be placed here to collect that knowledge in one spot. - module Win32 # :nodoc: all - - # Error indicating a problem in locating the home directory on a - # Win32 system. - class Win32HomeError < RuntimeError - end - - class << self - # True if running on a windows system. - def windows? - AltSystem::WINDOWS - end - - # Run a command line on windows. - def rake_system(*cmd) - AltSystem.system(*cmd) - end - - # The standard directory containing system wide rake files on - # Win 32 systems. Try the following environment variables (in - # order): - # - # * HOME - # * HOMEDRIVE + HOMEPATH - # * APPDATA - # * USERPROFILE - # - # If the above are not defined, the return nil. - def win32_system_dir #:nodoc: - win32_shared_path = ENV['HOME'] - if win32_shared_path.nil? && ENV['HOMEDRIVE'] && ENV['HOMEPATH'] - win32_shared_path = ENV['HOMEDRIVE'] + ENV['HOMEPATH'] - end - - win32_shared_path ||= ENV['APPDATA'] - win32_shared_path ||= ENV['USERPROFILE'] - raise Win32HomeError, - "Unable to determine home path environment variable." if - win32_shared_path.nil? or win32_shared_path.empty? - normalize(File.join(win32_shared_path, 'Rake')) - end - - # Normalize a win32 path so that the slashes are all forward slashes. - def normalize(path) - path.gsub(/\\/, '/') - end - - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/rakelib/publish.rake b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/rakelib/publish.rake deleted file mode 100644 index 40474aba..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/rakelib/publish.rake +++ /dev/null @@ -1,20 +0,0 @@ -# Optional publish task for Rake - -begin - require 'rake/contrib/sshpublisher' - require 'rake/contrib/rubyforgepublisher' - - publisher = Rake::SshDirPublisher.new( - 'linode', - 'htdocs/software/rake', - 'html') - - desc "Publish the Documentation to RubyForge." - task :publish => [:rdoc] do - publisher.upload - end - -rescue LoadError => ex - puts "#{ex.message} (#{ex.class})" - puts "No Publisher Task Available" -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/rakelib/test_times.rake b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/rakelib/test_times.rake deleted file mode 100644 index daf1bc6e..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/rakelib/test_times.rake +++ /dev/null @@ -1,25 +0,0 @@ -module TestTimes - def self.run(test_results, limit=0) - limit = limit.nonzero? || 10 - tests = [] - test_results.split(/\n/).each do |line| - if line =~ /^(.+?#[^:]+): ([0-9.]+) s: \.$/ - tests << [$1, $2.to_f, line] - end - end - - puts "#{limit} Slowest tests" - puts tests.sort_by { |item| - item[1] - }.reverse[0...limit].map { |item| - "%6.3f: %-s\n" % [item[1], item[0]] - } - end -end - -namespace :test do - desc "Find the slowest unit tests" - task :times, [:limit] do |t, args| - TestTimes.run `rake test:units TESTOPTS='--verbose'`, args.limit.to_i - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/file_creation.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/file_creation.rb deleted file mode 100644 index facc57a0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/file_creation.rb +++ /dev/null @@ -1,34 +0,0 @@ -module FileCreation - OLDFILE = "old" - NEWFILE = "new" - - def create_timed_files(oldfile, *newfiles) - return if (File.exist?(oldfile) && - newfiles.all? { |newfile| - File.exist?(newfile) && File.stat(newfile).mtime > File.stat(oldfile).mtime - }) - now = Time.now - - create_file(oldfile, now - 60) - - newfiles.each do |newfile| - create_file(newfile, now) - end - end - - def create_dir(dirname) - FileUtils.mkdir_p(dirname) unless File.exist?(dirname) - File.stat(dirname).mtime - end - - def create_file(name, file_time=nil) - create_dir(File.dirname(name)) - FileUtils.touch(name) unless File.exist?(name) - File.utime(file_time, file_time, name) unless file_time.nil? - File.stat(name).mtime - end - - def delete_file(name) - File.delete(name) rescue nil - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/helper.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/helper.rb deleted file mode 100644 index 2ff599e6..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/helper.rb +++ /dev/null @@ -1,130 +0,0 @@ -require 'rubygems' -$:.unshift File.expand_path('../../lib', __FILE__) - -begin - gem 'minitest', '~> 5' -rescue Gem::LoadError -end - -require 'minitest/autorun' -require 'rake' -require 'tmpdir' -require File.expand_path('../file_creation', __FILE__) - - -begin - require_relative '../ruby/envutil' - require_relative 'support/ruby_runner' - require_relative 'support/rakefile_definitions' -rescue NoMethodError, LoadError - # ruby 1.8 - require 'test/support/ruby_runner' - require 'test/support/rakefile_definitions' -end - -class Rake::TestCase < Minitest::Test - include FileCreation - - include Rake::DSL - - class TaskManager - include Rake::TaskManager - end - - RUBY = defined?(EnvUtil) ? EnvUtil.rubybin : Gem.ruby - - def setup - ARGV.clear - - test_dir = File.basename File.dirname File.expand_path __FILE__ - - @rake_root = - if test_dir == 'test' - # rake repository - File.expand_path '../../', __FILE__ - else - # ruby repository - File.expand_path '../../../', __FILE__ - end - - @verbose = ENV['VERBOSE'] - - @rake_exec = File.join @rake_root, 'bin', 'rake' - @rake_lib = File.join @rake_root, 'lib' - @ruby_options = ["-I#{@rake_lib}", "-I."] - - @orig_pwd = Dir.pwd - @orig_appdata = ENV['APPDATA'] - @orig_home = ENV['HOME'] - @orig_homedrive = ENV['HOMEDRIVE'] - @orig_homepath = ENV['HOMEPATH'] - @orig_rake_columns = ENV['RAKE_COLUMNS'] - @orig_rake_system = ENV['RAKE_SYSTEM'] - @orig_rakeopt = ENV['RAKEOPT'] - @orig_userprofile = ENV['USERPROFILE'] - ENV.delete 'RAKE_COLUMNS' - ENV.delete 'RAKE_SYSTEM' - ENV.delete 'RAKEOPT' - - tmpdir = Dir.chdir Dir.tmpdir do Dir.pwd end - @tempdir = File.join tmpdir, "test_rake_#{$$}" - - FileUtils.mkdir_p @tempdir - - Dir.chdir @tempdir - - Rake.application = Rake::Application.new - Rake::TaskManager.record_task_metadata = true - RakeFileUtils.verbose_flag = false - end - - def teardown - Dir.chdir @orig_pwd - FileUtils.rm_rf @tempdir - - if @orig_appdata - ENV['APPDATA'] = @orig_appdata - else - ENV.delete 'APPDATA' - end - - ENV['HOME'] = @orig_home - ENV['HOMEDRIVE'] = @orig_homedrive - ENV['HOMEPATH'] = @orig_homepath - ENV['RAKE_COLUMNS'] = @orig_rake_columns - ENV['RAKE_SYSTEM'] = @orig_rake_system - ENV['RAKEOPT'] = @orig_rakeopt - ENV['USERPROFILE'] = @orig_userprofile - end - - def ignore_deprecations - Rake.application.options.ignore_deprecate = true - yield - ensure - Rake.application.options.ignore_deprecate = false - end - - def rake_system_dir - @system_dir = 'system' - - FileUtils.mkdir_p @system_dir - - open File.join(@system_dir, 'sys1.rake'), 'w' do |io| - io << <<-SYS -task "sys1" do - puts "SYS1" -end - SYS - end - - ENV['RAKE_SYSTEM'] = @system_dir - end - - def rakefile(contents) - open 'Rakefile', 'w' do |io| - io << contents - end - end - - include RakefileDefinitions -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/support/rakefile_definitions.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/support/rakefile_definitions.rb deleted file mode 100644 index a637c7e9..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/support/rakefile_definitions.rb +++ /dev/null @@ -1,478 +0,0 @@ -module RakefileDefinitions - include FileUtils - - def rakefile_access - rakefile <<-ACCESS -TOP_LEVEL_CONSTANT = 0 - -def a_top_level_function -end - -task :default => [:work, :obj, :const] - -task :work do - begin - a_top_level_function - puts "GOOD:M Top level methods can be called in tasks" - rescue NameError => ex - puts "BAD:M Top level methods can not be called in tasks" - end -end - -# TODO: remove `disabled_' when DeprecatedObjectDSL removed -task :obj -task :disabled_obj do - begin - Object.new.instance_eval { task :xyzzy } - puts "BAD:D Rake DSL are polluting objects" - rescue StandardError => ex - puts "GOOD:D Rake DSL are not polluting objects" - end -end - -task :const do - begin - TOP_LEVEL_CONSTANT - puts "GOOD:C Top level constants are available in tasks" - rescue StandardError => ex - puts "BAD:C Top level constants are NOT available in tasks" - end -end - ACCESS - end - - def rakefile_test_task - rakefile <<-RAKEFILE - require "rake/testtask" - - Rake::TestTask.new(:unit) do |t| - t.description = "custom test task description" - end - RAKEFILE - end - - def rakefile_chains - rakefile <<-DEFAULT -task :default => "play.app" - -file "play.scpt" => "base" do |t| - cp t.prerequisites.first, t.name -end - -rule ".app" => ".scpt" do |t| - cp t.source, t.name -end - -file 'base' do - touch 'base' -end - DEFAULT - end - - def rakefile_comments - rakefile <<-COMMENTS -# comment for t1 -task :t1 do -end - -# no comment or task because there's a blank line - -task :t2 do -end - -desc "override comment for t3" -# this is not the description -multitask :t3 do -end - -# this is not the description -desc "override comment for t4" -file :t4 do -end - COMMENTS - end - - def rakefile_default - rakefile <<-DEFAULT -if ENV['TESTTOPSCOPE'] - puts "TOPSCOPE" -end - -task :default do - puts "DEFAULT" -end - -task :other => [:default] do - puts "OTHER" -end - -task :task_scope do - if ENV['TESTTASKSCOPE'] - puts "TASKSCOPE" - end -end - DEFAULT - end - - def rakefile_dryrun - rakefile <<-DRYRUN -task :default => ["temp_main"] - -file "temp_main" => [:all_apps] do touch "temp_main" end - -task :all_apps => [:one, :two] -task :one => ["temp_one"] -task :two => ["temp_two"] - -file "temp_one" do |t| - touch "temp_one" -end -file "temp_two" do |t| - touch "temp_two" -end - -task :clean do - ["temp_one", "temp_two", "temp_main"].each do |file| - rm_f file - end -end - DRYRUN - - FileUtils.touch 'temp_main' - FileUtils.touch 'temp_two' - end - - def rakefile_extra - rakefile 'task :default' - - FileUtils.mkdir_p 'rakelib' - - open File.join('rakelib', 'extra.rake'), 'w' do |io| - io << <<-EXTRA_RAKE -# Added for testing - -namespace :extra do - desc "An Extra Task" - task :extra do - puts "Read all about it" - end -end - EXTRA_RAKE - end - end - - def rakefile_file_creation - rakefile <<-'FILE_CREATION' -N = 2 - -task :default => :run - -BUILD_DIR = 'build' -task :clean do - rm_rf 'build' - rm_rf 'src' -end - -task :run - -TARGET_DIR = 'build/copies' - -FileList['src/*'].each do |src| - directory TARGET_DIR - target = File.join TARGET_DIR, File.basename(src) - file target => [src, TARGET_DIR] do - cp src, target - end - task :run => target -end - -task :prep => :clean do - mkdir_p 'src' - N.times do |n| - touch "src/foo#{n}" - end -end - FILE_CREATION - end - - def rakefile_imports - rakefile <<-IMPORTS -require 'rake/loaders/makefile' - -task :default - -task :other do - puts "OTHER" -end - -file "dynamic_deps" do |t| - open(t.name, "w") do |f| f.puts "puts 'DYNAMIC'" end -end - -import "dynamic_deps" -import "static_deps" -import "static_deps" -import "deps.mf" -puts "FIRST" - IMPORTS - - open 'deps.mf', 'w' do |io| - io << <<-DEPS -default: other - DEPS - end - - open "static_deps", "w" do |f| - f.puts 'puts "STATIC"' - end - end - - def rakefile_regenerate_imports - rakefile <<-REGENERATE_IMPORTS -task :default - -task :regenerate do - open("deps", "w") do |f| - f << <<-CONTENT -file "deps" => :regenerate -puts "REGENERATED" - CONTENT - end -end - -import "deps" - REGENERATE_IMPORTS - - open "deps", "w" do |f| - f << <<-CONTENT -file "deps" => :regenerate -puts "INITIAL" - CONTENT - end - end - - def rakefile_multidesc - rakefile <<-MULTIDESC -task :b - -desc "A" -task :a - -desc "B" -task :b - -desc "A2" -task :a - -task :c - -desc "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -task :d - MULTIDESC - end - - def rakefile_namespace - rakefile <<-NAMESPACE -desc "copy" -task :copy do - puts "COPY" -end - -namespace "nest" do - desc "nest copy" - task :copy do - puts "NEST COPY" - end - task :xx => :copy -end - -anon_ns = namespace do - desc "anonymous copy task" - task :copy do - puts "ANON COPY" - end -end - -desc "Top level task to run the anonymous version of copy" -task :anon => anon_ns[:copy] - -namespace "very" do - namespace "nested" do - task "run" => "rake:copy" - end -end - -namespace "a" do - desc "Run task in the 'a' namespace" - task "run" do - puts "IN A" - end -end - -namespace "b" do - desc "Run task in the 'b' namespace" - task "run" => "a:run" do - puts "IN B" - end -end - -namespace "file1" do - file "xyz.rb" do - puts "XYZ1" - end -end - -namespace "file2" do - file "xyz.rb" do - puts "XYZ2" - end -end - -namespace "scopedep" do - task :prepare do - touch "scopedep.rb" - puts "PREPARE" - end - file "scopedep.rb" => [:prepare] do - puts "SCOPEDEP" - end -end - NAMESPACE - end - - def rakefile_nosearch - FileUtils.touch 'dummy' - end - - def rakefile_rakelib - FileUtils.mkdir_p 'rakelib' - - Dir.chdir 'rakelib' do - open 'test1.rb', 'w' do |io| - io << <<-TEST1 -task :default do - puts "TEST1" -end - TEST1 - end - - open 'test2.rake', 'w' do |io| - io << <<-TEST1 -task :default do - puts "TEST2" -end - TEST1 - end - end - end - - def rakefile_rbext - open 'rakefile.rb', 'w' do |io| - io << 'task :default do puts "OK" end' - end - end - - def rakefile_unittest - rakefile '# Empty Rakefile for Unit Test' - - readme = File.join 'subdir', 'README' - FileUtils.mkdir_p File.dirname readme - - FileUtils.touch readme - end - - def rakefile_verbose - rakefile <<-VERBOSE -task :standalone_verbose_true do - verbose true - sh "#{RUBY} -e '0'" -end - -task :standalone_verbose_false do - verbose false - sh "#{RUBY} -e '0'" -end - -task :inline_verbose_default do - sh "#{RUBY} -e '0'" -end - -task :inline_verbose_false do - sh "#{RUBY} -e '0'", :verbose => false -end - -task :inline_verbose_true do - sh "#{RUBY} -e '0'", :verbose => true -end - -task :block_verbose_true do - verbose(true) do - sh "#{RUBY} -e '0'" - end -end - -task :block_verbose_false do - verbose(false) do - sh "#{RUBY} -e '0'" - end -end - VERBOSE - end - - def rakefile_test_signal - rakefile <<-TEST_SIGNAL -require 'rake/testtask' - -Rake::TestTask.new(:a) do |t| - t.test_files = ['a_test.rb'] -end - -Rake::TestTask.new(:b) do |t| - t.test_files = ['b_test.rb'] -end - -task :test do - Rake::Task[:a].invoke - Rake::Task[:b].invoke -end - -task :default => :test - TEST_SIGNAL - open 'a_test.rb', 'w' do |io| - io << 'puts "ATEST"' << "\n" - io << '$stdout.flush' << "\n" - io << 'Process.kill("TERM", $$)' << "\n" - end - open 'b_test.rb', 'w' do |io| - io << 'puts "BTEST"' << "\n" - io << '$stdout.flush' << "\n" - end - end - - def rakefile_failing_test_task - rakefile <<-TEST_TASK -require 'rake/testtask' - -task :default => :test -Rake::TestTask.new(:test) do |t| - t.test_files = ['a_test.rb'] -end - TEST_TASK - open 'a_test.rb', 'w' do |io| - io << "require 'minitest/autorun'\n" - io << "class ExitTaskTest < Minitest::Test\n" - io << " def test_exit\n" - io << " assert false, 'this should fail'\n" - io << " end\n" - io << "end\n" - end - end - - def rakefile_stand_alone_filelist - open 'stand_alone_filelist.rb', 'w' do |io| - io << "require 'rake/file_list'\n" - io << "FL = Rake::FileList['*.rb']\n" - io << "puts FL\n" - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/support/ruby_runner.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/support/ruby_runner.rb deleted file mode 100644 index d51dd24b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/support/ruby_runner.rb +++ /dev/null @@ -1,34 +0,0 @@ -module RubyRunner - include FileUtils - - # Run a shell Ruby command with command line options (using the - # default test options). Output is captured in @out and @err - def ruby(*option_list) - run_ruby(@ruby_options + option_list) - end - - # Run a command line rake with the give rake options. Default - # command line ruby options are included. Output is captured in - # @out and @err - def rake(*rake_options) - run_ruby @ruby_options + [@rake_exec] + rake_options - end - - # Low level ruby command runner ... - def run_ruby(option_list) - puts "COMMAND: [#{RUBY} #{option_list.join ' '}]" if @verbose - - Open3.popen3(RUBY, *option_list) {|inn, out, err, wait| - inn.close - - @exit = wait ? wait.value : $? - @out = out.read - @err = err.read - } - - puts "OUTPUT: [#{@out}]" if @verbose - puts "ERROR: [#{@err}]" if @verbose - puts "EXIT: [#{@exit.inspect}]" if @verbose - puts "PWD: [#{Dir.pwd}]" if @verbose - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_private_reader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_private_reader.rb deleted file mode 100644 index f86d4249..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_private_reader.rb +++ /dev/null @@ -1,42 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/private_reader' - -class TestPrivateAttrs < Rake::TestCase - - class Sample - include Rake::PrivateReader - - private_reader :reader, :a - - def initialize - @reader = :RVALUE - end - - def get_reader - reader - end - - end - - def setup - super - @sample = Sample.new - end - - def test_private_reader_is_private - assert_private do @sample.reader end - assert_private do @sample.a end - end - - def test_private_reader_returns_data - assert_equal :RVALUE, @sample.get_reader - end - - private - - def assert_private - ex = assert_raises(NoMethodError) do yield end - assert_match(/private/, ex.message) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake.rb deleted file mode 100644 index b2a3928b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake.rb +++ /dev/null @@ -1,40 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRake < Rake::TestCase - def test_each_dir_parent - assert_equal ['a'], alldirs('a') - assert_equal ['a/b', 'a'], alldirs('a/b') - assert_equal ['/a/b', '/a', '/'], alldirs('/a/b') - if File.dirname("c:/foo") == "c:" - # Under Unix - assert_equal ['c:/a/b', 'c:/a', 'c:'], alldirs('c:/a/b') - assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b') - else - # Under Windows - assert_equal ['c:/a/b', 'c:/a', 'c:/'], alldirs('c:/a/b') - assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b') - end - end - - def alldirs(fn) - result = [] - Rake.each_dir_parent(fn) { |d| result << d } - result - end - - def test_can_override_application - old_app = Rake.application - fake_app = Object.new - Rake.application = fake_app - - assert_equal fake_app, Rake.application - - ensure - Rake.application = old_app - end - - def test_original_dir_reports_current_dir - assert_equal @tempdir, Rake.original_dir - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_application.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_application.rb deleted file mode 100644 index c0108891..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_application.rb +++ /dev/null @@ -1,643 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeApplication < Rake::TestCase - - def setup - super - - @app = Rake.application - @app.options.rakelib = [] - end - - def setup_command_line(*options) - ARGV.clear - options.each do |option| - ARGV << option - end - end - - def test_display_exception_details - obj = Object.new - obj.instance_eval("def #{__method__}; raise 'test'; end", "ruby") - begin - obj.__send__(__method__) - rescue => ex - end - - out, err = capture_io do - @app.display_error_message ex - end - - assert_empty out - - assert_match 'rake aborted!', err - assert_match __method__.to_s, err - end - - def test_display_exception_details_cause - skip 'Exception#cause not implemented' unless - Exception.method_defined? :cause - - begin - raise 'cause a' - rescue - begin - raise 'cause b' - rescue => ex - end - end - - out, err = capture_io do - @app.display_error_message ex - end - - assert_empty out - - assert_match 'cause a', err - assert_match 'cause b', err - end - - def test_display_exception_details_cause_loop - skip 'Exception#cause not implemented' unless - Exception.method_defined? :cause - - begin - begin - raise 'cause a' - rescue => a - begin - raise 'cause b' - rescue - raise a - end - end - rescue => ex - end - - out, err = capture_io do - @app.display_error_message ex - end - - assert_empty out - - assert_match 'cause a', err - assert_match 'cause b', err - end - - def test_display_tasks - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# COMMENT/, out) - end - - def test_display_tasks_with_long_comments - @app.terminal_columns = 80 - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - numbers = "1234567890" * 8 - @app.last_description = numbers - @app.define_task(Rake::Task, "t") - - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - - assert_match(/^rake t/, out) - assert_match(/# #{numbers[0, 65]}\.\.\./, out) - end - - def test_display_tasks_with_task_name_wider_than_tty_display - @app.terminal_columns = 80 - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - task_name = "task name" * 80 - @app.last_description = "something short" - @app.define_task(Rake::Task, task_name) - - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - - # Ensure the entire task name is output and we end up showing no description - assert_match(/rake #{task_name} # .../, out) - end - - def test_display_tasks_with_very_long_task_name_to_a_non_tty_shows_name_and_comment - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - @app.tty_output = false - description = "something short" - task_name = "task name" * 80 - @app.last_description = "something short" - @app.define_task(Rake::Task, task_name) - - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - - # Ensure the entire task name is output and we end up showing no description - assert_match(/rake #{task_name} # #{description}/, out) - end - - def test_display_tasks_with_long_comments_to_a_non_tty_shows_entire_comment - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - @app.tty_output = false - @app.last_description = "1234567890" * 8 - @app.define_task(Rake::Task, "t") - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# #{@app.last_description}/, out) - end - - def test_truncating_comments_to_a_non_tty - @app.terminal_columns = 80 - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - @app.tty_output = false - numbers = "1234567890" * 8 - @app.last_description = numbers - @app.define_task(Rake::Task, "t") - - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - - assert_match(/^rake t/, out) - assert_match(/# #{numbers[0, 65]}\.\.\./, out) - end - - def test_describe_tasks - @app.options.show_tasks = :describe - @app.options.show_task_pattern = // - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t$/, out) - assert_match(/^ {4}COMMENT$/, out) - end - - def test_show_lines - @app.options.show_tasks = :lines - @app.options.show_task_pattern = // - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - @app['t'].locations << "HERE:1" - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t +[^:]+:\d+ *$/, out) - end - - def test_finding_rakefile - rakefile_default - - assert_match(/Rakefile/i, @app.instance_eval { have_rakefile }) - end - - def test_not_finding_rakefile - @app.instance_eval { @rakefiles = ['NEVER_FOUND'] } - assert(! @app.instance_eval do have_rakefile end) - assert_nil @app.rakefile - end - - def test_load_rakefile - rakefile_unittest - - @app.instance_eval do - handle_options - options.silent = true - load_rakefile - end - - assert_equal "rakefile", @app.rakefile.downcase - assert_equal @tempdir, Dir.pwd - end - - def test_load_rakefile_doesnt_print_rakefile_directory_from_same_dir - rakefile_unittest - - _, err = capture_io do - @app.instance_eval do - # pretend we started from the unittest dir - @original_dir = File.expand_path(".") - raw_load_rakefile - end - end - - assert_empty err - end - - def test_load_rakefile_from_subdir - rakefile_unittest - Dir.chdir 'subdir' - - @app.instance_eval do - handle_options - options.silent = true - load_rakefile - end - - assert_equal "rakefile", @app.rakefile.downcase - assert_equal @tempdir, Dir.pwd - end - - def test_load_rakefile_prints_rakefile_directory_from_subdir - rakefile_unittest - Dir.chdir 'subdir' - - app = Rake::Application.new - app.options.rakelib = [] - - _, err = capture_io do - app.instance_eval do - raw_load_rakefile - end - end - - assert_equal "(in #{@tempdir}\)\n", err - end - - def test_load_rakefile_doesnt_print_rakefile_directory_from_subdir_if_silent - rakefile_unittest - Dir.chdir 'subdir' - - _, err = capture_io do - @app.instance_eval do - handle_options - options.silent = true - raw_load_rakefile - end - end - - assert_empty err - end - - def test_load_rakefile_not_found - ARGV.clear - Dir.chdir @tempdir - ENV['RAKE_SYSTEM'] = 'not_exist' - - @app.instance_eval do - handle_options - options.silent = true - end - - - ex = assert_raises(RuntimeError) do - @app.instance_eval do - raw_load_rakefile - end - end - - assert_match(/no rakefile found/i, ex.message) - end - - def test_load_from_system_rakefile - rake_system_dir - - @app.instance_eval do - handle_options - options.silent = true - options.load_system = true - options.rakelib = [] - load_rakefile - end - - assert_equal @system_dir, @app.system_dir - assert_nil @app.rakefile - rescue SystemExit - flunk 'failed to load rakefile' - end - - def test_load_from_calculated_system_rakefile - rakefile_default - def @app.standard_system_dir - "__STD_SYS_DIR__" - end - - ENV['RAKE_SYSTEM'] = nil - - @app.instance_eval do - handle_options - options.silent = true - options.load_system = true - options.rakelib = [] - load_rakefile - end - - assert_equal "__STD_SYS_DIR__", @app.system_dir - rescue SystemExit - flunk 'failed to find system rakefile' - end - - def test_terminal_columns - old_rake_columns = ENV['RAKE_COLUMNS'] - - ENV['RAKE_COLUMNS'] = '42' - - app = Rake::Application.new - - assert_equal 42, app.terminal_columns - ensure - if old_rake_columns - ENV['RAKE_COLUMNS'].delete - else - ENV['RAKE_COLUMNS'] = old_rake_columns - end - end - - def test_windows - assert ! (@app.windows? && @app.unix?) - end - - def test_loading_imports - loader = util_loader - - @app.instance_eval do - add_loader("dummy", loader) - add_import("x.dummy") - load_imports - end - - # HACK no assertions - end - - def test_building_imported_files_on_demand - loader = util_loader - - @app.instance_eval do - intern(Rake::Task, "x.dummy").enhance do loader.make_dummy end - add_loader("dummy", loader) - add_import("x.dummy") - load_imports - end - - # HACK no assertions - end - - def test_handle_options_should_not_strip_options_from_argv - assert !@app.options.trace - - valid_option = '--trace' - setup_command_line(valid_option) - - @app.handle_options - - assert ARGV.include?(valid_option) - assert @app.options.trace - end - - def test_handle_options_trace_default_is_stderr - setup_command_line("--trace") - - @app.handle_options - - assert_equal STDERR, @app.options.trace_output - assert @app.options.trace - end - - def test_handle_options_trace_overrides_to_stdout - setup_command_line("--trace=stdout") - - @app.handle_options - - assert_equal STDOUT, @app.options.trace_output - assert @app.options.trace - end - - def test_handle_options_trace_does_not_eat_following_task_names - assert !@app.options.trace - - setup_command_line("--trace", "sometask") - - @app.handle_options - assert ARGV.include?("sometask") - assert @app.options.trace - end - - def test_good_run - ran = false - - ARGV << '--rakelib=""' - - @app.options.silent = true - - @app.instance_eval do - intern(Rake::Task, "default").enhance { ran = true } - end - - rakefile_default - - out, err = capture_io do - @app.run - end - - assert ran - assert_empty err - assert_equal "DEFAULT\n", out - end - - def test_display_task_run - ran = false - setup_command_line('-f', '-s', '--tasks', '--rakelib=""') - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "default") - out, = capture_io { @app.run } - assert @app.options.show_tasks - assert ! ran - assert_match(/rake default/, out) - assert_match(/# COMMENT/, out) - end - - def test_display_prereqs - ran = false - setup_command_line('-f', '-s', '--prereqs', '--rakelib=""') - @app.last_description = "COMMENT" - t = @app.define_task(Rake::Task, "default") - t.enhance([:a, :b]) - @app.define_task(Rake::Task, "a") - @app.define_task(Rake::Task, "b") - out, = capture_io { @app.run } - assert @app.options.show_prereqs - assert ! ran - assert_match(/rake a$/, out) - assert_match(/rake b$/, out) - assert_match(/rake default\n( *(a|b)\n){2}/m, out) - end - - def test_bad_run - @app.intern(Rake::Task, "default").enhance { fail } - setup_command_line('-f', '-s', '--rakelib=""') - _, err = capture_io { - assert_raises(SystemExit){ @app.run } - } - assert_match(/see full trace/i, err) - ensure - ARGV.clear - end - - def test_bad_run_with_trace - @app.intern(Rake::Task, "default").enhance { fail } - setup_command_line('-f', '-s', '-t') - _, err = capture_io { - assert_raises(SystemExit) { @app.run } - } - refute_match(/see full trace/i, err) - ensure - ARGV.clear - end - - def test_bad_run_with_backtrace - @app.intern(Rake::Task, "default").enhance { fail } - setup_command_line('-f', '-s', '--backtrace') - _, err = capture_io { - assert_raises(SystemExit) { - @app.run - } - } - refute_match(/see full trace/, err) - ensure - ARGV.clear - end - - CustomError = Class.new(RuntimeError) - - def test_bad_run_includes_exception_name - @app.intern(Rake::Task, "default").enhance { - raise CustomError, "intentional" - } - setup_command_line('-f', '-s') - _, err = capture_io { - assert_raises(SystemExit) { - @app.run - } - } - assert_match(/CustomError: intentional/, err) - end - - def test_rake_error_excludes_exception_name - @app.intern(Rake::Task, "default").enhance { - fail "intentional" - } - setup_command_line('-f', '-s') - _, err = capture_io { - assert_raises(SystemExit) { - @app.run - } - } - refute_match(/RuntimeError/, err) - assert_match(/intentional/, err) - end - - def cause_supported? - ex = StandardError.new - ex.respond_to?(:cause) - end - - def test_printing_original_exception_cause - custom_error = Class.new(StandardError) - @app.intern(Rake::Task, "default").enhance { - begin - raise custom_error, "Original Error" - rescue custom_error - raise custom_error, "Secondary Error" - end - } - setup_command_line('-f', '-s') - _ ,err = capture_io { - assert_raises(SystemExit) { - @app.run - } - } - if cause_supported? - assert_match(/Original Error/, err) - end - assert_match(/Secondary Error/, err) - ensure - ARGV.clear - end - - def test_run_with_bad_options - @app.intern(Rake::Task, "default").enhance { fail } - setup_command_line('-f', '-s', '--xyzzy') - assert_raises(SystemExit) { - capture_io { @app.run } - } - ensure - ARGV.clear - end - - def test_standard_exception_handling_invalid_option - out, err = capture_io do - e = assert_raises SystemExit do - @app.standard_exception_handling do - raise OptionParser::InvalidOption, 'blah' - end - end - - assert_equal 1, e.status - end - - assert_empty out - assert_equal "invalid option: blah\n", err - end - - def test_standard_exception_handling_other - out, err = capture_io do - e = assert_raises SystemExit do - @app.standard_exception_handling do - raise 'blah' - end - end - - assert_equal 1, e.status - end - - assert_empty out - assert_match "rake aborted!\n", err - assert_match "blah\n", err - end - - def test_standard_exception_handling_system_exit - out, err = capture_io do - e = assert_raises SystemExit do - @app.standard_exception_handling do - exit 0 - end - end - - assert_equal 0, e.status - end - - assert_empty out - assert_empty err - end - - def test_standard_exception_handling_system_exit_nonzero - out, err = capture_io do - e = assert_raises SystemExit do - @app.standard_exception_handling do - exit 5 - end - end - - assert_equal 5, e.status - end - - assert_empty out - assert_empty err - end - - def util_loader - loader = Object.new - - loader.instance_variable_set :@load_called, false - def loader.load arg - raise ArgumentError, arg unless arg == 'x.dummy' - @load_called = true - end - - loader.instance_variable_set :@make_dummy_called, false - def loader.make_dummy - @make_dummy_called = true - end - - loader - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_application_options.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_application_options.rb deleted file mode 100644 index 37adfacd..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_application_options.rb +++ /dev/null @@ -1,466 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -TESTING_REQUIRE = [] - -class TestRakeApplicationOptions < Rake::TestCase - - def setup - super - - clear_argv - Rake::FileUtilsExt.verbose_flag = false - Rake::FileUtilsExt.nowrite_flag = false - TESTING_REQUIRE.clear - end - - def teardown - clear_argv - Rake::FileUtilsExt.verbose_flag = false - Rake::FileUtilsExt.nowrite_flag = false - - super - end - - def clear_argv - ARGV.pop until ARGV.empty? - end - - def test_default_options - opts = command_line - assert_nil opts.backtrace - assert_nil opts.dryrun - assert_nil opts.ignore_system - assert_nil opts.load_system - assert_nil opts.always_multitask - assert_nil opts.nosearch - assert_equal ['rakelib'], opts.rakelib - assert_nil opts.show_prereqs - assert_nil opts.show_task_pattern - assert_nil opts.show_tasks - assert_nil opts.silent - assert_nil opts.trace - assert_nil opts.thread_pool_size - assert_equal ['rakelib'], opts.rakelib - assert ! Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - - def test_dry_run - flags('--dry-run', '-n') do |opts| - assert opts.dryrun - assert opts.trace - assert Rake::FileUtilsExt.verbose_flag - assert Rake::FileUtilsExt.nowrite_flag - end - end - - def test_describe - flags('--describe') do |opts| - assert_equal :describe, opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - end - end - - def test_describe_with_pattern - flags('--describe=X') do |opts| - assert_equal :describe, opts.show_tasks - assert_equal(/X/.to_s, opts.show_task_pattern.to_s) - end - end - - def test_execute - $xyzzy = 0 - flags('--execute=$xyzzy=1', '-e $xyzzy=1') do |opts| - assert_equal 1, $xyzzy - assert_equal :exit, @exit - $xyzzy = 0 - end - end - - def test_execute_and_continue - $xyzzy = 0 - flags('--execute-continue=$xyzzy=1', '-E $xyzzy=1') do |opts| - assert_equal 1, $xyzzy - refute_equal :exit, @exit - $xyzzy = 0 - end - end - - def test_execute_and_print - $xyzzy = 0 - out, = capture_io do - flags('--execute-print=$xyzzy="pugh"', '-p $xyzzy="pugh"') do |opts| - assert_equal 'pugh', $xyzzy - assert_equal :exit, @exit - $xyzzy = 0 - end - end - - assert_match(/^pugh$/, out) - end - - def test_help - out, = capture_io do - flags '--help', '-H', '-h' - end - - assert_match(/\Arake/, out) - assert_match(/\boptions\b/, out) - assert_match(/\btargets\b/, out) - assert_equal :exit, @exit - end - - def test_jobs - flags([]) do |opts| - assert_nil opts.thread_pool_size - end - flags(['--jobs', '0'], ['-j', '0']) do |opts| - assert_equal 0, opts.thread_pool_size - end - flags(['--jobs', '1'], ['-j', '1']) do |opts| - assert_equal 0, opts.thread_pool_size - end - flags(['--jobs', '4'], ['-j', '4']) do |opts| - assert_equal 3, opts.thread_pool_size - end - flags(['--jobs', 'asdas'], ['-j', 'asdas']) do |opts| - assert_equal Rake.suggested_thread_count-1, opts.thread_pool_size - end - flags('--jobs', '-j') do |opts| - assert opts.thread_pool_size > 1_000_000, "thread pool size should be huge (was #{opts.thread_pool_size})" - end - end - - def test_libdir - flags(['--libdir', 'xx'], ['-I', 'xx'], ['-Ixx']) do |opts| - $:.include?('xx') - end - ensure - $:.delete('xx') - end - - def test_multitask - flags('--multitask', '-m') do |opts| - assert_equal opts.always_multitask, true - end - end - - def test_rakefile - flags(['--rakefile', 'RF'], ['--rakefile=RF'], ['-f', 'RF'], ['-fRF']) do |opts| - assert_equal ['RF'], @app.instance_eval { @rakefiles } - end - end - - def test_rakelib - dirs = %w(A B C).join(File::PATH_SEPARATOR) - flags( - ['--rakelibdir', dirs], - ["--rakelibdir=#{dirs}"], - ['-R', dirs], - ["-R#{dirs}"]) do |opts| - assert_equal ['A', 'B', 'C'], opts.rakelib - end - end - - def test_require - $LOAD_PATH.unshift @tempdir - - open 'reqfile.rb', 'w' do |io| io << 'TESTING_REQUIRE << 1' end - open 'reqfile2.rb', 'w' do |io| io << 'TESTING_REQUIRE << 2' end - open 'reqfile3.rake', 'w' do |io| io << 'TESTING_REQUIRE << 3' end - - flags(['--require', 'reqfile'], '-rreqfile2', '-rreqfile3') - - assert_includes TESTING_REQUIRE, 1 - assert_includes TESTING_REQUIRE, 2 - assert_includes TESTING_REQUIRE, 3 - - assert_equal 3, TESTING_REQUIRE.size - ensure - $LOAD_PATH.delete @tempdir - end - - def test_missing_require - ex = assert_raises(LoadError) do - flags(['--require', 'test/missing']) do |opts| - end - end - assert_match(/such file/, ex.message) - assert_match(/test\/missing/, ex.message) - end - - def test_prereqs - flags('--prereqs', '-P') do |opts| - assert opts.show_prereqs - end - end - - def test_quiet - Rake::FileUtilsExt.verbose_flag = true - flags('--quiet', '-q') do |opts| - assert ! Rake::FileUtilsExt.verbose_flag, "verbose flag shoud be false" - assert ! opts.silent, "should not be silent" - end - end - - def test_no_search - flags('--nosearch', '--no-search', '-N') do |opts| - assert opts.nosearch - end - end - - def test_silent - Rake::FileUtilsExt.verbose_flag = true - flags('--silent', '-s') do |opts| - assert ! Rake::FileUtilsExt.verbose_flag, "verbose flag should be false" - assert opts.silent, "should be silent" - end - end - - def test_system - flags('--system', '-g') do |opts| - assert opts.load_system - end - end - - def test_no_system - flags('--no-system', '-G') do |opts| - assert opts.ignore_system - end - end - - def test_trace - flags('--trace', '-t') do |opts| - assert opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stderr, opts.trace_output - assert Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - end - - def test_trace_with_stdout - flags('--trace=stdout', '-tstdout') do |opts| - assert opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stdout, opts.trace_output - assert Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - end - - def test_trace_with_stderr - flags('--trace=stderr', '-tstderr') do |opts| - assert opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stderr, opts.trace_output - assert Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - end - - def test_trace_with_error - ex = assert_raises(Rake::CommandLineOptionError) do - flags('--trace=xyzzy') do |opts| end - end - assert_match(/un(known|recognized).*\btrace\b.*xyzzy/i, ex.message) - end - - def test_trace_with_following_task_name - flags(['--trace', 'taskname'], ['-t', 'taskname']) do |opts| - assert opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stderr, opts.trace_output - assert Rake::FileUtilsExt.verbose_flag - assert_equal ['taskname'], @app.top_level_tasks - end - end - - def test_backtrace - flags('--backtrace') do |opts| - assert opts.backtrace, "should enable backtrace option" - assert_equal $stderr, opts.trace_output - assert ! opts.trace, "should not enable trace option" - end - end - - def test_backtrace_with_stdout - flags('--backtrace=stdout') do |opts| - assert opts.backtrace, "should enable backtrace option" - assert_equal $stdout, opts.trace_output - assert ! opts.trace, "should not enable trace option" - end - end - - def test_backtrace_with_stderr - flags('--backtrace=stderr') do |opts| - assert opts.backtrace, "should enable backtrace option" - assert_equal $stderr, opts.trace_output - assert ! opts.trace, "should not enable trace option" - end - end - - def test_backtrace_with_error - ex = assert_raises(Rake::CommandLineOptionError) do - flags('--backtrace=xyzzy') do |opts| end - end - assert_match(/un(known|recognized).*\bbacktrace\b.*xyzzy/i, ex.message) - end - - def test_backtrace_with_following_task_name - flags(['--backtrace', 'taskname']) do |opts| - assert ! opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stderr, opts.trace_output - assert_equal ['taskname'], @app.top_level_tasks - end - end - - def test_trace_rules - flags('--rules') do |opts| - assert opts.trace_rules - end - end - - def test_tasks - flags('--tasks', '-T') do |opts| - assert_equal :tasks, opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - assert_equal nil, opts.show_all_tasks - end - flags(['--tasks', 'xyz'], ['-Txyz']) do |opts| - assert_equal :tasks, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal nil, opts.show_all_tasks - end - flags(['--tasks', 'xyz', '--comments']) do |opts| - assert_equal :tasks, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal false, opts.show_all_tasks - end - end - - def test_where - flags('--where', '-W') do |opts| - assert_equal :lines, opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - assert_equal true, opts.show_all_tasks - end - flags(['--where', 'xyz'], ['-Wxyz']) do |opts| - assert_equal :lines, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal true, opts.show_all_tasks - end - flags(['--where', 'xyz', '--comments'], ['-Wxyz', '--comments']) do |opts| - assert_equal :lines, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal false, opts.show_all_tasks - end - end - - def test_no_deprecated_messages - flags('--no-deprecation-warnings', '-X') do |opts| - assert opts.ignore_deprecate - end - end - - def test_verbose - capture_io do - flags('--verbose', '-v') do |opts| - assert Rake::FileUtilsExt.verbose_flag, "verbose should be true" - assert ! opts.silent, "opts should not be silent" - end - end - end - - def test_version - out, _ = capture_io do - flags '--version', '-V' - end - - assert_match(/\bversion\b/, out) - assert_match(/\b#{RAKEVERSION}\b/, out) - assert_equal :exit, @exit - end - - def test_bad_option - _, err = capture_io do - ex = assert_raises(OptionParser::InvalidOption) do - flags('--bad-option') - end - - if ex.message =~ /^While/ # Ruby 1.9 error message - assert_match(/while parsing/i, ex.message) - else # Ruby 1.8 error message - assert_match(/(invalid|unrecognized) option/i, ex.message) - assert_match(/--bad-option/, ex.message) - end - end - - assert_equal '', err - end - - def test_task_collection - command_line("a", "b") - assert_equal ["a", "b"], @tasks.sort - end - - def test_default_task_collection - command_line() - assert_equal ["default"], @tasks - end - - def test_environment_definition - ENV.delete('TESTKEY') - command_line("TESTKEY=12") - assert_equal '12', ENV['TESTKEY'] - end - - def test_multiline_environment_definition - ENV.delete('TESTKEY') - command_line("TESTKEY=a\nb\n") - assert_equal "a\nb\n", ENV['TESTKEY'] - end - - def test_environment_and_tasks_together - ENV.delete('TESTKEY') - command_line("a", "b", "TESTKEY=12") - assert_equal ["a", "b"], @tasks.sort - assert_equal '12', ENV['TESTKEY'] - end - - def test_rake_explicit_task_library - Rake.add_rakelib 'app/task', 'other' - - libs = Rake.application.options.rakelib - - assert libs.include?("app/task") - assert libs.include?("other") - end - - private - - def flags(*sets) - sets.each do |set| - ARGV.clear - - @exit = catch(:system_exit) { command_line(*set) } - - yield(@app.options) if block_given? - end - end - - def command_line(*options) - options.each do |opt| ARGV << opt end - @app = Rake::Application.new - def @app.exit(*args) - throw :system_exit, :exit - end - @app.instance_eval do - args = handle_options - collect_command_line_tasks(args) - end - @tasks = @app.top_level_tasks - @app.options - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_backtrace.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_backtrace.rb deleted file mode 100644 index 78eaa8d5..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_backtrace.rb +++ /dev/null @@ -1,119 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'open3' - -class TestBacktraceSuppression < Rake::TestCase - def test_bin_rake_suppressed - paths = ["something/bin/rake:12"] - - actual = Rake::Backtrace.collapse(paths) - - assert_equal [], actual - end - - def test_system_dir_suppressed - path = RbConfig::CONFIG['rubylibprefix'] - skip if path.nil? - path = File.expand_path path - - paths = [path + ":12"] - - actual = Rake::Backtrace.collapse(paths) - - assert_equal [], actual - end - - def test_near_system_dir_isnt_suppressed - path = RbConfig::CONFIG['rubylibprefix'] - skip if path.nil? - path = File.expand_path path - - paths = [" " + path + ":12"] - - actual = Rake::Backtrace.collapse(paths) - - assert_equal paths, actual - end -end - -class TestRakeBacktrace < Rake::TestCase - include RubyRunner - - def setup - super - - skip 'tmpdir is suppressed in backtrace' if - Rake::Backtrace::SUPPRESS_PATTERN =~ Dir.pwd - end - - def invoke(*args) - rake(*args) - @err - end - - def test_single_collapse - rakefile %q{ - task :foo do - raise "foooo!" - end - } - - lines = invoke("foo").split("\n") - - assert_equal "rake aborted!", lines[0] - assert_equal "foooo!", lines[1] - assert_something_matches %r!\A#{Regexp.quote Dir.pwd}/Rakefile:3!i, lines - assert_something_matches %r!\ATasks:!, lines - end - - def test_multi_collapse - rakefile %q{ - task :foo do - Rake.application.invoke_task(:bar) - end - task :bar do - raise "barrr!" - end - } - - lines = invoke("foo").split("\n") - - assert_equal "rake aborted!", lines[0] - assert_equal "barrr!", lines[1] - assert_something_matches %r!\A#{Regexp.quote Dir.pwd}/Rakefile:6!i, lines - assert_something_matches %r!\A#{Regexp.quote Dir.pwd}/Rakefile:3!i, lines - assert_something_matches %r!\ATasks:!, lines - end - - def test_suppress_option - rakefile %q{ - task :baz do - raise "bazzz!" - end - } - - lines = invoke("baz").split("\n") - assert_equal "rake aborted!", lines[0] - assert_equal "bazzz!", lines[1] - assert_something_matches %r!Rakefile!i, lines - - lines = invoke("--suppress-backtrace", ".ak.file", "baz").split("\n") - assert_equal "rake aborted!", lines[0] - assert_equal "bazzz!", lines[1] - refute_match %r!Rakefile!i, lines[2] - end - - private - - # Assert that the pattern matches at least one line in +lines+. - def assert_something_matches(pattern, lines) - lines.each do |ln| - if pattern =~ ln - assert_match pattern, ln - return - end - end - flunk "expected #{pattern.inspect} to match something in:\n" + - "#{lines.join("\n ")}" - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_clean.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_clean.rb deleted file mode 100644 index 0bce7bc0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_clean.rb +++ /dev/null @@ -1,61 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/clean' - -class TestRakeClean < Rake::TestCase - def test_clean - load 'rake/clean.rb', true - - assert Rake::Task['clean'], "Should define clean" - assert Rake::Task['clobber'], "Should define clobber" - assert Rake::Task['clobber'].prerequisites.include?("clean"), - "Clobber should require clean" - end - - def test_cleanup - file_name = create_undeletable_file - - out, _ = capture_io do - Rake::Cleaner.cleanup(file_name, :verbose => false) - end - assert_match(/failed to remove/i, out) - - ensure - remove_undeletable_file - end - - def test_cleanup_ignores_missing_files - file_name = File.join(@tempdir, "missing_directory", "no_such_file") - - out, _ = capture_io do - Rake::Cleaner.cleanup(file_name, :verbose => false) - end - refute_match(/failed to remove/i, out) - end - - private - - def create_undeletable_file - dir_name = File.join(@tempdir, "deletedir") - file_name = File.join(dir_name, "deleteme") - FileUtils.mkdir(dir_name) - FileUtils.touch(file_name) - FileUtils.chmod(0, file_name) - FileUtils.chmod(0, dir_name) - begin - FileUtils.chmod(0644, file_name) - rescue - file_name - else - skip "Permission to delete files is different on thie system" - end - end - - def remove_undeletable_file - dir_name = File.join(@tempdir, "deletedir") - file_name = File.join(dir_name, "deleteme") - FileUtils.chmod(0777, dir_name) - FileUtils.chmod(0777, file_name) - Rake::Cleaner.cleanup(file_name, :verbose => false) - Rake::Cleaner.cleanup(dir_name, :verbose => false) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_cpu_counter.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_cpu_counter.rb deleted file mode 100644 index 87d0601c..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_cpu_counter.rb +++ /dev/null @@ -1,68 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeCpuCounter < Rake::TestCase - - def setup - super - - @cpu_counter = Rake::CpuCounter.new - end - - def test_count - num = @cpu_counter.count - skip 'cannot count CPU' if num == nil - assert_kind_of Numeric, num - assert_operator num, :>=, 1 - end - - def test_count_with_default_nil - def @cpu_counter.count; nil; end - assert_equal(8, @cpu_counter.count_with_default(8)) - assert_equal(4, @cpu_counter.count_with_default) - end - - def test_count_with_default_raise - def @cpu_counter.count; raise; end - assert_equal(8, @cpu_counter.count_with_default(8)) - assert_equal(4, @cpu_counter.count_with_default) - end - - class TestClassMethod < Rake::TestCase - def setup - super - - @klass = Class.new(Rake::CpuCounter) - end - - def test_count - @klass.class_eval do - def count; 8; end - end - assert_equal(8, @klass.count) - end - - def test_count_nil - counted = false - @klass.class_eval do - define_method(:count) do - counted = true - nil - end - end - assert_equal(4, @klass.count) - assert_equal(true, counted) - end - - def test_count_raise - counted = false - @klass.class_eval do - define_method(:count) do - counted = true - raise - end - end - assert_equal(4, @klass.count) - assert_equal(true, counted) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_definitions.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_definitions.rb deleted file mode 100644 index ee474cb7..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_definitions.rb +++ /dev/null @@ -1,84 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' - -class TestRakeDefinitions < Rake::TestCase - include Rake - - EXISTINGFILE = "existing" - - def setup - super - - Task.clear - end - - def test_task - done = false - task :one => [:two] do done = true end - task :two - task :three => [:one, :two] - check_tasks(:one, :two, :three) - assert done, "Should be done" - end - - def test_file_task - done = false - file "one" => "two" do done = true end - file "two" - file "three" => ["one", "two"] - check_tasks("one", "two", "three") - assert done, "Should be done" - end - - def check_tasks(n1, n2, n3) - t = Task[n1] - assert Task === t, "Should be a Task" - assert_equal n1.to_s, t.name - assert_equal [n2.to_s], t.prerequisites.map { |n| n.to_s } - t.invoke - t2 = Task[n2] - assert_equal FileList[], t2.prerequisites - t3 = Task[n3] - assert_equal [n1.to_s, n2.to_s], t3.prerequisites.map { |n| n.to_s } - end - - def test_incremental_definitions - runs = [] - task :t1 => [:t2] do runs << "A"; 4321 end - task :t1 => [:t3] do runs << "B"; 1234 end - task :t1 => [:t3] - task :t2 - task :t3 - Task[:t1].invoke - assert_equal ["A", "B"], runs - assert_equal ["t2", "t3"], Task[:t1].prerequisites - end - - def test_missing_dependencies - task :x => ["missing"] - assert_raises(RuntimeError) { Task[:x].invoke } - end - - def test_falsey_dependencies - task :x => nil - assert_equal [], Task[:x].prerequisites - end - - def test_implicit_file_dependencies - runs = [] - create_existing_file - task :y => [EXISTINGFILE] do |t| runs << t.name end - Task[:y].invoke - assert_equal runs, ['y'] - end - - private # ---------------------------------------------------------- - - def create_existing_file - Dir.mkdir File.dirname(EXISTINGFILE) unless - File.exist?(File.dirname(EXISTINGFILE)) - open(EXISTINGFILE, "w") do |f| f.puts "HI" end unless - File.exist?(EXISTINGFILE) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_directory_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_directory_task.rb deleted file mode 100644 index 0014d1c1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_directory_task.rb +++ /dev/null @@ -1,76 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'pathname' - -class TestRakeDirectoryTask < Rake::TestCase - include Rake - - def test_directory - desc "DESC" - - directory "a/b/c" - - assert_equal FileCreationTask, Task["a"].class - assert_equal FileCreationTask, Task["a/b"].class - assert_equal FileCreationTask, Task["a/b/c"].class - - assert_nil Task["a"].comment - assert_nil Task["a/b"].comment - assert_equal "DESC", Task["a/b/c"].comment - - verbose(false) { - Task['a/b'].invoke - } - - assert File.exist?("a/b") - refute File.exist?("a/b/c") - end - - def test_directory_colon - directory "a:b" - - assert_equal FileCreationTask, Task['a:b'].class - end unless Rake::Win32.windows? - - if Rake::Win32.windows? - def test_directory_win32 - desc "WIN32 DESC" - directory 'c:/a/b/c' - assert_equal FileTask, Task['c:'].class - assert_equal FileCreationTask, Task['c:/a'].class - assert_equal FileCreationTask, Task['c:/a/b'].class - assert_equal FileCreationTask, Task['c:/a/b/c'].class - assert_nil Task['c:/'].comment - assert_equal "WIN32 DESC", Task['c:/a/b/c'].comment - assert_nil Task['c:/a/b'].comment - end - end - - def test_can_use_blocks - runlist = [] - - t1 = directory("a/b/c" => :t2) { |t| runlist << t.name } - task(:t2) { |t| runlist << t.name } - - verbose(false) { - t1.invoke - } - - assert_equal Task["a/b/c"], t1 - assert_equal FileCreationTask, Task["a/b/c"].class - assert_equal ["t2", "a/b/c"], runlist - assert File.directory?("a/b/c") - end - - def test_can_use_pathname - directory Pathname.new "a/b/c" - - assert_equal FileCreationTask, Task["a/b/c"].class - - verbose(false) { - Task['a/b/c'].invoke - } - - assert File.directory?("a/b/c") - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_dsl.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_dsl.rb deleted file mode 100644 index ad52f760..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_dsl.rb +++ /dev/null @@ -1,40 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeDsl < Rake::TestCase - - def setup - super - Rake::Task.clear - end - - def test_namespace_command - namespace "n" do - task "t" - end - refute_nil Rake::Task["n:t"] - end - - def test_namespace_command_with_bad_name - ex = assert_raises(ArgumentError) do - namespace 1 do end - end - assert_match(/string/i, ex.message) - assert_match(/symbol/i, ex.message) - end - - def test_namespace_command_with_a_string_like_object - name = Object.new - def name.to_str - "bob" - end - namespace name do - task "t" - end - refute_nil Rake::Task["bob:t"] - end - - def test_no_commands_constant - assert ! defined?(Commands), "should not define Commands" - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_early_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_early_time.rb deleted file mode 100644 index 18c4dad3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_early_time.rb +++ /dev/null @@ -1,31 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeEarlyTime < Rake::TestCase - def test_create - early = Rake::EarlyTime.instance - assert early <= Time.now - assert early < Time.now - assert early != Time.now - assert Time.now > early - assert Time.now >= early - assert Time.now != early - end - - def test_equality - early = Rake::EarlyTime.instance - assert_equal early, early, "two early times should be equal" - end - - def test_original_time_compare_is_not_messed_up - t1 = Time.mktime(1970, 1, 1, 0, 0, 0) - t2 = Time.now - assert t1 < t2 - assert t2 > t1 - assert t1 == t1 - assert t2 == t2 - end - - def test_to_s - assert_equal "", Rake::EARLY.to_s - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_extension.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_extension.rb deleted file mode 100644 index 18d55f19..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_extension.rb +++ /dev/null @@ -1,59 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'stringio' - -class TestRakeExtension < Rake::TestCase - - module Redirect - def error_redirect - old_err = $stderr - result = StringIO.new - $stderr = result - yield - result - ensure - $stderr = old_err - end - end - - class Sample - extend Redirect - - def duplicate_method - :original - end - - OK_ERRS = error_redirect do - rake_extension("a") do - def ok_method - end - end - end - - - DUP_ERRS = error_redirect do - rake_extension("duplicate_method") do - def duplicate_method - :override - end - end - end - end - - def test_methods_actually_exist - sample = Sample.new - sample.ok_method - sample.duplicate_method - end - - def test_no_warning_when_defining_ok_method - assert_equal "", Sample::OK_ERRS.string - end - - def test_extension_complains_when_a_method_that_is_present - assert_match(/warning:/i, Sample::DUP_ERRS.string) - assert_match(/already exists/i, Sample::DUP_ERRS.string) - assert_match(/duplicate_method/i, Sample::DUP_ERRS.string) - assert_equal :original, Sample.new.duplicate_method - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_creation_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_creation_task.rb deleted file mode 100644 index d8dcd965..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_creation_task.rb +++ /dev/null @@ -1,56 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' - -###################################################################### -class TestRakeFileCreationTask < Rake::TestCase - include Rake - include Rake::DSL - - DUMMY_DIR = 'dummy_dir' - - def setup - super - - Task.clear - end - - def test_file_needed - create_dir DUMMY_DIR - fc_task = Task[DUMMY_DIR] - assert_equal DUMMY_DIR, fc_task.name - FileUtils.rm_rf fc_task.name - assert fc_task.needed?, "file should be needed" - FileUtils.mkdir fc_task.name - assert_equal nil, fc_task.prerequisites.map { |n| Task[n].timestamp }.max - assert ! fc_task.needed?, "file should not be needed" - end - - def test_directory - directory DUMMY_DIR - fc_task = Task[DUMMY_DIR] - assert_equal DUMMY_DIR, fc_task.name - assert FileCreationTask === fc_task - end - - def test_no_retriggers_on_filecreate_task - create_timed_files(OLDFILE, NEWFILE) - t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileCreationTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - assert ! t1.needed?, "Should not need to rebuild old file because of new" - end - - def test_no_retriggers_on_file_task - create_timed_files(OLDFILE, NEWFILE) - t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileCreationTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - assert ! t1.needed?, "Should not need to rebuild old file because of new" - end - - def test_very_early_timestamp - t1 = Rake.application.intern(FileCreationTask, OLDFILE) - assert t1.timestamp < Time.now - assert t1.timestamp < Time.now - 1_000_000 - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_list.rb deleted file mode 100644 index c1b4c920..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_list.rb +++ /dev/null @@ -1,655 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'pathname' - -class TestRakeFileList < Rake::TestCase - FileList = Rake::FileList - - def setup - super - - FileUtils.mkdir "CVS" rescue nil - FileUtils.mkdir ".svn" rescue nil - @cdir = "cfiles" - FileUtils.mkdir @cdir rescue nil - FileUtils.touch ".dummy" - FileUtils.touch "x.bak" - FileUtils.touch "x~" - FileUtils.touch "core" - FileUtils.touch "x.c" - FileUtils.touch "xyz.c" - FileUtils.touch "abc.c" - FileUtils.touch "abc.h" - FileUtils.touch "abc.x" - FileUtils.touch "existing" - - open 'xyzzy.txt', 'w' do |io| - io.puts 'x' - io.puts 'XYZZY' - end - - end - - def test_delegating_methods_do_not_include_to_a_or_to_ary - assert ! FileList::DELEGATING_METHODS.include?("to_a"), "should not include to_a" - assert ! FileList::DELEGATING_METHODS.include?(:to_a), "should not include to_a" - assert ! FileList::DELEGATING_METHODS.include?("to_ary"), "should not include to_ary" - assert ! FileList::DELEGATING_METHODS.include?(:to_ary), "should not include to_ary" - end - - def test_create - fl = FileList.new - assert_equal 0, fl.size - end - - def test_create_with_args - fl = FileList.new("*.c", "x") - assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort, - fl.sort - end - - def test_create_with_pathname - fl = FileList.new(Pathname.new("*.c")) - assert_equal ["abc.c", "x.c", "xyz.c"].sort, - fl.sort - end - - def test_create_with_block - fl = FileList.new { |f| f.include("x") } - assert_equal ["x"], fl.resolve - end - - def test_create_with_brackets - fl = FileList["*.c", "x"] - assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort, - fl.sort - end - - def test_create_with_brackets_and_filelist - fl = FileList[FileList["*.c", "x"]] - assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort, - fl.sort - end - - def test_include_with_another_array - fl = FileList.new.include(["x", "y", "z"]) - assert_equal ["x", "y", "z"].sort, fl.sort - end - - def test_include_with_another_filelist - fl = FileList.new.include(FileList["*.c", "x"]) - assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort, - fl.sort - end - - def test_include_with_pathname - fl = FileList.new.include(Pathname.new("*.c")) - assert_equal ["abc.c", "x.c", "xyz.c"].sort, - fl.sort - end - - def test_append - fl = FileList.new - fl << "a.rb" << "b.rb" - assert_equal ['a.rb', 'b.rb'], fl - end - - def test_append_pathname - fl = FileList.new - fl << Pathname.new("a.rb") - assert_equal ['a.rb'], fl - end - - def test_add_many - fl = FileList.new - fl.include %w(a d c) - fl.include('x', 'y') - assert_equal ['a', 'd', 'c', 'x', 'y'], fl - assert_equal ['a', 'd', 'c', 'x', 'y'], fl.resolve - end - - def test_add_return - f = FileList.new - g = f << "x" - assert_equal f.object_id, g.object_id - h = f.include("y") - assert_equal f.object_id, h.object_id - end - - def test_match - fl = FileList.new - fl.include '*.c' - - assert_equal %w[abc.c x.c xyz.c], fl.sort - end - - def test_add_matching - fl = FileList.new - fl << "a.java" - fl.include '*.c' - - assert_equal %w[a.java abc.c x.c xyz.c], fl.sort - end - - def test_multiple_patterns - fl = FileList.new - fl.include('*.z', '*foo*') - - assert_equal [], fl - - fl.include('*.c', '*xist*') - assert_equal %w[x.c xyz.c abc.c existing].sort, fl.sort - end - - def test_square_bracket_pattern - fl = FileList.new - fl.include("abc.[ch]") - assert fl.size == 2 - assert fl.include?("abc.c") - assert fl.include?("abc.h") - end - - def test_curly_bracket_pattern - fl = FileList.new - fl.include("abc.{c,h}") - assert fl.size == 2 - assert fl.include?("abc.c") - assert fl.include?("abc.h") - end - - def test_reject - fl = FileList.new - fl.include %w(x.c abc.c xyz.c existing) - fl.reject! { |fn| fn =~ /^x/ } - assert_equal %w[abc.c existing], fl - end - - def test_exclude - fl = FileList['x.c', 'abc.c', 'xyz.c', 'existing'] - fl.each { |fn| touch fn, :verbose => false } - - x = fl.exclude(%r{^x.+\.}) - - assert_equal FileList, x.class - assert_equal %w(x.c abc.c existing), fl - assert_equal fl.object_id, x.object_id - - fl.exclude('*.c') - - assert_equal ['existing'], fl - - fl.exclude('existing') - - assert_equal [], fl - end - - def test_exclude_pathname - fl = FileList['x.c', 'abc.c', 'other'] - fl.each { |fn| touch fn, :verbose => false } - - fl.exclude(Pathname.new('*.c')) - - assert_equal ['other'], fl - end - - def test_excluding_via_block - fl = FileList['a.c', 'b.c', 'xyz.c'] - fl.exclude { |fn| fn.pathmap('%n') == 'xyz' } - assert fl.excluded_from_list?("xyz.c"), "Should exclude xyz.c" - assert_equal ['a.c', 'b.c'], fl - end - - def test_exclude_return_on_create - fl = FileList['*'].exclude(/.*\.[hcx]$/) - assert_equal %w[cfiles existing xyzzy.txt], fl.sort - assert_equal FileList, fl.class - end - - def test_exclude_with_string_return_on_create - fl = FileList['*'].exclude('abc.c') - assert_equal %w[abc.h abc.x cfiles existing x.c xyz.c xyzzy.txt], fl.sort - assert_equal FileList, fl.class - end - - def test_default_exclude - fl = FileList.new - fl.clear_exclude - fl.include("**/*~", "**/*.bak", "**/core") - assert fl.member?("core"), "Should include core" - assert fl.member?("x.bak"), "Should include .bak files" - end - - def test_unique - fl = FileList.new - fl << "x.c" << "a.c" << "b.rb" << "a.c" - assert_equal ['x.c', 'a.c', 'b.rb', 'a.c'], fl - fl.uniq! - assert_equal ['x.c', 'a.c', 'b.rb'], fl - end - - def test_to_string - fl = FileList.new - fl << "a.java" << "b.java" - assert_equal "a.java b.java", fl.to_s - assert_equal "a.java b.java", "#{fl}" - end - - def test_to_array - fl = FileList['a.java', 'b.java'] - assert_equal ['a.java', 'b.java'], fl.to_a - assert_equal Array, fl.to_a.class - assert_equal ['a.java', 'b.java'], fl.to_ary - assert_equal Array, fl.to_ary.class - end - - def test_to_s_pending - fl = FileList['abc.*'] - result = fl.to_s - assert_match(%r{abc\.c}, result) - assert_match(%r{abc\.h}, result) - assert_match(%r{abc\.x}, result) - assert_match(%r{(abc\..\b ?){2}}, result) - end - - def test_inspect_pending - fl = FileList['abc.*'] - result = fl.inspect - assert_match(%r{"abc\.c"}, result) - assert_match(%r{"abc\.h"}, result) - assert_match(%r{"abc\.x"}, result) - assert_match(%r|^\[("abc\..", ){2}"abc\.."\]$|, result) - end - - def test_sub - fl = FileList["*.c"] - f2 = fl.sub(/\.c$/, ".o") - assert_equal FileList, f2.class - assert_equal ["abc.o", "x.o", "xyz.o"].sort, - f2.sort - f3 = fl.gsub(/\.c$/, ".o") - assert_equal FileList, f3.class - assert_equal ["abc.o", "x.o", "xyz.o"].sort, - f3.sort - end - - def test_claim_to_be_a_kind_of_array - fl = FileList['*.c'] - assert fl.is_a?(Array) - assert fl.kind_of?(Array) - end - - def test_claim_to_be_a_kind_of_filelist - fl = FileList['*.c'] - assert fl.is_a?(FileList) - assert fl.kind_of?(FileList) - end - - def test_claim_to_be_a_filelist_instance - fl = FileList['*.c'] - assert fl.instance_of?(FileList) - end - - def test_dont_claim_to_be_an_array_instance - fl = FileList['*.c'] - assert ! fl.instance_of?(Array) - end - - def test_sub! - f = "x/a.c" - fl = FileList[f, "x/b.c"] - res = fl.sub!(/\.c$/, ".o") - assert_equal ["x/a.o", "x/b.o"].sort, fl.sort - assert_equal "x/a.c", f - assert_equal fl.object_id, res.object_id - end - - def test_sub_with_block - fl = FileList["src/org/onestepback/a.java", "src/org/onestepback/b.java"] -# The block version doesn't work the way I want it to ... -# f2 = fl.sub(%r{^src/(.*)\.java$}) { |x| "classes/" + $1 + ".class" } - f2 = fl.sub(%r{^src/(.*)\.java$}, "classes/\\1.class") - assert_equal [ - "classes/org/onestepback/a.class", - "classes/org/onestepback/b.class" - ].sort, - f2.sort - end - - def test_string_ext - assert_equal "one.net", "one.two".ext("net") - assert_equal "one.net", "one.two".ext(".net") - assert_equal "one.net", "one".ext("net") - assert_equal "one.net", "one".ext(".net") - assert_equal "one.two.net", "one.two.c".ext(".net") - assert_equal "one/two.net", "one/two.c".ext(".net") - assert_equal "one.x/two.net", "one.x/two.c".ext(".net") - assert_equal "one.x/two.net", "one.x/two".ext(".net") - assert_equal ".onerc.net", ".onerc.dot".ext("net") - assert_equal ".onerc.net", ".onerc".ext("net") - assert_equal ".a/.onerc.net", ".a/.onerc".ext("net") - assert_equal "one", "one.two".ext('') - assert_equal "one", "one.two".ext - assert_equal ".one", ".one.two".ext - assert_equal ".one", ".one".ext - assert_equal ".", ".".ext("c") - assert_equal "..", "..".ext("c") - # These only need to work in windows - if Rake::Win32.windows? - assert_equal "one.x\\two.net", "one.x\\two.c".ext(".net") - assert_equal "one.x\\two.net", "one.x\\two".ext(".net") - end - end - - def test_filelist_ext - assert_equal FileList['one.c', '.one.c'], - FileList['one.net', '.one'].ext('c') - end - - def test_gsub - fl = FileList["*.c"] - f2 = fl.gsub(/a/, "A") - assert_equal ["Abc.c", "x.c", "xyz.c"].sort, - f2.sort - end - - def test_gsub! - f = FileList["*.c"] - f.gsub!(/a/, "A") - assert_equal ["Abc.c", "x.c", "xyz.c"].sort, - f.sort - end - - def test_egrep_returns_0_if_no_matches - files = FileList['test/lib/*_test.rb'].exclude("test/lib/filelist_test.rb") - assert_equal 0, files.egrep(/XYZZY/) { } - end - - def test_egrep_with_output - files = FileList['*.txt'] - - out, = capture_io do - files.egrep(/XYZZY/) - end - - assert_equal "xyzzy.txt:2:XYZZY\n", out - end - - def test_egrep_with_block - files = FileList['*.txt'] - found = nil - - files.egrep(/XYZZY/) do |fn, ln, line| - found = [fn, ln, line] - end - - assert_equal ["xyzzy.txt", 2, "XYZZY\n"], found - end - - def test_egrep_with_error - files = FileList['*.txt'] - - _, err = capture_io do - files.egrep(/XYZZY/) do |fn, ln, line | - raise "_EGREP_FAILURE_" - end - end - - assert_equal "Error while processing 'xyzzy.txt': _EGREP_FAILURE_\n", err - end - - def test_existing - fl = FileList['abc.c', 'notthere.c'] - assert_equal ["abc.c"], fl.existing - assert fl.existing.is_a?(FileList) - end - - def test_existing! - fl = FileList['abc.c', 'notthere.c'] - result = fl.existing! - assert_equal ["abc.c"], fl - assert_equal fl.object_id, result.object_id - end - - def test_ignore_special - f = FileList['*'] - assert ! f.include?("CVS"), "Should not contain CVS" - assert ! f.include?(".svn"), "Should not contain .svn" - assert ! f.include?(".dummy"), "Should not contain dot files" - assert ! f.include?("x.bak"), "Should not contain .bak files" - assert ! f.include?("x~"), "Should not contain ~ files" - assert ! f.include?("core"), "Should not contain core files" - end - - def test_clear_ignore_patterns - f = FileList['*', '.svn'] - f.clear_exclude - assert f.include?("abc.c") - assert f.include?("xyz.c") - assert f.include?("CVS") - assert f.include?(".svn") - assert f.include?("x.bak") - assert f.include?("x~") - end - - def test_exclude_with_alternate_file_seps - fl = FileList.new - assert fl.excluded_from_list?("x/CVS/y") - assert fl.excluded_from_list?("x\\CVS\\y") - assert fl.excluded_from_list?("x/.svn/y") - assert fl.excluded_from_list?("x\\.svn\\y") - assert fl.excluded_from_list?("x/core") - assert fl.excluded_from_list?("x\\core") - end - - def test_add_default_exclude_list - fl = FileList.new - fl.exclude(/~\d+$/) - assert fl.excluded_from_list?("x/CVS/y") - assert fl.excluded_from_list?("x\\CVS\\y") - assert fl.excluded_from_list?("x/.svn/y") - assert fl.excluded_from_list?("x\\.svn\\y") - assert fl.excluded_from_list?("x/core") - assert fl.excluded_from_list?("x\\core") - assert fl.excluded_from_list?("x/abc~1") - end - - def test_basic_array_functions - f = FileList['b', 'c', 'a'] - assert_equal 'b', f.first - assert_equal 'b', f[0] - assert_equal 'a', f.last - assert_equal 'a', f[2] - assert_equal 'a', f[-1] - assert_equal ['a', 'b', 'c'], f.sort - f.sort! - assert_equal ['a', 'b', 'c'], f - end - - def test_flatten - assert_equal ['a', 'x.c', 'xyz.c', 'abc.c'].sort, - ['a', FileList['*.c']].flatten.sort - end - - def test_clone_and_dup - a = FileList['a', 'b', 'c'] - c = a.clone - d = a.dup - a << 'd' - assert_equal ['a', 'b', 'c', 'd'], a - assert_equal ['a', 'b', 'c'], c - assert_equal ['a', 'b', 'c'], d - end - - def test_dup_and_clone_replicate_taint - a = FileList['a', 'b', 'c'] - a.taint - c = a.clone - d = a.dup - assert c.tainted?, "Clone should be tainted" - assert d.tainted?, "Dup should be tainted" - end - - def test_duped_items_will_thaw - a = FileList['a', 'b', 'c'] - a.freeze - d = a.dup - d << 'more' - assert_equal ['a', 'b', 'c', 'more'], d - end - - def test_cloned_items_stay_frozen - a = FileList['a', 'b', 'c'] - a.freeze - c = a.clone - assert_raises(TypeError, RuntimeError) do - c << 'more' - end - end - - def test_array_comparisons - fl = FileList['b', 'b'] - a = ['b', 'a'] - b = ['b', 'b'] - c = ['b', 'c'] - assert_equal(1, fl <=> a) - assert_equal(0, fl <=> b) - assert_equal(-1, fl <=> c) - assert_equal(-1, a <=> fl) - assert_equal(0, b <=> fl) - assert_equal(1, c <=> fl) - end - - def test_array_equality - a = FileList['a', 'b'] - b = ['a', 'b'] - assert a == b - assert b == a -# assert a.eql?(b) -# assert b.eql?(a) - assert ! a.equal?(b) - assert ! b.equal?(a) - end - - def test_enumeration_methods - a = FileList['a', 'b'] - b = a.map { |it| it.upcase } - assert_equal ['A', 'B'], b - assert_equal FileList, b.class - - b = a.map { |it| it.upcase } - assert_equal ['A', 'B'], b - assert_equal FileList, b.class - - b = a.sort - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.sort_by { |it| it } - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.select { |it| it == 'b' } - assert_equal ['b'], b - assert_equal FileList, b.class - - b = a.select { |it| it.size == 1 } - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.reject { |it| it == 'b' } - assert_equal ['a'], b - assert_equal FileList, b.class - - b = a.grep(/./) - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.partition { |it| it == 'b' } - assert_equal [['b'], ['a']], b - assert_equal Array, b.class - assert_equal FileList, b[0].class - assert_equal FileList, b[1].class - - b = a.zip(['x', 'y']).to_a - assert_equal [['a', 'x'], ['b', 'y']], b - assert_equal Array, b.class - assert_equal Array, b[0].class - assert_equal Array, b[1].class - end - - def test_array_operators - a = ['a', 'b'] - b = ['c', 'd'] - f = FileList['x', 'y'] - g = FileList['w', 'z'] - - r = f + g - assert_equal ['x', 'y', 'w', 'z'], r - assert_equal FileList, r.class - - r = a + g - assert_equal ['a', 'b', 'w', 'z'], r - assert_equal Array, r.class - - r = f + b - assert_equal ['x', 'y', 'c', 'd'], r - assert_equal FileList, r.class - - r = FileList['w', 'x', 'y', 'z'] - f - assert_equal ['w', 'z'], r - assert_equal FileList, r.class - - r = FileList['w', 'x', 'y', 'z'] & f - assert_equal ['x', 'y'], r - assert_equal FileList, r.class - - r = f * 2 - assert_equal ['x', 'y', 'x', 'y'], r - assert_equal FileList, r.class - - r = f * ',' - assert_equal 'x,y', r - assert_equal String, r.class - - r = f | ['a', 'x'] - assert_equal ['a', 'x', 'y'].sort, r.sort - assert_equal FileList, r.class - end - - def test_other_array_returning_methods - f = FileList['a', nil, 'b'] - r = f.compact - assert_equal ['a', 'b'], r - assert_equal FileList, r.class - - f = FileList['a', 'b'] - r = f.concat(['x', 'y']) - assert_equal ['a', 'b', 'x', 'y'], r - assert_equal FileList, r.class - - f = FileList['a', ['b', 'c'], FileList['d', 'e']] - r = f.flatten - assert_equal ['a', 'b', 'c', 'd', 'e'], r - assert_equal FileList, r.class - - f = FileList['a', 'b', 'a'] - r = f.uniq - assert_equal ['a', 'b'], r - assert_equal FileList, r.class - - f = FileList['a', 'b', 'c', 'd'] - r = f.values_at(1, 3) - assert_equal ['b', 'd'], r - assert_equal FileList, r.class - end - - def test_file_utils_can_use_filelists - cfiles = FileList['*.c'] - - cp cfiles, @cdir, :verbose => false - - assert File.exist?(File.join(@cdir, 'abc.c')) - assert File.exist?(File.join(@cdir, 'xyz.c')) - assert File.exist?(File.join(@cdir, 'x.c')) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_list_path_map.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_list_path_map.rb deleted file mode 100644 index 5935dc26..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_list_path_map.rb +++ /dev/null @@ -1,8 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeFileListPathMap < Rake::TestCase - def test_file_list_supports_pathmap - assert_equal ['a', 'b'], FileList['dir/a.rb', 'dir/b.rb'].pathmap("%n") - end -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_task.rb deleted file mode 100644 index a2495114..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_task.rb +++ /dev/null @@ -1,197 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'pathname' - -class TestRakeFileTask < Rake::TestCase - include Rake - - def setup - super - - Task.clear - @runs = Array.new - FileUtils.rm_f NEWFILE - FileUtils.rm_f OLDFILE - end - - def test_file_need - name = "dummy" - file name - - ftask = Task[name] - - assert_equal name.to_s, ftask.name - File.delete(ftask.name) rescue nil - - assert ftask.needed?, "file should be needed" - assert_equal Rake::LATE, ftask.timestamp - - open(ftask.name, "w") { |f| f.puts "HI" } - - assert_equal nil, ftask.prerequisites.map { |n| Task[n].timestamp }.max - assert ! ftask.needed?, "file should not be needed" - ensure - File.delete(ftask.name) rescue nil - end - - def test_file_times_new_depends_on_old - create_timed_files(OLDFILE, NEWFILE) - - t1 = Rake.application.intern(FileTask, NEWFILE).enhance([OLDFILE]) - t2 = Rake.application.intern(FileTask, OLDFILE) - assert ! t2.needed?, "Should not need to build old file" - assert ! t1.needed?, "Should not need to rebuild new file because of old" - end - - def test_file_times_new_depend_on_regular_task_timestamps - load_phony - - name = "dummy" - task name - - create_timed_files(NEWFILE) - - t1 = Rake.application.intern(FileTask, NEWFILE).enhance([name]) - - assert t1.needed?, "depending on non-file task uses Time.now" - - task(name => :phony) - - assert t1.needed?, "unless the non-file task has a timestamp" - end - - def test_file_times_old_depends_on_new - create_timed_files(OLDFILE, NEWFILE) - - t1 = Rake.application.intern(FileTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - preq_stamp = t1.prerequisites.map { |t| Task[t].timestamp }.max - assert_equal t2.timestamp, preq_stamp - assert t1.timestamp < preq_stamp, "T1 should be older" - assert t1.needed?, "Should need to rebuild old file because of new" - end - - def test_file_depends_on_task_depend_on_file - create_timed_files(OLDFILE, NEWFILE) - - file NEWFILE => [:obj] do |t| @runs << t.name end - task :obj => [OLDFILE] do |t| @runs << t.name end - file OLDFILE do |t| @runs << t.name end - - Task[:obj].invoke - Task[NEWFILE].invoke - assert @runs.include?(NEWFILE) - end - - def test_existing_file_depends_on_non_existing_file - create_file(OLDFILE) - delete_file(NEWFILE) - file NEWFILE do |t| @runs << t.name end - file OLDFILE => NEWFILE do |t| @runs << t.name end - - Task[OLDFILE].invoke - - assert_equal [NEWFILE, OLDFILE], @runs - end - - def test_needed_eh_build_all - create_file 'a' - - file 'a' - - a_task = Task['a'] - - refute a_task.needed? - - Rake.application.options.build_all = true - - assert a_task.needed? - ensure - delete_file 'a' - end - - def test_needed_eh_dependency - create_file 'a', Time.now - create_file 'b', Time.now - 60 - - create_file 'c', Time.now - create_file 'd', Time.now - 60 - - file 'b' => 'a' - - b_task = Task['b'] - - assert b_task.needed? - - file 'c' => 'd' - - c_task = Task['c'] - - refute c_task.needed? - ensure - delete_file 'old' - delete_file 'new' - end - - def test_needed_eh_exists - name = "dummy" - file name - - ftask = Task[name] - - assert ftask.needed? - - create_file name - - refute ftask.needed? - ensure - delete_file name - end - - def test_source_is_first_prerequisite - t = file :f => ["preqA", "preqB"] - assert_equal "preqA", t.source - end - - def test_sources_is_all_prerequisites - t = file :f => ["preqA", "preqB"] - assert_equal ["preqA", "preqB"], t.sources - end - - def test_task_can_be_pathname - name = "dummy" - file Pathname.new name - - ftask = Task[name] - - assert_equal name.to_s, ftask.name - end - - def test_prerequisite_can_be_pathname - t = file :f => Pathname.new("preq") - assert_equal "preq", t.source - end - - # I have currently disabled this test. I'm not convinced that - # deleting the file target on failure is always the proper thing to - # do. I'm willing to hear input on this topic. - def ztest_file_deletes_on_failure - task :obj - file NEWFILE => [:obj] do |t| - FileUtils.touch NEWFILE - fail "Ooops" - end - assert Task[NEWFILE] - begin - Task[NEWFILE].invoke - rescue Exception - end - assert(! File.exist?(NEWFILE), "NEWFILE should be deleted") - end - - def load_phony - load File.join(@rake_lib, "rake/phony.rb") - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_utils.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_utils.rb deleted file mode 100644 index 37d33dc3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_file_utils.rb +++ /dev/null @@ -1,309 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'stringio' - -class TestRakeFileUtils < Rake::TestCase - - def teardown - FileUtils::LN_SUPPORTED[0] = true - RakeFileUtils.verbose_flag = Rake::FileUtilsExt::DEFAULT - - super - end - - def test_rm_one_file - create_file("a") - FileUtils.rm_rf "a" - refute File.exist?("a") - end - - def test_rm_two_files - create_file("a") - create_file("b") - FileUtils.rm_rf ["a", "b"] - refute File.exist?("a") - refute File.exist?("b") - end - - def test_rm_filelist - list = Rake::FileList.new << "a" << "b" - list.each { |fn| create_file(fn) } - FileUtils.rm_r list - refute File.exist?("a") - refute File.exist?("b") - end - - def test_ln - open("a", "w") { |f| f.puts "TEST_LN" } - - Rake::FileUtilsExt.safe_ln("a", "b", :verbose => false) - - assert_equal "TEST_LN\n", File.read('b') - end - - class BadLink - include Rake::FileUtilsExt - attr_reader :cp_args - - def initialize(klass) - @failure_class = klass - end - - def cp(*args) - @cp_args = args - end - - def ln(*args) - fail @failure_class, "ln not supported" - end - - public :safe_ln - end - - def test_safe_ln_failover_to_cp_on_standard_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(StandardError) - c.safe_ln "a", "b" - assert_equal ['a', 'b'], c.cp_args - c.safe_ln "x", "y" - assert_equal ['x', 'y'], c.cp_args - end - - def test_safe_ln_failover_to_cp_on_not_implemented_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(NotImplementedError) - c.safe_ln "a", "b" - assert_equal ['a', 'b'], c.cp_args - end - - def test_safe_ln_fails_on_script_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(ScriptError) - assert_raises(ScriptError) do c.safe_ln "a", "b" end - end - - def test_verbose - verbose true - assert_equal true, verbose - verbose false - assert_equal false, verbose - verbose(true) { - assert_equal true, verbose - } - assert_equal false, verbose - end - - def test_nowrite - nowrite true - assert_equal true, nowrite - nowrite false - assert_equal false, nowrite - nowrite(true) { - assert_equal true, nowrite - } - assert_equal false, nowrite - end - - def test_file_utils_methods_are_available_at_top_level - create_file("a") - - capture_io do - rm_rf "a" - end - - refute File.exist?("a") - end - - def test_fileutils_methods_dont_leak - obj = Object.new - assert_raises(NoMethodError) { obj.copy } # from FileUtils - assert_raises(NoMethodError) { obj.ruby "-v" } # from RubyFileUtils - end - - def test_sh - shellcommand - - verbose(false) { sh %{#{Rake::TestCase::RUBY} shellcommand.rb} } - assert true, "should not fail" - end - - def test_sh_with_a_single_string_argument - check_expansion - - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - sh %{#{RUBY} check_expansion.rb #{env_var} someval} - } - end - - def test_sh_with_multiple_arguments - check_no_expansion - ENV['RAKE_TEST_SH'] = 'someval' - - verbose(false) { - sh RUBY, 'check_no_expansion.rb', env_var, 'someval' - } - end - - def test_sh_failure - shellcommand - - assert_raises(RuntimeError) { - verbose(false) { sh %{#{RUBY} shellcommand.rb 1} } - } - end - - def test_sh_special_handling - shellcommand - - count = 0 - verbose(false) { - sh(%{#{RUBY} shellcommand.rb}) do |ok, res| - assert(ok) - assert_equal 0, res.exitstatus - count += 1 - end - sh(%{#{RUBY} shellcommand.rb 1}) do |ok, res| - assert(!ok) - assert_equal 1, res.exitstatus - count += 1 - end - } - assert_equal 2, count, "Block count should be 2" - end - - def test_sh_noop - shellcommand - - verbose(false) { sh %{shellcommand.rb 1}, :noop=>true } - assert true, "should not fail" - end - - def test_sh_bad_option - shellcommand - - ex = assert_raises(ArgumentError) { - verbose(false) { sh %{shellcommand.rb}, :bad_option=>true } - } - assert_match(/bad_option/, ex.message) - end - - def test_sh_verbose - shellcommand - - _, err = capture_io do - verbose(true) { - sh %{shellcommand.rb}, :noop=>true - } - end - - assert_equal "shellcommand.rb\n", err - end - - def test_sh_verbose_false - shellcommand - - _, err = capture_io do - verbose(false) { - sh %{shellcommand.rb}, :noop=>true - } - end - - assert_equal '', err - end - - def test_sh_verbose_flag_nil - shellcommand - - RakeFileUtils.verbose_flag = nil - - assert_silent do - sh %{shellcommand.rb}, :noop=>true - end - end - - def test_ruby_with_a_single_string_argument - check_expansion - - ENV['RAKE_TEST_SH'] = 'someval' - - verbose(false) { - replace_ruby { - ruby %{check_expansion.rb #{env_var} someval} - } - } - end - - def test_ruby_with_multiple_arguments - check_no_expansion - - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - replace_ruby { - ruby 'check_no_expansion.rb', env_var, 'someval' - } - } - end - - def test_split_all - assert_equal ['a'], Rake::FileUtilsExt.split_all('a') - assert_equal ['..'], Rake::FileUtilsExt.split_all('..') - assert_equal ['/'], Rake::FileUtilsExt.split_all('/') - assert_equal ['a', 'b'], Rake::FileUtilsExt.split_all('a/b') - assert_equal ['/', 'a', 'b'], Rake::FileUtilsExt.split_all('/a/b') - assert_equal ['..', 'a', 'b'], Rake::FileUtilsExt.split_all('../a/b') - end - - def command(name, text) - open name, 'w', 0750 do |io| - io << text - end - end - - def check_no_expansion - command 'check_no_expansion.rb', <<-CHECK_EXPANSION -if ARGV[0] != ARGV[1] - exit 0 -else - exit 1 -end - CHECK_EXPANSION - end - - def check_expansion - command 'check_expansion.rb', <<-CHECK_EXPANSION -if ARGV[0] != ARGV[1] - exit 1 -else - exit 0 -end - CHECK_EXPANSION - end - - def replace_ruby - ruby = FileUtils::RUBY - FileUtils.send :remove_const, :RUBY - FileUtils.const_set :RUBY, RUBY - yield - ensure - FileUtils.send :remove_const, :RUBY - FileUtils.const_set:RUBY, ruby - end - - def shellcommand - command 'shellcommand.rb', <<-SHELLCOMMAND -#!/usr/bin/env ruby - -exit((ARGV[0] || "0").to_i) - SHELLCOMMAND - end - - def env_var - windows? ? '%RAKE_TEST_SH%' : '$RAKE_TEST_SH' - end - - def windows? - ! File::ALT_SEPARATOR.nil? - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_ftp_file.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_ftp_file.rb deleted file mode 100644 index 5749b8a5..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_ftp_file.rb +++ /dev/null @@ -1,74 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'date' -require 'time' -require 'rake/contrib/ftptools' - -class FakeDate - def self.today - Date.new(2003, 10, 3) - end - - def self.now - Time.local(2003, 10, 3, 12, 00, 00) - end -end - -class TestRakeFtpFile < Rake::TestCase - - def setup - super - - Rake::FtpFile.class_eval { - @date_class = FakeDate - @time_class = FakeDate - } - end - - def test_general - file = Rake::FtpFile.new( - "here", - "-rw-r--r-- 1 a279376 develop 121770 Mar 6 14:50 wiki.pl") - assert_equal "wiki.pl", file.name - assert_equal "here/wiki.pl", file.path - assert_equal "a279376", file.owner - assert_equal "develop", file.group - assert_equal 0644, file.mode - assert_equal 121_770, file.size - assert_equal Time.mktime(2003, 3, 6, 14, 50, 0, 0), file.time - assert ! file.directory? - assert ! file.symlink? - end - - def test_far_date - file = Rake::FtpFile.new( - ".", - "drwxr-xr-x 3 a279376 develop 4096 Nov 26 2001 vss") - assert_equal Time.mktime(2001, 11, 26, 0, 0, 0, 0), file.time - end - - def test_close_date - file = Rake::FtpFile.new( - ".", - "drwxr-xr-x 3 a279376 develop 4096 Nov 26 15:35 vss") - assert_equal Time.mktime(2002, 11, 26, 15, 35, 0, 0), file.time - end - - def test_directory - file = Rake::FtpFile.new( - ".", - "drwxrwxr-x 9 a279376 develop 4096 Mar 13 14:32 working") - assert file.directory? - assert !file.symlink? - end - - def test_symlink - file = Rake::FtpFile.new( - ".", - "lrwxrwxrwx 1 a279376 develop 64 Mar 26 2002 " + - "xtrac -> /home/a279376/working/ics/development/java/" + - "com/fmr/fwp/ics/xtrac") - assert_equal 'xtrac', file.name - assert file.symlink? - assert !file.directory? - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_functional.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_functional.rb deleted file mode 100644 index bf7ba92f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_functional.rb +++ /dev/null @@ -1,482 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'open3' - -class TestRakeFunctional < Rake::TestCase - include RubyRunner - - def setup - super - - if @verbose - puts - puts - puts '-' * 80 - puts @__name__ - puts '-' * 80 - end - end - - def test_rake_default - rakefile_default - - rake - - assert_match(/^DEFAULT$/, @out) - end - - def test_rake_error_on_bad_task - rakefile_default - - rake '-t', 'xyz' - - assert_match(/rake aborted/, @err) - end - - def test_env_available_at_top_scope - rakefile_default - - rake "TESTTOPSCOPE=1" - - assert_match(/^TOPSCOPE$/, @out) - end - - def test_env_available_at_task_scope - rakefile_default - - rake 'TESTTASKSCOPE=1', 'task_scope' - - assert_match(/^TASKSCOPE$/, @out) - end - - def test_multi_desc - ENV['RAKE_COLUMNS'] = '80' - rakefile_multidesc - - rake "-T" - - assert_match %r{^rake a *# A / A2 *$}, @out - assert_match %r{^rake b *# B *$}, @out - refute_match %r{^rake c}, @out - assert_match %r{^rake d *# x{65}\.\.\.$}, @out - end - - def test_long_description - rakefile_multidesc - - rake "--describe" - - assert_match %r{^rake a\n *A\n *A2 *$}m, @out - assert_match %r{^rake b\n *B *$}m, @out - assert_match %r{^rake d\n *x{80}}m, @out - refute_match %r{^rake c\n}m, @out - end - - def test_proper_namespace_access - rakefile_access - - rake - - refute_match %r{^BAD:}, @out - end - - def test_rbext - rakefile_rbext - - rake "-N" - - assert_match %r{^OK$}, @out - end - - def test_system - rake_system_dir - - rake '-g', "sys1" - - assert_match %r{^SYS1}, @out - end - - def test_system_excludes_rakelib_files_too - rake_system_dir - - rake '-g', "sys1", '-T', 'extra' - - refute_match %r{extra:extra}, @out - end - - def test_by_default_rakelib_files_are_included - rake_system_dir - rakefile_extra - - rake '-T', 'extra', '--trace' - - assert_match %r{extra:extra}, @out - end - - def test_implicit_system - rake_system_dir - Dir.chdir @tempdir - - rake "sys1", "--trace" - - assert_match %r{^SYS1}, @out - end - - def test_no_system - rake_system_dir - rakefile_extra - - rake '-G', "sys1" - - assert_match %r{^Don't know how to build task}, @err # emacs wart: ' - end - - def test_nosearch_with_rakefile_uses_local_rakefile - rakefile_default - - rake "--nosearch" - - assert_match %r{^DEFAULT}, @out - end - - def test_nosearch_without_rakefile_finds_system - rakefile_nosearch - rake_system_dir - - rake "--nosearch", "sys1" - - assert_match %r{^SYS1}, @out - end - - def test_nosearch_without_rakefile_and_no_system_fails - rakefile_nosearch - ENV['RAKE_SYSTEM'] = 'not_exist' - - rake "--nosearch" - - assert_match %r{^No Rakefile found}, @err - end - - def test_invalid_command_line_options - rakefile_default - - rake "--bad-options" - - assert_match %r{invalid +option}i, @err - end - - def test_inline_verbose_default_should_show_command - rakefile_verbose - - rake "inline_verbose_default" - - assert_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_inline_verbose_true_should_show_command - rakefile_verbose - - rake "inline_verbose_true" - - assert_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_inline_verbose_false_should_not_show_command - rakefile_verbose - - rake "inline_verbose_false" - - refute_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_block_verbose_false_should_not_show_command - rakefile_verbose - - rake "block_verbose_false" - - refute_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_block_verbose_true_should_show_command - rakefile_verbose - - rake "block_verbose_true" - - assert_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_standalone_verbose_true_should_show_command - rakefile_verbose - - rake "standalone_verbose_true" - - assert_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_standalone_verbose_false_should_not_show_command - rakefile_verbose - - rake "standalone_verbose_false" - - refute_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_dry_run - rakefile_default - - rake "-n", "other" - - assert_match %r{Execute \(dry run\) default}, @err - assert_match %r{Execute \(dry run\) other}, @err - refute_match %r{DEFAULT}, @out - refute_match %r{OTHER}, @out - end - - # Test for the trace/dry_run bug found by Brian Chandler - def test_dry_run_bug - rakefile_dryrun - - rake - - FileUtils.rm_f 'temp_one' - - rake "--dry-run" - - refute_match(/No such file/, @out) - end - - # Test for the trace/dry_run bug found by Brian Chandler - def test_trace_bug - rakefile_dryrun - - rake - - FileUtils.rm_f 'temp_one' - - rake "--trace" - - refute_match(/No such file/, @out) - end - - def test_imports - rakefile_imports - - rake - - assert File.exist?(File.join(@tempdir, 'dynamic_deps')), - "'dynamic_deps' file should exist" - assert_match(/^FIRST$\s+^DYNAMIC$\s+^STATIC$\s+^OTHER$/, @out) - end - - def test_regenerate_imports - rakefile_regenerate_imports - - rake - - assert_match(/^INITIAL\s+^REGENERATED$/, @out) - end - - def test_rules_chaining_to_file_task - rakefile_chains - - rake - - assert File.exist?(File.join(@tempdir, 'play.app')), - "'play.app' file should exist" - end - - def test_file_creation_task - rakefile_file_creation - - rake "prep" - rake "run" - rake "run" - - assert(@err !~ /^cp src/, "Should not recopy data") - end - - def test_dash_f_with_no_arg_foils_rakefile_lookup - rakefile_rakelib - - rake '-I', 'rakelib', '-rtest1', '-f' - - assert_match(/^TEST1$/, @out) - end - - def test_dot_rake_files_can_be_loaded_with_dash_r - rakefile_rakelib - - rake '-I', 'rakelib', '-rtest2', '-f' - - assert_empty @err - assert_match(/^TEST2$/, @out) - end - - def test_can_invoke_task_in_toplevel_namespace - rakefile_namespace - - rake "copy" - - assert_match(/^COPY$/, @out) - end - - def test_can_invoke_task_in_nested_namespace - rakefile_namespace - - rake "nest:copy" - - assert_match(/^NEST COPY$/, @out) - end - - def test_tasks_can_reference_task_in_same_namespace - rakefile_namespace - - rake "nest:xx" - - assert_match(/^NEST COPY$/m, @out) - end - - def test_tasks_can_reference_task_in_other_namespaces - rakefile_namespace - - rake "b:run" - - assert_match(/^IN A\nIN B$/m, @out) - end - - def test_anonymous_tasks_can_be_invoked_indirectly - rakefile_namespace - - rake "anon" - - assert_match(/^ANON COPY$/m, @out) - end - - def test_rake_namespace_refers_to_toplevel - rakefile_namespace - - rake "very:nested:run" - - assert_match(/^COPY$/m, @out) - end - - def test_file_task_are_not_scoped_by_namespaces - rakefile_namespace - - rake "xyz.rb" - - assert_match(/^XYZ1\nXYZ2$/m, @out) - end - - def test_file_task_dependencies_scoped_by_namespaces - rakefile_namespace - - rake "scopedep.rb" - - assert_match(/^PREPARE\nSCOPEDEP$/m, @out) - end - - def test_test_task_descriptions - rakefile_test_task - - rake "-T" - - assert_match(/custom test task description/, @out) - end - - def test_comment_before_task_acts_like_desc - rakefile_comments - - rake "-T" - - refute_match(/comment for t1/, @out) - end - - def test_comment_separated_from_task_by_blank_line_is_not_picked_up - rakefile_comments - - rake "-T" - - refute_match("t2", @out) - end - - def test_comment_after_desc_is_ignored - rakefile_comments - - rake "-T" - - assert_match("override comment for t3", @out) - end - - def test_comment_before_desc_is_ignored - rakefile_comments - - rake "-T" - - assert_match("override comment for t4", @out) - end - - def test_correct_number_of_tasks_reported - rakefile_comments - - rake "-T" - - assert_equal(2, @out.split(/\n/).grep(/t\d/).size) - end - - def test_file_list_is_requirable_separately - ruby '-rrake/file_list', '-e', 'puts Rake::FileList["a"].size' - assert_equal "1\n", @out - end - - def can_detect_signals? - system RUBY, '-e', 'Process.kill "TERM", $$' - status = $? - if @verbose - puts " SIG status = #{$?.inspect}" - puts " SIG status.respond_to?(:signaled?) = " + - "#{$?.respond_to?(:signaled?).inspect}" - puts " SIG status.signaled? = #{status.signaled?}" if - status.respond_to?(:signaled?) - end - status.respond_to?(:signaled?) && status.signaled? - end - - def test_signal_propagation_in_tests - if can_detect_signals? - rakefile_test_signal - rake - assert_match(/ATEST/, @out) - refute_match(/BTEST/, @out) - else - skip "Signal detect seems broken on this system" - end - end - - def test_failing_test_sets_exit_status - skip if uncertain_exit_status? - rakefile_failing_test_task - rake - assert @exit.exitstatus > 0, "should be non-zero" - end - - def test_stand_alone_filelist - rakefile_stand_alone_filelist - - run_ruby @ruby_options + ["stand_alone_filelist.rb"] - - assert_match(/^stand_alone_filelist\.rb$/, @out) - assert_equal 0, @exit.exitstatus unless uncertain_exit_status? - end - - private - - # We are unable to accurately verify that Rake returns a proper - # error exit status using popen3 in Ruby 1.8.7 and JRuby. This - # predicate function can be used to skip tests or assertions as - # needed. - def uncertain_exit_status? - RUBY_VERSION < "1.9" || defined?(JRUBY_VERSION) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_invocation_chain.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_invocation_chain.rb deleted file mode 100644 index 0176339b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_invocation_chain.rb +++ /dev/null @@ -1,64 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeInvocationChain < Rake::TestCase - include Rake - - def setup - super - - @empty = InvocationChain.empty - - @first_member = "A" - @second_member = "B" - @one = @empty.append(@first_member) - @two = @one.append(@second_member) - end - - def test_conj_on_invocation_chains - list = InvocationChain.empty.conj("B").conj("A") - assert_equal InvocationChain.make("A", "B"), list - assert_equal InvocationChain, list.class - end - - def test_make_on_invocation_chains - assert_equal @empty, InvocationChain.make() - assert_equal @one, InvocationChain.make(@first_member) - assert_equal @two, InvocationChain.make(@second_member, @first_member) - end - - def test_append_with_one_argument - chain = @empty.append("A") - - assert_equal 'TOP => A', chain.to_s # HACK - end - - def test_append_one_circular - ex = assert_raises RuntimeError do - @one.append(@first_member) - end - assert_match(/circular +dependency/i, ex.message) - assert_match(/A.*=>.*A/, ex.message) - end - - def test_append_two_circular - ex = assert_raises RuntimeError do - @two.append(@first_member) - end - assert_match(/A.*=>.*B.*=>.*A/, ex.message) - end - - def test_member_eh_one - assert @one.member?(@first_member) - end - - def test_member_eh_two - assert @two.member?(@first_member) - assert @two.member?(@second_member) - end - - def test_to_s_empty - assert_equal "TOP", @empty.to_s - assert_equal "TOP => A", @one.to_s - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_late_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_late_time.rb deleted file mode 100644 index 4b910a70..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_late_time.rb +++ /dev/null @@ -1,18 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeLateTime < Rake::TestCase - def test_late_time_comparisons - late = Rake::LATE - assert_equal late, late - assert late >= Time.now - assert late > Time.now - assert late != Time.now - assert Time.now < late - assert Time.now <= late - assert Time.now != late - end - - def test_to_s - assert_equal '', Rake::LATE.to_s - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_linked_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_linked_list.rb deleted file mode 100644 index 10957fba..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_linked_list.rb +++ /dev/null @@ -1,84 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestLinkedList < Rake::TestCase - include Rake - - def test_empty_list - empty = LinkedList::EMPTY - assert empty.empty?, "should be empty" - end - - def test_list_with_one_item - list = LinkedList.make(:one) - assert ! list.empty?, "should not be empty" - assert_equal :one, list.head - assert_equal LinkedList::EMPTY, list.tail - end - - def test_make_with_no_arguments - empty = LinkedList.make() - assert_equal LinkedList::EMPTY, empty - end - - def test_make_with_one_argument - list = LinkedList.make(:one) - assert ! list.empty? - assert_equal :one, list.head - assert_equal LinkedList::EMPTY, list.tail - end - - def test_make_with_two_arguments - list = LinkedList.make(:one, :two) - assert ! list.empty? - assert_equal :one, list.head - assert_equal :two, list.tail.head - assert_equal LinkedList::EMPTY, list.tail.tail - end - - def test_list_with_several_items - list = LinkedList.make(:one, :two, :three) - - assert ! list.empty?, "should not be empty" - assert_equal :one, list.head - assert_equal :two, list.tail.head - assert_equal :three, list.tail.tail.head - assert_equal LinkedList::EMPTY, list.tail.tail.tail - end - - def test_lists_are_structurally_equivalent - list = LinkedList.make(1, 2, 3) - same = LinkedList.make(1, 2, 3) - diff = LinkedList.make(1, 2, 4) - short = LinkedList.make(1, 2) - - assert_equal list, same - refute_equal list, diff - refute_equal list, short - refute_equal short, list - end - - def test_converstion_to_string - list = LinkedList.make(:one, :two, :three) - assert_equal "LL(one, two, three)", list.to_s - assert_equal "LL()", LinkedList.make().to_s - end - - def test_converstion_with_inspect - list = LinkedList.make(:one, :two, :three) - assert_equal "LL(:one, :two, :three)", list.inspect - assert_equal "LL()", LinkedList.make().inspect - end - - def test_lists_are_enumerable - list = LinkedList.make(1, 2, 3) - new_list = list.map { |item| item + 10 } - expected = [11, 12, 13] - assert_equal expected, new_list - end - - def test_conjunction - list = LinkedList.make.conj("C").conj("B").conj("A") - assert_equal LinkedList.make("A", "B", "C"), list - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_makefile_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_makefile_loader.rb deleted file mode 100644 index 9e9265ad..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_makefile_loader.rb +++ /dev/null @@ -1,46 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/loaders/makefile' - -class TestRakeMakefileLoader < Rake::TestCase - include Rake - - def test_parse - Dir.chdir @tempdir - - open 'sample.mf', 'w' do |io| - io << <<-'SAMPLE_MF' -# Comments -a: a1 a2 a3 a4 -b: b1 b2 b3 \ - b4 b5 b6\ -# Mid: Comment -b7 - - a : a5 a6 a7 -c: c1 -d: d1 d2 \ - -e f : e1 f1 - -g\ 0: g1 g\ 2 g\ 3 g4 - SAMPLE_MF - end - - Task.clear - loader = Rake::MakefileLoader.new - loader.load 'sample.mf' - %w(a b c d).each do |t| - assert Task.task_defined?(t), "#{t} should be a defined task" - end - assert_equal %w(a1 a2 a3 a4 a5 a6 a7).sort, Task['a'].prerequisites.sort - assert_equal %w(b1 b2 b3 b4 b5 b6 b7).sort, Task['b'].prerequisites.sort - assert_equal %w(c1).sort, Task['c'].prerequisites.sort - assert_equal %w(d1 d2).sort, Task['d'].prerequisites.sort - assert_equal %w(e1 f1).sort, Task['e'].prerequisites.sort - assert_equal %w(e1 f1).sort, Task['f'].prerequisites.sort - assert_equal( - ["g1", "g 2", "g 3", "g4"].sort, - Task['g 0'].prerequisites.sort) - assert_equal 7, Task.tasks.size - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_multi_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_multi_task.rb deleted file mode 100644 index 9f8fed6d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_multi_task.rb +++ /dev/null @@ -1,64 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'thread' - -class TestRakeMultiTask < Rake::TestCase - include Rake - include Rake::DSL - - def setup - super - - Task.clear - @runs = Array.new - @mutex = Mutex.new - end - - def teardown - Rake.application.thread_pool.join - - super - end - - def add_run(obj) - @mutex.synchronize do - @runs << obj - end - end - - def test_running_multitasks - task :a do 3.times do |i| add_run("A#{i}"); sleep 0.01; end end - task :b do 3.times do |i| add_run("B#{i}"); sleep 0.01; end end - multitask :both => [:a, :b] - Task[:both].invoke - assert_equal 6, @runs.size - assert @runs.index("A0") < @runs.index("A1") - assert @runs.index("A1") < @runs.index("A2") - assert @runs.index("B0") < @runs.index("B1") - assert @runs.index("B1") < @runs.index("B2") - end - - def test_all_multitasks_wait_on_slow_prerequisites - task :slow do 3.times do |i| add_run("S#{i}"); sleep 0.05 end end - task :a => [:slow] do 3.times do |i| add_run("A#{i}"); sleep 0.01 end end - task :b => [:slow] do 3.times do |i| add_run("B#{i}"); sleep 0.01 end end - multitask :both => [:a, :b] - Task[:both].invoke - assert_equal 9, @runs.size - assert @runs.index("S0") < @runs.index("S1") - assert @runs.index("S1") < @runs.index("S2") - assert @runs.index("S2") < @runs.index("A0") - assert @runs.index("S2") < @runs.index("B0") - assert @runs.index("A0") < @runs.index("A1") - assert @runs.index("A1") < @runs.index("A2") - assert @runs.index("B0") < @runs.index("B1") - assert @runs.index("B1") < @runs.index("B2") - end - - def test_multitasks_with_parameters - task :a, [:arg] do |t, args| add_run(args[:arg]) end - multitask :b, [:arg] => [:a] do |t, args| add_run(args[:arg] + 'mt') end - Task[:b].invoke "b" - assert @runs[0] == "b" - assert @runs[1] == "bmt" - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_name_space.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_name_space.rb deleted file mode 100644 index d35e70e1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_name_space.rb +++ /dev/null @@ -1,57 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeNameSpace < Rake::TestCase - - class TM - include Rake::TaskManager - end - - def test_namespace_creation - mgr = TM.new - ns = Rake::NameSpace.new(mgr, []) - refute_nil ns - end - - def test_namespace_lookup - mgr = TM.new - ns = mgr.in_namespace("n") do - mgr.define_task(Rake::Task, "t") - end - - refute_nil ns["t"] - assert_equal mgr["n:t"], ns["t"] - end - - def test_namespace_reports_tasks_it_owns - mgr = TM.new - nns = nil - ns = mgr.in_namespace("n") do - mgr.define_task(Rake::Task, :x) - mgr.define_task(Rake::Task, :y) - nns = mgr.in_namespace("nn") do - mgr.define_task(Rake::Task, :z) - end - end - mgr.in_namespace("m") do - mgr.define_task(Rake::Task, :x) - end - - assert_equal ["n:nn:z", "n:x", "n:y"], - ns.tasks.map { |tsk| tsk.name } - assert_equal ["n:nn:z"], nns.tasks.map { |t| t.name } - end - - def test_scope - mgr = TM.new - - scope = Rake::LinkedList.new 'b' - scope = scope.conj 'a' - - ns = Rake::NameSpace.new mgr, scope - - assert_equal scope, ns.scope - - refute_same scope, ns.scope - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_package_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_package_task.rb deleted file mode 100644 index 87cb57c1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_package_task.rb +++ /dev/null @@ -1,79 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/packagetask' - -class TestRakePackageTask < Rake::TestCase - - def test_initialize - touch 'install.rb' - touch 'a.c' - touch 'b.c' - mkdir 'CVS' - touch 'a.rb~' - - pkg = Rake::PackageTask.new("pkgr", "1.2.3") { |p| - p.package_files << "install.rb" - p.package_files.include '*.c' - p.package_files.exclude(/\bCVS\b/) - p.package_files.exclude(/~$/) - p.package_dir = 'pkg' - p.need_tar = true - p.need_tar_gz = true - p.need_tar_bz2 = true - p.need_zip = true - } - - assert_equal "pkg", pkg.package_dir - - assert_includes pkg.package_files, 'a.c' - - assert_equal 'pkgr', pkg.name - assert_equal '1.2.3', pkg.version - assert Rake::Task[:package] - assert Rake::Task['pkg/pkgr-1.2.3.tgz'] - assert Rake::Task['pkg/pkgr-1.2.3.tar.gz'] - assert Rake::Task['pkg/pkgr-1.2.3.tar.bz2'] - assert Rake::Task['pkg/pkgr-1.2.3.zip'] - assert Rake::Task['pkg/pkgr-1.2.3'] - assert Rake::Task[:clobber_package] - assert Rake::Task[:repackage] - end - - def test_initialize_no_version - e = assert_raises RuntimeError do - Rake::PackageTask.new 'pkgr' - end - - assert_equal 'Version required (or :noversion)', e.message - end - - def test_initialize_noversion - pkg = Rake::PackageTask.new 'pkgr', :noversion - - assert_equal 'pkg', pkg.package_dir - assert_equal 'pkgr', pkg.name - assert_equal nil, pkg.version - end - - def test_clone - pkg = Rake::PackageTask.new("x", :noversion) - p2 = pkg.clone - pkg.package_files << "y" - p2.package_files << "x" - assert_equal ["y"], pkg.package_files - assert_equal ["x"], p2.package_files - end - - def test_package_name - pkg = Rake::PackageTask.new 'a', '1' - - assert_equal 'a-1', pkg.package_name - end - - def test_package_name_noversion - pkg = Rake::PackageTask.new 'a', :noversion - - assert_equal 'a', pkg.package_name - end - -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_path_map.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_path_map.rb deleted file mode 100644 index 038ba1f9..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_path_map.rb +++ /dev/null @@ -1,168 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakePathMap < Rake::TestCase - - def test_returns_self_with_no_args - assert_equal "abc.rb", "abc.rb".pathmap - end - - def test_s_returns_file_separator - sep = File::ALT_SEPARATOR || File::SEPARATOR - assert_equal sep, "abc.rb".pathmap("%s") - assert_equal sep, "".pathmap("%s") - assert_equal "a#{sep}b", "a/b".pathmap("%d%s%f") - end - - def test_f_returns_basename - assert_equal "abc.rb", "abc.rb".pathmap("%f") - assert_equal "abc.rb", "this/is/a/dir/abc.rb".pathmap("%f") - assert_equal "abc.rb", "/this/is/a/dir/abc.rb".pathmap("%f") - end - - def test_n_returns_basename_without_extension - assert_equal "abc", "abc.rb".pathmap("%n") - assert_equal "abc", "abc".pathmap("%n") - assert_equal "abc", "this/is/a/dir/abc.rb".pathmap("%n") - assert_equal "abc", "/this/is/a/dir/abc.rb".pathmap("%n") - assert_equal "abc", "/this/is/a/dir/abc".pathmap("%n") - end - - def test_d_returns_dirname - assert_equal ".", "abc.rb".pathmap("%d") - assert_equal "/", "/abc".pathmap("%d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%d") - assert_equal "/this/is/a/dir", "/this/is/a/dir/abc.rb".pathmap("%d") - end - - def test_9d_returns_partial_dirname - assert_equal "this/is", "this/is/a/dir/abc.rb".pathmap("%2d") - assert_equal "this", "this/is/a/dir/abc.rb".pathmap("%1d") - assert_equal ".", "this/is/a/dir/abc.rb".pathmap("%0d") - assert_equal "dir", "this/is/a/dir/abc.rb".pathmap("%-1d") - assert_equal "a/dir", "this/is/a/dir/abc.rb".pathmap("%-2d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%100d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%-100d") - end - - def test_x_returns_extension - assert_equal "", "abc".pathmap("%x") - assert_equal ".rb", "abc.rb".pathmap("%x") - assert_equal ".rb", "abc.xyz.rb".pathmap("%x") - assert_equal "", ".depends".pathmap("%x") - assert_equal "", "dir/.depends".pathmap("%x") - end - - def test_x_returns_everything_but_extension - assert_equal "abc", "abc".pathmap("%X") - assert_equal "abc", "abc.rb".pathmap("%X") - assert_equal "abc.xyz", "abc.xyz.rb".pathmap("%X") - assert_equal "ab.xyz", "ab.xyz.rb".pathmap("%X") - assert_equal "a.xyz", "a.xyz.rb".pathmap("%X") - assert_equal "abc", "abc.rb".pathmap("%X") - assert_equal "ab", "ab.rb".pathmap("%X") - assert_equal "a", "a.rb".pathmap("%X") - assert_equal ".depends", ".depends".pathmap("%X") - assert_equal "a/dir/.depends", "a/dir/.depends".pathmap("%X") - assert_equal "/.depends", "/.depends".pathmap("%X") - end - - def test_p_returns_entire_pathname - assert_equal "abc.rb", "abc.rb".pathmap("%p") - assert_equal "this/is/a/dir/abc.rb", "this/is/a/dir/abc.rb".pathmap("%p") - assert_equal "/this/is/a/dir/abc.rb", "/this/is/a/dir/abc.rb".pathmap("%p") - end - - def test_dash_returns_empty_string - assert_equal "", "abc.rb".pathmap("%-") - assert_equal "abc.rb", "abc.rb".pathmap("%X%-%x") - end - - def test_percent_percent_returns_percent - assert_equal "a%b", "".pathmap("a%%b") - end - - def test_undefined_percent_causes_error - assert_raises(ArgumentError) { - "dir/abc.rb".pathmap("%z") - } - end - - def test_pattern_returns_substitutions - assert_equal "bin/org/osb", - "src/org/osb/Xyz.java".pathmap("%{src,bin}d") - end - - def test_pattern_can_use_backreferences - assert_equal "dir/hi/is", "dir/this/is".pathmap("%{t(hi)s,\\1}p") - end - - def test_pattern_with_star_replacement_string_uses_block - assert_equal "src/ORG/osb", - "src/org/osb/Xyz.java".pathmap("%{/org,*}d") { |d| d.upcase } - assert_equal "Xyz.java", - "src/org/osb/Xyz.java".pathmap("%{.*,*}f") { |f| f.capitalize } - end - - def test_pattern_with_no_replacement_nor_block_substitutes_empty_string - assert_equal "bc.rb", "abc.rb".pathmap("%{a}f") - end - - def test_pattern_works_with_certain_valid_operators - assert_equal "dir/xbc.rb", "dir/abc.rb".pathmap("%{a,x}p") - assert_equal "d1r", "dir/abc.rb".pathmap("%{i,1}d") - assert_equal "xbc.rb", "dir/abc.rb".pathmap("%{a,x}f") - assert_equal ".Rb", "dir/abc.rb".pathmap("%{r,R}x") - assert_equal "xbc", "dir/abc.rb".pathmap("%{a,x}n") - end - - def test_multiple_patterns - assert_equal "this/is/b/directory/abc.rb", - "this/is/a/dir/abc.rb".pathmap("%{a,b;dir,\\0ectory}p") - end - - def test_partial_directory_selection_works_with_patterns - assert_equal "this/is/a/long", - "this/is/a/really/long/path/ok.rb".pathmap("%{/really/,/}5d") - end - - def test_pattern_with_invalid_operator - ex = assert_raises(ArgumentError) do - "abc.xyz".pathmap("%{src,bin}z") - end - assert_match(/unknown.*pathmap.*spec.*z/i, ex.message) - end - - def test_works_with_windows_separators - if File::ALT_SEPARATOR - assert_equal "abc", 'dir\abc.rb'.pathmap("%n") - assert_equal 'this\is\a\dir', - 'this\is\a\dir\abc.rb'.pathmap("%d") - end - end - - def test_complex_patterns - sep = "".pathmap("%s") - assert_equal( - "dir/abc.rb", - "dir/abc.rb".pathmap("%d/%n%x")) - assert_equal( - "./abc.rb", - "abc.rb".pathmap("%d/%n%x")) - assert_equal( - "Your file extension is '.rb'", - "dir/abc.rb".pathmap("Your file extension is '%x'")) - assert_equal( - "bin/org/onstepback/proj/A.class", - "src/org/onstepback/proj/A.java".pathmap("%{src,bin}d/%n.class")) - assert_equal( - "src_work/bin/org/onstepback/proj/A.class", - "src_work/src/org/onstepback/proj/A.java". - pathmap('%{\bsrc\b,bin}X.class')) - assert_equal( - ".depends.bak", - ".depends".pathmap("%X.bak")) - assert_equal( - "d#{sep}a/b/c#{sep}file.txt", - "a/b/c/d/file.txt".pathmap("%-1d%s%3d%s%f")) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_path_map_explode.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_path_map_explode.rb deleted file mode 100644 index a79235ee..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_path_map_explode.rb +++ /dev/null @@ -1,34 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakePathMapExplode < Rake::TestCase - def setup - super - - String.class_eval { public :pathmap_explode } - end - - def teardown - String.class_eval { protected :pathmap_explode } - - super - end - - def test_explode - assert_equal ['a'], 'a'.pathmap_explode - assert_equal ['a', 'b'], 'a/b'.pathmap_explode - assert_equal ['a', 'b', 'c'], 'a/b/c'.pathmap_explode - assert_equal ['/', 'a'], '/a'.pathmap_explode - assert_equal ['/', 'a', 'b'], '/a/b'.pathmap_explode - assert_equal ['/', 'a', 'b', 'c'], '/a/b/c'.pathmap_explode - - if File::ALT_SEPARATOR - assert_equal ['c:.', 'a'], 'c:a'.pathmap_explode - assert_equal ['c:.', 'a', 'b'], 'c:a/b'.pathmap_explode - assert_equal ['c:.', 'a', 'b', 'c'], 'c:a/b/c'.pathmap_explode - assert_equal ['c:/', 'a'], 'c:/a'.pathmap_explode - assert_equal ['c:/', 'a', 'b'], 'c:/a/b'.pathmap_explode - assert_equal ['c:/', 'a', 'b', 'c'], 'c:/a/b/c'.pathmap_explode - end - end -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_path_map_partial.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_path_map_partial.rb deleted file mode 100644 index 566e681b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_path_map_partial.rb +++ /dev/null @@ -1,18 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakePathMapPartial < Rake::TestCase - def test_pathmap_partial - @path = "1/2/file" - def @path.call(n) - pathmap_partial(n) - end - assert_equal("1", @path.call(1)) - assert_equal("1/2", @path.call(2)) - assert_equal("1/2", @path.call(3)) - assert_equal(".", @path.call(0)) - assert_equal("2", @path.call(-1)) - assert_equal("1/2", @path.call(-2)) - assert_equal("1/2", @path.call(-3)) - end -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_pathname_extensions.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_pathname_extensions.rb deleted file mode 100644 index 7da702d0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_pathname_extensions.rb +++ /dev/null @@ -1,15 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/ext/pathname' - -class TestRakePathnameExtensions < Rake::TestCase - def test_ext_works_on_pathnames - pathname = Pathname.new("abc.foo") - assert_equal Pathname.new("abc.bar"), pathname.ext("bar") - end - - def test_path_map_works_on_pathnames - pathname = Pathname.new("this/is/a/dir/abc.rb") - assert_equal Pathname.new("abc.rb"), pathname.pathmap("%f") - assert_equal Pathname.new("this/is/a/dir"), pathname.pathmap("%d") - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_pseudo_status.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_pseudo_status.rb deleted file mode 100644 index 51b3fef3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_pseudo_status.rb +++ /dev/null @@ -1,21 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakePseudoStatus < Rake::TestCase - def test_with_zero_exit_status - s = Rake::PseudoStatus.new - assert_equal 0, s.exitstatus - assert_equal 0, s.to_i - assert_equal 0, s >> 8 - refute s.stopped? - assert s.exited? - end - - def test_with_99_exit_status - s = Rake::PseudoStatus.new(99) - assert_equal 99, s.exitstatus - assert_equal 25344, s.to_i - assert_equal 99, s >> 8 - refute s.stopped? - assert s.exited? - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_rake_test_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_rake_test_loader.rb deleted file mode 100644 index 0485c4c8..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_rake_test_loader.rb +++ /dev/null @@ -1,20 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeRakeTestLoader < Rake::TestCase - - def test_pattern - orig_loaded_features = $:.dup - FileUtils.touch 'foo.rb' - FileUtils.touch 'test_a.rb' - FileUtils.touch 'test_b.rb' - - ARGV.replace %w[foo.rb test_*.rb -v] - - load File.join(@rake_lib, 'rake/rake_test_loader.rb') - - assert_equal %w[-v], ARGV - ensure - $:.replace orig_loaded_features - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_reduce_compat.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_reduce_compat.rb deleted file mode 100644 index d2952665..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_reduce_compat.rb +++ /dev/null @@ -1,26 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'open3' - -class TestRakeReduceCompat < Rake::TestCase - include RubyRunner - - def invoke_normal(task_name) - rake task_name.to_s - @out - end - - def test_no_deprecated_dsl - rakefile %q{ - task :check_task do - Module.new { p defined?(task) } - end - - task :check_file do - Module.new { p defined?(file) } - end - } - - assert_equal "nil", invoke_normal(:check_task).chomp - assert_equal "nil", invoke_normal(:check_file).chomp - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_require.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_require.rb deleted file mode 100644 index d229edbc..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_require.rb +++ /dev/null @@ -1,40 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeRequire < Rake::TestCase - - def test_can_load_rake_library - rakefile_rakelib - app = Rake::Application.new - - assert app.instance_eval { - rake_require("test2", ['rakelib'], []) - } - end - - def test_wont_reload_rake_library - rakefile_rakelib - app = Rake::Application.new - - paths = ['rakelib'] - loaded_files = [] - app.rake_require("test2", paths, loaded_files) - - assert ! app.instance_eval { - rake_require("test2", paths, loaded_files) - } - end - - def test_throws_error_if_library_not_found - rakefile_rakelib - - app = Rake::Application.new - ex = assert_raises(LoadError) { - assert app.instance_eval { - rake_require("testx", ['rakelib'], []) - } - } - assert_match(/(can *not|can't)\s+find/i, ex.message) - assert_match(/testx/, ex.message) - end -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_rules.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_rules.rb deleted file mode 100644 index ece75e5d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_rules.rb +++ /dev/null @@ -1,388 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' - -class TestRakeRules < Rake::TestCase - include Rake - - SRCFILE = "abc.c" - SRCFILE2 = "xyz.c" - FTNFILE = "abc.f" - OBJFILE = "abc.o" - FOOFILE = "foo" - DOTFOOFILE = ".foo" - - def setup - super - - Task.clear - @runs = [] - end - - def test_multiple_rules1 - create_file(FTNFILE) - delete_file(SRCFILE) - delete_file(OBJFILE) - rule(/\.o$/ => ['.c']) do @runs << :C end - rule(/\.o$/ => ['.f']) do @runs << :F end - t = Task[OBJFILE] - t.invoke - Task[OBJFILE].invoke - assert_equal [:F], @runs - end - - def test_multiple_rules2 - create_file(FTNFILE) - delete_file(SRCFILE) - delete_file(OBJFILE) - rule(/\.o$/ => ['.f']) do @runs << :F end - rule(/\.o$/ => ['.c']) do @runs << :C end - Task[OBJFILE].invoke - assert_equal [:F], @runs - end - - def test_create_with_source - create_file(SRCFILE) - rule(/\.o$/ => ['.c']) do |t| - @runs << t.name - assert_equal OBJFILE, t.name - assert_equal SRCFILE, t.source - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_single_dependent - create_file(SRCFILE) - rule(/\.o$/ => '.c') do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_rule_can_be_created_by_string - create_file(SRCFILE) - rule '.o' => ['.c'] do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_rule_prereqs_can_be_created_by_string - create_file(SRCFILE) - rule '.o' => '.c' do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_plain_strings_as_dependents_refer_to_files - create_file(SRCFILE) - rule '.o' => SRCFILE do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_file_names_beginning_with_dot_can_be_tricked_into_referring_to_file - verbose(false) do - create_file('.foo') - rule '.o' => "./.foo" do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - end - - def test_file_names_beginning_with_dot_can_be_wrapped_in_lambda - verbose(false) do - - create_file(".foo") - rule '.o' => lambda { ".foo" } do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - .foo"], @runs - end - end - - def test_file_names_containing_percent_can_be_wrapped_in_lambda - verbose(false) do - create_file("foo%x") - rule '.o' => lambda { "foo%x" } do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - foo%x"], @runs - end - end - - def test_non_extension_rule_name_refers_to_file - verbose(false) do - create_file("abc.c") - rule "abc" => '.c' do |t| - @runs << t.name - end - Task["abc"].invoke - assert_equal ["abc"], @runs - end - end - - def test_pathmap_automatically_applies_to_name - verbose(false) do - create_file("zzabc.c") - rule ".o" => 'zz%{x,a}n.c' do |t| - @runs << "#{t.name} - #{t.source}" - end - Task["xbc.o"].invoke - assert_equal ["xbc.o - zzabc.c"], @runs - end - end - - def test_plain_strings_are_just_filenames - verbose(false) do - create_file("plainname") - rule ".o" => 'plainname' do |t| - @runs << "#{t.name} - #{t.source}" - end - Task["xbc.o"].invoke - assert_equal ["xbc.o - plainname"], @runs - end - end - - def test_rule_runs_when_explicit_task_has_no_actions - create_file(SRCFILE) - create_file(SRCFILE2) - delete_file(OBJFILE) - rule '.o' => '.c' do |t| - @runs << t.source - end - file OBJFILE => [SRCFILE2] - Task[OBJFILE].invoke - assert_equal [SRCFILE], @runs - end - - def test_close_matches_on_name_do_not_trigger_rule - create_file("x.c") - rule '.o' => ['.c'] do |t| - @runs << t.name - end - assert_raises(RuntimeError) { Task['x.obj'].invoke } - assert_raises(RuntimeError) { Task['x.xyo'].invoke } - end - - def test_rule_rebuilds_obj_when_source_is_newer - create_timed_files(OBJFILE, SRCFILE) - rule(/\.o$/ => ['.c']) do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [:RULE], @runs - end - - def test_rule_with_two_sources_runs_if_both_sources_are_present - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [:RULE], @runs - end - - def test_rule_with_two_sources_but_one_missing_does_not_run - create_timed_files(OBJFILE, SRCFILE) - delete_file(SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [], @runs - end - - def test_rule_with_two_sources_builds_both_sources - task 'x.aa' - task 'x.bb' - rule '.a' => '.aa' do - @runs << "A" - end - rule '.b' => '.bb' do - @runs << "B" - end - rule ".c" => ['.a', '.b'] do - @runs << "C" - end - Task["x.c"].invoke - assert_equal ["A", "B", "C"], @runs.sort - end - - def test_second_rule_runs_when_first_rule_doesnt - create_timed_files(OBJFILE, SRCFILE) - delete_file(SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE1 - end - rule OBJFILE => [lambda { SRCFILE }] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE2], @runs - end - - def test_second_rule_doest_run_if_first_triggers - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE1 - end - rule OBJFILE => [lambda { SRCFILE }] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE1], @runs - end - - def test_second_rule_doest_run_if_first_triggers_with_reversed_rules - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }] do - @runs << :RULE1 - end - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE1], @runs - end - - def test_rule_with_proc_dependent_will_trigger - mkdir_p("src/jw") - create_file("src/jw/X.java") - rule %r(classes/.*\.class) => [ - proc { |fn| fn.pathmap("%{classes,src}d/%n.java") } - ] do |task| - assert_equal task.name, 'classes/jw/X.class' - assert_equal task.source, 'src/jw/X.java' - @runs << :RULE - end - Task['classes/jw/X.class'].invoke - assert_equal [:RULE], @runs - ensure - rm_r("src", :verbose=>false) rescue nil - end - - def test_proc_returning_lists_are_flattened_into_prereqs - ran = false - mkdir_p("flatten") - create_file("flatten/a.txt") - task 'flatten/b.data' do |t| - ran = true - touch t.name, :verbose => false - end - rule '.html' => - proc { |fn| - [ - fn.ext("txt"), - "flatten/b.data" - ] - } do |task| - end - Task['flatten/a.html'].invoke - assert ran, "Should have triggered flattened dependency" - ensure - rm_r("flatten", :verbose=>false) rescue nil - end - - def test_recursive_rules_will_work_as_long_as_they_terminate - actions = [] - create_file("abc.xml") - rule '.y' => '.xml' do actions << 'y' end - rule '.c' => '.y' do actions << 'c'end - rule '.o' => '.c' do actions << 'o'end - rule '.exe' => '.o' do actions << 'exe'end - Task["abc.exe"].invoke - assert_equal ['y', 'c', 'o', 'exe'], actions - end - - def test_recursive_rules_that_dont_terminate_will_overflow - create_file("a.a") - prev = 'a' - ('b'..'z').each do |letter| - rule ".#{letter}" => ".#{prev}" do |t| puts "#{t.name}" end - prev = letter - end - ex = assert_raises(Rake::RuleRecursionOverflowError) { - Task["a.z"].invoke - } - assert_match(/a\.z => a.y/, ex.message) - end - - def test_rules_with_bad_dependents_will_fail - rule "a" => [1] do |t| puts t.name end - assert_raises(RuntimeError) do Task['a'].invoke end - end - - def test_string_rule_with_args - delete_file(OBJFILE) - create_file(SRCFILE) - rule '.o', [:a] => SRCFILE do |t, args| - assert_equal 'arg', args.a - end - Task[OBJFILE].invoke('arg') - end - - def test_regex_rule_with_args - delete_file(OBJFILE) - create_file(SRCFILE) - rule(/.o$/, [:a] => SRCFILE) do |t, args| - assert_equal 'arg', args.a - end - Task[OBJFILE].invoke('arg') - end - - def test_string_rule_with_args_and_lambda_prereq - delete_file(OBJFILE) - create_file(SRCFILE) - rule '.o', [:a] => [lambda{SRCFILE}]do |t, args| - assert_equal 'arg', args.a - end - Task[OBJFILE].invoke('arg') - end - - def test_regex_rule_with_args_and_lambda_prereq - delete_file(OBJFILE) - create_file(SRCFILE) - rule(/.o$/, [:a] => [lambda{SRCFILE}]) do |t, args| - assert_equal 'arg', args.a - end - Task[OBJFILE].invoke('arg') - end - - def test_rule_with_method_prereq - create_file(".foo") - obj = Object.new - def obj.find_prereq - ".foo" - end - rule '.o' => obj.method(:find_prereq) do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - .foo"], @runs - end - - def test_rule_with_one_arg_method_prereq - create_file(SRCFILE) - obj = Object.new - def obj.find_prereq(task_name) - task_name.ext(".c") - end - rule '.o' => obj.method(:find_prereq) do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - abc.c"], @runs - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_scope.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_scope.rb deleted file mode 100644 index ef06618b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_scope.rb +++ /dev/null @@ -1,44 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeScope < Rake::TestCase - include Rake - - def test_path_against_empty_scope - scope = Scope.make - assert_equal scope, Scope::EMPTY - assert_equal scope.path, "" - end - - def test_path_against_one_element - scope = Scope.make(:one) - assert_equal "one", scope.path - end - - def test_path_against_two_elements - scope = Scope.make(:inner, :outer) - assert_equal "outer:inner", scope.path - end - - def test_path_with_task_name - scope = Scope.make(:inner, :outer) - assert_equal "outer:inner:task", scope.path_with_task_name("task") - end - - def test_path_with_task_name_against_empty_scope - scope = Scope.make - assert_equal "task", scope.path_with_task_name("task") - end - - def test_conj_against_two_elements - scope = Scope.make.conj("B").conj("A") - assert_equal Scope.make("A", "B"), scope - end - - def test_trim - scope = Scope.make("A", "B") - assert_equal scope, scope.trim(0) - assert_equal scope.tail, scope.trim(1) - assert_equal scope.tail.tail, scope.trim(2) - assert_equal scope.tail.tail, scope.trim(3) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task.rb deleted file mode 100644 index d7f14efc..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task.rb +++ /dev/null @@ -1,393 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' - -class TestRakeTask < Rake::TestCase - include Rake - - def setup - super - - Task.clear - Rake::TaskManager.record_task_metadata = true - end - - def teardown - Rake::TaskManager.record_task_metadata = false - Rake.application.thread_pool.join - - super - end - - def test_create - arg = nil - t = task(:name) { |task| arg = task; 1234 } - assert_equal "name", t.name - assert_equal [], t.prerequisites - assert t.needed? - t.execute(0) - assert_equal t, arg - assert_nil t.source - assert_equal [], t.sources - assert_equal 1, t.locations.size - assert_match(/#{Regexp.quote(__FILE__)}/, t.locations.first) - end - - def test_inspect - t = task(:foo => [:bar, :baz]) - assert_equal " [bar, baz]>", t.inspect - end - - def test_invoke - runlist = [] - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - task(:t2) { |t| runlist << t.name } - task(:t3) { |t| runlist << t.name } - assert_equal ["t2", "t3"], t1.prerequisites - t1.invoke - assert_equal ["t2", "t3", "t1"], runlist - end - - def test_invoke_with_circular_dependencies - runlist = [] - t1 = task(:t1 => [:t2]) { |t| runlist << t.name; 3321 } - t2 = task(:t2 => [:t1]) { |t| runlist << t.name } - assert_equal ["t2"], t1.prerequisites - assert_equal ["t1"], t2.prerequisites - ex = assert_raises RuntimeError do - t1.invoke - end - assert_match(/circular dependency/i, ex.message) - assert_match(/t1 => t2 => t1/, ex.message) - end - - def test_dry_run_prevents_actions - Rake.application.options.dryrun = true - runlist = [] - t1 = task(:t1) { |t| runlist << t.name; 3321 } - _, err = capture_io { t1.invoke } - assert_match(/execute .*t1/i, err) - assert_match(/dry run/i, err) - refute_match(/invoke/i, err) - assert_equal [], runlist - ensure - Rake.application.options.dryrun = false - end - - def test_tasks_can_be_traced - Rake.application.options.trace = true - t1 = task(:t1) - _, err = capture_io { - t1.invoke - } - assert_match(/invoke t1/i, err) - assert_match(/execute t1/i, err) - ensure - Rake.application.options.trace = false - end - - def test_no_double_invoke - runlist = [] - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - task(:t2 => [:t3]) { |t| runlist << t.name } - task(:t3) { |t| runlist << t.name } - t1.invoke - assert_equal ["t3", "t2", "t1"], runlist - end - - def test_can_double_invoke_with_reenable - runlist = [] - t1 = task(:t1) { |t| runlist << t.name } - t1.invoke - t1.reenable - t1.invoke - assert_equal ["t1", "t1"], runlist - end - - def test_clear - desc "a task" - t = task("t" => "a") { } - t.clear - assert t.prerequisites.empty?, "prerequisites should be empty" - assert t.actions.empty?, "actions should be empty" - assert_nil t.comment, "comments should be empty" - end - - def test_clear_prerequisites - t = task("t" => ["a", "b"]) - assert_equal ['a', 'b'], t.prerequisites - t.clear_prerequisites - assert_equal [], t.prerequisites - end - - def test_clear_actions - t = task("t") { } - t.clear_actions - assert t.actions.empty?, "actions should be empty" - end - - def test_clear_comments - desc "the original foo" - task :foo => [:x] do - # Dummy action - end - - task(:foo).clear_comments - - desc "a slightly different foo" - task :foo - - assert_equal "a slightly different foo", task(:foo).comment - assert_equal ["x"], task(:foo).prerequisites - assert_equal 1, task(:foo).actions.size - end - - def test_find - task :tfind - assert_equal "tfind", Task[:tfind].name - ex = assert_raises(RuntimeError) { Task[:leaves] } - assert_equal "Don't know how to build task 'leaves'", ex.message - end - - def test_defined - assert ! Task.task_defined?(:a) - task :a - assert Task.task_defined?(:a) - end - - def test_multi_invocations - runs = [] - p = proc do |t| runs << t.name end - task({ :t1 => [:t2, :t3] }, &p) - task({ :t2 => [:t3] }, &p) - task(:t3, &p) - Task[:t1].invoke - assert_equal ["t1", "t2", "t3"], runs.sort - end - - def test_task_list - task :t2 - task :t1 => [:t2] - assert_equal ["t1", "t2"], Task.tasks.map { |t| t.name } - end - - def test_task_gives_name_on_to_s - task :abc - assert_equal "abc", Task[:abc].to_s - end - - def test_symbols_can_be_prerequisites - task :a => :b - assert_equal ["b"], Task[:a].prerequisites - end - - def test_strings_can_be_prerequisites - task :a => "b" - assert_equal ["b"], Task[:a].prerequisites - end - - def test_arrays_can_be_prerequisites - task :a => ["b", "c"] - assert_equal ["b", "c"], Task[:a].prerequisites - end - - def test_filelists_can_be_prerequisites - task :a => FileList.new.include("b", "c") - assert_equal ["b", "c"], Task[:a].prerequisites - end - - def test_prerequiste_tasks_returns_tasks_not_strings - a = task :a => ["b", "c"] - b = task :b - c = task :c - assert_equal [b, c], a.prerequisite_tasks - end - - def test_prerequiste_tasks_fails_if_prerequisites_are_undefined - a = task :a => ["b", "c"] - task :b - assert_raises(RuntimeError) do - a.prerequisite_tasks - end - end - - def test_prerequiste_tasks_honors_namespaces - a = b = nil - namespace "X" do - a = task :a => ["b", "c"] - b = task :b - end - c = task :c - - assert_equal [b, c], a.prerequisite_tasks - end - - def test_all_prerequisite_tasks_includes_all_prerequisites - a = task :a => "b" - b = task :b => ["c", "d"] - c = task :c => "e" - d = task :d - e = task :e - - assert_equal [b, c, d, e], a.all_prerequisite_tasks.sort_by { |t| t.name } - end - - def test_all_prerequisite_tasks_does_not_include_duplicates - a = task :a => ["b", "c"] - b = task :b => "c" - c = task :c - - assert_equal [b, c], a.all_prerequisite_tasks.sort_by { |t| t.name } - end - - def test_all_prerequisite_tasks_includes_self_on_cyclic_dependencies - a = task :a => "b" - b = task :b => "a" - - assert_equal [a, b], a.all_prerequisite_tasks.sort_by { |t| t.name } - end - - def test_timestamp_returns_now_if_all_prereqs_have_no_times - a = task :a => ["b", "c"] - task :b - task :c - - assert_in_delta Time.now, a.timestamp, 0.1, 'computer too slow?' - end - - def test_timestamp_returns_latest_prereq_timestamp - a = task :a => ["b", "c"] - b = task :b - c = task :c - - now = Time.now - def b.timestamp() Time.now + 10 end - def c.timestamp() Time.now + 5 end - - assert_in_delta now, a.timestamp, 0.1, 'computer too slow?' - end - - def test_always_multitask - mx = Mutex.new - result = [] - - t_a = task(:a) do |t| - sleep 0.2 - mx.synchronize { result << t.name } - end - - t_b = task(:b) do |t| - mx.synchronize { result << t.name } - end - - t_c = task(:c => [:a, :b]) do |t| - mx.synchronize { result << t.name } - end - - t_c.invoke - - # task should always run in order - assert_equal ['a', 'b', 'c'], result - - [t_a, t_b, t_c].each { |t| t.reenable } - result.clear - - Rake.application.options.always_multitask = true - t_c.invoke - - # with multitask, task 'b' should grab the mutex first - assert_equal ['b', 'a', 'c'], result - end - - def test_investigation_output - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - task(:t2) - task(:t3) - out = t1.investigation - assert_match(/class:\s*Rake::Task/, out) - assert_match(/needed:\s*true/, out) - assert_match(/pre-requisites:\s*--t[23]/, out) - end - - # NOTE: Rail-ties uses comment=. - def test_comment_setting - t = task(:t, :name, :rev) - t.comment = "A Comment" - assert_equal "A Comment", t.comment - end - - def test_comments_with_sentences - desc "Comment 1. Comment 2." - t = task(:t, :name, :rev) - assert_equal "Comment 1", t.comment - end - - def test_comments_with_tabbed_sentences - desc "Comment 1.\tComment 2." - t = task(:t, :name, :rev) - assert_equal "Comment 1", t.comment - end - - def test_comments_with_decimal_points - desc "Revision 1.2.3." - t = task(:t, :name, :rev) - assert_equal "Revision 1.2.3", t.comment - end - - def test_comments_do_not_set - t = task(:t, :name, :rev) - assert_equal nil, t.comment - end - - def test_comments_is_nil - t = task(:t, :name, :rev) - t.comment = nil - assert_equal nil, t.comment - end - - def test_extended_comments - desc %{ - This is a comment. - - And this is the extended comment. - name -- Name of task to execute. - rev -- Software revision to use. - } - t = task(:t, :name, :rev) - assert_equal "[name,rev]", t.arg_description - assert_equal "This is a comment", t.comment - assert_match(/^\s*name -- Name/, t.full_comment) - assert_match(/^\s*rev -- Software/, t.full_comment) - assert_match(/\A\s*This is a comment\.$/, t.full_comment) - end - - def test_multiple_comments - desc "line one" - t = task(:t) - desc "line two" - task(:t) - assert_equal "line one / line two", t.comment - end - - def test_duplicate_comments - desc "line one" - t = task(:t) - desc "line one" - task(:t) - assert_equal "line one", t.comment - end - - def test_interspersed_duplicate_comments - desc "line one" - t = task(:t) - desc "line two" - task(:t) - desc "line one" - task(:t) - assert_equal "line one / line two", t.comment - end - - def test_source_is_first_prerequisite - t = task :t => ["preqA", "preqB"] - assert_equal "preqA", t.source - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_argument_parsing.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_argument_parsing.rb deleted file mode 100644 index 3cb5d9cf..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_argument_parsing.rb +++ /dev/null @@ -1,119 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTaskArgumentParsing < Rake::TestCase - def setup - super - - @app = Rake::Application.new - end - - def test_name_only - name, args = @app.parse_task_string("name") - assert_equal "name", name - assert_equal [], args - end - - def test_empty_args - name, args = @app.parse_task_string("name[]") - assert_equal "name", name - assert_equal [], args - end - - def test_one_argument - name, args = @app.parse_task_string("name[one]") - assert_equal "name", name - assert_equal ["one"], args - end - - def test_two_arguments - name, args = @app.parse_task_string("name[one,two]") - assert_equal "name", name - assert_equal ["one", "two"], args - end - - def test_can_handle_spaces_between_args - name, args = @app.parse_task_string("name[one, two,\tthree , \tfour]") - assert_equal "name", name - assert_equal ["one", "two", "three", "four"], args - end - - def test_keeps_embedded_spaces - name, args = @app.parse_task_string("name[a one ana, two]") - assert_equal "name", name - assert_equal ["a one ana", "two"], args - end - - def test_can_handle_commas_in_args - name, args = @app.parse_task_string("name[one, two, three_a\\, three_b, four]") - assert_equal "name", name - assert_equal ["one", "two", "three_a, three_b", "four"], args - end - - def test_treat_blank_arg_as_empty_string - name, args = @app.parse_task_string("name[one,]") - assert_equal "name", name - assert_equal ["one", ""], args - - name, args = @app.parse_task_string("name[one,,two]") - assert_equal "name", name - assert_equal ["one", "", "two"], args - end - - def test_terminal_width_using_env - app = Rake::Application.new - app.terminal_columns = 1234 - - assert_equal 1234, app.terminal_width - end - - def test_terminal_width_using_stty - def @app.unix?() true end - def @app.dynamic_width_stty() 1235 end - def @app.dynamic_width_tput() 0 end - - assert_equal 1235, @app.terminal_width - end - - def test_terminal_width_using_tput - def @app.unix?() true end - def @app.dynamic_width_stty() 0 end - def @app.dynamic_width_tput() 1236 end - - assert_equal 1236, @app.terminal_width - end - - def test_terminal_width_using_hardcoded_80 - def @app.unix?() false end - - assert_equal 80, @app.terminal_width - end - - def test_terminal_width_with_failure - def @app.unix?() raise end - - assert_equal 80, @app.terminal_width - end - - def test_no_rakeopt - ARGV << '--trace' - app = Rake::Application.new - app.init - assert !app.options.silent - end - - def test_rakeopt_with_blank_options - ARGV << '--trace' - app = Rake::Application.new - app.init - assert !app.options.silent - end - - def test_rakeopt_with_silent_options - ENV['RAKEOPT'] = '-s' - app = Rake::Application.new - - app.init - - assert app.options.silent - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_arguments.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_arguments.rb deleted file mode 100644 index 369ecf6e..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_arguments.rb +++ /dev/null @@ -1,127 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -###################################################################### -class TestRakeTaskArguments < Rake::TestCase - def teardown - ENV.delete('rev') - ENV.delete('VER') - - super - end - - def test_empty_arg_list_is_empty - ta = Rake::TaskArguments.new([], []) - assert_equal({}, ta.to_hash) - end - - def test_multiple_values_in_args - ta = Rake::TaskArguments.new([:a, :b, :c], [:one, :two, :three]) - assert_equal({:a => :one, :b => :two, :c => :three}, ta.to_hash) - end - - def test_has_key - ta = Rake::TaskArguments.new([:a], [:one]) - assert(ta.has_key?(:a)) - refute(ta.has_key?(:b)) - end - - def test_to_s - ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3]) - assert_equal ta.to_hash.inspect, ta.to_s - assert_equal ta.to_hash.inspect, ta.inspect - end - - def test_enumerable_behavior - ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3]) - assert_equal [10, 20, 30], ta.map { |k, v| v * 10 }.sort - end - - def test_named_args - ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2]) - assert_equal 1, ta.aa - assert_equal 1, ta[:aa] - assert_equal 1, ta["aa"] - assert_equal 2, ta.bb - assert_nil ta.cc - end - - def test_args_knows_its_names - ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2]) - assert_equal ["aa", "bb"], ta.names - end - - def test_extra_names_are_nil - ta = Rake::TaskArguments.new(["aa", "bb", "cc"], [1, 2]) - assert_nil ta.cc - end - - def test_args_do_not_reference_env_values - ta = Rake::TaskArguments.new(["aa"], [1]) - ENV['rev'] = "1.2" - ENV['VER'] = "2.3" - assert_nil ta.rev - assert_nil ta.ver - end - - def test_creating_new_argument_scopes - parent = Rake::TaskArguments.new(['p'], [1]) - child = parent.new_scope(['c', 'p']) - assert_equal({:p=>1}, child.to_hash) - assert_equal 1, child.p - assert_equal 1, child["p"] - assert_equal 1, child[:p] - assert_nil child.c - end - - def test_child_hides_parent_arg_names - parent = Rake::TaskArguments.new(['aa'], [1]) - child = Rake::TaskArguments.new(['aa'], [2], parent) - assert_equal 2, child.aa - end - - def test_default_arguments_values_can_be_merged - ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"]) - ta.with_defaults({ :aa => 'default_val' }) - assert_equal 'default_val', ta[:aa] - assert_equal 'original_val', ta[:bb] - end - - def test_default_arguments_that_dont_match_names_are_ignored - ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"]) - ta.with_defaults({ "cc" => "default_val" }) - assert_nil ta[:cc] - end - - def test_all_and_extra_arguments_without_named_arguments - app = Rake::Application.new - _, args = app.parse_task_string("task[1,two,more]") - ta = Rake::TaskArguments.new([], args) - assert_equal [], ta.names - assert_equal ['1', 'two', 'more'], ta.to_a - assert_equal ['1', 'two', 'more'], ta.extras - end - - def test_all_and_extra_arguments_with_named_arguments - app = Rake::Application.new - _, args = app.parse_task_string("task[1,two,more,still more]") - ta = Rake::TaskArguments.new([:first, :second], args) - assert_equal [:first, :second], ta.names - assert_equal "1", ta[:first] - assert_equal "two", ta[:second] - assert_equal ['1', 'two', 'more', 'still more'], ta.to_a - assert_equal ['more', 'still more'], ta.extras - end - - def test_extra_args_with_less_than_named_arguments - app = Rake::Application.new - _, args = app.parse_task_string("task[1,two]") - ta = Rake::TaskArguments.new([:first, :second, :third], args) - assert_equal [:first, :second, :third], ta.names - assert_equal "1", ta[:first] - assert_equal "two", ta[:second] - assert_equal nil, ta[:third] - assert_equal ['1', 'two'], ta.to_a - assert_equal [], ta.extras - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_lib.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_lib.rb deleted file mode 100644 index 9f3f7e9d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_lib.rb +++ /dev/null @@ -1,9 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/tasklib' - -class TestRakeTaskLib < Rake::TestCase - def test_paste - tl = Rake::TaskLib.new - assert_equal :ab, tl.paste(:a, :b) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_manager.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_manager.rb deleted file mode 100644 index c2730b67..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_manager.rb +++ /dev/null @@ -1,178 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTaskManager < Rake::TestCase - - def setup - super - - @tm = Rake::TestCase::TaskManager.new - end - - def test_create_task_manager - refute_nil @tm - assert_equal [], @tm.tasks - end - - def test_define_task - t = @tm.define_task(Rake::Task, :t) - assert_equal "t", t.name - assert_equal @tm, t.application - end - - def test_index - e = assert_raises RuntimeError do - @tm['bad'] - end - - assert_equal "Don't know how to build task 'bad'", e.message - end - - def test_name_lookup - t = @tm.define_task(Rake::Task, :t) - assert_equal t, @tm[:t] - end - - def test_namespace_task_create - @tm.in_namespace("x") do - t = @tm.define_task(Rake::Task, :t) - assert_equal "x:t", t.name - end - assert_equal ["x:t"], @tm.tasks.map { |t| t.name } - end - - def test_define_namespaced_task - t = @tm.define_task(Rake::Task, 'n:a:m:e:t') - assert_equal Rake::Scope.make("e", "m", "a", "n"), t.scope - assert_equal "n:a:m:e:t", t.name - assert_equal @tm, t.application - end - - def test_define_namespace_in_namespace - t = nil - @tm.in_namespace("n") do - t = @tm.define_task(Rake::Task, 'a:m:e:t') - end - assert_equal Rake::Scope.make("e", "m", "a", "n"), t.scope - assert_equal "n:a:m:e:t", t.name - assert_equal @tm, t.application - end - - def test_anonymous_namespace - anon_ns = @tm.in_namespace(nil) do - t = @tm.define_task(Rake::Task, :t) - assert_equal "_anon_1:t", t.name - end - task = anon_ns[:t] - assert_equal "_anon_1:t", task.name - end - - def test_create_filetask_in_namespace - @tm.in_namespace("x") do - t = @tm.define_task(Rake::FileTask, "fn") - assert_equal "fn", t.name - end - - assert_equal ["fn"], @tm.tasks.map { |t| t.name } - end - - def test_namespace_yields_same_namespace_as_returned - yielded_namespace = nil - returned_namespace = @tm.in_namespace("x") do |ns| - yielded_namespace = ns - end - assert_equal returned_namespace, yielded_namespace - end - - def test_name_lookup_with_implicit_file_tasks - FileUtils.touch 'README.rdoc' - - t = @tm["README.rdoc"] - - assert_equal "README.rdoc", t.name - assert Rake::FileTask === t - end - - def test_name_lookup_with_nonexistent_task - assert_raises(RuntimeError) { - @tm["DOES NOT EXIST"] - } - end - - def test_name_lookup_in_multiple_scopes - aa = nil - bb = nil - xx = @tm.define_task(Rake::Task, :xx) - top_z = @tm.define_task(Rake::Task, :z) - @tm.in_namespace("a") do - aa = @tm.define_task(Rake::Task, :aa) - mid_z = @tm.define_task(Rake::Task, :z) - ns_d = @tm.define_task(Rake::Task, "n:t") - @tm.in_namespace("b") do - bb = @tm.define_task(Rake::Task, :bb) - bot_z = @tm.define_task(Rake::Task, :z) - - assert_equal Rake::Scope.make("b", "a"), @tm.current_scope - - assert_equal bb, @tm["a:b:bb"] - assert_equal aa, @tm["a:aa"] - assert_equal xx, @tm["xx"] - assert_equal bot_z, @tm["z"] - assert_equal mid_z, @tm["^z"] - assert_equal top_z, @tm["^^z"] - assert_equal top_z, @tm["^^^z"] # Over the top - assert_equal top_z, @tm["rake:z"] - end - - assert_equal Rake::Scope.make("a"), @tm.current_scope - - assert_equal bb, @tm["a:b:bb"] - assert_equal aa, @tm["a:aa"] - assert_equal xx, @tm["xx"] - assert_equal bb, @tm["b:bb"] - assert_equal aa, @tm["aa"] - assert_equal mid_z, @tm["z"] - assert_equal top_z, @tm["^z"] - assert_equal top_z, @tm["^^z"] # Over the top - assert_equal top_z, @tm["rake:z"] - assert_equal ns_d, @tm["n:t"] - assert_equal ns_d, @tm["a:n:t"] - end - - assert_equal Rake::Scope.make, @tm.current_scope - - assert_equal Rake::Scope.make, xx.scope - assert_equal Rake::Scope.make('a'), aa.scope - assert_equal Rake::Scope.make('b', 'a'), bb.scope - end - - def test_lookup_with_explicit_scopes - t1, t2, t3, s = (0...4).map { nil } - t1 = @tm.define_task(Rake::Task, :t) - @tm.in_namespace("a") do - t2 = @tm.define_task(Rake::Task, :t) - s = @tm.define_task(Rake::Task, :s) - @tm.in_namespace("b") do - t3 = @tm.define_task(Rake::Task, :t) - end - end - assert_equal t1, @tm[:t, Rake::Scope.make] - assert_equal t2, @tm[:t, Rake::Scope.make("a")] - assert_equal t3, @tm[:t, Rake::Scope.make("b", "a")] - assert_equal s, @tm[:s, Rake::Scope.make("b", "a")] - assert_equal s, @tm[:s, Rake::Scope.make("a")] - end - - def test_correctly_scoped_prerequisites_are_invoked - values = [] - @tm = Rake::Application.new - @tm.define_task(Rake::Task, :z) do values << "top z" end - @tm.in_namespace("a") do - @tm.define_task(Rake::Task, :z) do values << "next z" end - @tm.define_task(Rake::Task, :x => :z) - end - - @tm["a:x"].invoke - assert_equal ["next z"], values - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_manager_argument_resolution.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_manager_argument_resolution.rb deleted file mode 100644 index 43fa2ac4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_manager_argument_resolution.rb +++ /dev/null @@ -1,19 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTaskManagerArgumentResolution < Rake::TestCase - - def test_good_arg_patterns - assert_equal [:t, [], []], task(:t) - assert_equal [:t, [], [:x]], task(:t => :x) - assert_equal [:t, [], [:x, :y]], task(:t => [:x, :y]) - - assert_equal [:t, [:a, :b], []], task(:t, [:a, :b]) - assert_equal [:t, [:a, :b], [:x]], task(:t, [:a, :b] => :x) - assert_equal [:t, [:a, :b], [:x, :y]], task(:t, [:a, :b] => [:x, :y]) - end - - def task(*args) - tm = Rake::TestCase::TaskManager.new - tm.resolve_args(args) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_with_arguments.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_with_arguments.rb deleted file mode 100644 index 8646fc04..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_task_with_arguments.rb +++ /dev/null @@ -1,172 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTaskWithArguments < Rake::TestCase - include Rake - - def setup - super - - Task.clear - Rake::TaskManager.record_task_metadata = true - end - - def teardown - Rake::TaskManager.record_task_metadata = false - Rake.application.thread_pool.join - - super - end - - def test_no_args_given - t = task :t - assert_equal [], t.arg_names - end - - def test_args_given - t = task :t, :a, :b - assert_equal [:a, :b], t.arg_names - end - - def test_name_and_needs - t = task(:t => [:pre]) - assert_equal "t", t.name - assert_equal [], t.arg_names - assert_equal ["pre"], t.prerequisites - end - - def test_name_args_and_prereqs - t = task(:t, [:x, :y] => [:pre]) - assert_equal "t", t.name - assert_equal [:x, :y], t.arg_names - assert_equal ["pre"], t.prerequisites - end - - def test_arg_list_is_empty_if_no_args_given - t = task(:t) { |tt, args| assert_equal({}, args.to_hash) } - t.invoke(1, 2, 3) - end - - def test_tasks_can_access_arguments_as_hash - t = task :t, :a, :b, :c do |tt, args| - assert_equal({:a => 1, :b => 2, :c => 3}, args.to_hash) - assert_equal 1, args[:a] - assert_equal 2, args[:b] - assert_equal 3, args[:c] - assert_equal 1, args.a - assert_equal 2, args.b - assert_equal 3, args.c - end - t.invoke(1, 2, 3) - end - - def test_actions_of_various_arity_are_ok_with_args - notes = [] - t = task(:t, :x) do - notes << :a - end - t.enhance do | | - notes << :b - end - t.enhance do |task| - notes << :c - assert_kind_of Task, task - end - t.enhance do |t2, args| - notes << :d - assert_equal t, t2 - assert_equal({:x => 1}, args.to_hash) - end - t.invoke(1) - assert_equal [:a, :b, :c, :d], notes - end - - def test_arguments_are_passed_to_block - t = task(:t, :a, :b) { |tt, args| - assert_equal({ :a => 1, :b => 2 }, args.to_hash) - } - t.invoke(1, 2) - end - - def test_extra_parameters_are_ignored - t = task(:t, :a) { |tt, args| - assert_equal 1, args.a - assert_nil args.b - } - t.invoke(1, 2) - end - - def test_arguments_are_passed_to_all_blocks - counter = 0 - t = task :t, :a - task :t do |tt, args| - assert_equal 1, args.a - counter += 1 - end - task :t do |tt, args| - assert_equal 1, args.a - counter += 1 - end - t.invoke(1) - assert_equal 2, counter - end - - def test_block_with_no_parameters_is_ok - t = task(:t) { } - t.invoke(1, 2) - end - - def test_name_with_args - desc "T" - t = task(:tt, :a, :b) - assert_equal "tt", t.name - assert_equal "T", t.comment - assert_equal "[a,b]", t.arg_description - assert_equal "tt[a,b]", t.name_with_args - assert_equal [:a, :b], t.arg_names - end - - def test_named_args_are_passed_to_prereqs - value = nil - task(:pre, :rev) { |t, args| value = args.rev } - t = task(:t, [:name, :rev] => [:pre]) - t.invoke("bill", "1.2") - assert_equal "1.2", value - end - - def test_args_not_passed_if_no_prereq_names_on_task - task(:pre) { |t, args| - assert_equal({}, args.to_hash) - assert_equal "bill", args.name - } - t = task(:t, [:name, :rev] => [:pre]) - t.invoke("bill", "1.2") - end - - def test_args_not_passed_if_no_prereq_names_on_multitask - task(:pre) { |t, args| - assert_equal({}, args.to_hash) - assert_equal "bill", args.name - } - t = multitask(:t, [:name, :rev] => [:pre]) - t.invoke("bill", "1.2") - end - - def test_args_not_passed_if_no_arg_names - task(:pre, :rev) { |t, args| - assert_equal({}, args.to_hash) - } - t = task(:t => [:pre]) - t.invoke("bill", "1.2") - end - - def test_values_at - t = task(:pre, [:a, :b, :c]) { |task, args| - a, b, c = args.values_at(:a, :b, :c) - assert_equal %w[1 2 3], [a, b, c] - } - - t.invoke(*%w[1 2 3]) - - # HACK no assertions - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_test_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_test_task.rb deleted file mode 100644 index 5c4be797..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_test_task.rb +++ /dev/null @@ -1,146 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/testtask' - -class TestRakeTestTask < Rake::TestCase - include Rake - - def test_initialize - tt = Rake::TestTask.new do |t| end - refute_nil tt - assert_equal :test, tt.name - assert_equal ['lib'], tt.libs - assert_equal 'test/test*.rb', tt.pattern - assert_equal false, tt.verbose - assert Task.task_defined?(:test) - end - - def test_initialize_override - tt = Rake::TestTask.new(:example) do |t| - t.description = "Run example tests" - t.libs = ['src', 'ext'] - t.pattern = 'test/tc_*.rb' - t.verbose = true - end - refute_nil tt - assert_equal "Run example tests", tt.description - assert_equal :example, tt.name - assert_equal ['src', 'ext'], tt.libs - assert_equal 'test/tc_*.rb', tt.pattern - assert_equal true, tt.verbose - assert Task.task_defined?(:example) - end - - def test_file_list_env_test - ENV['TEST'] = 'testfile.rb' - tt = Rake::TestTask.new do |t| - t.pattern = '*' - end - - assert_equal ["testfile.rb"], tt.file_list.to_a - ensure - ENV.delete 'TEST' - end - - def test_libs_equals - test_task = Rake::TestTask.new do |t| - t.libs << ["A", "B"] - end - - path = %w[lib A B].join File::PATH_SEPARATOR - - assert_equal "-I\"#{path}\"", test_task.ruby_opts_string - end - - def test_libs_equals_empty - test_task = Rake::TestTask.new do |t| - t.libs = [] - end - - assert_equal '', test_task.ruby_opts_string - end - - def test_pattern_equals - tt = Rake::TestTask.new do |t| - t.pattern = '*.rb' - end - assert_equal ['*.rb'], tt.file_list.to_a - end - - def test_pattern_equals_test_files_equals - tt = Rake::TestTask.new do |t| - t.test_files = FileList['a.rb', 'b.rb'] - t.pattern = '*.rb' - end - assert_equal ['a.rb', 'b.rb', '*.rb'], tt.file_list.to_a - end - - def test_run_code_direct - test_task = Rake::TestTask.new do |t| - t.loader = :direct - end - - assert_equal '-e "ARGV.each{|f| require f}"', test_task.run_code - end - - def test_run_code_rake - spec = Gem::Specification.new 'rake', 0 - spec.loaded_from = File.join Gem::Specification.dirs.last, 'rake-0.gemspec' - rake, Gem.loaded_specs['rake'] = Gem.loaded_specs['rake'], spec - - test_task = Rake::TestTask.new do |t| - t.loader = :rake - end - - assert_match(/\A-I".*?" ".*?"\Z/, test_task.run_code) - ensure - Gem.loaded_specs['rake'] = rake - end - - def test_run_code_rake_default_gem - skip 'this ruby does not have default gems' unless - Gem::Specification.method_defined? :default_specifications_dir - - default_spec = Gem::Specification.new 'rake', 0 - default_spec.loaded_from = File.join Gem::Specification.default_specifications_dir, 'rake-0.gemspec' - begin - rake, Gem.loaded_specs['rake'] = Gem.loaded_specs['rake'], default_spec - - test_task = Rake::TestTask.new do |t| - t.loader = :rake - end - - assert_match(/\A(-I".*?" *)* ".*?"\Z/, test_task.run_code) - ensure - Gem.loaded_specs['rake'] = rake - end - end - - def test_run_code_testrb_ruby_1_8_2 - test_task = Rake::TestTask.new do |t| - t.loader = :testrb - end - - def test_task.ruby_version() '1.8.2' end - - assert_match(/^-S testrb +".*"$/, test_task.run_code) - end - - def test_run_code_testrb_ruby_1_8_6 - test_task = Rake::TestTask.new do |t| - t.loader = :testrb - end - - def test_task.ruby_version() '1.8.6' end - - assert_match(/^-S testrb +$/, test_task.run_code) - end - - def test_test_files_equals - tt = Rake::TestTask.new do |t| - t.test_files = FileList['a.rb', 'b.rb'] - end - - assert_equal ["a.rb", 'b.rb'], tt.file_list.to_a - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_thread_pool.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_thread_pool.rb deleted file mode 100644 index 35a1fe9d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_thread_pool.rb +++ /dev/null @@ -1,145 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/thread_pool' - -class TestRakeTestThreadPool < Rake::TestCase - include Rake - - def test_pool_executes_in_current_thread_for_zero_threads - pool = ThreadPool.new(0) - f = pool.future { Thread.current } - pool.join - assert_equal Thread.current, f.value - end - - def test_pool_executes_in_other_thread_for_pool_of_size_one - pool = ThreadPool.new(1) - f = pool.future { Thread.current } - pool.join - refute_equal Thread.current, f.value - end - - def test_pool_executes_in_two_other_threads_for_pool_of_size_two - pool = ThreadPool.new(2) - threads = 2.times.map { - pool.future { - sleep 0.1 - Thread.current - } - }.each { |f| - f.value - } - - refute_equal threads[0], threads[1] - refute_equal Thread.current, threads[0] - refute_equal Thread.current, threads[1] - ensure - pool.join - end - - def test_pool_creates_the_correct_number_of_threads - pool = ThreadPool.new(2) - threads = Set.new - t_mutex = Mutex.new - 10.times.each do - pool.future do - sleep 0.02 - t_mutex.synchronize { threads << Thread.current } - end - end - pool.join - assert_equal 2, threads.count - end - - def test_pool_future_does_not_duplicate_arguments - pool = ThreadPool.new(2) - obj = Object.new - captured = nil - pool.future(obj) { |var| captured = var } - pool.join - assert_equal obj, captured - end - - def test_pool_join_empties_queue - pool = ThreadPool.new(2) - repeat = 25 - repeat.times { - pool.future do - repeat.times { - pool.future do - repeat.times { - pool.future do end - } - end - } - end - } - - pool.join - assert_equal( - true, - pool.__send__(:__queue__).empty?, - "queue should be empty") - end - - CustomError = Class.new(StandardError) - - # test that throwing an exception way down in the blocks propagates - # to the top - def test_exceptions - pool = ThreadPool.new(10) - - deep_exception_block = lambda do |count| - raise CustomError if count < 1 - pool.future(count - 1, &deep_exception_block).value - end - - assert_raises(CustomError) do - pool.future(2, &deep_exception_block).value - end - ensure - pool.join - end - - def test_pool_prevents_deadlock - pool = ThreadPool.new(5) - - common_dependency_a = pool.future { sleep 0.2 } - futures_a = 10.times.map { - pool.future { - common_dependency_a.value - sleep(rand() * 0.01) - } - } - - common_dependency_b = pool.future { futures_a.each { |f| f.value } } - futures_b = 10.times.map { - pool.future { - common_dependency_b.value - sleep(rand() * 0.01) - } - } - - futures_b.each { |f| f.value } - pool.join - end - - def test_pool_reports_correct_results - pool = ThreadPool.new(7) - - a = 18 - b = 5 - c = 3 - - result = a.times.map do - pool.future do - b.times.map do - pool.future { sleep rand * 0.001; c } - end.reduce(0) { |m, f| m + f.value } - end - end.reduce(0) { |m, f| m + f.value } - - assert_equal a * b * c, result - pool.join - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_top_level_functions.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_top_level_functions.rb deleted file mode 100644 index fee702dc..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_top_level_functions.rb +++ /dev/null @@ -1,71 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTopLevelFunctions < Rake::TestCase - - def setup - super - - @app = Object.new - - def @app.called - @called - end - - def @app.method_missing(*a, &b) - @called ||= [] - @called << [a, b] - nil - end - - Rake.application = @app - end - - def test_namespace - block = proc do end - - namespace("xyz", &block) - - expected = [ - [[:in_namespace, 'xyz'], block] - ] - - assert_equal expected, @app.called - end - - def test_import - import('x', 'y', 'z') - - expected = [ - [[:add_import, 'x'], nil], - [[:add_import, 'y'], nil], - [[:add_import, 'z'], nil], - ] - - assert_equal expected, @app.called - end - - def test_when_writing - out, = capture_io do - when_writing("NOTWRITING") do - puts "WRITING" - end - end - assert_equal "WRITING\n", out - end - - def test_when_not_writing - Rake::FileUtilsExt.nowrite_flag = true - _, err = capture_io do - when_writing("NOTWRITING") do - puts "WRITING" - end - end - assert_equal "DRYRUN: NOTWRITING\n", err - ensure - Rake::FileUtilsExt.nowrite_flag = false - end - - def test_missing_other_constant - assert_raises(NameError) do Object.const_missing(:Xyz) end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_win32.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_win32.rb deleted file mode 100644 index fc2746a0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_rake_win32.rb +++ /dev/null @@ -1,72 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeWin32 < Rake::TestCase - - Win32 = Rake::Win32 - - def test_win32_system_dir_uses_home_if_defined - ENV['HOME'] = 'C:\\HP' - - assert_equal "C:/HP/Rake", Win32.win32_system_dir - end - - def test_win32_system_dir_uses_homedrive_homepath_when_no_home_defined - ENV['HOME'] = nil - ENV['HOMEDRIVE'] = 'C:' - ENV['HOMEPATH'] = '\\HP' - - assert_equal "C:/HP/Rake", Win32.win32_system_dir - end - - def test_win32_system_dir_uses_appdata_when_no_home_or_home_combo - ENV['APPDATA'] = "C:\\Documents and Settings\\HP\\Application Data" - ENV['HOME'] = nil - ENV['HOMEDRIVE'] = nil - ENV['HOMEPATH'] = nil - - assert_equal "C:/Documents and Settings/HP/Application Data/Rake", - Win32.win32_system_dir - end - - def test_win32_system_dir_fallback_to_userprofile_otherwise - ENV['HOME'] = nil - ENV['HOMEDRIVE'] = nil - ENV['HOMEPATH'] = nil - ENV['APPDATA'] = nil - ENV['USERPROFILE'] = "C:\\Documents and Settings\\HP" - - assert_equal "C:/Documents and Settings/HP/Rake", Win32.win32_system_dir - end - - def test_win32_system_dir_nil_of_no_env_vars - ENV['APPDATA'] = nil - ENV['HOME'] = nil - ENV['HOMEDRIVE'] = nil - ENV['HOMEPATH'] = nil - ENV['RAKE_SYSTEM'] = nil - ENV['USERPROFILE'] = nil - - assert_raises(Rake::Win32::Win32HomeError) do - Win32.win32_system_dir - end - end - - def test_win32_backtrace_with_different_case - ex = nil - begin - raise 'test exception' - rescue => ex - end - - ex.set_backtrace ['abc', 'rakefile'] - - rake = Rake::Application.new - rake.options.trace = true - rake.instance_variable_set(:@rakefile, 'Rakefile') - - _, err = capture_io { rake.display_error_message(ex) } - - assert_match(/rakefile/, err) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_thread_history_display.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_thread_history_display.rb deleted file mode 100644 index bb5879cf..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_thread_history_display.rb +++ /dev/null @@ -1,101 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -require 'rake/thread_history_display' - -class TestThreadHistoryDisplay < Rake::TestCase - def setup - super - @time = 1_000_000 - @stats = [] - @display = Rake::ThreadHistoryDisplay.new(@stats) - end - - def test_banner - out, _ = capture_io do - @display.show - end - assert_match(/Job History/i, out) - end - - def test_item_queued - @stats << event(:item_queued, :item_id => 123) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +item_queued +item_id:1$/, out) - end - - def test_item_dequeued - @stats << event(:item_dequeued, :item_id => 123) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +item_dequeued +item_id:1$/, out) - end - - def test_multiple_items - @stats << event(:item_queued, :item_id => 123) - @stats << event(:item_queued, :item_id => 124) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +item_queued +item_id:1$/, out) - assert_match(/^ *1000001 +A +item_queued +item_id:2$/, out) - end - - def test_waiting - @stats << event(:waiting, :item_id => 123) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +waiting +item_id:1$/, out) - end - - def test_continue - @stats << event(:continue, :item_id => 123) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +continue +item_id:1$/, out) - end - - def test_thread_deleted - @stats << event( - :thread_deleted, - :deleted_thread => 123_456, - :thread_count => 12) - out, _ = capture_io do - @display.show - end - assert_match( - /^ *1000000 +A +thread_deleted( +deleted_thread:B| +thread_count:12){2}$/, - out) - end - - def test_thread_created - @stats << event( - :thread_created, - :new_thread => 123_456, - :thread_count => 13) - out, _ = capture_io do - @display.show - end - assert_match( - /^ *1000000 +A +thread_created( +new_thread:B| +thread_count:13){2}$/, - out) - end - - private - - def event(type, data = {}) - result = { - :event => type, - :time => @time / 1_000_000.0, - :data => data, - :thread => Thread.current.object_id - } - @time += 1 - result - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_trace_output.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_trace_output.rb deleted file mode 100644 index f9aead98..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/test/test_trace_output.rb +++ /dev/null @@ -1,52 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'stringio' - -class TestTraceOutput < Rake::TestCase - include Rake::TraceOutput - - class PrintSpy - attr_reader :result, :calls - - def initialize - @result = "" - @calls = 0 - end - - def print(string) - @result << string - @calls += 1 - end - end - - def test_trace_issues_single_io_for_args_with_empty_args - spy = PrintSpy.new - trace_on(spy) - assert_equal "\n", spy.result - assert_equal 1, spy.calls - end - - def test_trace_issues_single_io_for_args_multiple_strings - spy = PrintSpy.new - trace_on(spy, "HI\n", "LO") - assert_equal "HI\nLO\n", spy.result - assert_equal 1, spy.calls - end - - def test_trace_handles_nil_objects - spy = PrintSpy.new - trace_on(spy, "HI\n", nil, "LO") - assert_equal "HI\nLO\n", spy.result - assert_equal 1, spy.calls - end - - def test_trace_issues_single_io_for_args_multiple_strings_and_alternate_sep - old_sep = $\ - $\ = "\r" - spy = PrintSpy.new - trace_on(spy, "HI\r", "LO") - assert_equal "HI\rLO\r", spy.result - assert_equal 1, spy.calls - ensure - $\ = old_sep - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/.autotest b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/.autotest deleted file mode 100644 index 0988b12a..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/.autotest +++ /dev/null @@ -1,7 +0,0 @@ -require 'autotest/restart' - -Autotest.add_hook :initialize do |at| - at.testlib = '' - at.add_exception '.git' -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/.rubocop.yml b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/.rubocop.yml deleted file mode 100644 index 6d2bfcdb..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/.rubocop.yml +++ /dev/null @@ -1,27 +0,0 @@ -StringLiterals: - Enabled: false - -MultilineBlocks: - Enabled: false - -SingleLineBlocks: - Enabled: false - -NewLambdaLiteral: - Enabled: false - -SpaceAroundEqualsInParameterDefault: - Enabled: false - -HashSyntax: - Enabled: false - -LineLength: - Enabled: true - Max: 90 - -WhileUntilModifier: - Enabled: false - -IfUnlessModifier: - Enabled: false diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/.togglerc b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/.togglerc deleted file mode 100644 index c8c5a0a9..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/.togglerc +++ /dev/null @@ -1,7 +0,0 @@ -(add-to-list - 'toggle-mapping-styles - '(rake . ( - ("test/test_rake_\\1.rb" . "lib/rake/\\1.rb") - ) )) - -(buffer-toggle-style 'rake) diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/CONTRIBUTING.rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/CONTRIBUTING.rdoc deleted file mode 100644 index 7eed5fb9..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/CONTRIBUTING.rdoc +++ /dev/null @@ -1,38 +0,0 @@ -= Source Repository - -Rake is currently hosted at github. The github web page is -http://github.com/ruby/rake . The public git clone URL is - - git://github.com/ruby/rake.git - -= Running the Rake Test Suite - -If you wish to run the unit and functional tests that come with Rake: - -* +cd+ into the top project directory of rake. -* Install the +hoe+ gem dependency: - - gem install hoe # Unless the hoe gem is already installed - -* Type one of the following: - - rake newb # If you have never run rake's tests - rake # If you have run rake's tests - -= Issues and Bug Reports - -Feel free to submit commits or feature requests. If you send a patch, -remember to update the corresponding unit tests. In fact, I prefer -new feature to be submitted in the form of new unit tests. - -For other information, feel free to ask on the ruby-talk mailing list. - -If you have found a bug in rake please try with the latest version of rake -before filing an issue. Also check History.rdoc for bug fixes that may have -addressed your issue. - -When submitting pull requests please check the rake Travis-CI page for test -failures: - - https://travis-ci.org/ruby/rake - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/History.rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/History.rdoc deleted file mode 100644 index ca24412d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/History.rdoc +++ /dev/null @@ -1,659 +0,0 @@ -=== 10.5.0 / 2016-01-13 - -Enhancements: - -* Removed monkey patching for Ruby 1.8. Pull request #46 by Pablo Herrero. -* Inheritance class of Rake::FileList returns always self class. - Pull request #74 by Thomas Scholz - -=== 10.4.2 / 2014-12-02 - -Bug fixes: - -* Rake no longer edits ARGV. This allows you to re-exec rake from a rake - task. Pull requset #9 by Matt Palmer. -* Documented how Rake::DSL#desc handles sentences in task descriptions. - Issue #7 by Raza Sayed. -* Fixed test error on 1.9.3 with legacy RubyGems. Issue #8 by Matt Palmer. -* Deleted duplicated History entry. Pull request #10 by Yuji Yamamoto. - -=== 10.4.1 / 2014-12-01 - -Bug fixes: - -* Reverted fix for #277 as it caused numerous issues for rake users. - rails/spring issue #366 by Gustavo Dutra. - -=== 10.4.0 / 2014-11-22 - -Enhancements: - -* Upgraded to minitest 5. Pull request #292 by Teo Ljungberg. -* Added support for Pathname in rake tasks. Pull request #271 by Randy - Coulman. -* Rake now ignores falsy dependencies which allows for easier programmatic - creation of tasks. Pull request #273 by Manav. -* Rake no longer edits ARGV. This allows you to re-exec rake from a rake - task. Issue #277 by Matt Palmer. -* Etc.nprocessors is used for counting the number of CPUs. - -Bug fixes: - -* Updated rake manpage. Issue #283 by Nathan Long, pull request #291 by - skittleys. -* Add Rake::LATE to allow rebuilding of files that depend on deleted files. - Bug #286, pull request #287 by David Grayson. -* Fix relinking of files when repackaging. Bug #276 by Muenze. -* Fixed some typos. Pull request #280 by Jed Northridge. -* Try counting CPUs via cpuinfo if host_os was not matched. Pull request - #282 by Edouard B. - -=== 10.3.2 / 2014-05-15 - -Bug fixes: - -* Rake no longer infinitely loops when showing exception causes that refer to - each other. Bug #272 by Chris Bandy. -* Fixed documentation typos. Bug #275 by Jake Worth. - -=== 10.3.1 / 2014-04-17 - -Bug fixes: - -* Really stop reporting an error when cleaning already-deleted files. Pull - request #269 by Randy Coulman -* Fixed infinite loop when cleaning already-deleted files on windows. - -=== 10.3 / 2014-04-15 - -Enhancements: - -* Added --build-all option to rake which treats all file prerequisites as - out-of-date. Pull request #254 by Andrew Gilbert. -* Added Rake::NameSpace#scope. Issue #263 by Jon San Miguel. - -Bug fixes: - -* Suppress org.jruby package files in rake error messages for JRuby users. - Issue #213 by Charles Nutter. -* Fixed typo, removed extra "h". Pull request #267 by Hsing-Hui Hsu. -* Rake no longer reports an error when cleaning already-deleted files. Pull - request #266 by Randy Coulman. -* Consume stderr while determining CPU count to avoid hang. Issue #268 by - Albert Sun. - -=== 10.2.2 / 2014-03-27 - -Bug fixes: - -* Restored Ruby 1.8.7 compatibility - -=== 10.2.1 / 2014-03-25 - -Bug fixes: - -* File tasks including a ':' are now top-level tasks again. Issue #262 by - Josh Holtrop. -* Use sysctl for CPU count for all BSDs. Pull request #261 by Joshua Stein. -* Fixed CPU detection for unknown platforms. - -=== 10.2.0 / 2014-03-24 - -Enhancements: - -* Rake now requires Ruby 1.9 or newer. For me, this is a breaking change, but - it seems that Jim planned to release it with Rake 10.2. See also pull - request #247 by Philip Arndt. -* Rake now allows you to declare tasks under a namespace like: - - task 'a:b' do ... end - - Pull request #232 by Judson Lester. -* Task#source defaults to the first prerequisite in non-rule tasks. Pull - request #215 by Avdi Grimm. -* Rake now automatically rebuilds and reloads imported files. Pull request - #209 by Randy Coulman. -* The rake task arguments can contain escaped commas. Pull request #214 by - Filip Hrbek. -* Rake now prints the exception class on errors. Patch #251 by David Cornu. - -Bug fixes: - -* Fixed typos. Pull request #256 by Valera Rozuvan, #250 via Jake Worth, #260 - by Zachary Scott. -* Fixed documentation for calling tasks with arguments. Pull request #235 by - John Varghese. -* Clarified `rake -f` usage message. Pull request #252 by Marco Pfatschbacher. -* Fixed a test failure on windows. Pull request #231 by Hiroshi Shirosaki. -* Fixed corrupted rake.1.gz. Pull request #225 by Michel Boaventura. -* Fixed bug in can_detect_signals? in test. Patch from #243 by Alexey - Borzenkov. - -=== 10.1.1 and earlier - -Additions to the old CHANGES file were not made consistently so some -versions are missing from this file. These changes are usually described in -the individual release notes files. - -=== 0.9.3 - -* The rake test loader now removes arguments it has processed. Issue #51 -* Rake::TaskArguments now responds to #values_at -* RakeFileUtils.verbose_flag = nil silences output the same as 0.8.7 -* Rake tests are now directory-independent -* Rake tests are no longer require flexmock -* Commands constant is no longer polluting top level namespace. -* Show only the interesting portion of the backtrace by default (James M. Lawrence). -* Added --reduce-compat optiont to remove backward compatible DSL hacks (James M. Lawrence). -* lib/rake/file_list.rb (Rake::FileList#egrep): there is no need to - open files in binary mode. (NAKAMURA Usaku) - -=== 0.9.2 - -* Unknown - -=== 0.9.1 - -* Added deprecation warnings to the Rake DSL methods. - -=== 0.9.0 - -* *Incompatible* *change*: Rake DSL commands ('task', 'file', etc.) are - no longer private methods in Object. If you need to call 'task :xzy' inside - your class, include Rake::DSL into the class. The DSL is still available at - the top level scope (via the top level object which extends Rake::DSL). - -* Rake now warns when the deprecated :needs syntax used. - -* Rake history is now UTF-8 encoded. - -* Rake now uses case-insensitive comparisons to find the Rakefile on Windows. - Based on patch by Roger Pack. - -* Rake now requires (instead of loads) files in the test task. Patch by Cezary - Baginski. - -* Fixed typos. Patches by Sean Scot August Moon and R.T. Lechow. - -* Rake now prints the Rakefile directory only when it's different from the - current directory. Patch by Alex Chaffee. - -* Improved rakefile_location discovery on Windows. Patch by James Tucker. - -* Rake now recognizes "Windows Server" as a windows system. Patch by Matthias - Lüdtke - -* Rake::RDocTask is deprecated. Use RDoc::Task from RDoc 2.4.2+ (require - 'rdoc/task') - -* Rake::GemPackageTask is deprecated. Use Gem::PackageTask (require - 'rubygems/package_task') - -* Rake now outputs various messages to $stderr instead of $stdout. - -* Rake no longer emits warnings for Config. Patch by Santiago Pastorino. - -* Split rake.rb into individual files. - -* Support for the --where (-W) flag for showing where a task is defined. - -* Fixed quoting in test task. - (http://onestepback.org/redmine/issues/show/44, - http://www.pivotaltracker.com/story/show/1223138) - -* Fixed the silent option parsing problem. - (http://onestepback.org/redmine/issues/show/47) - -* Fixed :verbose=>false flag on sh and ruby commands. - -* Rake command line options may be given by default in a RAKEOPT - environment variable. - -* Errors in Rake will now display the task invocation chain in effect - at the time of the error. - -* Accepted change by warnickr to not expand test patterns in shell - (allowing more files in the test suite). - -* Fixed that file tasks did not perform prereq lookups in scope - (Redmine #57). - -=== 0.8.7 - -* Fixed EXEEXT for JRuby on windows. - -=== 0.8.6 - -* Minor fixes to the RDoc generation (removed dependency on darkfish - and removed inline source option). - -* Now allow # comments to comment a task definition. - -=== 0.8.5 - -* Better support for the system command on Windows. - -=== 0.8.4 - -* Preserve case when locating rakefiles (patch from James - M. Lawrence/quix) - -* Better support for windows paths in the test task (patch from Simon - Chiang/bahuvrihi) - -* Windows system dir search order is now: HOME, HOMEDRIVE + HOMEPATH, - APPDATA, USERPROFILE (patch from Luis Lavena) - -* MingGW is now recognized as a windows platform. (patch from Luis - Lavena) - -* Numerous fixes to the windows test suite (patch from Luis Lavena). - -* Improved Rakefile case insensitivity testing (patch from Luis - Lavena). - -* Fixed stray ARGV option problem that was interfering with - Test::Unit::Runner. - -* Fixed default verbose mode (was accidently changed to false). - -* Removed reference to manage_gem to fix the warning produced by the - gem package task. - -=== 0.8.3 - -* Enhanced the system directory detection in windows. We now check - HOMEDRIVE/HOMEPATH and USERPROFILE if APPDATA isn't found. (Patch - supplied by James Tucker). Rake no long aborts if it can't find the - directory. - -* Added fix to handle ruby installations in directories with spaces in - their name. - -=== 0.8.2 - -* Fixed bug in package task so that it will include the subdir - directory in the package for testing. (Bug found by Adam Majer) - -* Added ENV var to rakefile to prevent OS X from including extended - attribute junk in a tar file. (Bug found by Adam Majer) - -* Fixed filename dependency order bug in test_inspect_pending and - test_to_s_pending. (Bug found by Adam Majer) - -* Fixed check for file utils options to make them immune to the - symbol/string differences. (Patch supplied by Edwin Pratomo) - -* Fixed bug with rules involving multiple source (Patch supplied by - Emanuel Indermühle) - -* Switched from getoptlong to optparse (patches supplied by Edwin - Pratomo) - -* The -T option will now attempt to dynamically sense the size of the - terminal. RAKE_COLUMNS will override any dynamic sensing. - -* FileList#clone and FileList#dup have better sematics w.r.t. taint - and freeze. - -* Added ability clear prerequisites, and/or actions from an existing - task. - -* Added the ability to reenable a task to be invoked a second time. - -* Changed RDoc test task to have no default template. This makes it - easier for the tempate to pick up the template from the environment. - -* Changed from using Mutex to Monitor. Evidently Mutex causes thread - join errors when Ruby is compiled with -disable-pthreads. (Patch - supplied by Ittay Dror) - -* Fixed bug in makefile parser that had problems with extra spaces in - file task names. (Patch supplied by Ittay Dror) - -* Added a performance patch for reading large makefile dependency - files. (Patch supplied by Ittay Dror) - -* Default values for task arguments can easily be specified with the - :with_defaults method. (Idea for default argument merging supplied - by (Adam Q. Salter) - -* The -T output will only self-truncate if the output is a tty. - However, if RAKE_COLUMNS is explicitly set, it will be honored in - any case. (Patch provided by Gavin Stark). - -* Numerous fixes for running under windows. A big thanks to Bheeshmar - Redheendran for spending a good part of the afternoon at the - Lonestar Ruby Conference to help me work out these issues. - -=== 0.8.1 - -* Removed requires on parsedate.rb (in Ftptools) -* Removed ftools from rake.rb. Made it options in sys.rb - -=== 0.8.0 - -* Added task parameters (e.g. "rake build[version7]") -* Made task parameters passable to prerequisites. -* Comments are limited to 80 columns or so (suggested by Jamis Buck). -* Added -D to display full comments (suggested by Jamis Buck). -* The rake program will set the status value used in any explicit - exit(n) calls. (patch provided by Stephen Touset) -* Fixed error in functional tests that were not including session (and - silently skipping the functionl tests. -* Removed --usage and make -h the same as -H. -* Make a prettier inspect for tasks. - -=== 0.7.3 - -* Added existing and existing! methods to FileList -* FileLists now claim to be Arrays (via is_a?) to get better support - from the FileUtil module. -* Added init and top_level for custom rake applications. - -=== 0.7.2 - -* Error messages are now send to stderr rather than stdout (from - Payton Quackenbush). -* Better error handling on invalid command line arguments (from Payton - Quackenbush). -* Added rcov task and updated unit testing for better code coverage. -* Fixed some bugs where the application object was going to the global - appliation instead of using its own data. -* Added square and curly bracket patterns to FileList#include (Tilman - Sauerbeck). -* Added plain filename support to rule dependents (suggested by Nobu - Nakada). -* Added pathmap support to rule dependents. -* Added a 'tasks' method to a namespace to get a list of tasks - associated with the namespace. -* Fixed the method name leak from FileUtils (bug found by Glenn - Vanderburg). -* Added rake_extension to handle detection of extension collisions. -* Added test for noop, bad_option and verbose flags to sh command. -* Removed dependency on internal fu_xxx functions from FileUtils. -* Added a 'shame' task to the Rakefile. -* Added tar_command and zip_command options to the Package task. -* Added a description to the gem task in GemPackageTask. -* Fixed a bug when rules have multiple prerequisites (patch by Joel - VanderWerf) -* Added a protected 'require "rubygems"' to test/test_application to - unbreak cruisecontrol.rb. -* Added the handful of RakeFileUtils to the private method as well. -* Added block based exclusion. -* The clean task will no longer delete 'core' if it is a directory. -* Removed rake_dup. Now we just simply rescue a bad dup. -* Refactored the FileList reject logic to remove duplication. -* Removed if __FILE__ at the end of the rake.rb file. - -=== 0.7.1 - -* Added optional filter parameter to the --tasks command line option. -* Added flatten to allow rule transform procs to return lists of - prereqs (Joel VanderWerf provided patch). -* Added pathmap to String and FileList. -* The -r option will now load .rake files (but a straight require - doesn't yet). NOTE: This is experimental ... it may be - discontinued. -* The -f option without a value will disable the search for a - Rakefile. The assumption is that the -r files are adequate. -* Fixed the safe_ln function to fall back to cp in more error - scenarios. - -=== 0.7.0 - -* Added Rake.original_dir to return the original starting directory of - the rake application. -* Added safe_ln support for openAFS (from Ludvig Omholt). -* Added --trace reminder on short exception messages (David Heinemeier - Hansson suggestion). -* Added multitask declaration that executes prerequisites in - parallel. (Doug Young providied an initial implementation). -* Fixed missing_const hack to be compatible with Rails. (Jamis Buck - supplied test case). -* Made the RDoc task default to internal (in-process) RDoc formatting. - The old behavior is still available by setting the +external+ flag - to true. -* Rakefiles are now loaded with the expanded path to prevent - accidental polution from the Ruby load path. -* The +namespace+ command now returns a NameSpace object that can be - used to lookup tasks defined in that namespace. This allows for - better anonymous namespace behavior. -* Task objects my now be used in prerequisite lists directly. - -=== 0.6.1 - -* Rebuilt 0.6.0 gem without signing. - -=== 0.6.0 - -* Fixed file creation bug in the unit tests (caused infinite loop on - windows). -* Fixed bug where session based functional tests were run under - windows. -* Fixed bug in directory tasks so that updating a directory will not - retrigger file tasks depending on the directory (see - FileCreationTask and EarlyTime). -* Added egrep to FileList -* ruby command now runs same ruby version as rake. -* Added investigation to task object. (suggested by Martin Fowler) -* Added ruby_opts to the test task to allow arbitrary ruby options to - be passed to the test script. (Greg Fast) -* Fixed the test loader to ignore options. (Greg Fast) -* Moved Task, FileTask, FileCreationTask and RakeApp into the Rake - module namespace. Old style namespace behavior can be invoked via - the --classic-namespace option. (requested by Kelly Felkins). -* GemTask is now sensitive to the gem platform (Masao Mutoh). -* A non-existing file prerequisite will no longer cause an exception - (Philipp Neubeck). -* Multiple prerequisites on Rake rules now allowed (initial patch - supplied by Stuart Jansen). - -=== 0.5.4 - -* Added double quotes to the test runner. -* Added .svn to default ignore list. -* Updated FileList#include to support nested arrays and filelists. - -=== 0.5.3 - -* Added support for importing Rakefile and other dependencies. -* Fixed bug so that now rules can chain off of existing tasks as well - as existing files. -* Fixed verbose flag bug in the testing task. Shortened some failure - messages. -* Make FileUtils methods private at the top level module to avoid - accidental method leaking into other objects. -* Added test loader option to test task. "testrb" is no longer the - default test loader. It is now eating syntax errors that should - halt the unit tests. -* Revamped FileList so that it works more like and array (addressed - flatten bug). Added many tests around file list. -* Added +ext+ method to both String and FileList. - -=== 0.5.0 - -* Fixed documentation that was lacking the Rake module name (Tilman - Sauerbeck). -* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck). -* Recursive rules are now supported (Tilman Sauerbeck). -* Added warning option for the Test Task (requested by Eric Hodel). -* The jamis rdoc template is only used if it exists. -* Added fix for Ruby 1.8.2 test/unit and rails problem. -* Added contributed rake man file (Jani Monoses). -* Added Brian Candler's fix for problems in --trace and --dry-run - mode. - -=== 0.4.15 - -* Fixed a bug that prevented the TESTOPTS flag from working with the - revised for 1.8.2 test task. -* Updated the docs on --trace to indicate that it also enables a full - backtrace on errors. - -=== 0.4.14 - -* Modified the TestTask to workaround the Ruby 1.8.2 change in - autoexecuting unit tests. - -=== 0.4.13 - -* Fixed the dry-run flag so it is operating again. -* Multiple arguments to sh and ruby commands will not be interpreted - by the shell (patch provided by Jonathan Paisley). - -=== 0.4.12 - -* Added --silent (-s) to suppress the (in directory) rake message. - -=== 0.4.11 - -* Changed the "don't know how to rake" message (finally) -* Changes references to a literal "Rakefile" to reference the global - variable $rakefile (which contains the actual name of the rakefile). - -=== 0.4.10 - -* Added block support to the "sh" command, allowing users to take - special actions on the result of the system call. E.g. - - sh "shell_command" do |ok, res| - puts "Program returned #{res.exitstatus}" if ! ok - end - -=== 0.4.9 - -* Switched to Jamis Buck's RDoc template. -* Removed autorequire from Rake's gem spec. This prevents the Rake - libraries from loading while using rails. - -=== 0.4.8 - -* Added support for .rb versions of Rakefile. -* Removed \\\n's from test task. -* Fixed Ruby 1.9 compatibility issue with FileList. - -=== 0.4.7 - -* Fixed problem in FileList that caused Ruby 1.9 to go into infinite - recursion. Since to_a was removed from Object, it does not need to - added back into the list of methods to rewrite in FileList. (Thanks - to Kent Sibilev for pointing this out). - -=== 0.4.6 -* Removed test version of ln in FileUtils that prevented safe_ln from - using ln. - -=== 0.4.5 -* Upgraded comments in TestTask. -* FileList to_s and inspect now automatically resolve pending changes. -* FileList#exclude properly returns the FileList. - -=== 0.4.4 -* Fixed initialization problem with @comment. -* Now using multi -r technique in TestTask. Switch Rakefile back to - using the built-in test task macros because the rake runtime is no - longer needed. -* Added 'TEST=filename' and 'TESTOPTS=options' to the Test Task - macros. -* Allow a +test_files+ attribute in test tasks. This allows more - flexibility in specifying test files. - -=== 0.4.3 -* Fixed Comment leakage. - -=== 0.4.2 -* Added safe_ln that falls back to a copy if a file link is not supported. -* Package builder now uses safe_ln. - -=== 0.4.1 -* Task comments are now additive, combined with "/". -* Works with (soon to be released) rubygems 0.6.2 (or 0.7.0) - -=== 0.4.0 -* FileList now uses deferred loading. The file system is not searched - until the first call that needs the file names. -* VAR=VALUE options are now accepted on the command line and are - treated like environment variables. The values may be tested in a - Rakefile by referencing ENV['VAR']. -* File.mtime is now used (instead of File.new().mtime). - -=== 0.3.2.x - -* Removed some hidden dependencies on rubygems. Tests now will test - gems only if they are installed. -* Removed Sys from some example files. I believe that is that last - reference to Sys outside of the contrib area. -* Updated all copyright notices to include 2004. - -=== 0.3.2 - -* GEM Installation now works with the application stub. - -=== 0.3.1 - -* FileLists now automatically ignore CVS, .bak, ! -* GEM Installation now works. - -=== 0.3.0 - -Promoted 0.2.10. - -=== 0.2.10 -General - -* Added title to Rake's rdocs -* Contrib packages are no longer included in the documentation. - -RDoc Issues - -* Removed default for the '--main' option -* Fixed rendering of the rdoc options -* Fixed clean/clobber confusion with rerdoc -* 'title' attribute added - -Package Task Library Issues - -* Version (or explicit :noversion) is required. -* +package_file+ attribute is now writable - -FileList Issues - -* Dropped bang version of exclude. Now using ant-like include/exclude semantics. -* Enabled the "yield self" idiom in FileList#initialize. - -=== 0.2.9 - -This version contains numerous changes as the RubyConf.new(2003) -presentation was being prepared. The changes include: - -* The monolithic rubyapp task library is in the process of being - dropped in favor of lighter weight task libraries. - -=== 0.2.7 - -* Added "desc" for task descriptions. -* -T will now display tasks with descriptions. -* -P will display tasks and prerequisites. -* Dropped the Sys module in favor of the 1.8.x FileUtils module. Sys - is still supported in the contrib area. - -=== 0.2.6 - -* Moved to RubyForge - -=== 0.2.5 - -* Switched to standard ruby app builder. -* Added no_match option to file matcher. - -=== 0.2.4 - -* Fixed indir, which neglected to actually change directories. - -=== 0.2.3 - -* Added rake module for a help target -* Added 'for_files' to Sys -* Added a $rakefile constant -* Added test for selecting proper rule with multiple targets. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/MIT-LICENSE b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/MIT-LICENSE deleted file mode 100644 index 4292f3b3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/MIT-LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) Jim Weirich - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/Manifest.txt b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/Manifest.txt deleted file mode 100644 index a7829c97..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/Manifest.txt +++ /dev/null @@ -1,166 +0,0 @@ -.autotest -.rubocop.yml -.togglerc -CONTRIBUTING.rdoc -History.rdoc -MIT-LICENSE -Manifest.txt -README.rdoc -Rakefile -bin/rake -doc/command_line_usage.rdoc -doc/example/Rakefile1 -doc/example/Rakefile2 -doc/example/a.c -doc/example/b.c -doc/example/main.c -doc/glossary.rdoc -doc/jamis.rb -doc/proto_rake.rdoc -doc/rake.1 -doc/rakefile.rdoc -doc/rational.rdoc -doc/release_notes/rake-0.4.14.rdoc -doc/release_notes/rake-0.4.15.rdoc -doc/release_notes/rake-0.5.0.rdoc -doc/release_notes/rake-0.5.3.rdoc -doc/release_notes/rake-0.5.4.rdoc -doc/release_notes/rake-0.6.0.rdoc -doc/release_notes/rake-0.7.0.rdoc -doc/release_notes/rake-0.7.1.rdoc -doc/release_notes/rake-0.7.2.rdoc -doc/release_notes/rake-0.7.3.rdoc -doc/release_notes/rake-0.8.0.rdoc -doc/release_notes/rake-0.8.2.rdoc -doc/release_notes/rake-0.8.3.rdoc -doc/release_notes/rake-0.8.4.rdoc -doc/release_notes/rake-0.8.5.rdoc -doc/release_notes/rake-0.8.6.rdoc -doc/release_notes/rake-0.8.7.rdoc -doc/release_notes/rake-0.9.0.rdoc -doc/release_notes/rake-0.9.1.rdoc -doc/release_notes/rake-0.9.2.2.rdoc -doc/release_notes/rake-0.9.2.rdoc -doc/release_notes/rake-0.9.3.rdoc -doc/release_notes/rake-0.9.4.rdoc -doc/release_notes/rake-0.9.5.rdoc -doc/release_notes/rake-0.9.6.rdoc -doc/release_notes/rake-10.0.0.rdoc -doc/release_notes/rake-10.0.1.rdoc -doc/release_notes/rake-10.0.2.rdoc -doc/release_notes/rake-10.0.3.rdoc -doc/release_notes/rake-10.1.0.rdoc -lib/rake.rb -lib/rake/alt_system.rb -lib/rake/application.rb -lib/rake/backtrace.rb -lib/rake/clean.rb -lib/rake/cloneable.rb -lib/rake/contrib/.document -lib/rake/contrib/compositepublisher.rb -lib/rake/contrib/ftptools.rb -lib/rake/contrib/publisher.rb -lib/rake/contrib/rubyforgepublisher.rb -lib/rake/contrib/sshpublisher.rb -lib/rake/contrib/sys.rb -lib/rake/cpu_counter.rb -lib/rake/default_loader.rb -lib/rake/dsl_definition.rb -lib/rake/early_time.rb -lib/rake/ext/core.rb -lib/rake/ext/module.rb -lib/rake/ext/pathname.rb -lib/rake/ext/string.rb -lib/rake/ext/time.rb -lib/rake/file_creation_task.rb -lib/rake/file_list.rb -lib/rake/file_task.rb -lib/rake/file_utils.rb -lib/rake/file_utils_ext.rb -lib/rake/gempackagetask.rb -lib/rake/invocation_chain.rb -lib/rake/invocation_exception_mixin.rb -lib/rake/late_time.rb -lib/rake/linked_list.rb -lib/rake/loaders/makefile.rb -lib/rake/multi_task.rb -lib/rake/name_space.rb -lib/rake/packagetask.rb -lib/rake/pathmap.rb -lib/rake/phony.rb -lib/rake/private_reader.rb -lib/rake/promise.rb -lib/rake/pseudo_status.rb -lib/rake/rake_module.rb -lib/rake/rake_test_loader.rb -lib/rake/rdoctask.rb -lib/rake/ruby182_test_unit_fix.rb -lib/rake/rule_recursion_overflow_error.rb -lib/rake/runtest.rb -lib/rake/scope.rb -lib/rake/task.rb -lib/rake/task_argument_error.rb -lib/rake/task_arguments.rb -lib/rake/task_manager.rb -lib/rake/tasklib.rb -lib/rake/testtask.rb -lib/rake/thread_history_display.rb -lib/rake/thread_pool.rb -lib/rake/trace_output.rb -lib/rake/version.rb -lib/rake/win32.rb -rakelib/publish.rake -rakelib/test_times.rake -test/file_creation.rb -test/helper.rb -test/support/rakefile_definitions.rb -test/support/ruby_runner.rb -test/test_private_reader.rb -test/test_rake.rb -test/test_rake_application.rb -test/test_rake_application_options.rb -test/test_rake_backtrace.rb -test/test_rake_clean.rb -test/test_rake_cpu_counter.rb -test/test_rake_definitions.rb -test/test_rake_directory_task.rb -test/test_rake_dsl.rb -test/test_rake_early_time.rb -test/test_rake_extension.rb -test/test_rake_file_creation_task.rb -test/test_rake_file_list.rb -test/test_rake_file_list_path_map.rb -test/test_rake_file_task.rb -test/test_rake_file_utils.rb -test/test_rake_ftp_file.rb -test/test_rake_functional.rb -test/test_rake_invocation_chain.rb -test/test_rake_late_time.rb -test/test_rake_linked_list.rb -test/test_rake_makefile_loader.rb -test/test_rake_multi_task.rb -test/test_rake_name_space.rb -test/test_rake_package_task.rb -test/test_rake_path_map.rb -test/test_rake_path_map_explode.rb -test/test_rake_path_map_partial.rb -test/test_rake_pathname_extensions.rb -test/test_rake_pseudo_status.rb -test/test_rake_rake_test_loader.rb -test/test_rake_reduce_compat.rb -test/test_rake_require.rb -test/test_rake_rules.rb -test/test_rake_scope.rb -test/test_rake_task.rb -test/test_rake_task_argument_parsing.rb -test/test_rake_task_arguments.rb -test/test_rake_task_lib.rb -test/test_rake_task_manager.rb -test/test_rake_task_manager_argument_resolution.rb -test/test_rake_task_with_arguments.rb -test/test_rake_test_task.rb -test/test_rake_thread_pool.rb -test/test_rake_top_level_functions.rb -test/test_rake_win32.rb -test/test_thread_history_display.rb -test/test_trace_output.rb diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/README.rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/README.rdoc deleted file mode 100644 index 2ae5f3f6..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/README.rdoc +++ /dev/null @@ -1,139 +0,0 @@ -= RAKE -- Ruby Make - -home :: https://github.com/ruby/rake -bugs :: https://github.com/ruby/rake/issues -docs :: http://docs.seattlerb.org/rake/ -build :: {travis-ci}[https://travis-ci.org/ruby/rake] - -== Description - -Rake is a Make-like program implemented in Ruby. Tasks and dependencies are -specified in standard Ruby syntax. - -Rake has the following features: - -* Rakefiles (rake's version of Makefiles) are completely defined in - standard Ruby syntax. No XML files to edit. No quirky Makefile - syntax to worry about (is that a tab or a space?) - -* Users can specify tasks with prerequisites. - -* Rake supports rule patterns to synthesize implicit tasks. - -* Flexible FileLists that act like arrays but know about manipulating - file names and paths. - -* A library of prepackaged tasks to make building rakefiles easier. For example, - tasks for building tarballs and publishing to FTP or SSH sites. (Formerly - tasks for building RDoc and Gems were included in rake but they're now - available in RDoc and RubyGems respectively.) - -* Supports parallel execution of tasks. - -== Installation - -=== Gem Installation - -Download and install rake with the following. - - gem install rake - -== Usage - -=== Simple Example - -First, you must write a "Rakefile" file which contains the build rules. Here's -a simple example: - - task default: %w[test] - - task :test do - ruby "test/unittest.rb" - end - -This Rakefile has two tasks: - -* A task named "test", which -- upon invocation -- will run a unit test file - in Ruby. -* A task named "default". This task does nothing by itself, but it has exactly - one dependency, namely the "test" task. Invoking the "default" task will - cause Rake to invoke the "test" task as well. - -Running the "rake" command without any options will cause it to run the -"default" task in the Rakefile: - - % ls - Rakefile test/ - % rake - (in /home/some_user/Projects/rake) - ruby test/unittest.rb - ....unit test output here... - -Type "rake --help" for all available options. - -== Resources - -=== Rake Information - -* {Rake command-line}[rdoc-ref:doc/command_line_usage.rdoc] -* {Writing Rakefiles}[rdoc-ref:doc/rakefile.rdoc] -* The original {Rake announcement}[rdoc-ref:doc/rational.rdoc] -* Rake {glossary}[rdoc-ref:doc/glossary.rdoc] - -=== Presentations and Articles about Rake - -* Avdi Grimm's rake series: - 1. {Rake Basics}[http://devblog.avdi.org/2014/04/21/rake-part-1-basics/] - 2. {Rake File Lists}[http://devblog.avdi.org/2014/04/22/rake-part-2-file-lists/] - 3. {Rake Rules}[http://devblog.avdi.org/2014/04/23/rake-part-3-rules/] - 4. {Rake Pathmap}[http://devblog.avdi.org/2014/04/24/rake-part-4-pathmap/] - 5. {File Operations}[http://devblog.avdi.org/2014/04/25/rake-part-5-file-operations/] - 6. {Clean and Clobber}[http://devblog.avdi.org/2014/04/28/rake-part-6-clean-and-clobber/] - 7. {MultiTask}[http://devblog.avdi.org/2014/04/29/rake-part-7-multitask/] -* {Jim Weirich's 2003 RubyConf presentation}[http://web.archive.org/web/20140221123354/http://onestepback.org/articles/buildingwithrake/] -* Martin Fowler's article on Rake: http://martinfowler.com/articles/rake.html - -== Other Make Re-envisionings ... - -Rake is a late entry in the make replacement field. Here are links to -other projects with similar (and not so similar) goals. - -* http://directory.fsf.org/wiki/Bras -- Bras, one of earliest - implementations of "make in a scripting language". -* http://www.a-a-p.org -- Make in Python -* http://www.aromatic.com/tools/jam.txt -- JAM, Java Automated Make -* http://ant.apache.org -- The Ant project -* http://search.cpan.org/search?query=PerlBuildSystem -- The Perl Build System -* http://www.rubydoc.info/gems/rant/0.5.7/frames -- Rant, another Ruby make tool. - -== Credits - -[Ryan Dlugosz] For the initial conversation that sparked Rake. - -[Nobuyoshi Nakada ] For the initial patch for rule support. - -[Tilman Sauerbeck ] For the recursive rule patch. - -[Eric Hodel] For aid in maintaining rake. - -== License - -Rake is available under an MIT-style license. - -:include: MIT-LICENSE - ---- - -= Other stuff - -Author:: Jim Weirich -Requires:: Ruby 1.8.7 or later -License:: Copyright Jim Weirich. - Released under an MIT-style license. See the MIT-LICENSE - file included in the distribution. - -== Warranty - -This software is provided "as is" and without any express or implied -warranties, including, without limitation, the implied warranties of -merchantability and fitness for a particular purpose. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/Rakefile b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/Rakefile deleted file mode 100644 index 375ca880..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/Rakefile +++ /dev/null @@ -1,81 +0,0 @@ -# Rakefile for rake -*- ruby -*- - -# Copyright 2003, 2004, 2005 by Jim Weirich (jim@weirichhouse.org) -# All rights reserved. - -# This file may be distributed under an MIT style license. See -# MIT-LICENSE for details. - -require 'rbconfig' - -system_rake = File.join RbConfig::CONFIG['rubylibdir'], 'rake.rb' - -# Use our rake, not the installed rake from system -if $".include? system_rake or $".grep(/rake\/name_space\.rb$/).empty? then - exec Gem.ruby, '-Ilib', 'bin/rake', *ARGV -end - -require 'hoe' - -Hoe.plugin :git -Hoe.plugin :minitest -Hoe.plugin :travis - -hoe = Hoe.spec 'rake' do - developer 'Eric Hodel', 'drbrain@segment7.net' - developer 'Jim Weirich', '' - - require_ruby_version '>= 1.8.7' - require_rubygems_version '>= 1.3.2' - - dependency 'minitest', '~> 5.0', :developer - - license "MIT" - - self.readme_file = 'README.rdoc' - self.history_file = 'History.rdoc' - - self.extra_rdoc_files.concat FileList[ - 'MIT-LICENSE', - 'doc/**/*.rdoc', - '*.rdoc', - ] - - self.local_rdoc_dir = 'html' - self.rsync_args = '-avz --delete' - rdoc_locations << 'docs.seattlerb.org:/data/www/docs.seattlerb.org/rake/' - - self.clean_globs += [ - '**/*.o', - '**/*.rbc', - '*.dot', - 'TAGS', - 'doc/example/main', - ] -end - -hoe.test_prelude = 'gem "minitest", "~> 5.0"' - -# Use custom rdoc task due to existence of doc directory - -Rake::Task['docs'].clear -Rake::Task['clobber_docs'].clear - -begin - require 'rdoc/task' - - RDoc::Task.new :rdoc => 'docs', :clobber_rdoc => 'clobber_docs' do |doc| - doc.main = hoe.readme_file - doc.title = 'Rake -- Ruby Make' - - rdoc_files = Rake::FileList.new %w[lib History.rdoc MIT-LICENSE doc] - rdoc_files.add hoe.extra_rdoc_files - - doc.rdoc_files = rdoc_files - - doc.rdoc_dir = 'html' - end -rescue LoadError - warn 'run `rake newb` to install rdoc' -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/bin/rake b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/bin/rake deleted file mode 100755 index 4e0bbb7b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/bin/rake +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env ruby - -#-- -# Copyright (c) 2003, 2004, 2005, 2006, 2007 Jim Weirich -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -#++ - -begin - require 'rubygems' - gem 'rake' -rescue LoadError -end - -require 'rake' - -Rake.application.run diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake.rb deleted file mode 100644 index e1f559f8..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake.rb +++ /dev/null @@ -1,79 +0,0 @@ -#-- -# Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -#++ - -module Rake - VERSION = '10.5.0' -end - -require 'rake/version' - -# :stopdoc: -# TODO: Remove in Rake 11 -RAKEVERSION = Rake::VERSION -# :startdoc: - -require 'rbconfig' -require 'fileutils' -require 'singleton' -require 'monitor' -require 'optparse' -require 'ostruct' - -require 'rake/ext/module' -require 'rake/ext/string' -require 'rake/ext/time' - -require 'rake/win32' - -require 'rake/linked_list' -require 'rake/cpu_counter' -require 'rake/scope' -require 'rake/task_argument_error' -require 'rake/rule_recursion_overflow_error' -require 'rake/rake_module' -require 'rake/trace_output' -require 'rake/pseudo_status' -require 'rake/task_arguments' -require 'rake/invocation_chain' -require 'rake/task' -require 'rake/file_task' -require 'rake/file_creation_task' -require 'rake/multi_task' -require 'rake/dsl_definition' -require 'rake/file_utils_ext' -require 'rake/file_list' -require 'rake/default_loader' -require 'rake/early_time' -require 'rake/late_time' -require 'rake/name_space' -require 'rake/task_manager' -require 'rake/application' -require 'rake/backtrace' - -$trace = false - -# :stopdoc: -# -# Some top level Constants. - -FileList = Rake::FileList -RakeFileUtils = Rake::FileUtilsExt diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/alt_system.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/alt_system.rb deleted file mode 100644 index aa7b7791..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/alt_system.rb +++ /dev/null @@ -1,110 +0,0 @@ -# -# Copyright (c) 2008 James M. Lawrence -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation files -# (the "Software"), to deal in the Software without restriction, -# including without limitation the rights to use, copy, modify, merge, -# publish, distribute, sublicense, and/or sell copies of the Software, -# and to permit persons to whom the Software is furnished to do so, -# subject to the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# - -require 'rbconfig' - -## -# Alternate implementations of system() and backticks `` on Windows -# for ruby-1.8 and earlier. -#-- -# TODO: Remove in Rake 11 - -module Rake::AltSystem # :nodoc: all - WINDOWS = RbConfig::CONFIG["host_os"] =~ - %r!(msdos|mswin|djgpp|mingw|[Ww]indows)! - - class << self - def define_module_function(name, &block) - define_method(name, &block) - module_function(name) - end - end - - if WINDOWS && RUBY_VERSION < "1.9.0" - RUNNABLE_EXTS = %w[com exe bat cmd] - RUNNABLE_PATTERN = %r!\.(#{RUNNABLE_EXTS.join('|')})\Z!i - - define_module_function :kernel_system, &Kernel.method(:system) - define_module_function :kernel_backticks, &Kernel.method(:'`') - - module_function - - def repair_command(cmd) - "call " + ( - if cmd =~ %r!\A\s*\".*?\"! - # already quoted - cmd - elsif match = cmd.match(%r!\A\s*(\S+)!) - if match[1] =~ %r!/! - # avoid x/y.bat interpretation as x with option /y - %Q!"#{match[1]}"! + match.post_match - else - # a shell command will fail if quoted - cmd - end - else - # empty or whitespace - cmd - end - ) - end - - def find_runnable(file) - if file =~ RUNNABLE_PATTERN - file - else - RUNNABLE_EXTS.each { |ext| - test = "#{file}.#{ext}" - return test if File.exist?(test) - } - nil - end - end - - def system(cmd, *args) - repaired = ( - if args.empty? - [repair_command(cmd)] - elsif runnable = find_runnable(cmd) - [File.expand_path(runnable), *args] - else - # non-existent file - [cmd, *args] - end - ) - kernel_system(*repaired) - end - - def backticks(cmd) - kernel_backticks(repair_command(cmd)) - end - - define_module_function :'`', &method(:backticks) - else - # Non-Windows or ruby-1.9+: same as Kernel versions - define_module_function :system, &Kernel.method(:system) - define_module_function :backticks, &Kernel.method(:'`') - define_module_function :'`', &Kernel.method(:'`') - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/clean.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/clean.rb deleted file mode 100644 index 514f9f9c..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/clean.rb +++ /dev/null @@ -1,76 +0,0 @@ -# The 'rake/clean' file defines two file lists (CLEAN and CLOBBER) and -# two rake tasks (:clean and :clobber). -# -# [:clean] Clean up the project by deleting scratch files and backup -# files. Add files to the CLEAN file list to have the :clean -# target handle them. -# -# [:clobber] Clobber all generated and non-source files in a project. -# The task depends on :clean, so all the clean files will -# be deleted as well as files in the CLOBBER file list. -# The intent of this task is to return a project to its -# pristine, just unpacked state. - -require 'rake' - -# :stopdoc: - -module Rake - module Cleaner - extend FileUtils - - module_function - - def cleanup_files(file_names) - file_names.each do |file_name| - cleanup(file_name) - end - end - - def cleanup(file_name, opts={}) - begin - rm_r file_name, opts - rescue StandardError => ex - puts "Failed to remove #{file_name}: #{ex}" unless file_already_gone?(file_name) - end - end - - def file_already_gone?(file_name) - return false if File.exist?(file_name) - - path = file_name - prev = nil - - while path = File.dirname(path) - return false if cant_be_deleted?(path) - break if [prev, "."].include?(path) - prev = path - end - true - end - private_class_method :file_already_gone? - - def cant_be_deleted?(path_name) - File.exist?(path_name) && - (!File.readable?(path_name) || !File.executable?(path_name)) - end - private_class_method :cant_be_deleted? - end -end - -CLEAN = ::Rake::FileList["**/*~", "**/*.bak", "**/core"] -CLEAN.clear_exclude.exclude { |fn| - fn.pathmap("%f").downcase == 'core' && File.directory?(fn) -} - -desc "Remove any temporary products." -task :clean do - Rake::Cleaner.cleanup_files(CLEAN) -end - -CLOBBER = ::Rake::FileList.new - -desc "Remove any generated files." -task :clobber => [:clean] do - Rake::Cleaner.cleanup_files(CLOBBER) -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/cloneable.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/cloneable.rb deleted file mode 100644 index d53645f2..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/cloneable.rb +++ /dev/null @@ -1,16 +0,0 @@ -module Rake - ## - # Mixin for creating easily cloned objects. - - module Cloneable # :nodoc: - # The hook that is invoked by 'clone' and 'dup' methods. - def initialize_copy(source) - super - source.instance_variables.each do |var| - src_value = source.instance_variable_get(var) - value = src_value.clone rescue src_value - instance_variable_set(var, value) - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/.document b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/.document deleted file mode 100644 index 8b137891..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/.document +++ /dev/null @@ -1 +0,0 @@ - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb deleted file mode 100644 index 69952a08..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb +++ /dev/null @@ -1,21 +0,0 @@ -module Rake - - # Manage several publishers as a single entity. - class CompositePublisher - def initialize - @publishers = [] - end - - # Add a publisher to the composite. - def add(pub) - @publishers << pub - end - - # Upload all the individual publishers. - def upload - @publishers.each { |p| p.upload } - end - end - -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb deleted file mode 100644 index b178523b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb +++ /dev/null @@ -1,137 +0,0 @@ -# = Tools for FTP uploading. -# -# This file is still under development and is not released for general -# use. - -require 'date' -require 'net/ftp' -require 'rake/file_list' - -module Rake # :nodoc: - - class FtpFile # :nodoc: all - attr_reader :name, :size, :owner, :group, :time - - def self.date - @date_class ||= Date - end - - def self.time - @time_class ||= Time - end - - def initialize(path, entry) - @path = path - @mode, _, @owner, @group, size, d1, d2, d3, @name = entry.split(' ') - @size = size.to_i - @time = determine_time(d1, d2, d3) - end - - def path - File.join(@path, @name) - end - - def directory? - @mode[0] == ?d - end - - def mode - parse_mode(@mode) - end - - def symlink? - @mode[0] == ?l - end - - private # -------------------------------------------------------- - - def parse_mode(m) - result = 0 - (1..9).each do |i| - result = 2 * result + ((m[i] == ?-) ? 0 : 1) - end - result - end - - def determine_time(d1, d2, d3) - now = self.class.time.now - if /:/ !~ d3 - result = Time.parse("#{d1} #{d2} #{d3}") - else - result = Time.parse("#{d1} #{d2} #{now.year} #{d3}") - result = Time.parse("#{d1} #{d2} #{now.year - 1} #{d3}") if - result > now - end - result - end - end - - ## - # Manage the uploading of files to an FTP account. - class FtpUploader # :nodoc: - - # Log uploads to standard output when true. - attr_accessor :verbose - - class << FtpUploader - # Create an uploader and pass it to the given block as +up+. - # When the block is complete, close the uploader. - def connect(path, host, account, password) - up = self.new(path, host, account, password) - begin - yield(up) - ensure - up.close - end - end - end - - # Create an FTP uploader targeting the directory +path+ on +host+ - # using the given account and password. +path+ will be the root - # path of the uploader. - def initialize(path, host, account, password) - @created = Hash.new - @path = path - @ftp = Net::FTP.new(host, account, password) - makedirs(@path) - @ftp.chdir(@path) - end - - # Create the directory +path+ in the uploader root path. - def makedirs(path) - route = [] - File.split(path).each do |dir| - route << dir - current_dir = File.join(route) - if @created[current_dir].nil? - @created[current_dir] = true - $stderr.puts "Creating Directory #{current_dir}" if @verbose - @ftp.mkdir(current_dir) rescue nil - end - end - end - - # Upload all files matching +wildcard+ to the uploader's root - # path. - def upload_files(wildcard) - FileList.glob(wildcard).each do |fn| - upload(fn) - end - end - - # Close the uploader. - def close - @ftp.close - end - - private # -------------------------------------------------------- - - # Upload a single file to the uploader's root path. - def upload(file) - $stderr.puts "Uploading #{file}" if @verbose - dir = File.dirname(file) - makedirs(dir) - @ftp.putbinaryfile(file, file) unless File.directory?(file) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/publisher.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/publisher.rb deleted file mode 100644 index f4ee1abf..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/publisher.rb +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com) -# All rights reserved. - -# :stopdoc: - -# Configuration information about an upload host system. -# name :: Name of host system. -# webdir :: Base directory for the web information for the -# application. The application name (APP) is appended to -# this directory before using. -# pkgdir :: Directory on the host system where packages can be -# placed. -HostInfo = Struct.new(:name, :webdir, :pkgdir) - -# :startdoc: - -# TODO: Move to contrib/sshpublisher -#-- -# Manage several publishers as a single entity. -class CompositePublisher # :nodoc: - def initialize - @publishers = [] - end - - # Add a publisher to the composite. - def add(pub) - @publishers << pub - end - - # Upload all the individual publishers. - def upload - @publishers.each { |p| p.upload } - end -end - -# TODO: Remove in Rake 11, duplicated -#-- -# Publish an entire directory to an existing remote directory using -# SSH. -class SshDirPublisher # :nodoc: all - def initialize(host, remote_dir, local_dir) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - end - - def upload - run %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}} - end -end - -# TODO: Remove in Rake 11, duplicated -#-- -# Publish an entire directory to a fresh remote directory using SSH. -class SshFreshDirPublisher < SshDirPublisher # :nodoc: all - def upload - run %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil - run %{ssh #{@host} mkdir #{@remote_dir}} - super - end -end - -# TODO: Remove in Rake 11, duplicated -#-- -# Publish a list of files to an existing remote directory. -class SshFilePublisher # :nodoc: all - # Create a publisher using the give host information. - def initialize(host, remote_dir, local_dir, *files) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - @files = files - end - - # Upload the local directory to the remote directory. - def upload - @files.each do |fn| - run %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}} - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb deleted file mode 100644 index 00889ad7..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb +++ /dev/null @@ -1,18 +0,0 @@ -# TODO: Remove in Rake 11 - -require 'rake/contrib/sshpublisher' - -module Rake - - class RubyForgePublisher < SshDirPublisher # :nodoc: all - attr_reader :project, :proj_id, :user - - def initialize(projname, user) - super( - "#{user}@rubyforge.org", - "/var/www/gforge-projects/#{projname}", - "html") - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb deleted file mode 100644 index 64f57701..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb +++ /dev/null @@ -1,61 +0,0 @@ -require 'rake/dsl_definition' -require 'rake/contrib/compositepublisher' - -module Rake - - # Publish an entire directory to an existing remote directory using - # SSH. - class SshDirPublisher - include Rake::DSL - - # Creates an SSH publisher which will scp all files in +local_dir+ to - # +remote_dir+ on +host+ - - def initialize(host, remote_dir, local_dir) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - end - - # Uploads the files - - def upload - sh "scp", "-rq", "#{@local_dir}/*", "#{@host}:#{@remote_dir}" - end - end - - # Publish an entire directory to a fresh remote directory using SSH. - class SshFreshDirPublisher < SshDirPublisher - - # Uploads the files after removing the existing remote directory. - - def upload - sh "ssh", @host, "rm", "-rf", @remote_dir rescue nil - sh "ssh", @host, "mkdir", @remote_dir - super - end - end - - # Publish a list of files to an existing remote directory. - class SshFilePublisher - include Rake::DSL - - # Creates an SSH publisher which will scp all +files+ in +local_dir+ to - # +remote_dir+ on +host+. - - def initialize(host, remote_dir, local_dir, *files) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - @files = files - end - - # Uploads the files - - def upload - @files.each do |fn| - sh "scp", "-q", "#{@local_dir}/#{fn}", "#{@host}:#{@remote_dir}" - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/sys.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/sys.rb deleted file mode 100644 index 8d4c7354..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/contrib/sys.rb +++ /dev/null @@ -1,4 +0,0 @@ -# TODO: Remove in Rake 11 - -fail "ERROR: 'rake/contrib/sys' is obsolete and no longer supported. " + - "Use 'FileUtils' instead." diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/cpu_counter.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/cpu_counter.rb deleted file mode 100644 index f29778ed..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/cpu_counter.rb +++ /dev/null @@ -1,125 +0,0 @@ -module Rake - - # Based on a script at: - # http://stackoverflow.com/questions/891537/ruby-detect-number-of-cpus-installed - class CpuCounter # :nodoc: all - def self.count - new.count_with_default - end - - def count_with_default(default=4) - count || default - rescue StandardError - default - end - - begin - require 'etc' - rescue LoadError - else - if Etc.respond_to?(:nprocessors) - def count - return Etc.nprocessors - end - end - end - end -end - -unless Rake::CpuCounter.method_defined?(:count) - Rake::CpuCounter.class_eval <<-'end;', __FILE__, __LINE__+1 - require 'rbconfig' - - # TODO: replace with IO.popen using array-style arguments in Rake 11 - require 'open3' - - def count - if defined?(Java::Java) - count_via_java_runtime - else - case RbConfig::CONFIG['host_os'] - when /darwin9/ - count_via_hwprefs_cpu_count - when /darwin/ - count_via_hwprefs_thread_count || count_via_sysctl - when /linux/ - count_via_cpuinfo - when /bsd/ - count_via_sysctl - when /mswin|mingw/ - count_via_win32 - else - # Try everything - count_via_win32 || - count_via_sysctl || - count_via_hwprefs_thread_count || - count_via_hwprefs_cpu_count || - count_via_cpuinfo - end - end - end - - def count_via_java_runtime - Java::Java.lang.Runtime.getRuntime.availableProcessors - rescue StandardError - nil - end - - def count_via_win32 - require 'win32ole' - wmi = WIN32OLE.connect("winmgmts://") - cpu = wmi.ExecQuery("select NumberOfCores from Win32_Processor") # TODO count hyper-threaded in this - cpu.to_enum.first.NumberOfCores - rescue StandardError, LoadError - nil - end - - def count_via_cpuinfo - open('/proc/cpuinfo') { |f| f.readlines }.grep(/processor/).size - rescue StandardError - nil - end - - def count_via_hwprefs_thread_count - run 'hwprefs', 'thread_count' - end - - def count_via_hwprefs_cpu_count - run 'hwprefs', 'cpu_count' - end - - def count_via_sysctl - run 'sysctl', '-n', 'hw.ncpu' - end - - def run(command, *args) - cmd = resolve_command(command) - if cmd - Open3.popen3 cmd, *args do |inn, out, err,| - inn.close - err.read - out.read.to_i - end - else - nil - end - end - - def resolve_command(command) - look_for_command("/usr/sbin", command) || - look_for_command("/sbin", command) || - in_path_command(command) - end - - def look_for_command(dir, command) - path = File.join(dir, command) - File.exist?(path) ? path : nil - end - - def in_path_command(command) - Open3.popen3 'which', command do |_, out,| - out.eof? ? nil : command - end - end - end; -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/default_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/default_loader.rb deleted file mode 100644 index 6154408f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/default_loader.rb +++ /dev/null @@ -1,14 +0,0 @@ -module Rake - - # Default Rakefile loader used by +import+. - class DefaultLoader - - ## - # Loads a rakefile into the current application from +fn+ - - def load(fn) - Rake.load_rakefile(File.expand_path(fn)) - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/core.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/core.rb deleted file mode 100644 index 7575df15..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/core.rb +++ /dev/null @@ -1,25 +0,0 @@ -class Module - # Check for an existing method in the current class before extending. If - # the method already exists, then a warning is printed and the extension is - # not added. Otherwise the block is yielded and any definitions in the - # block will take effect. - # - # Usage: - # - # class String - # rake_extension("xyz") do - # def xyz - # ... - # end - # end - # end - # - def rake_extension(method) # :nodoc: - if method_defined?(method) - $stderr.puts "WARNING: Possible conflict with Rake extension: " + - "#{self}##{method} already exists" - else - yield - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/module.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/module.rb deleted file mode 100644 index 3ee155ff..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/module.rb +++ /dev/null @@ -1,2 +0,0 @@ - -# TODO: remove in Rake 11 diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/pathname.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/pathname.rb deleted file mode 100644 index 49e2cd47..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/pathname.rb +++ /dev/null @@ -1,25 +0,0 @@ -require 'rake/ext/core' -require 'pathname' - -class Pathname - - rake_extension("ext") do - # Return a new Pathname with String#ext applied to it. - # - # This Pathname extension comes from Rake - def ext(newext='') - Pathname.new(Rake.from_pathname(self).ext(newext)) - end - end - - rake_extension("pathmap") do - # Apply the pathmap spec to the Pathname, returning a - # new Pathname with the modified paths. (See String#pathmap for - # details.) - # - # This Pathname extension comes from Rake - def pathmap(spec=nil, &block) - Pathname.new(Rake.from_pathname(self).pathmap(spec, &block)) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/string.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/string.rb deleted file mode 100644 index f212223e..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/string.rb +++ /dev/null @@ -1,175 +0,0 @@ -require 'rake/ext/core' - -class String - - rake_extension("ext") do - # Replace the file extension with +newext+. If there is no extension on - # the string, append the new extension to the end. If the new extension - # is not given, or is the empty string, remove any existing extension. - # - # +ext+ is a user added method for the String class. - # - # This String extension comes from Rake - def ext(newext='') - return self.dup if ['.', '..'].include? self - if newext != '' - newext = "." + newext unless newext =~ /^\./ - end - self.chomp(File.extname(self)) << newext - end - end - - rake_extension("pathmap") do - # Explode a path into individual components. Used by +pathmap+. - # - # This String extension comes from Rake - def pathmap_explode - head, tail = File.split(self) - return [self] if head == self - return [tail] if head == '.' || tail == '/' - return [head, tail] if head == '/' - return head.pathmap_explode + [tail] - end - protected :pathmap_explode - - # Extract a partial path from the path. Include +n+ directories from the - # front end (left hand side) if +n+ is positive. Include |+n+| - # directories from the back end (right hand side) if +n+ is negative. - # - # This String extension comes from Rake - def pathmap_partial(n) - dirs = File.dirname(self).pathmap_explode - partial_dirs = - if n > 0 - dirs[0...n] - elsif n < 0 - dirs.reverse[0...-n].reverse - else - "." - end - File.join(partial_dirs) - end - protected :pathmap_partial - - # Perform the pathmap replacement operations on the given path. The - # patterns take the form 'pat1,rep1;pat2,rep2...'. - # - # This String extension comes from Rake - def pathmap_replace(patterns, &block) - result = self - patterns.split(';').each do |pair| - pattern, replacement = pair.split(',') - pattern = Regexp.new(pattern) - if replacement == '*' && block_given? - result = result.sub(pattern, &block) - elsif replacement - result = result.sub(pattern, replacement) - else - result = result.sub(pattern, '') - end - end - result - end - protected :pathmap_replace - - # Map the path according to the given specification. The specification - # controls the details of the mapping. The following special patterns are - # recognized: - # - # %p :: The complete path. - # %f :: The base file name of the path, with its file extension, - # but without any directories. - # %n :: The file name of the path without its file extension. - # %d :: The directory list of the path. - # %x :: The file extension of the path. An empty string if there - # is no extension. - # %X :: Everything *but* the file extension. - # %s :: The alternate file separator if defined, otherwise use # - # the standard file separator. - # %% :: A percent sign. - # - # The %d specifier can also have a numeric prefix (e.g. '%2d'). - # If the number is positive, only return (up to) +n+ directories in the - # path, starting from the left hand side. If +n+ is negative, return (up - # to) +n+ directories from the right hand side of the path. - # - # Examples: - # - # 'a/b/c/d/file.txt'.pathmap("%2d") => 'a/b' - # 'a/b/c/d/file.txt'.pathmap("%-2d") => 'c/d' - # - # Also the %d, %p, %f, %n, - # %x, and %X operators can take a pattern/replacement - # argument to perform simple string substitutions on a particular part of - # the path. The pattern and replacement are separated by a comma and are - # enclosed by curly braces. The replacement spec comes after the % - # character but before the operator letter. (e.g. "%{old,new}d"). - # Multiple replacement specs should be separated by semi-colons (e.g. - # "%{old,new;src,bin}d"). - # - # Regular expressions may be used for the pattern, and back refs may be - # used in the replacement text. Curly braces, commas and semi-colons are - # excluded from both the pattern and replacement text (let's keep parsing - # reasonable). - # - # For example: - # - # "src/org/onestepback/proj/A.java".pathmap("%{^src,class}X.class") - # - # returns: - # - # "class/org/onestepback/proj/A.class" - # - # If the replacement text is '*', then a block may be provided to perform - # some arbitrary calculation for the replacement. - # - # For example: - # - # "/path/to/file.TXT".pathmap("%X%{.*,*}x") { |ext| - # ext.downcase - # } - # - # Returns: - # - # "/path/to/file.txt" - # - # This String extension comes from Rake - def pathmap(spec=nil, &block) - return self if spec.nil? - result = '' - spec.scan(/%\{[^}]*\}-?\d*[sdpfnxX%]|%-?\d+d|%.|[^%]+/) do |frag| - case frag - when '%f' - result << File.basename(self) - when '%n' - result << File.basename(self).ext - when '%d' - result << File.dirname(self) - when '%x' - result << File.extname(self) - when '%X' - result << self.ext - when '%p' - result << self - when '%s' - result << (File::ALT_SEPARATOR || File::SEPARATOR) - when '%-' - # do nothing - when '%%' - result << "%" - when /%(-?\d+)d/ - result << pathmap_partial($1.to_i) - when /^%\{([^}]*)\}(\d*[dpfnxX])/ - patterns, operator = $1, $2 - result << pathmap('%' + operator).pathmap_replace(patterns, &block) - when /^%/ - fail ArgumentError, "Unknown pathmap specifier #{frag} in '#{spec}'" - else - result << frag - end - end - result - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/time.rb deleted file mode 100644 index 3c206e4d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ext/time.rb +++ /dev/null @@ -1,18 +0,0 @@ -#-- -# Extensions to time to allow comparisons with early and late time classes. - -require 'rake/early_time' -require 'rake/late_time' - -if RUBY_VERSION < "1.9" - class Time # :nodoc: all - alias rake_original_time_compare :<=> - def <=>(other) - if Rake::EarlyTime === other || Rake::LateTime === other - - other.<=>(self) - else - rake_original_time_compare(other) - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_creation_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_creation_task.rb deleted file mode 100644 index c87e2192..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_creation_task.rb +++ /dev/null @@ -1,24 +0,0 @@ -require 'rake/file_task' -require 'rake/early_time' - -module Rake - - # A FileCreationTask is a file task that when used as a dependency will be - # needed if and only if the file has not been created. Once created, it is - # not re-triggered if any of its dependencies are newer, nor does trigger - # any rebuilds of tasks that depend on it whenever it is updated. - # - class FileCreationTask < FileTask - # Is this file task needed? Yes if it doesn't exist. - def needed? - ! File.exist?(name) - end - - # Time stamp for file creation task. This time stamp is earlier - # than any other time stamp. - def timestamp - Rake::EARLY - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_list.rb deleted file mode 100644 index 93b8b537..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_list.rb +++ /dev/null @@ -1,428 +0,0 @@ -require 'rake/cloneable' -require 'rake/file_utils_ext' -require 'rake/pathmap' - - -module Rake - - ## - # A FileList is essentially an array with a few helper methods defined to - # make file manipulation a bit easier. - # - # FileLists are lazy. When given a list of glob patterns for possible files - # to be included in the file list, instead of searching the file structures - # to find the files, a FileList holds the pattern for latter use. - # - # This allows us to define a number of FileList to match any number of - # files, but only search out the actual files when then FileList itself is - # actually used. The key is that the first time an element of the - # FileList/Array is requested, the pending patterns are resolved into a real - # list of file names. - # - class FileList - - include Cloneable - - # == Method Delegation - # - # The lazy evaluation magic of FileLists happens by implementing all the - # array specific methods to call +resolve+ before delegating the heavy - # lifting to an embedded array object (@items). - # - # In addition, there are two kinds of delegation calls. The regular kind - # delegates to the @items array and returns the result directly. Well, - # almost directly. It checks if the returned value is the @items object - # itself, and if so will return the FileList object instead. - # - # The second kind of delegation call is used in methods that normally - # return a new Array object. We want to capture the return value of these - # methods and wrap them in a new FileList object. We enumerate these - # methods in the +SPECIAL_RETURN+ list below. - - # List of array methods (that are not in +Object+) that need to be - # delegated. - ARRAY_METHODS = (Array.instance_methods - Object.instance_methods). - map { |n| n.to_s } - - # List of additional methods that must be delegated. - MUST_DEFINE = %w[inspect <=>] - - # List of methods that should not be delegated here (we define special - # versions of them explicitly below). - MUST_NOT_DEFINE = %w[to_a to_ary partition * <<] - - # List of delegated methods that return new array values which need - # wrapping. - SPECIAL_RETURN = %w[ - map collect sort sort_by select find_all reject grep - compact flatten uniq values_at - + - & | - ] - - DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE). - map { |s| s.to_s }.sort.uniq - - # Now do the delegation. - DELEGATING_METHODS.each do |sym| - if SPECIAL_RETURN.include?(sym) - ln = __LINE__ + 1 - class_eval %{ - def #{sym}(*args, &block) - resolve - result = @items.send(:#{sym}, *args, &block) - self.class.new.import(result) - end - }, __FILE__, ln - else - ln = __LINE__ + 1 - class_eval %{ - def #{sym}(*args, &block) - resolve - result = @items.send(:#{sym}, *args, &block) - result.object_id == @items.object_id ? self : result - end - }, __FILE__, ln - end - end - - # Create a file list from the globbable patterns given. If you wish to - # perform multiple includes or excludes at object build time, use the - # "yield self" pattern. - # - # Example: - # file_list = FileList.new('lib/**/*.rb', 'test/test*.rb') - # - # pkg_files = FileList.new('lib/**/*') do |fl| - # fl.exclude(/\bCVS\b/) - # end - # - def initialize(*patterns) - @pending_add = [] - @pending = false - @exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup - @exclude_procs = DEFAULT_IGNORE_PROCS.dup - @items = [] - patterns.each { |pattern| include(pattern) } - yield self if block_given? - end - - # Add file names defined by glob patterns to the file list. If an array - # is given, add each element of the array. - # - # Example: - # file_list.include("*.java", "*.cfg") - # file_list.include %w( math.c lib.h *.o ) - # - def include(*filenames) - # TODO: check for pending - filenames.each do |fn| - if fn.respond_to? :to_ary - include(*fn.to_ary) - else - @pending_add << Rake.from_pathname(fn) - end - end - @pending = true - self - end - alias :add :include - - # Register a list of file name patterns that should be excluded from the - # list. Patterns may be regular expressions, glob patterns or regular - # strings. In addition, a block given to exclude will remove entries that - # return true when given to the block. - # - # Note that glob patterns are expanded against the file system. If a file - # is explicitly added to a file list, but does not exist in the file - # system, then an glob pattern in the exclude list will not exclude the - # file. - # - # Examples: - # FileList['a.c', 'b.c'].exclude("a.c") => ['b.c'] - # FileList['a.c', 'b.c'].exclude(/^a/) => ['b.c'] - # - # If "a.c" is a file, then ... - # FileList['a.c', 'b.c'].exclude("a.*") => ['b.c'] - # - # If "a.c" is not a file, then ... - # FileList['a.c', 'b.c'].exclude("a.*") => ['a.c', 'b.c'] - # - def exclude(*patterns, &block) - patterns.each do |pat| - @exclude_patterns << Rake.from_pathname(pat) - end - @exclude_procs << block if block_given? - resolve_exclude unless @pending - self - end - - # Clear all the exclude patterns so that we exclude nothing. - def clear_exclude - @exclude_patterns = [] - @exclude_procs = [] - self - end - - # A FileList is equal through array equality. - def ==(array) - to_ary == array - end - - # Return the internal array object. - def to_a - resolve - @items - end - - # Return the internal array object. - def to_ary - to_a - end - - # Lie about our class. - def is_a?(klass) - klass == Array || super(klass) - end - alias kind_of? is_a? - - # Redefine * to return either a string or a new file list. - def *(other) - result = @items * other - case result - when Array - FileList.new.import(result) - else - result - end - end - - def <<(obj) - resolve - @items << Rake.from_pathname(obj) - self - end - - # Resolve all the pending adds now. - def resolve - if @pending - @pending = false - @pending_add.each do |fn| resolve_add(fn) end - @pending_add = [] - resolve_exclude - end - self - end - - def resolve_add(fn) # :nodoc: - case fn - when %r{[*?\[\{]} - add_matching(fn) - else - self << fn - end - end - private :resolve_add - - def resolve_exclude # :nodoc: - reject! { |fn| excluded_from_list?(fn) } - self - end - private :resolve_exclude - - # Return a new FileList with the results of running +sub+ against each - # element of the original list. - # - # Example: - # FileList['a.c', 'b.c'].sub(/\.c$/, '.o') => ['a.o', 'b.o'] - # - def sub(pat, rep) - inject(FileList.new) { |res, fn| res << fn.sub(pat, rep) } - end - - # Return a new FileList with the results of running +gsub+ against each - # element of the original list. - # - # Example: - # FileList['lib/test/file', 'x/y'].gsub(/\//, "\\") - # => ['lib\\test\\file', 'x\\y'] - # - def gsub(pat, rep) - inject(FileList.new) { |res, fn| res << fn.gsub(pat, rep) } - end - - # Same as +sub+ except that the original file list is modified. - def sub!(pat, rep) - each_with_index { |fn, i| self[i] = fn.sub(pat, rep) } - self - end - - # Same as +gsub+ except that the original file list is modified. - def gsub!(pat, rep) - each_with_index { |fn, i| self[i] = fn.gsub(pat, rep) } - self - end - - # Apply the pathmap spec to each of the included file names, returning a - # new file list with the modified paths. (See String#pathmap for - # details.) - def pathmap(spec=nil) - collect { |fn| fn.pathmap(spec) } - end - - # Return a new FileList with String#ext method applied to - # each member of the array. - # - # This method is a shortcut for: - # - # array.collect { |item| item.ext(newext) } - # - # +ext+ is a user added method for the Array class. - def ext(newext='') - collect { |fn| fn.ext(newext) } - end - - # Grep each of the files in the filelist using the given pattern. If a - # block is given, call the block on each matching line, passing the file - # name, line number, and the matching line of text. If no block is given, - # a standard emacs style file:linenumber:line message will be printed to - # standard out. Returns the number of matched items. - def egrep(pattern, *options) - matched = 0 - each do |fn| - begin - open(fn, "r", *options) do |inf| - count = 0 - inf.each do |line| - count += 1 - if pattern.match(line) - matched += 1 - if block_given? - yield fn, count, line - else - puts "#{fn}:#{count}:#{line}" - end - end - end - end - rescue StandardError => ex - $stderr.puts "Error while processing '#{fn}': #{ex}" - end - end - matched - end - - # Return a new file list that only contains file names from the current - # file list that exist on the file system. - def existing - select { |fn| File.exist?(fn) } - end - - # Modify the current file list so that it contains only file name that - # exist on the file system. - def existing! - resolve - @items = @items.select { |fn| File.exist?(fn) } - self - end - - # FileList version of partition. Needed because the nested arrays should - # be FileLists in this version. - def partition(&block) # :nodoc: - resolve - result = @items.partition(&block) - [ - FileList.new.import(result[0]), - FileList.new.import(result[1]), - ] - end - - # Convert a FileList to a string by joining all elements with a space. - def to_s - resolve - self.join(' ') - end - - # Add matching glob patterns. - def add_matching(pattern) - FileList.glob(pattern).each do |fn| - self << fn unless excluded_from_list?(fn) - end - end - private :add_matching - - # Should the given file name be excluded from the list? - # - # NOTE: This method was formerly named "exclude?", but Rails - # introduced an exclude? method as an array method and setup a - # conflict with file list. We renamed the method to avoid - # confusion. If you were using "FileList#exclude?" in your user - # code, you will need to update. - def excluded_from_list?(fn) - return true if @exclude_patterns.any? do |pat| - case pat - when Regexp - fn =~ pat - when /[*?]/ - File.fnmatch?(pat, fn, File::FNM_PATHNAME) - else - fn == pat - end - end - @exclude_procs.any? { |p| p.call(fn) } - end - - DEFAULT_IGNORE_PATTERNS = [ - /(^|[\/\\])CVS([\/\\]|$)/, - /(^|[\/\\])\.svn([\/\\]|$)/, - /\.bak$/, - /~$/ - ] - DEFAULT_IGNORE_PROCS = [ - proc { |fn| fn =~ /(^|[\/\\])core$/ && ! File.directory?(fn) } - ] - - def import(array) # :nodoc: - @items = array - self - end - - class << self - # Create a new file list including the files listed. Similar to: - # - # FileList.new(*args) - def [](*args) - new(*args) - end - - # Get a sorted list of files matching the pattern. This method - # should be preferred to Dir[pattern] and Dir.glob(pattern) because - # the files returned are guaranteed to be sorted. - def glob(pattern, *args) - Dir.glob(pattern, *args).sort - end - end - end -end - -module Rake - class << self - - # Yield each file or directory component. - def each_dir_parent(dir) # :nodoc: - old_length = nil - while dir != '.' && dir.length != old_length - yield(dir) - old_length = dir.length - dir = File.dirname(dir) - end - end - - # Convert Pathname and Pathname-like objects to strings; - # leave everything else alone - def from_pathname(path) # :nodoc: - path = path.to_path if path.respond_to?(:to_path) - path = path.to_str if path.respond_to?(:to_str) - path - end - end -end # module Rake diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_task.rb deleted file mode 100644 index 4c9b0407..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_task.rb +++ /dev/null @@ -1,46 +0,0 @@ -require 'rake/task.rb' -require 'rake/early_time' - -module Rake - - # A FileTask is a task that includes time based dependencies. If any of a - # FileTask's prerequisites have a timestamp that is later than the file - # represented by this task, then the file must be rebuilt (using the - # supplied actions). - # - class FileTask < Task - - # Is this file task needed? Yes if it doesn't exist, or if its time stamp - # is out of date. - def needed? - ! File.exist?(name) || out_of_date?(timestamp) || @application.options.build_all - end - - # Time stamp for file task. - def timestamp - if File.exist?(name) - File.mtime(name.to_s) - else - Rake::LATE - end - end - - private - - # Are there any prerequisites with a later time than the given time stamp? - def out_of_date?(stamp) - @prerequisites.any? { |n| application[n, @scope].timestamp > stamp } - end - - # ---------------------------------------------------------------- - # Task class methods. - # - class << self - # Apply the scope to the task name according to the rules for this kind - # of task. File based tasks ignore the scope when creating the name. - def scope_name(scope, task_name) - Rake.from_pathname(task_name) - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_utils.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_utils.rb deleted file mode 100644 index 27f4e2e1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_utils.rb +++ /dev/null @@ -1,128 +0,0 @@ -require 'rbconfig' -require 'fileutils' - -#-- -# This a FileUtils extension that defines several additional commands to be -# added to the FileUtils utility functions. -module FileUtils - # Path to the currently running Ruby program - RUBY = ENV['RUBY'] || File.join( - RbConfig::CONFIG['bindir'], - RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT']). - sub(/.*\s.*/m, '"\&"') - - OPT_TABLE['sh'] = %w(noop verbose) - OPT_TABLE['ruby'] = %w(noop verbose) - - # Run the system command +cmd+. If multiple arguments are given the command - # is run directly (without the shell, same semantics as Kernel::exec and - # Kernel::system). - # - # It is recommended you use the multiple argument form over interpolating - # user input for both usability and security reasons. With the multiple - # argument form you can easily process files with spaces or other shell - # reserved characters in them. With the multiple argument form your rake - # tasks are not vulnerable to users providing an argument like - # ; rm # -rf /. - # - # If a block is given, upon command completion the block is called with an - # OK flag (true on a zero exit status) and a Process::Status object. - # Without a block a RuntimeError is raised when the command exits non-zero. - # - # Examples: - # - # sh 'ls -ltr' - # - # sh 'ls', 'file with spaces' - # - # # check exit status after command runs - # sh %{grep pattern file} do |ok, res| - # if ! ok - # puts "pattern not found (status = #{res.exitstatus})" - # end - # end - # - def sh(*cmd, &block) - options = (Hash === cmd.last) ? cmd.pop : {} - shell_runner = block_given? ? block : create_shell_runner(cmd) - set_verbose_option(options) - options[:noop] ||= Rake::FileUtilsExt.nowrite_flag - Rake.rake_check_options options, :noop, :verbose - Rake.rake_output_message cmd.join(" ") if options[:verbose] - - unless options[:noop] - res = rake_system(*cmd) - status = $? - status = Rake::PseudoStatus.new(1) if !res && status.nil? - shell_runner.call(res, status) - end - end - - def create_shell_runner(cmd) # :nodoc: - show_command = cmd.join(" ") - show_command = show_command[0, 42] + "..." unless $trace - lambda do |ok, status| - ok or - fail "Command failed with status (#{status.exitstatus}): " + - "[#{show_command}]" - end - end - private :create_shell_runner - - def set_verbose_option(options) # :nodoc: - unless options.key? :verbose - options[:verbose] = - (Rake::FileUtilsExt.verbose_flag == Rake::FileUtilsExt::DEFAULT) || - Rake::FileUtilsExt.verbose_flag - end - end - private :set_verbose_option - - def rake_system(*cmd) # :nodoc: - Rake::AltSystem.system(*cmd) - end - private :rake_system - - # Run a Ruby interpreter with the given arguments. - # - # Example: - # ruby %{-pe '$_.upcase!' 1 - sh(*([RUBY] + args + [options]), &block) - else - sh("#{RUBY} #{args.first}", options, &block) - end - end - - LN_SUPPORTED = [true] - - # Attempt to do a normal file link, but fall back to a copy if the link - # fails. - def safe_ln(*args) - if ! LN_SUPPORTED[0] - cp(*args) - else - begin - ln(*args) - rescue StandardError, NotImplementedError - LN_SUPPORTED[0] = false - cp(*args) - end - end - end - - # Split a file path into individual directory names. - # - # Example: - # split_all("a/b/c") => ['a', 'b', 'c'] - # - def split_all(path) - head, tail = File.split(path) - return [tail] if head == '.' || tail == '/' - return [head, tail] if head == '/' - return split_all(head) + [tail] - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/gempackagetask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/gempackagetask.rb deleted file mode 100644 index 16e7ce04..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/gempackagetask.rb +++ /dev/null @@ -1,4 +0,0 @@ -# TODO: Remove in Rake 11 - -fail "ERROR: 'rake/gempackagetask' is obsolete and no longer supported. " + - "Use 'rubygems/package_task' instead." diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/invocation_chain.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/invocation_chain.rb deleted file mode 100644 index 54062895..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/invocation_chain.rb +++ /dev/null @@ -1,56 +0,0 @@ -module Rake - - # InvocationChain tracks the chain of task invocations to detect - # circular dependencies. - class InvocationChain < LinkedList - - # Is the invocation already in the chain? - def member?(invocation) - head == invocation || tail.member?(invocation) - end - - # Append an invocation to the chain of invocations. It is an error - # if the invocation already listed. - def append(invocation) - if member?(invocation) - fail RuntimeError, "Circular dependency detected: #{to_s} => #{invocation}" - end - conj(invocation) - end - - # Convert to string, ie: TOP => invocation => invocation - def to_s - "#{prefix}#{head}" - end - - # Class level append. - def self.append(invocation, chain) - chain.append(invocation) - end - - private - - def prefix - "#{tail} => " - end - - # Null object for an empty chain. - class EmptyInvocationChain < LinkedList::EmptyLinkedList - @parent = InvocationChain - - def member?(obj) - false - end - - def append(invocation) - conj(invocation) - end - - def to_s - "TOP" - end - end - - EMPTY = EmptyInvocationChain.new - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb deleted file mode 100644 index 84ff3353..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb +++ /dev/null @@ -1,16 +0,0 @@ -module Rake - module InvocationExceptionMixin - # Return the invocation chain (list of Rake tasks) that were in - # effect when this exception was detected by rake. May be null if - # no tasks were active. - def chain - @rake_invocation_chain ||= nil - end - - # Set the invocation chain in effect when this exception was - # detected. - def chain=(value) - @rake_invocation_chain = value - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/late_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/late_time.rb deleted file mode 100644 index d959a782..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/late_time.rb +++ /dev/null @@ -1,17 +0,0 @@ -module Rake - # LateTime is a fake timestamp that occurs _after_ any other time value. - class LateTime - include Comparable - include Singleton - - def <=>(other) - 1 - end - - def to_s - '' - end - end - - LATE = LateTime.instance -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/linked_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/linked_list.rb deleted file mode 100644 index b5ab7978..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/linked_list.rb +++ /dev/null @@ -1,103 +0,0 @@ -module Rake - - # Polylithic linked list structure used to implement several data - # structures in Rake. - class LinkedList - include Enumerable - - attr_reader :head, :tail - - def initialize(head, tail=EMPTY) - @head = head - @tail = tail - end - - # Polymorphically add a new element to the head of a list. The - # type of head node will be the same list type as the tail. - def conj(item) - self.class.cons(item, self) - end - - # Is the list empty? - def empty? - false - end - - # Lists are structurally equivalent. - def ==(other) - current = self - while ! current.empty? && ! other.empty? - return false if current.head != other.head - current = current.tail - other = other.tail - end - current.empty? && other.empty? - end - - # Convert to string: LL(item, item...) - def to_s - items = map { |item| item.to_s }.join(", ") - "LL(#{items})" - end - - # Same as +to_s+, but with inspected items. - def inspect - items = map { |item| item.inspect }.join(", ") - "LL(#{items})" - end - - # For each item in the list. - def each - current = self - while ! current.empty? - yield(current.head) - current = current.tail - end - self - end - - # Make a list out of the given arguments. This method is - # polymorphic - def self.make(*args) - result = empty - args.reverse_each do |item| - result = cons(item, result) - end - result - end - - # Cons a new head onto the tail list. - def self.cons(head, tail) - new(head, tail) - end - - # The standard empty list class for the given LinkedList class. - def self.empty - self::EMPTY - end - - # Represent an empty list, using the Null Object Pattern. - # - # When inheriting from the LinkedList class, you should implement - # a type specific Empty class as well. Make sure you set the class - # instance variable @parent to the associated list class (this - # allows conj, cons and make to work polymorphically). - class EmptyLinkedList < LinkedList - @parent = LinkedList - - def initialize - end - - def empty? - true - end - - def self.cons(head, tail) - @parent.cons(head, tail) - end - end - - EMPTY = EmptyLinkedList.new - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/loaders/makefile.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/loaders/makefile.rb deleted file mode 100644 index 2c4b2632..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/loaders/makefile.rb +++ /dev/null @@ -1,53 +0,0 @@ -module Rake - - # Makefile loader to be used with the import file loader. Use this to - # import dependencies from make dependency tools: - # - # require 'rake/loaders/makefile' - # - # file ".depends.mf" => [SRC_LIST] do |t| - # sh "makedepend -f- -- #{CFLAGS} -- #{t.prerequisites} > #{t.name}" - # end - # - # import ".depends.mf" - # - # See {Importing Dependencies}[link:doc/rakefile_rdoc.html#label-Importing+Dependencies] - # for further details. - - class MakefileLoader - include Rake::DSL - - SPACE_MARK = "\0" # :nodoc: - - # Load the makefile dependencies in +fn+. - def load(fn) # :nodoc: - lines = File.read fn - lines.gsub!(/\\ /, SPACE_MARK) - lines.gsub!(/#[^\n]*\n/m, "") - lines.gsub!(/\\\n/, ' ') - lines.each_line do |line| - process_line(line) - end - end - - private - - # Process one logical line of makefile data. - def process_line(line) # :nodoc: - file_tasks, args = line.split(':', 2) - return if args.nil? - dependents = args.split.map { |d| respace(d) } - file_tasks.scan(/\S+/) do |file_task| - file_task = respace(file_task) - file file_task => dependents - end - end - - def respace(str) # :nodoc: - str.tr SPACE_MARK, ' ' - end - end - - # Install the handler - Rake.application.add_loader('mf', MakefileLoader.new) -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/multi_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/multi_task.rb deleted file mode 100644 index 5418a7a7..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/multi_task.rb +++ /dev/null @@ -1,13 +0,0 @@ -module Rake - - # Same as a regular task, but the immediate prerequisites are done in - # parallel using Ruby threads. - # - class MultiTask < Task - private - def invoke_prerequisites(task_args, invocation_chain) # :nodoc: - invoke_prerequisites_concurrently(task_args, invocation_chain) - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/name_space.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/name_space.rb deleted file mode 100644 index 58f911e4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/name_space.rb +++ /dev/null @@ -1,38 +0,0 @@ -## -# The NameSpace class will lookup task names in the scope defined by a -# +namespace+ command. - -class Rake::NameSpace - - ## - # Create a namespace lookup object using the given task manager - # and the list of scopes. - - def initialize(task_manager, scope_list) - @task_manager = task_manager - @scope = scope_list.dup - end - - ## - # Lookup a task named +name+ in the namespace. - - def [](name) - @task_manager.lookup(name, @scope) - end - - ## - # The scope of the namespace (a LinkedList) - - def scope - @scope.dup - end - - ## - # Return the list of tasks defined in this and nested namespaces. - - def tasks - @task_manager.tasks_in_scope(@scope) - end - -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/packagetask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/packagetask.rb deleted file mode 100644 index 249ee72b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/packagetask.rb +++ /dev/null @@ -1,199 +0,0 @@ -# Define a package task library to aid in the definition of -# redistributable package files. - -require 'rake' -require 'rake/tasklib' - -module Rake - - # Create a packaging task that will package the project into - # distributable files (e.g zip archive or tar files). - # - # The PackageTask will create the following targets: - # - # +:package+ :: - # Create all the requested package files. - # - # +:clobber_package+ :: - # Delete all the package files. This target is automatically - # added to the main clobber target. - # - # +:repackage+ :: - # Rebuild the package files from scratch, even if they are not out - # of date. - # - # "package_dir/name-version.tgz" :: - # Create a gzipped tar package (if need_tar is true). - # - # "package_dir/name-version.tar.gz" :: - # Create a gzipped tar package (if need_tar_gz is true). - # - # "package_dir/name-version.tar.bz2" :: - # Create a bzip2'd tar package (if need_tar_bz2 is true). - # - # "package_dir/name-version.zip" :: - # Create a zip package archive (if need_zip is true). - # - # Example: - # - # Rake::PackageTask.new("rake", "1.2.3") do |p| - # p.need_tar = true - # p.package_files.include("lib/**/*.rb") - # end - # - class PackageTask < TaskLib - # Name of the package (from the GEM Spec). - attr_accessor :name - - # Version of the package (e.g. '1.3.2'). - attr_accessor :version - - # Directory used to store the package files (default is 'pkg'). - attr_accessor :package_dir - - # True if a gzipped tar file (tgz) should be produced (default is - # false). - attr_accessor :need_tar - - # True if a gzipped tar file (tar.gz) should be produced (default - # is false). - attr_accessor :need_tar_gz - - # True if a bzip2'd tar file (tar.bz2) should be produced (default - # is false). - attr_accessor :need_tar_bz2 - - # True if a zip file should be produced (default is false) - attr_accessor :need_zip - - # List of files to be included in the package. - attr_accessor :package_files - - # Tar command for gzipped or bzip2ed archives. The default is 'tar'. - attr_accessor :tar_command - - # Zip command for zipped archives. The default is 'zip'. - attr_accessor :zip_command - - # Create a Package Task with the given name and version. Use +:noversion+ - # as the version to build a package without a version or to provide a - # fully-versioned package name. - - def initialize(name=nil, version=nil) - init(name, version) - yield self if block_given? - define unless name.nil? - end - - # Initialization that bypasses the "yield self" and "define" step. - def init(name, version) - @name = name - @version = version - @package_files = Rake::FileList.new - @package_dir = 'pkg' - @need_tar = false - @need_tar_gz = false - @need_tar_bz2 = false - @need_zip = false - @tar_command = 'tar' - @zip_command = 'zip' - end - - # Create the tasks defined by this task library. - def define - fail "Version required (or :noversion)" if @version.nil? - @version = nil if :noversion == @version - - desc "Build all the packages" - task :package - - desc "Force a rebuild of the package files" - task :repackage => [:clobber_package, :package] - - desc "Remove package products" - task :clobber_package do - rm_r package_dir rescue nil - end - - task :clobber => [:clobber_package] - - [ - [need_tar, tgz_file, "z"], - [need_tar_gz, tar_gz_file, "z"], - [need_tar_bz2, tar_bz2_file, "j"] - ].each do |(need, file, flag)| - if need - task :package => ["#{package_dir}/#{file}"] - file "#{package_dir}/#{file}" => - [package_dir_path] + package_files do - chdir(package_dir) do - sh @tar_command, "#{flag}cvf", file, package_name - end - end - end - end - - if need_zip - task :package => ["#{package_dir}/#{zip_file}"] - file "#{package_dir}/#{zip_file}" => - [package_dir_path] + package_files do - chdir(package_dir) do - sh @zip_command, "-r", zip_file, package_name - end - end - end - - directory package_dir_path => @package_files do - @package_files.each do |fn| - f = File.join(package_dir_path, fn) - fdir = File.dirname(f) - mkdir_p(fdir) unless File.exist?(fdir) - if File.directory?(fn) - mkdir_p(f) - else - rm_f f - safe_ln(fn, f) - end - end - end - self - end - - # The name of this package - - def package_name - @version ? "#{@name}-#{@version}" : @name - end - - # The directory this package will be built in - - def package_dir_path - "#{package_dir}/#{package_name}" - end - - # The package name with .tgz added - - def tgz_file - "#{package_name}.tgz" - end - - # The package name with .tar.gz added - - def tar_gz_file - "#{package_name}.tar.gz" - end - - # The package name with .tar.bz2 added - - def tar_bz2_file - "#{package_name}.tar.bz2" - end - - # The package name with .zip added - - def zip_file - "#{package_name}.zip" - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/pathmap.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/pathmap.rb deleted file mode 100644 index 9a840cda..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/pathmap.rb +++ /dev/null @@ -1,3 +0,0 @@ -# TODO: Remove in Rake 11 - -require 'rake/ext/string' diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/phony.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/phony.rb deleted file mode 100644 index 29633ae0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/phony.rb +++ /dev/null @@ -1,15 +0,0 @@ -# Defines a :phony task that you can use as a dependency. This allows -# file-based tasks to use non-file-based tasks as prerequisites -# without forcing them to rebuild. -# -# See FileTask#out_of_date? and Task#timestamp for more info. - -require 'rake' - -task :phony - -Rake::Task[:phony].tap do |task| - def task.timestamp # :nodoc: - Time.at 0 - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/promise.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/promise.rb deleted file mode 100644 index 31c45634..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/promise.rb +++ /dev/null @@ -1,99 +0,0 @@ -module Rake - - # A Promise object represents a promise to do work (a chore) in the - # future. The promise is created with a block and a list of - # arguments for the block. Calling value will return the value of - # the promised chore. - # - # Used by ThreadPool. - # - class Promise # :nodoc: all - NOT_SET = Object.new.freeze # :nodoc: - - attr_accessor :recorder - - # Create a promise to do the chore specified by the block. - def initialize(args, &block) - @mutex = Mutex.new - @result = NOT_SET - @error = NOT_SET - @args = args - @block = block - end - - # Return the value of this promise. - # - # If the promised chore is not yet complete, then do the work - # synchronously. We will wait. - def value - unless complete? - stat :sleeping_on, :item_id => object_id - @mutex.synchronize do - stat :has_lock_on, :item_id => object_id - chore - stat :releasing_lock_on, :item_id => object_id - end - end - error? ? raise(@error) : @result - end - - # If no one else is working this promise, go ahead and do the chore. - def work - stat :attempting_lock_on, :item_id => object_id - if @mutex.try_lock - stat :has_lock_on, :item_id => object_id - chore - stat :releasing_lock_on, :item_id => object_id - @mutex.unlock - else - stat :bailed_on, :item_id => object_id - end - end - - private - - # Perform the chore promised - def chore - if complete? - stat :found_completed, :item_id => object_id - return - end - stat :will_execute, :item_id => object_id - begin - @result = @block.call(*@args) - rescue Exception => e - @error = e - end - stat :did_execute, :item_id => object_id - discard - end - - # Do we have a result for the promise - def result? - ! @result.equal?(NOT_SET) - end - - # Did the promise throw an error - def error? - ! @error.equal?(NOT_SET) - end - - # Are we done with the promise - def complete? - result? || error? - end - - # free up these items for the GC - def discard - @args = nil - @block = nil - end - - # Record execution statistics if there is a recorder - def stat(*args) - @recorder.call(*args) if @recorder - end - - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rake_module.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rake_module.rb deleted file mode 100644 index 36927534..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rake_module.rb +++ /dev/null @@ -1,38 +0,0 @@ -require 'rake/application' - -module Rake - - class << self - # Current Rake Application - def application - @application ||= Rake::Application.new - end - - # Set the current Rake application object. - def application=(app) - @application = app - end - - def suggested_thread_count # :nodoc: - @cpu_count ||= Rake::CpuCounter.count - @cpu_count + 4 - end - - # Return the original directory where the Rake application was started. - def original_dir - application.original_dir - end - - # Load a rakefile. - def load_rakefile(path) - load(path) - end - - # Add files to the rakelib list - def add_rakelib(*files) - application.options.rakelib ||= [] - application.options.rakelib.concat(files) - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb deleted file mode 100644 index 7e3a6b3f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb +++ /dev/null @@ -1,22 +0,0 @@ -require 'rake' - -# Load the test files from the command line. -argv = ARGV.select do |argument| - case argument - when /^-/ then - argument - when /\*/ then - FileList[argument].to_a.each do |file| - require File.expand_path file - end - - false - else - require File.expand_path argument - - false - end -end - -ARGV.replace argv - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rdoctask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rdoctask.rb deleted file mode 100644 index 8d7df4f1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rdoctask.rb +++ /dev/null @@ -1,4 +0,0 @@ -# TODO: Remove in Rake 11 - -fail "ERROR: 'rake/rdoctask' is obsolete and no longer supported. " + - "Use 'rdoc/task' (available in RDoc 2.4.2+) instead." diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb deleted file mode 100644 index 40b30a6f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb +++ /dev/null @@ -1,29 +0,0 @@ -# TODO: Remove in rake 11 - -# Local Rake override to fix bug in Ruby 0.8.2 -module Test # :nodoc: - # Local Rake override to fix bug in Ruby 0.8.2 - module Unit # :nodoc: - # Local Rake override to fix bug in Ruby 0.8.2 - module Collector # :nodoc: - # Local Rake override to fix bug in Ruby 0.8.2 - class Dir # :nodoc: - undef collect_file - def collect_file(name, suites, already_gathered) # :nodoc: - dir = File.dirname(File.expand_path(name)) - $:.unshift(dir) unless $:.first == dir - if @req - @req.require(name) - else - require(name) - end - find_test_cases(already_gathered).each do |t| - add_suite(suites, t.suite) - end - ensure - $:.delete_at $:.rindex(dir) - end - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb deleted file mode 100644 index da4318da..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb +++ /dev/null @@ -1,20 +0,0 @@ - -module Rake - - # Error indicating a recursion overflow error in task selection. - class RuleRecursionOverflowError < StandardError - def initialize(*args) - super - @targets = [] - end - - def add_target(target) - @targets << target - end - - def message - super + ": [" + @targets.reverse.join(' => ') + "]" - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/runtest.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/runtest.rb deleted file mode 100644 index 4774b0e2..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/runtest.rb +++ /dev/null @@ -1,27 +0,0 @@ -require 'test/unit' -require 'test/unit/assertions' -require 'rake/file_list' - -module Rake - include Test::Unit::Assertions - - ## - # Deprecated way of running tests in process, but only for Test::Unit. - #-- - # TODO: Remove in rake 11 - - def run_tests(pattern='test/test*.rb', log_enabled=false) # :nodoc: - FileList.glob(pattern).each do |fn| - $stderr.puts fn if log_enabled - begin - require fn - rescue Exception => ex - $stderr.puts "Error in #{fn}: #{ex.message}" - $stderr.puts ex.backtrace - assert false - end - end - end - - extend self -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/scope.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/scope.rb deleted file mode 100644 index dbefcea4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/scope.rb +++ /dev/null @@ -1,42 +0,0 @@ -module Rake - class Scope < LinkedList # :nodoc: all - - # Path for the scope. - def path - map { |item| item.to_s }.reverse.join(":") - end - - # Path for the scope + the named path. - def path_with_task_name(task_name) - "#{path}:#{task_name}" - end - - # Trim +n+ innermost scope levels from the scope. In no case will - # this trim beyond the toplevel scope. - def trim(n) - result = self - while n > 0 && ! result.empty? - result = result.tail - n -= 1 - end - result - end - - # Scope lists always end with an EmptyScope object. See Null - # Object Pattern) - class EmptyScope < EmptyLinkedList - @parent = Scope - - def path - "" - end - - def path_with_task_name(task_name) - task_name - end - end - - # Singleton null object for an empty scope. - EMPTY = EmptyScope.new - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task_arguments.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task_arguments.rb deleted file mode 100644 index fc0d6572..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task_arguments.rb +++ /dev/null @@ -1,98 +0,0 @@ -module Rake - - ## - # TaskArguments manage the arguments passed to a task. - # - class TaskArguments - include Enumerable - - # Argument names - attr_reader :names - - # Create a TaskArgument object with a list of argument +names+ and a set - # of associated +values+. +parent+ is the parent argument object. - def initialize(names, values, parent=nil) - @names = names - @parent = parent - @hash = {} - @values = values - names.each_with_index { |name, i| - @hash[name.to_sym] = values[i] unless values[i].nil? - } - end - - # Retrieve the complete array of sequential values - def to_a - @values.dup - end - - # Retrieve the list of values not associated with named arguments - def extras - @values[@names.length..-1] || [] - end - - # Create a new argument scope using the prerequisite argument - # names. - def new_scope(names) - values = names.map { |n| self[n] } - self.class.new(names, values + extras, self) - end - - # Find an argument value by name or index. - def [](index) - lookup(index.to_sym) - end - - # Specify a hash of default values for task arguments. Use the - # defaults only if there is no specific value for the given - # argument. - def with_defaults(defaults) - @hash = defaults.merge(@hash) - end - - # Enumerates the arguments and their values - def each(&block) - @hash.each(&block) - end - - # Extracts the argument values at +keys+ - def values_at(*keys) - keys.map { |k| lookup(k) } - end - - # Returns the value of the given argument via method_missing - def method_missing(sym, *args) - lookup(sym.to_sym) - end - - # Returns a Hash of arguments and their values - def to_hash - @hash - end - - def to_s # :nodoc: - @hash.inspect - end - - def inspect # :nodoc: - to_s - end - - # Returns true if +key+ is one of the arguments - def has_key?(key) - @hash.has_key?(key) - end - - protected - - def lookup(name) # :nodoc: - if @hash.has_key?(name) - @hash[name] - elsif @parent - @parent.lookup(name) - end - end - end - - EMPTY_TASK_ARGS = TaskArguments.new([], []) # :nodoc: -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task_manager.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task_manager.rb deleted file mode 100644 index c9c080b4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task_manager.rb +++ /dev/null @@ -1,307 +0,0 @@ -module Rake - - # The TaskManager module is a mixin for managing tasks. - module TaskManager - # Track the last comment made in the Rakefile. - attr_accessor :last_description - - # TODO: Remove in Rake 11 - - alias :last_comment :last_description # :nodoc: Backwards compatibility - - def initialize # :nodoc: - super - @tasks = Hash.new - @rules = Array.new - @scope = Scope.make - @last_description = nil - end - - def create_rule(*args, &block) # :nodoc: - pattern, args, deps = resolve_args(args) - pattern = Regexp.new(Regexp.quote(pattern) + '$') if String === pattern - @rules << [pattern, args, deps, block] - end - - def define_task(task_class, *args, &block) # :nodoc: - task_name, arg_names, deps = resolve_args(args) - - original_scope = @scope - if String === task_name and - not task_class.ancestors.include? Rake::FileTask then - task_name, *definition_scope = *(task_name.split(":").reverse) - @scope = Scope.make(*(definition_scope + @scope.to_a)) - end - - task_name = task_class.scope_name(@scope, task_name) - deps = [deps] unless deps.respond_to?(:to_ary) - deps = deps.map { |d| Rake.from_pathname(d).to_s } - task = intern(task_class, task_name) - task.set_arg_names(arg_names) unless arg_names.empty? - if Rake::TaskManager.record_task_metadata - add_location(task) - task.add_description(get_description(task)) - end - task.enhance(deps, &block) - ensure - @scope = original_scope - end - - # Lookup a task. Return an existing task if found, otherwise - # create a task of the current type. - def intern(task_class, task_name) - @tasks[task_name.to_s] ||= task_class.new(task_name, self) - end - - # Find a matching task for +task_name+. - def [](task_name, scopes=nil) - task_name = task_name.to_s - self.lookup(task_name, scopes) or - enhance_with_matching_rule(task_name) or - synthesize_file_task(task_name) or - fail "Don't know how to build task '#{task_name}' (see --tasks)" - end - - def synthesize_file_task(task_name) # :nodoc: - return nil unless File.exist?(task_name) - define_task(Rake::FileTask, task_name) - end - - # Resolve the arguments for a task/rule. Returns a triplet of - # [task_name, arg_name_list, prerequisites]. - def resolve_args(args) - if args.last.is_a?(Hash) - deps = args.pop - resolve_args_with_dependencies(args, deps) - else - resolve_args_without_dependencies(args) - end - end - - # Resolve task arguments for a task or rule when there are no - # dependencies declared. - # - # The patterns recognized by this argument resolving function are: - # - # task :t - # task :t, [:a] - # - def resolve_args_without_dependencies(args) - task_name = args.shift - if args.size == 1 && args.first.respond_to?(:to_ary) - arg_names = args.first.to_ary - else - arg_names = args - end - [task_name, arg_names, []] - end - private :resolve_args_without_dependencies - - # Resolve task arguments for a task or rule when there are - # dependencies declared. - # - # The patterns recognized by this argument resolving function are: - # - # task :t => [:d] - # task :t, [a] => [:d] - # - def resolve_args_with_dependencies(args, hash) # :nodoc: - fail "Task Argument Error" if hash.size != 1 - key, value = hash.map { |k, v| [k, v] }.first - if args.empty? - task_name = key - arg_names = [] - deps = value || [] - else - task_name = args.shift - arg_names = key - deps = value - end - deps = [deps] unless deps.respond_to?(:to_ary) - [task_name, arg_names, deps] - end - private :resolve_args_with_dependencies - - # If a rule can be found that matches the task name, enhance the - # task with the prerequisites and actions from the rule. Set the - # source attribute of the task appropriately for the rule. Return - # the enhanced task or nil of no rule was found. - def enhance_with_matching_rule(task_name, level=0) - fail Rake::RuleRecursionOverflowError, - "Rule Recursion Too Deep" if level >= 16 - @rules.each do |pattern, args, extensions, block| - if pattern.match(task_name) - task = attempt_rule(task_name, args, extensions, block, level) - return task if task - end - end - nil - rescue Rake::RuleRecursionOverflowError => ex - ex.add_target(task_name) - fail ex - end - - # List of all defined tasks in this application. - def tasks - @tasks.values.sort_by { |t| t.name } - end - - # List of all the tasks defined in the given scope (and its - # sub-scopes). - def tasks_in_scope(scope) - prefix = scope.path - tasks.select { |t| - /^#{prefix}:/ =~ t.name - } - end - - # Clear all tasks in this application. - def clear - @tasks.clear - @rules.clear - end - - # Lookup a task, using scope and the scope hints in the task name. - # This method performs straight lookups without trying to - # synthesize file tasks or rules. Special scope names (e.g. '^') - # are recognized. If no scope argument is supplied, use the - # current scope. Return nil if the task cannot be found. - def lookup(task_name, initial_scope=nil) - initial_scope ||= @scope - task_name = task_name.to_s - if task_name =~ /^rake:/ - scopes = Scope.make - task_name = task_name.sub(/^rake:/, '') - elsif task_name =~ /^(\^+)/ - scopes = initial_scope.trim($1.size) - task_name = task_name.sub(/^(\^+)/, '') - else - scopes = initial_scope - end - lookup_in_scope(task_name, scopes) - end - - # Lookup the task name - def lookup_in_scope(name, scope) - loop do - tn = scope.path_with_task_name(name) - task = @tasks[tn] - return task if task - break if scope.empty? - scope = scope.tail - end - nil - end - private :lookup_in_scope - - # Return the list of scope names currently active in the task - # manager. - def current_scope - @scope - end - - # Evaluate the block in a nested namespace named +name+. Create - # an anonymous namespace if +name+ is nil. - def in_namespace(name) - name ||= generate_name - @scope = Scope.new(name, @scope) - ns = NameSpace.new(self, @scope) - yield(ns) - ns - ensure - @scope = @scope.tail - end - - private - - # Add a location to the locations field of the given task. - def add_location(task) - loc = find_location - task.locations << loc if loc - task - end - - # Find the location that called into the dsl layer. - def find_location - locations = caller - i = 0 - while locations[i] - return locations[i + 1] if locations[i] =~ /rake\/dsl_definition.rb/ - i += 1 - end - nil - end - - # Generate an anonymous namespace name. - def generate_name - @seed ||= 0 - @seed += 1 - "_anon_#{@seed}" - end - - def trace_rule(level, message) # :nodoc: - options.trace_output.puts "#{" " * level}#{message}" if - Rake.application.options.trace_rules - end - - # Attempt to create a rule given the list of prerequisites. - def attempt_rule(task_name, args, extensions, block, level) - sources = make_sources(task_name, extensions) - prereqs = sources.map { |source| - trace_rule level, "Attempting Rule #{task_name} => #{source}" - if File.exist?(source) || Rake::Task.task_defined?(source) - trace_rule level, "(#{task_name} => #{source} ... EXIST)" - source - elsif parent = enhance_with_matching_rule(source, level + 1) - trace_rule level, "(#{task_name} => #{source} ... ENHANCE)" - parent.name - else - trace_rule level, "(#{task_name} => #{source} ... FAIL)" - return nil - end - } - task = FileTask.define_task(task_name, {args => prereqs}, &block) - task.sources = prereqs - task - end - - # Make a list of sources from the list of file name extensions / - # translation procs. - def make_sources(task_name, extensions) - result = extensions.map { |ext| - case ext - when /%/ - task_name.pathmap(ext) - when %r{/} - ext - when /^\./ - task_name.ext(ext) - when String - ext - when Proc, Method - if ext.arity == 1 - ext.call(task_name) - else - ext.call - end - else - fail "Don't know how to handle rule dependent: #{ext.inspect}" - end - } - result.flatten - end - - # Return the current description, clearing it in the process. - def get_description(task) - desc = @last_description - @last_description = nil - desc - end - - class << self - attr_accessor :record_task_metadata # :nodoc: - TaskManager.record_task_metadata = false - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/tasklib.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/tasklib.rb deleted file mode 100644 index 6203d940..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/tasklib.rb +++ /dev/null @@ -1,24 +0,0 @@ -require 'rake' - -module Rake - - # Base class for Task Libraries. - class TaskLib - include Cloneable - include Rake::DSL - - # Make a symbol by pasting two strings together. - # - # NOTE: DEPRECATED! This method is kinda stupid. I don't know why - # I didn't just use string interpolation. But now other task - # libraries depend on this so I can't remove it without breaking - # other people's code. So for now it stays for backwards - # compatibility. BUT DON'T USE IT. - #-- - # TODO: Remove in Rake 11 - def paste(a, b) # :nodoc: - (a.to_s + b.to_s).intern - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/testtask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/testtask.rb deleted file mode 100644 index 5cae95c5..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/testtask.rb +++ /dev/null @@ -1,213 +0,0 @@ -require 'rake' -require 'rake/tasklib' - -module Rake - - # Create a task that runs a set of tests. - # - # Example: - # require "rake/testtask" - # - # Rake::TestTask.new do |t| - # t.libs << "test" - # t.test_files = FileList['test/test*.rb'] - # t.verbose = true - # end - # - # If rake is invoked with a "TEST=filename" command line option, - # then the list of test files will be overridden to include only the - # filename specified on the command line. This provides an easy way - # to run just one test. - # - # If rake is invoked with a "TESTOPTS=options" command line option, - # then the given options are passed to the test process after a - # '--'. This allows Test::Unit options to be passed to the test - # suite. - # - # Examples: - # - # rake test # run tests normally - # rake test TEST=just_one_file.rb # run just one test file. - # rake test TESTOPTS="-v" # run in verbose mode - # rake test TESTOPTS="--runner=fox" # use the fox test runner - # - class TestTask < TaskLib - - # Name of test task. (default is :test) - attr_accessor :name - - # List of directories added to $LOAD_PATH before running the - # tests. (default is 'lib') - attr_accessor :libs - - # True if verbose test output desired. (default is false) - attr_accessor :verbose - - # Test options passed to the test suite. An explicit - # TESTOPTS=opts on the command line will override this. (default - # is NONE) - attr_accessor :options - - # Request that the tests be run with the warning flag set. - # E.g. warning=true implies "ruby -w" used to run the tests. - attr_accessor :warning - - # Glob pattern to match test files. (default is 'test/test*.rb') - attr_accessor :pattern - - # Style of test loader to use. Options are: - # - # * :rake -- Rake provided test loading script (default). - # * :testrb -- Ruby provided test loading script. - # * :direct -- Load tests using command line loader. - # - attr_accessor :loader - - # Array of command line options to pass to ruby when running test loader. - attr_accessor :ruby_opts - - # Description of the test task. (default is 'Run tests') - attr_accessor :description - - # Explicitly define the list of test files to be included in a - # test. +list+ is expected to be an array of file names (a - # FileList is acceptable). If both +pattern+ and +test_files+ are - # used, then the list of test files is the union of the two. - def test_files=(list) - @test_files = list - end - - # Create a testing task. - def initialize(name=:test) - @name = name - @libs = ["lib"] - @pattern = nil - @options = nil - @test_files = nil - @verbose = false - @warning = false - @loader = :rake - @ruby_opts = [] - @description = "Run tests" + (@name == :test ? "" : " for #{@name}") - yield self if block_given? - @pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil? - define - end - - # Create the tasks defined by this task lib. - def define - desc @description - task @name do - FileUtilsExt.verbose(@verbose) do - args = - "#{ruby_opts_string} #{run_code} " + - "#{file_list_string} #{option_list}" - ruby args do |ok, status| - if !ok && status.respond_to?(:signaled?) && status.signaled? - raise SignalException.new(status.termsig) - elsif !ok - fail "Command failed with status (#{status.exitstatus}): " + - "[ruby #{args}]" - end - end - end - end - self - end - - def option_list # :nodoc: - (ENV['TESTOPTS'] || - ENV['TESTOPT'] || - ENV['TEST_OPTS'] || - ENV['TEST_OPT'] || - @options || - "") - end - - def ruby_opts_string # :nodoc: - opts = @ruby_opts.dup - opts.unshift("-I\"#{lib_path}\"") unless @libs.empty? - opts.unshift("-w") if @warning - opts.join(" ") - end - - def lib_path # :nodoc: - @libs.join(File::PATH_SEPARATOR) - end - - def file_list_string # :nodoc: - file_list.map { |fn| "\"#{fn}\"" }.join(' ') - end - - def file_list # :nodoc: - if ENV['TEST'] - FileList[ENV['TEST']] - else - result = [] - result += @test_files.to_a if @test_files - result << @pattern if @pattern - result - end - end - - def fix # :nodoc: - case ruby_version - when '1.8.2' - "\"#{find_file 'rake/ruby182_test_unit_fix'}\"" - else - nil - end || '' - end - - def ruby_version # :nodoc: - RUBY_VERSION - end - - def run_code # :nodoc: - case @loader - when :direct - "-e \"ARGV.each{|f| require f}\"" - when :testrb - "-S testrb #{fix}" - when :rake - "#{rake_include_arg} \"#{rake_loader}\"" - end - end - - def rake_loader # :nodoc: - find_file('rake/rake_test_loader') or - fail "unable to find rake test loader" - end - - def find_file(fn) # :nodoc: - $LOAD_PATH.each do |path| - file_path = File.join(path, "#{fn}.rb") - return file_path if File.exist? file_path - end - nil - end - - def rake_include_arg # :nodoc: - spec = Gem.loaded_specs['rake'] - if spec.respond_to?(:default_gem?) && spec.default_gem? - "" - else - "-I\"#{rake_lib_dir}\"" - end - end - - def rake_lib_dir # :nodoc: - find_dir('rake') or - fail "unable to find rake lib" - end - - def find_dir(fn) # :nodoc: - $LOAD_PATH.each do |path| - file_path = File.join(path, "#{fn}.rb") - return path if File.exist? file_path - end - nil - end - - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/version.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/version.rb deleted file mode 100644 index b9b1b2d4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/version.rb +++ /dev/null @@ -1,7 +0,0 @@ -module Rake - module Version # :nodoc: all - MAJOR, MINOR, BUILD, *OTHER = Rake::VERSION.split '.' - - NUMBERS = [MAJOR, MINOR, BUILD, *OTHER] - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/win32.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/win32.rb deleted file mode 100644 index 6b4873da..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/win32.rb +++ /dev/null @@ -1,56 +0,0 @@ - -module Rake - require 'rake/alt_system' - - # Win 32 interface methods for Rake. Windows specific functionality - # will be placed here to collect that knowledge in one spot. - module Win32 # :nodoc: all - - # Error indicating a problem in locating the home directory on a - # Win32 system. - class Win32HomeError < RuntimeError - end - - class << self - # True if running on a windows system. - def windows? - AltSystem::WINDOWS - end - - # Run a command line on windows. - def rake_system(*cmd) - AltSystem.system(*cmd) - end - - # The standard directory containing system wide rake files on - # Win 32 systems. Try the following environment variables (in - # order): - # - # * HOME - # * HOMEDRIVE + HOMEPATH - # * APPDATA - # * USERPROFILE - # - # If the above are not defined, the return nil. - def win32_system_dir #:nodoc: - win32_shared_path = ENV['HOME'] - if win32_shared_path.nil? && ENV['HOMEDRIVE'] && ENV['HOMEPATH'] - win32_shared_path = ENV['HOMEDRIVE'] + ENV['HOMEPATH'] - end - - win32_shared_path ||= ENV['APPDATA'] - win32_shared_path ||= ENV['USERPROFILE'] - raise Win32HomeError, - "Unable to determine home path environment variable." if - win32_shared_path.nil? or win32_shared_path.empty? - normalize(File.join(win32_shared_path, 'Rake')) - end - - # Normalize a win32 path so that the slashes are all forward slashes. - def normalize(path) - path.gsub(/\\/, '/') - end - - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/rakelib/publish.rake b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/rakelib/publish.rake deleted file mode 100644 index 40474aba..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/rakelib/publish.rake +++ /dev/null @@ -1,20 +0,0 @@ -# Optional publish task for Rake - -begin - require 'rake/contrib/sshpublisher' - require 'rake/contrib/rubyforgepublisher' - - publisher = Rake::SshDirPublisher.new( - 'linode', - 'htdocs/software/rake', - 'html') - - desc "Publish the Documentation to RubyForge." - task :publish => [:rdoc] do - publisher.upload - end - -rescue LoadError => ex - puts "#{ex.message} (#{ex.class})" - puts "No Publisher Task Available" -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/rakelib/test_times.rake b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/rakelib/test_times.rake deleted file mode 100644 index daf1bc6e..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/rakelib/test_times.rake +++ /dev/null @@ -1,25 +0,0 @@ -module TestTimes - def self.run(test_results, limit=0) - limit = limit.nonzero? || 10 - tests = [] - test_results.split(/\n/).each do |line| - if line =~ /^(.+?#[^:]+): ([0-9.]+) s: \.$/ - tests << [$1, $2.to_f, line] - end - end - - puts "#{limit} Slowest tests" - puts tests.sort_by { |item| - item[1] - }.reverse[0...limit].map { |item| - "%6.3f: %-s\n" % [item[1], item[0]] - } - end -end - -namespace :test do - desc "Find the slowest unit tests" - task :times, [:limit] do |t, args| - TestTimes.run `rake test:units TESTOPTS='--verbose'`, args.limit.to_i - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/file_creation.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/file_creation.rb deleted file mode 100644 index facc57a0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/file_creation.rb +++ /dev/null @@ -1,34 +0,0 @@ -module FileCreation - OLDFILE = "old" - NEWFILE = "new" - - def create_timed_files(oldfile, *newfiles) - return if (File.exist?(oldfile) && - newfiles.all? { |newfile| - File.exist?(newfile) && File.stat(newfile).mtime > File.stat(oldfile).mtime - }) - now = Time.now - - create_file(oldfile, now - 60) - - newfiles.each do |newfile| - create_file(newfile, now) - end - end - - def create_dir(dirname) - FileUtils.mkdir_p(dirname) unless File.exist?(dirname) - File.stat(dirname).mtime - end - - def create_file(name, file_time=nil) - create_dir(File.dirname(name)) - FileUtils.touch(name) unless File.exist?(name) - File.utime(file_time, file_time, name) unless file_time.nil? - File.stat(name).mtime - end - - def delete_file(name) - File.delete(name) rescue nil - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/helper.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/helper.rb deleted file mode 100644 index ac1205a6..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/helper.rb +++ /dev/null @@ -1,129 +0,0 @@ -require 'rubygems' -$:.unshift File.expand_path('../../lib', __FILE__) - -begin - gem 'minitest', '~> 5' -rescue Gem::LoadError -end - -require 'minitest/autorun' -require 'rake' -require 'tmpdir' -require File.expand_path('../file_creation', __FILE__) - - -begin - require_relative 'support/ruby_runner' - require_relative 'support/rakefile_definitions' -rescue NoMethodError, LoadError - # ruby 1.8 - require 'test/support/ruby_runner' - require 'test/support/rakefile_definitions' -end - -class Rake::TestCase < Minitest::Test - include FileCreation - - include Rake::DSL - - class TaskManager - include Rake::TaskManager - end - - RUBY = defined?(EnvUtil) ? EnvUtil.rubybin : Gem.ruby - - def setup - ARGV.clear - - test_dir = File.basename File.dirname File.expand_path __FILE__ - - @rake_root = - if test_dir == 'test' - # rake repository - File.expand_path '../../', __FILE__ - else - # ruby repository - File.expand_path '../../../', __FILE__ - end - - @verbose = ENV['VERBOSE'] - - @rake_exec = File.join @rake_root, 'bin', 'rake' - @rake_lib = File.join @rake_root, 'lib' - @ruby_options = ["-I#{@rake_lib}", "-I."] - - @orig_pwd = Dir.pwd - @orig_appdata = ENV['APPDATA'] - @orig_home = ENV['HOME'] - @orig_homedrive = ENV['HOMEDRIVE'] - @orig_homepath = ENV['HOMEPATH'] - @orig_rake_columns = ENV['RAKE_COLUMNS'] - @orig_rake_system = ENV['RAKE_SYSTEM'] - @orig_rakeopt = ENV['RAKEOPT'] - @orig_userprofile = ENV['USERPROFILE'] - ENV.delete 'RAKE_COLUMNS' - ENV.delete 'RAKE_SYSTEM' - ENV.delete 'RAKEOPT' - - tmpdir = Dir.chdir Dir.tmpdir do Dir.pwd end - @tempdir = File.join tmpdir, "test_rake_#{$$}" - - FileUtils.mkdir_p @tempdir - - Dir.chdir @tempdir - - Rake.application = Rake::Application.new - Rake::TaskManager.record_task_metadata = true - RakeFileUtils.verbose_flag = false - end - - def teardown - Dir.chdir @orig_pwd - FileUtils.rm_rf @tempdir - - if @orig_appdata - ENV['APPDATA'] = @orig_appdata - else - ENV.delete 'APPDATA' - end - - ENV['HOME'] = @orig_home - ENV['HOMEDRIVE'] = @orig_homedrive - ENV['HOMEPATH'] = @orig_homepath - ENV['RAKE_COLUMNS'] = @orig_rake_columns - ENV['RAKE_SYSTEM'] = @orig_rake_system - ENV['RAKEOPT'] = @orig_rakeopt - ENV['USERPROFILE'] = @orig_userprofile - end - - def ignore_deprecations - Rake.application.options.ignore_deprecate = true - yield - ensure - Rake.application.options.ignore_deprecate = false - end - - def rake_system_dir - @system_dir = 'system' - - FileUtils.mkdir_p @system_dir - - open File.join(@system_dir, 'sys1.rake'), 'w' do |io| - io << <<-SYS -task "sys1" do - puts "SYS1" -end - SYS - end - - ENV['RAKE_SYSTEM'] = @system_dir - end - - def rakefile(contents) - open 'Rakefile', 'w' do |io| - io << contents - end - end - - include RakefileDefinitions -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/support/rakefile_definitions.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/support/rakefile_definitions.rb deleted file mode 100644 index a637c7e9..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/support/rakefile_definitions.rb +++ /dev/null @@ -1,478 +0,0 @@ -module RakefileDefinitions - include FileUtils - - def rakefile_access - rakefile <<-ACCESS -TOP_LEVEL_CONSTANT = 0 - -def a_top_level_function -end - -task :default => [:work, :obj, :const] - -task :work do - begin - a_top_level_function - puts "GOOD:M Top level methods can be called in tasks" - rescue NameError => ex - puts "BAD:M Top level methods can not be called in tasks" - end -end - -# TODO: remove `disabled_' when DeprecatedObjectDSL removed -task :obj -task :disabled_obj do - begin - Object.new.instance_eval { task :xyzzy } - puts "BAD:D Rake DSL are polluting objects" - rescue StandardError => ex - puts "GOOD:D Rake DSL are not polluting objects" - end -end - -task :const do - begin - TOP_LEVEL_CONSTANT - puts "GOOD:C Top level constants are available in tasks" - rescue StandardError => ex - puts "BAD:C Top level constants are NOT available in tasks" - end -end - ACCESS - end - - def rakefile_test_task - rakefile <<-RAKEFILE - require "rake/testtask" - - Rake::TestTask.new(:unit) do |t| - t.description = "custom test task description" - end - RAKEFILE - end - - def rakefile_chains - rakefile <<-DEFAULT -task :default => "play.app" - -file "play.scpt" => "base" do |t| - cp t.prerequisites.first, t.name -end - -rule ".app" => ".scpt" do |t| - cp t.source, t.name -end - -file 'base' do - touch 'base' -end - DEFAULT - end - - def rakefile_comments - rakefile <<-COMMENTS -# comment for t1 -task :t1 do -end - -# no comment or task because there's a blank line - -task :t2 do -end - -desc "override comment for t3" -# this is not the description -multitask :t3 do -end - -# this is not the description -desc "override comment for t4" -file :t4 do -end - COMMENTS - end - - def rakefile_default - rakefile <<-DEFAULT -if ENV['TESTTOPSCOPE'] - puts "TOPSCOPE" -end - -task :default do - puts "DEFAULT" -end - -task :other => [:default] do - puts "OTHER" -end - -task :task_scope do - if ENV['TESTTASKSCOPE'] - puts "TASKSCOPE" - end -end - DEFAULT - end - - def rakefile_dryrun - rakefile <<-DRYRUN -task :default => ["temp_main"] - -file "temp_main" => [:all_apps] do touch "temp_main" end - -task :all_apps => [:one, :two] -task :one => ["temp_one"] -task :two => ["temp_two"] - -file "temp_one" do |t| - touch "temp_one" -end -file "temp_two" do |t| - touch "temp_two" -end - -task :clean do - ["temp_one", "temp_two", "temp_main"].each do |file| - rm_f file - end -end - DRYRUN - - FileUtils.touch 'temp_main' - FileUtils.touch 'temp_two' - end - - def rakefile_extra - rakefile 'task :default' - - FileUtils.mkdir_p 'rakelib' - - open File.join('rakelib', 'extra.rake'), 'w' do |io| - io << <<-EXTRA_RAKE -# Added for testing - -namespace :extra do - desc "An Extra Task" - task :extra do - puts "Read all about it" - end -end - EXTRA_RAKE - end - end - - def rakefile_file_creation - rakefile <<-'FILE_CREATION' -N = 2 - -task :default => :run - -BUILD_DIR = 'build' -task :clean do - rm_rf 'build' - rm_rf 'src' -end - -task :run - -TARGET_DIR = 'build/copies' - -FileList['src/*'].each do |src| - directory TARGET_DIR - target = File.join TARGET_DIR, File.basename(src) - file target => [src, TARGET_DIR] do - cp src, target - end - task :run => target -end - -task :prep => :clean do - mkdir_p 'src' - N.times do |n| - touch "src/foo#{n}" - end -end - FILE_CREATION - end - - def rakefile_imports - rakefile <<-IMPORTS -require 'rake/loaders/makefile' - -task :default - -task :other do - puts "OTHER" -end - -file "dynamic_deps" do |t| - open(t.name, "w") do |f| f.puts "puts 'DYNAMIC'" end -end - -import "dynamic_deps" -import "static_deps" -import "static_deps" -import "deps.mf" -puts "FIRST" - IMPORTS - - open 'deps.mf', 'w' do |io| - io << <<-DEPS -default: other - DEPS - end - - open "static_deps", "w" do |f| - f.puts 'puts "STATIC"' - end - end - - def rakefile_regenerate_imports - rakefile <<-REGENERATE_IMPORTS -task :default - -task :regenerate do - open("deps", "w") do |f| - f << <<-CONTENT -file "deps" => :regenerate -puts "REGENERATED" - CONTENT - end -end - -import "deps" - REGENERATE_IMPORTS - - open "deps", "w" do |f| - f << <<-CONTENT -file "deps" => :regenerate -puts "INITIAL" - CONTENT - end - end - - def rakefile_multidesc - rakefile <<-MULTIDESC -task :b - -desc "A" -task :a - -desc "B" -task :b - -desc "A2" -task :a - -task :c - -desc "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -task :d - MULTIDESC - end - - def rakefile_namespace - rakefile <<-NAMESPACE -desc "copy" -task :copy do - puts "COPY" -end - -namespace "nest" do - desc "nest copy" - task :copy do - puts "NEST COPY" - end - task :xx => :copy -end - -anon_ns = namespace do - desc "anonymous copy task" - task :copy do - puts "ANON COPY" - end -end - -desc "Top level task to run the anonymous version of copy" -task :anon => anon_ns[:copy] - -namespace "very" do - namespace "nested" do - task "run" => "rake:copy" - end -end - -namespace "a" do - desc "Run task in the 'a' namespace" - task "run" do - puts "IN A" - end -end - -namespace "b" do - desc "Run task in the 'b' namespace" - task "run" => "a:run" do - puts "IN B" - end -end - -namespace "file1" do - file "xyz.rb" do - puts "XYZ1" - end -end - -namespace "file2" do - file "xyz.rb" do - puts "XYZ2" - end -end - -namespace "scopedep" do - task :prepare do - touch "scopedep.rb" - puts "PREPARE" - end - file "scopedep.rb" => [:prepare] do - puts "SCOPEDEP" - end -end - NAMESPACE - end - - def rakefile_nosearch - FileUtils.touch 'dummy' - end - - def rakefile_rakelib - FileUtils.mkdir_p 'rakelib' - - Dir.chdir 'rakelib' do - open 'test1.rb', 'w' do |io| - io << <<-TEST1 -task :default do - puts "TEST1" -end - TEST1 - end - - open 'test2.rake', 'w' do |io| - io << <<-TEST1 -task :default do - puts "TEST2" -end - TEST1 - end - end - end - - def rakefile_rbext - open 'rakefile.rb', 'w' do |io| - io << 'task :default do puts "OK" end' - end - end - - def rakefile_unittest - rakefile '# Empty Rakefile for Unit Test' - - readme = File.join 'subdir', 'README' - FileUtils.mkdir_p File.dirname readme - - FileUtils.touch readme - end - - def rakefile_verbose - rakefile <<-VERBOSE -task :standalone_verbose_true do - verbose true - sh "#{RUBY} -e '0'" -end - -task :standalone_verbose_false do - verbose false - sh "#{RUBY} -e '0'" -end - -task :inline_verbose_default do - sh "#{RUBY} -e '0'" -end - -task :inline_verbose_false do - sh "#{RUBY} -e '0'", :verbose => false -end - -task :inline_verbose_true do - sh "#{RUBY} -e '0'", :verbose => true -end - -task :block_verbose_true do - verbose(true) do - sh "#{RUBY} -e '0'" - end -end - -task :block_verbose_false do - verbose(false) do - sh "#{RUBY} -e '0'" - end -end - VERBOSE - end - - def rakefile_test_signal - rakefile <<-TEST_SIGNAL -require 'rake/testtask' - -Rake::TestTask.new(:a) do |t| - t.test_files = ['a_test.rb'] -end - -Rake::TestTask.new(:b) do |t| - t.test_files = ['b_test.rb'] -end - -task :test do - Rake::Task[:a].invoke - Rake::Task[:b].invoke -end - -task :default => :test - TEST_SIGNAL - open 'a_test.rb', 'w' do |io| - io << 'puts "ATEST"' << "\n" - io << '$stdout.flush' << "\n" - io << 'Process.kill("TERM", $$)' << "\n" - end - open 'b_test.rb', 'w' do |io| - io << 'puts "BTEST"' << "\n" - io << '$stdout.flush' << "\n" - end - end - - def rakefile_failing_test_task - rakefile <<-TEST_TASK -require 'rake/testtask' - -task :default => :test -Rake::TestTask.new(:test) do |t| - t.test_files = ['a_test.rb'] -end - TEST_TASK - open 'a_test.rb', 'w' do |io| - io << "require 'minitest/autorun'\n" - io << "class ExitTaskTest < Minitest::Test\n" - io << " def test_exit\n" - io << " assert false, 'this should fail'\n" - io << " end\n" - io << "end\n" - end - end - - def rakefile_stand_alone_filelist - open 'stand_alone_filelist.rb', 'w' do |io| - io << "require 'rake/file_list'\n" - io << "FL = Rake::FileList['*.rb']\n" - io << "puts FL\n" - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/support/ruby_runner.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/support/ruby_runner.rb deleted file mode 100644 index d51dd24b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/support/ruby_runner.rb +++ /dev/null @@ -1,34 +0,0 @@ -module RubyRunner - include FileUtils - - # Run a shell Ruby command with command line options (using the - # default test options). Output is captured in @out and @err - def ruby(*option_list) - run_ruby(@ruby_options + option_list) - end - - # Run a command line rake with the give rake options. Default - # command line ruby options are included. Output is captured in - # @out and @err - def rake(*rake_options) - run_ruby @ruby_options + [@rake_exec] + rake_options - end - - # Low level ruby command runner ... - def run_ruby(option_list) - puts "COMMAND: [#{RUBY} #{option_list.join ' '}]" if @verbose - - Open3.popen3(RUBY, *option_list) {|inn, out, err, wait| - inn.close - - @exit = wait ? wait.value : $? - @out = out.read - @err = err.read - } - - puts "OUTPUT: [#{@out}]" if @verbose - puts "ERROR: [#{@err}]" if @verbose - puts "EXIT: [#{@exit.inspect}]" if @verbose - puts "PWD: [#{Dir.pwd}]" if @verbose - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_private_reader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_private_reader.rb deleted file mode 100644 index f86d4249..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_private_reader.rb +++ /dev/null @@ -1,42 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/private_reader' - -class TestPrivateAttrs < Rake::TestCase - - class Sample - include Rake::PrivateReader - - private_reader :reader, :a - - def initialize - @reader = :RVALUE - end - - def get_reader - reader - end - - end - - def setup - super - @sample = Sample.new - end - - def test_private_reader_is_private - assert_private do @sample.reader end - assert_private do @sample.a end - end - - def test_private_reader_returns_data - assert_equal :RVALUE, @sample.get_reader - end - - private - - def assert_private - ex = assert_raises(NoMethodError) do yield end - assert_match(/private/, ex.message) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake.rb deleted file mode 100644 index b2a3928b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake.rb +++ /dev/null @@ -1,40 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRake < Rake::TestCase - def test_each_dir_parent - assert_equal ['a'], alldirs('a') - assert_equal ['a/b', 'a'], alldirs('a/b') - assert_equal ['/a/b', '/a', '/'], alldirs('/a/b') - if File.dirname("c:/foo") == "c:" - # Under Unix - assert_equal ['c:/a/b', 'c:/a', 'c:'], alldirs('c:/a/b') - assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b') - else - # Under Windows - assert_equal ['c:/a/b', 'c:/a', 'c:/'], alldirs('c:/a/b') - assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b') - end - end - - def alldirs(fn) - result = [] - Rake.each_dir_parent(fn) { |d| result << d } - result - end - - def test_can_override_application - old_app = Rake.application - fake_app = Object.new - Rake.application = fake_app - - assert_equal fake_app, Rake.application - - ensure - Rake.application = old_app - end - - def test_original_dir_reports_current_dir - assert_equal @tempdir, Rake.original_dir - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_application.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_application.rb deleted file mode 100644 index c0108891..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_application.rb +++ /dev/null @@ -1,643 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeApplication < Rake::TestCase - - def setup - super - - @app = Rake.application - @app.options.rakelib = [] - end - - def setup_command_line(*options) - ARGV.clear - options.each do |option| - ARGV << option - end - end - - def test_display_exception_details - obj = Object.new - obj.instance_eval("def #{__method__}; raise 'test'; end", "ruby") - begin - obj.__send__(__method__) - rescue => ex - end - - out, err = capture_io do - @app.display_error_message ex - end - - assert_empty out - - assert_match 'rake aborted!', err - assert_match __method__.to_s, err - end - - def test_display_exception_details_cause - skip 'Exception#cause not implemented' unless - Exception.method_defined? :cause - - begin - raise 'cause a' - rescue - begin - raise 'cause b' - rescue => ex - end - end - - out, err = capture_io do - @app.display_error_message ex - end - - assert_empty out - - assert_match 'cause a', err - assert_match 'cause b', err - end - - def test_display_exception_details_cause_loop - skip 'Exception#cause not implemented' unless - Exception.method_defined? :cause - - begin - begin - raise 'cause a' - rescue => a - begin - raise 'cause b' - rescue - raise a - end - end - rescue => ex - end - - out, err = capture_io do - @app.display_error_message ex - end - - assert_empty out - - assert_match 'cause a', err - assert_match 'cause b', err - end - - def test_display_tasks - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# COMMENT/, out) - end - - def test_display_tasks_with_long_comments - @app.terminal_columns = 80 - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - numbers = "1234567890" * 8 - @app.last_description = numbers - @app.define_task(Rake::Task, "t") - - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - - assert_match(/^rake t/, out) - assert_match(/# #{numbers[0, 65]}\.\.\./, out) - end - - def test_display_tasks_with_task_name_wider_than_tty_display - @app.terminal_columns = 80 - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - task_name = "task name" * 80 - @app.last_description = "something short" - @app.define_task(Rake::Task, task_name) - - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - - # Ensure the entire task name is output and we end up showing no description - assert_match(/rake #{task_name} # .../, out) - end - - def test_display_tasks_with_very_long_task_name_to_a_non_tty_shows_name_and_comment - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - @app.tty_output = false - description = "something short" - task_name = "task name" * 80 - @app.last_description = "something short" - @app.define_task(Rake::Task, task_name) - - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - - # Ensure the entire task name is output and we end up showing no description - assert_match(/rake #{task_name} # #{description}/, out) - end - - def test_display_tasks_with_long_comments_to_a_non_tty_shows_entire_comment - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - @app.tty_output = false - @app.last_description = "1234567890" * 8 - @app.define_task(Rake::Task, "t") - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# #{@app.last_description}/, out) - end - - def test_truncating_comments_to_a_non_tty - @app.terminal_columns = 80 - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - @app.tty_output = false - numbers = "1234567890" * 8 - @app.last_description = numbers - @app.define_task(Rake::Task, "t") - - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - - assert_match(/^rake t/, out) - assert_match(/# #{numbers[0, 65]}\.\.\./, out) - end - - def test_describe_tasks - @app.options.show_tasks = :describe - @app.options.show_task_pattern = // - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t$/, out) - assert_match(/^ {4}COMMENT$/, out) - end - - def test_show_lines - @app.options.show_tasks = :lines - @app.options.show_task_pattern = // - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - @app['t'].locations << "HERE:1" - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t +[^:]+:\d+ *$/, out) - end - - def test_finding_rakefile - rakefile_default - - assert_match(/Rakefile/i, @app.instance_eval { have_rakefile }) - end - - def test_not_finding_rakefile - @app.instance_eval { @rakefiles = ['NEVER_FOUND'] } - assert(! @app.instance_eval do have_rakefile end) - assert_nil @app.rakefile - end - - def test_load_rakefile - rakefile_unittest - - @app.instance_eval do - handle_options - options.silent = true - load_rakefile - end - - assert_equal "rakefile", @app.rakefile.downcase - assert_equal @tempdir, Dir.pwd - end - - def test_load_rakefile_doesnt_print_rakefile_directory_from_same_dir - rakefile_unittest - - _, err = capture_io do - @app.instance_eval do - # pretend we started from the unittest dir - @original_dir = File.expand_path(".") - raw_load_rakefile - end - end - - assert_empty err - end - - def test_load_rakefile_from_subdir - rakefile_unittest - Dir.chdir 'subdir' - - @app.instance_eval do - handle_options - options.silent = true - load_rakefile - end - - assert_equal "rakefile", @app.rakefile.downcase - assert_equal @tempdir, Dir.pwd - end - - def test_load_rakefile_prints_rakefile_directory_from_subdir - rakefile_unittest - Dir.chdir 'subdir' - - app = Rake::Application.new - app.options.rakelib = [] - - _, err = capture_io do - app.instance_eval do - raw_load_rakefile - end - end - - assert_equal "(in #{@tempdir}\)\n", err - end - - def test_load_rakefile_doesnt_print_rakefile_directory_from_subdir_if_silent - rakefile_unittest - Dir.chdir 'subdir' - - _, err = capture_io do - @app.instance_eval do - handle_options - options.silent = true - raw_load_rakefile - end - end - - assert_empty err - end - - def test_load_rakefile_not_found - ARGV.clear - Dir.chdir @tempdir - ENV['RAKE_SYSTEM'] = 'not_exist' - - @app.instance_eval do - handle_options - options.silent = true - end - - - ex = assert_raises(RuntimeError) do - @app.instance_eval do - raw_load_rakefile - end - end - - assert_match(/no rakefile found/i, ex.message) - end - - def test_load_from_system_rakefile - rake_system_dir - - @app.instance_eval do - handle_options - options.silent = true - options.load_system = true - options.rakelib = [] - load_rakefile - end - - assert_equal @system_dir, @app.system_dir - assert_nil @app.rakefile - rescue SystemExit - flunk 'failed to load rakefile' - end - - def test_load_from_calculated_system_rakefile - rakefile_default - def @app.standard_system_dir - "__STD_SYS_DIR__" - end - - ENV['RAKE_SYSTEM'] = nil - - @app.instance_eval do - handle_options - options.silent = true - options.load_system = true - options.rakelib = [] - load_rakefile - end - - assert_equal "__STD_SYS_DIR__", @app.system_dir - rescue SystemExit - flunk 'failed to find system rakefile' - end - - def test_terminal_columns - old_rake_columns = ENV['RAKE_COLUMNS'] - - ENV['RAKE_COLUMNS'] = '42' - - app = Rake::Application.new - - assert_equal 42, app.terminal_columns - ensure - if old_rake_columns - ENV['RAKE_COLUMNS'].delete - else - ENV['RAKE_COLUMNS'] = old_rake_columns - end - end - - def test_windows - assert ! (@app.windows? && @app.unix?) - end - - def test_loading_imports - loader = util_loader - - @app.instance_eval do - add_loader("dummy", loader) - add_import("x.dummy") - load_imports - end - - # HACK no assertions - end - - def test_building_imported_files_on_demand - loader = util_loader - - @app.instance_eval do - intern(Rake::Task, "x.dummy").enhance do loader.make_dummy end - add_loader("dummy", loader) - add_import("x.dummy") - load_imports - end - - # HACK no assertions - end - - def test_handle_options_should_not_strip_options_from_argv - assert !@app.options.trace - - valid_option = '--trace' - setup_command_line(valid_option) - - @app.handle_options - - assert ARGV.include?(valid_option) - assert @app.options.trace - end - - def test_handle_options_trace_default_is_stderr - setup_command_line("--trace") - - @app.handle_options - - assert_equal STDERR, @app.options.trace_output - assert @app.options.trace - end - - def test_handle_options_trace_overrides_to_stdout - setup_command_line("--trace=stdout") - - @app.handle_options - - assert_equal STDOUT, @app.options.trace_output - assert @app.options.trace - end - - def test_handle_options_trace_does_not_eat_following_task_names - assert !@app.options.trace - - setup_command_line("--trace", "sometask") - - @app.handle_options - assert ARGV.include?("sometask") - assert @app.options.trace - end - - def test_good_run - ran = false - - ARGV << '--rakelib=""' - - @app.options.silent = true - - @app.instance_eval do - intern(Rake::Task, "default").enhance { ran = true } - end - - rakefile_default - - out, err = capture_io do - @app.run - end - - assert ran - assert_empty err - assert_equal "DEFAULT\n", out - end - - def test_display_task_run - ran = false - setup_command_line('-f', '-s', '--tasks', '--rakelib=""') - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "default") - out, = capture_io { @app.run } - assert @app.options.show_tasks - assert ! ran - assert_match(/rake default/, out) - assert_match(/# COMMENT/, out) - end - - def test_display_prereqs - ran = false - setup_command_line('-f', '-s', '--prereqs', '--rakelib=""') - @app.last_description = "COMMENT" - t = @app.define_task(Rake::Task, "default") - t.enhance([:a, :b]) - @app.define_task(Rake::Task, "a") - @app.define_task(Rake::Task, "b") - out, = capture_io { @app.run } - assert @app.options.show_prereqs - assert ! ran - assert_match(/rake a$/, out) - assert_match(/rake b$/, out) - assert_match(/rake default\n( *(a|b)\n){2}/m, out) - end - - def test_bad_run - @app.intern(Rake::Task, "default").enhance { fail } - setup_command_line('-f', '-s', '--rakelib=""') - _, err = capture_io { - assert_raises(SystemExit){ @app.run } - } - assert_match(/see full trace/i, err) - ensure - ARGV.clear - end - - def test_bad_run_with_trace - @app.intern(Rake::Task, "default").enhance { fail } - setup_command_line('-f', '-s', '-t') - _, err = capture_io { - assert_raises(SystemExit) { @app.run } - } - refute_match(/see full trace/i, err) - ensure - ARGV.clear - end - - def test_bad_run_with_backtrace - @app.intern(Rake::Task, "default").enhance { fail } - setup_command_line('-f', '-s', '--backtrace') - _, err = capture_io { - assert_raises(SystemExit) { - @app.run - } - } - refute_match(/see full trace/, err) - ensure - ARGV.clear - end - - CustomError = Class.new(RuntimeError) - - def test_bad_run_includes_exception_name - @app.intern(Rake::Task, "default").enhance { - raise CustomError, "intentional" - } - setup_command_line('-f', '-s') - _, err = capture_io { - assert_raises(SystemExit) { - @app.run - } - } - assert_match(/CustomError: intentional/, err) - end - - def test_rake_error_excludes_exception_name - @app.intern(Rake::Task, "default").enhance { - fail "intentional" - } - setup_command_line('-f', '-s') - _, err = capture_io { - assert_raises(SystemExit) { - @app.run - } - } - refute_match(/RuntimeError/, err) - assert_match(/intentional/, err) - end - - def cause_supported? - ex = StandardError.new - ex.respond_to?(:cause) - end - - def test_printing_original_exception_cause - custom_error = Class.new(StandardError) - @app.intern(Rake::Task, "default").enhance { - begin - raise custom_error, "Original Error" - rescue custom_error - raise custom_error, "Secondary Error" - end - } - setup_command_line('-f', '-s') - _ ,err = capture_io { - assert_raises(SystemExit) { - @app.run - } - } - if cause_supported? - assert_match(/Original Error/, err) - end - assert_match(/Secondary Error/, err) - ensure - ARGV.clear - end - - def test_run_with_bad_options - @app.intern(Rake::Task, "default").enhance { fail } - setup_command_line('-f', '-s', '--xyzzy') - assert_raises(SystemExit) { - capture_io { @app.run } - } - ensure - ARGV.clear - end - - def test_standard_exception_handling_invalid_option - out, err = capture_io do - e = assert_raises SystemExit do - @app.standard_exception_handling do - raise OptionParser::InvalidOption, 'blah' - end - end - - assert_equal 1, e.status - end - - assert_empty out - assert_equal "invalid option: blah\n", err - end - - def test_standard_exception_handling_other - out, err = capture_io do - e = assert_raises SystemExit do - @app.standard_exception_handling do - raise 'blah' - end - end - - assert_equal 1, e.status - end - - assert_empty out - assert_match "rake aborted!\n", err - assert_match "blah\n", err - end - - def test_standard_exception_handling_system_exit - out, err = capture_io do - e = assert_raises SystemExit do - @app.standard_exception_handling do - exit 0 - end - end - - assert_equal 0, e.status - end - - assert_empty out - assert_empty err - end - - def test_standard_exception_handling_system_exit_nonzero - out, err = capture_io do - e = assert_raises SystemExit do - @app.standard_exception_handling do - exit 5 - end - end - - assert_equal 5, e.status - end - - assert_empty out - assert_empty err - end - - def util_loader - loader = Object.new - - loader.instance_variable_set :@load_called, false - def loader.load arg - raise ArgumentError, arg unless arg == 'x.dummy' - @load_called = true - end - - loader.instance_variable_set :@make_dummy_called, false - def loader.make_dummy - @make_dummy_called = true - end - - loader - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_application_options.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_application_options.rb deleted file mode 100644 index 25030268..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_application_options.rb +++ /dev/null @@ -1,468 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -TESTING_REQUIRE = [] - -class TestRakeApplicationOptions < Rake::TestCase - - def setup - super - - @testkey = ENV['TESTKEY'] - clear_argv - Rake::FileUtilsExt.verbose_flag = false - Rake::FileUtilsExt.nowrite_flag = false - TESTING_REQUIRE.clear - end - - def teardown - ENV['TESTKEY'] = @testkey - clear_argv - Rake::FileUtilsExt.verbose_flag = false - Rake::FileUtilsExt.nowrite_flag = false - - super - end - - def clear_argv - ARGV.pop until ARGV.empty? - end - - def test_default_options - opts = command_line - assert_nil opts.backtrace - assert_nil opts.dryrun - assert_nil opts.ignore_system - assert_nil opts.load_system - assert_nil opts.always_multitask - assert_nil opts.nosearch - assert_equal ['rakelib'], opts.rakelib - assert_nil opts.show_prereqs - assert_nil opts.show_task_pattern - assert_nil opts.show_tasks - assert_nil opts.silent - assert_nil opts.trace - assert_nil opts.thread_pool_size - assert_equal ['rakelib'], opts.rakelib - assert ! Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - - def test_dry_run - flags('--dry-run', '-n') do |opts| - assert opts.dryrun - assert opts.trace - assert Rake::FileUtilsExt.verbose_flag - assert Rake::FileUtilsExt.nowrite_flag - end - end - - def test_describe - flags('--describe') do |opts| - assert_equal :describe, opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - end - end - - def test_describe_with_pattern - flags('--describe=X') do |opts| - assert_equal :describe, opts.show_tasks - assert_equal(/X/.to_s, opts.show_task_pattern.to_s) - end - end - - def test_execute - $xyzzy = 0 - flags('--execute=$xyzzy=1', '-e $xyzzy=1') do |opts| - assert_equal 1, $xyzzy - assert_equal :exit, @exit - $xyzzy = 0 - end - end - - def test_execute_and_continue - $xyzzy = 0 - flags('--execute-continue=$xyzzy=1', '-E $xyzzy=1') do |opts| - assert_equal 1, $xyzzy - refute_equal :exit, @exit - $xyzzy = 0 - end - end - - def test_execute_and_print - $xyzzy = 0 - out, = capture_io do - flags('--execute-print=$xyzzy="pugh"', '-p $xyzzy="pugh"') do |opts| - assert_equal 'pugh', $xyzzy - assert_equal :exit, @exit - $xyzzy = 0 - end - end - - assert_match(/^pugh$/, out) - end - - def test_help - out, = capture_io do - flags '--help', '-H', '-h' - end - - assert_match(/\Arake/, out) - assert_match(/\boptions\b/, out) - assert_match(/\btargets\b/, out) - assert_equal :exit, @exit - end - - def test_jobs - flags([]) do |opts| - assert_nil opts.thread_pool_size - end - flags(['--jobs', '0'], ['-j', '0']) do |opts| - assert_equal 0, opts.thread_pool_size - end - flags(['--jobs', '1'], ['-j', '1']) do |opts| - assert_equal 0, opts.thread_pool_size - end - flags(['--jobs', '4'], ['-j', '4']) do |opts| - assert_equal 3, opts.thread_pool_size - end - flags(['--jobs', 'asdas'], ['-j', 'asdas']) do |opts| - assert_equal Rake.suggested_thread_count-1, opts.thread_pool_size - end - flags('--jobs', '-j') do |opts| - assert opts.thread_pool_size > 1_000_000, "thread pool size should be huge (was #{opts.thread_pool_size})" - end - end - - def test_libdir - flags(['--libdir', 'xx'], ['-I', 'xx'], ['-Ixx']) do |opts| - $:.include?('xx') - end - ensure - $:.delete('xx') - end - - def test_multitask - flags('--multitask', '-m') do |opts| - assert_equal opts.always_multitask, true - end - end - - def test_rakefile - flags(['--rakefile', 'RF'], ['--rakefile=RF'], ['-f', 'RF'], ['-fRF']) do |opts| - assert_equal ['RF'], @app.instance_eval { @rakefiles } - end - end - - def test_rakelib - dirs = %w(A B C).join(File::PATH_SEPARATOR) - flags( - ['--rakelibdir', dirs], - ["--rakelibdir=#{dirs}"], - ['-R', dirs], - ["-R#{dirs}"]) do |opts| - assert_equal ['A', 'B', 'C'], opts.rakelib - end - end - - def test_require - $LOAD_PATH.unshift @tempdir - - open 'reqfile.rb', 'w' do |io| io << 'TESTING_REQUIRE << 1' end - open 'reqfile2.rb', 'w' do |io| io << 'TESTING_REQUIRE << 2' end - open 'reqfile3.rake', 'w' do |io| io << 'TESTING_REQUIRE << 3' end - - flags(['--require', 'reqfile'], '-rreqfile2', '-rreqfile3') - - assert_includes TESTING_REQUIRE, 1 - assert_includes TESTING_REQUIRE, 2 - assert_includes TESTING_REQUIRE, 3 - - assert_equal 3, TESTING_REQUIRE.size - ensure - $LOAD_PATH.delete @tempdir - end - - def test_missing_require - ex = assert_raises(LoadError) do - flags(['--require', 'test/missing']) do |opts| - end - end - assert_match(/such file/, ex.message) - assert_match(/test\/missing/, ex.message) - end - - def test_prereqs - flags('--prereqs', '-P') do |opts| - assert opts.show_prereqs - end - end - - def test_quiet - Rake::FileUtilsExt.verbose_flag = true - flags('--quiet', '-q') do |opts| - assert ! Rake::FileUtilsExt.verbose_flag, "verbose flag should be false" - assert ! opts.silent, "should not be silent" - end - end - - def test_no_search - flags('--nosearch', '--no-search', '-N') do |opts| - assert opts.nosearch - end - end - - def test_silent - Rake::FileUtilsExt.verbose_flag = true - flags('--silent', '-s') do |opts| - assert ! Rake::FileUtilsExt.verbose_flag, "verbose flag should be false" - assert opts.silent, "should be silent" - end - end - - def test_system - flags('--system', '-g') do |opts| - assert opts.load_system - end - end - - def test_no_system - flags('--no-system', '-G') do |opts| - assert opts.ignore_system - end - end - - def test_trace - flags('--trace', '-t') do |opts| - assert opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stderr, opts.trace_output - assert Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - end - - def test_trace_with_stdout - flags('--trace=stdout', '-tstdout') do |opts| - assert opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stdout, opts.trace_output - assert Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - end - - def test_trace_with_stderr - flags('--trace=stderr', '-tstderr') do |opts| - assert opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stderr, opts.trace_output - assert Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - end - - def test_trace_with_error - ex = assert_raises(Rake::CommandLineOptionError) do - flags('--trace=xyzzy') do |opts| end - end - assert_match(/un(known|recognized).*\btrace\b.*xyzzy/i, ex.message) - end - - def test_trace_with_following_task_name - flags(['--trace', 'taskname'], ['-t', 'taskname']) do |opts| - assert opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stderr, opts.trace_output - assert Rake::FileUtilsExt.verbose_flag - assert_equal ['taskname'], @app.top_level_tasks - end - end - - def test_backtrace - flags('--backtrace') do |opts| - assert opts.backtrace, "should enable backtrace option" - assert_equal $stderr, opts.trace_output - assert ! opts.trace, "should not enable trace option" - end - end - - def test_backtrace_with_stdout - flags('--backtrace=stdout') do |opts| - assert opts.backtrace, "should enable backtrace option" - assert_equal $stdout, opts.trace_output - assert ! opts.trace, "should not enable trace option" - end - end - - def test_backtrace_with_stderr - flags('--backtrace=stderr') do |opts| - assert opts.backtrace, "should enable backtrace option" - assert_equal $stderr, opts.trace_output - assert ! opts.trace, "should not enable trace option" - end - end - - def test_backtrace_with_error - ex = assert_raises(Rake::CommandLineOptionError) do - flags('--backtrace=xyzzy') do |opts| end - end - assert_match(/un(known|recognized).*\bbacktrace\b.*xyzzy/i, ex.message) - end - - def test_backtrace_with_following_task_name - flags(['--backtrace', 'taskname']) do |opts| - assert ! opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stderr, opts.trace_output - assert_equal ['taskname'], @app.top_level_tasks - end - end - - def test_trace_rules - flags('--rules') do |opts| - assert opts.trace_rules - end - end - - def test_tasks - flags('--tasks', '-T') do |opts| - assert_equal :tasks, opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - assert_equal nil, opts.show_all_tasks - end - flags(['--tasks', 'xyz'], ['-Txyz']) do |opts| - assert_equal :tasks, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal nil, opts.show_all_tasks - end - flags(['--tasks', 'xyz', '--comments']) do |opts| - assert_equal :tasks, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal false, opts.show_all_tasks - end - end - - def test_where - flags('--where', '-W') do |opts| - assert_equal :lines, opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - assert_equal true, opts.show_all_tasks - end - flags(['--where', 'xyz'], ['-Wxyz']) do |opts| - assert_equal :lines, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal true, opts.show_all_tasks - end - flags(['--where', 'xyz', '--comments'], ['-Wxyz', '--comments']) do |opts| - assert_equal :lines, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal false, opts.show_all_tasks - end - end - - def test_no_deprecated_messages - flags('--no-deprecation-warnings', '-X') do |opts| - assert opts.ignore_deprecate - end - end - - def test_verbose - capture_io do - flags('--verbose', '-v') do |opts| - assert Rake::FileUtilsExt.verbose_flag, "verbose should be true" - assert ! opts.silent, "opts should not be silent" - end - end - end - - def test_version - out, _ = capture_io do - flags '--version', '-V' - end - - assert_match(/\bversion\b/, out) - assert_match(/\b#{RAKEVERSION}\b/, out) - assert_equal :exit, @exit - end - - def test_bad_option - _, err = capture_io do - ex = assert_raises(OptionParser::InvalidOption) do - flags('--bad-option') - end - - if ex.message =~ /^While/ # Ruby 1.9 error message - assert_match(/while parsing/i, ex.message) - else # Ruby 1.8 error message - assert_match(/(invalid|unrecognized) option/i, ex.message) - assert_match(/--bad-option/, ex.message) - end - end - - assert_equal '', err - end - - def test_task_collection - command_line("a", "b") - assert_equal ["a", "b"], @tasks.sort - end - - def test_default_task_collection - command_line() - assert_equal ["default"], @tasks - end - - def test_environment_definition - ENV.delete('TESTKEY') - command_line("TESTKEY=12") - assert_equal '12', ENV['TESTKEY'] - end - - def test_multiline_environment_definition - ENV.delete('TESTKEY') - command_line("TESTKEY=a\nb\n") - assert_equal "a\nb\n", ENV['TESTKEY'] - end - - def test_environment_and_tasks_together - ENV.delete('TESTKEY') - command_line("a", "b", "TESTKEY=12") - assert_equal ["a", "b"], @tasks.sort - assert_equal '12', ENV['TESTKEY'] - end - - def test_rake_explicit_task_library - Rake.add_rakelib 'app/task', 'other' - - libs = Rake.application.options.rakelib - - assert libs.include?("app/task") - assert libs.include?("other") - end - - private - - def flags(*sets) - sets.each do |set| - ARGV.clear - - @exit = catch(:system_exit) { command_line(*set) } - - yield(@app.options) if block_given? - end - end - - def command_line(*options) - options.each do |opt| ARGV << opt end - @app = Rake::Application.new - def @app.exit(*args) - throw :system_exit, :exit - end - @app.instance_eval do - args = handle_options - collect_command_line_tasks(args) - end - @tasks = @app.top_level_tasks - @app.options - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_backtrace.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_backtrace.rb deleted file mode 100644 index 78eaa8d5..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_backtrace.rb +++ /dev/null @@ -1,119 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'open3' - -class TestBacktraceSuppression < Rake::TestCase - def test_bin_rake_suppressed - paths = ["something/bin/rake:12"] - - actual = Rake::Backtrace.collapse(paths) - - assert_equal [], actual - end - - def test_system_dir_suppressed - path = RbConfig::CONFIG['rubylibprefix'] - skip if path.nil? - path = File.expand_path path - - paths = [path + ":12"] - - actual = Rake::Backtrace.collapse(paths) - - assert_equal [], actual - end - - def test_near_system_dir_isnt_suppressed - path = RbConfig::CONFIG['rubylibprefix'] - skip if path.nil? - path = File.expand_path path - - paths = [" " + path + ":12"] - - actual = Rake::Backtrace.collapse(paths) - - assert_equal paths, actual - end -end - -class TestRakeBacktrace < Rake::TestCase - include RubyRunner - - def setup - super - - skip 'tmpdir is suppressed in backtrace' if - Rake::Backtrace::SUPPRESS_PATTERN =~ Dir.pwd - end - - def invoke(*args) - rake(*args) - @err - end - - def test_single_collapse - rakefile %q{ - task :foo do - raise "foooo!" - end - } - - lines = invoke("foo").split("\n") - - assert_equal "rake aborted!", lines[0] - assert_equal "foooo!", lines[1] - assert_something_matches %r!\A#{Regexp.quote Dir.pwd}/Rakefile:3!i, lines - assert_something_matches %r!\ATasks:!, lines - end - - def test_multi_collapse - rakefile %q{ - task :foo do - Rake.application.invoke_task(:bar) - end - task :bar do - raise "barrr!" - end - } - - lines = invoke("foo").split("\n") - - assert_equal "rake aborted!", lines[0] - assert_equal "barrr!", lines[1] - assert_something_matches %r!\A#{Regexp.quote Dir.pwd}/Rakefile:6!i, lines - assert_something_matches %r!\A#{Regexp.quote Dir.pwd}/Rakefile:3!i, lines - assert_something_matches %r!\ATasks:!, lines - end - - def test_suppress_option - rakefile %q{ - task :baz do - raise "bazzz!" - end - } - - lines = invoke("baz").split("\n") - assert_equal "rake aborted!", lines[0] - assert_equal "bazzz!", lines[1] - assert_something_matches %r!Rakefile!i, lines - - lines = invoke("--suppress-backtrace", ".ak.file", "baz").split("\n") - assert_equal "rake aborted!", lines[0] - assert_equal "bazzz!", lines[1] - refute_match %r!Rakefile!i, lines[2] - end - - private - - # Assert that the pattern matches at least one line in +lines+. - def assert_something_matches(pattern, lines) - lines.each do |ln| - if pattern =~ ln - assert_match pattern, ln - return - end - end - flunk "expected #{pattern.inspect} to match something in:\n" + - "#{lines.join("\n ")}" - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_clean.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_clean.rb deleted file mode 100644 index 0bce7bc0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_clean.rb +++ /dev/null @@ -1,61 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/clean' - -class TestRakeClean < Rake::TestCase - def test_clean - load 'rake/clean.rb', true - - assert Rake::Task['clean'], "Should define clean" - assert Rake::Task['clobber'], "Should define clobber" - assert Rake::Task['clobber'].prerequisites.include?("clean"), - "Clobber should require clean" - end - - def test_cleanup - file_name = create_undeletable_file - - out, _ = capture_io do - Rake::Cleaner.cleanup(file_name, :verbose => false) - end - assert_match(/failed to remove/i, out) - - ensure - remove_undeletable_file - end - - def test_cleanup_ignores_missing_files - file_name = File.join(@tempdir, "missing_directory", "no_such_file") - - out, _ = capture_io do - Rake::Cleaner.cleanup(file_name, :verbose => false) - end - refute_match(/failed to remove/i, out) - end - - private - - def create_undeletable_file - dir_name = File.join(@tempdir, "deletedir") - file_name = File.join(dir_name, "deleteme") - FileUtils.mkdir(dir_name) - FileUtils.touch(file_name) - FileUtils.chmod(0, file_name) - FileUtils.chmod(0, dir_name) - begin - FileUtils.chmod(0644, file_name) - rescue - file_name - else - skip "Permission to delete files is different on thie system" - end - end - - def remove_undeletable_file - dir_name = File.join(@tempdir, "deletedir") - file_name = File.join(dir_name, "deleteme") - FileUtils.chmod(0777, dir_name) - FileUtils.chmod(0777, file_name) - Rake::Cleaner.cleanup(file_name, :verbose => false) - Rake::Cleaner.cleanup(dir_name, :verbose => false) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_cpu_counter.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_cpu_counter.rb deleted file mode 100644 index 87d0601c..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_cpu_counter.rb +++ /dev/null @@ -1,68 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeCpuCounter < Rake::TestCase - - def setup - super - - @cpu_counter = Rake::CpuCounter.new - end - - def test_count - num = @cpu_counter.count - skip 'cannot count CPU' if num == nil - assert_kind_of Numeric, num - assert_operator num, :>=, 1 - end - - def test_count_with_default_nil - def @cpu_counter.count; nil; end - assert_equal(8, @cpu_counter.count_with_default(8)) - assert_equal(4, @cpu_counter.count_with_default) - end - - def test_count_with_default_raise - def @cpu_counter.count; raise; end - assert_equal(8, @cpu_counter.count_with_default(8)) - assert_equal(4, @cpu_counter.count_with_default) - end - - class TestClassMethod < Rake::TestCase - def setup - super - - @klass = Class.new(Rake::CpuCounter) - end - - def test_count - @klass.class_eval do - def count; 8; end - end - assert_equal(8, @klass.count) - end - - def test_count_nil - counted = false - @klass.class_eval do - define_method(:count) do - counted = true - nil - end - end - assert_equal(4, @klass.count) - assert_equal(true, counted) - end - - def test_count_raise - counted = false - @klass.class_eval do - define_method(:count) do - counted = true - raise - end - end - assert_equal(4, @klass.count) - assert_equal(true, counted) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_definitions.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_definitions.rb deleted file mode 100644 index ee474cb7..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_definitions.rb +++ /dev/null @@ -1,84 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' - -class TestRakeDefinitions < Rake::TestCase - include Rake - - EXISTINGFILE = "existing" - - def setup - super - - Task.clear - end - - def test_task - done = false - task :one => [:two] do done = true end - task :two - task :three => [:one, :two] - check_tasks(:one, :two, :three) - assert done, "Should be done" - end - - def test_file_task - done = false - file "one" => "two" do done = true end - file "two" - file "three" => ["one", "two"] - check_tasks("one", "two", "three") - assert done, "Should be done" - end - - def check_tasks(n1, n2, n3) - t = Task[n1] - assert Task === t, "Should be a Task" - assert_equal n1.to_s, t.name - assert_equal [n2.to_s], t.prerequisites.map { |n| n.to_s } - t.invoke - t2 = Task[n2] - assert_equal FileList[], t2.prerequisites - t3 = Task[n3] - assert_equal [n1.to_s, n2.to_s], t3.prerequisites.map { |n| n.to_s } - end - - def test_incremental_definitions - runs = [] - task :t1 => [:t2] do runs << "A"; 4321 end - task :t1 => [:t3] do runs << "B"; 1234 end - task :t1 => [:t3] - task :t2 - task :t3 - Task[:t1].invoke - assert_equal ["A", "B"], runs - assert_equal ["t2", "t3"], Task[:t1].prerequisites - end - - def test_missing_dependencies - task :x => ["missing"] - assert_raises(RuntimeError) { Task[:x].invoke } - end - - def test_falsey_dependencies - task :x => nil - assert_equal [], Task[:x].prerequisites - end - - def test_implicit_file_dependencies - runs = [] - create_existing_file - task :y => [EXISTINGFILE] do |t| runs << t.name end - Task[:y].invoke - assert_equal runs, ['y'] - end - - private # ---------------------------------------------------------- - - def create_existing_file - Dir.mkdir File.dirname(EXISTINGFILE) unless - File.exist?(File.dirname(EXISTINGFILE)) - open(EXISTINGFILE, "w") do |f| f.puts "HI" end unless - File.exist?(EXISTINGFILE) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_directory_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_directory_task.rb deleted file mode 100644 index 0014d1c1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_directory_task.rb +++ /dev/null @@ -1,76 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'pathname' - -class TestRakeDirectoryTask < Rake::TestCase - include Rake - - def test_directory - desc "DESC" - - directory "a/b/c" - - assert_equal FileCreationTask, Task["a"].class - assert_equal FileCreationTask, Task["a/b"].class - assert_equal FileCreationTask, Task["a/b/c"].class - - assert_nil Task["a"].comment - assert_nil Task["a/b"].comment - assert_equal "DESC", Task["a/b/c"].comment - - verbose(false) { - Task['a/b'].invoke - } - - assert File.exist?("a/b") - refute File.exist?("a/b/c") - end - - def test_directory_colon - directory "a:b" - - assert_equal FileCreationTask, Task['a:b'].class - end unless Rake::Win32.windows? - - if Rake::Win32.windows? - def test_directory_win32 - desc "WIN32 DESC" - directory 'c:/a/b/c' - assert_equal FileTask, Task['c:'].class - assert_equal FileCreationTask, Task['c:/a'].class - assert_equal FileCreationTask, Task['c:/a/b'].class - assert_equal FileCreationTask, Task['c:/a/b/c'].class - assert_nil Task['c:/'].comment - assert_equal "WIN32 DESC", Task['c:/a/b/c'].comment - assert_nil Task['c:/a/b'].comment - end - end - - def test_can_use_blocks - runlist = [] - - t1 = directory("a/b/c" => :t2) { |t| runlist << t.name } - task(:t2) { |t| runlist << t.name } - - verbose(false) { - t1.invoke - } - - assert_equal Task["a/b/c"], t1 - assert_equal FileCreationTask, Task["a/b/c"].class - assert_equal ["t2", "a/b/c"], runlist - assert File.directory?("a/b/c") - end - - def test_can_use_pathname - directory Pathname.new "a/b/c" - - assert_equal FileCreationTask, Task["a/b/c"].class - - verbose(false) { - Task['a/b/c'].invoke - } - - assert File.directory?("a/b/c") - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_dsl.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_dsl.rb deleted file mode 100644 index ad52f760..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_dsl.rb +++ /dev/null @@ -1,40 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeDsl < Rake::TestCase - - def setup - super - Rake::Task.clear - end - - def test_namespace_command - namespace "n" do - task "t" - end - refute_nil Rake::Task["n:t"] - end - - def test_namespace_command_with_bad_name - ex = assert_raises(ArgumentError) do - namespace 1 do end - end - assert_match(/string/i, ex.message) - assert_match(/symbol/i, ex.message) - end - - def test_namespace_command_with_a_string_like_object - name = Object.new - def name.to_str - "bob" - end - namespace name do - task "t" - end - refute_nil Rake::Task["bob:t"] - end - - def test_no_commands_constant - assert ! defined?(Commands), "should not define Commands" - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_early_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_early_time.rb deleted file mode 100644 index 18c4dad3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_early_time.rb +++ /dev/null @@ -1,31 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeEarlyTime < Rake::TestCase - def test_create - early = Rake::EarlyTime.instance - assert early <= Time.now - assert early < Time.now - assert early != Time.now - assert Time.now > early - assert Time.now >= early - assert Time.now != early - end - - def test_equality - early = Rake::EarlyTime.instance - assert_equal early, early, "two early times should be equal" - end - - def test_original_time_compare_is_not_messed_up - t1 = Time.mktime(1970, 1, 1, 0, 0, 0) - t2 = Time.now - assert t1 < t2 - assert t2 > t1 - assert t1 == t1 - assert t2 == t2 - end - - def test_to_s - assert_equal "", Rake::EARLY.to_s - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_extension.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_extension.rb deleted file mode 100644 index 18d55f19..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_extension.rb +++ /dev/null @@ -1,59 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'stringio' - -class TestRakeExtension < Rake::TestCase - - module Redirect - def error_redirect - old_err = $stderr - result = StringIO.new - $stderr = result - yield - result - ensure - $stderr = old_err - end - end - - class Sample - extend Redirect - - def duplicate_method - :original - end - - OK_ERRS = error_redirect do - rake_extension("a") do - def ok_method - end - end - end - - - DUP_ERRS = error_redirect do - rake_extension("duplicate_method") do - def duplicate_method - :override - end - end - end - end - - def test_methods_actually_exist - sample = Sample.new - sample.ok_method - sample.duplicate_method - end - - def test_no_warning_when_defining_ok_method - assert_equal "", Sample::OK_ERRS.string - end - - def test_extension_complains_when_a_method_that_is_present - assert_match(/warning:/i, Sample::DUP_ERRS.string) - assert_match(/already exists/i, Sample::DUP_ERRS.string) - assert_match(/duplicate_method/i, Sample::DUP_ERRS.string) - assert_equal :original, Sample.new.duplicate_method - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_creation_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_creation_task.rb deleted file mode 100644 index d8dcd965..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_creation_task.rb +++ /dev/null @@ -1,56 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' - -###################################################################### -class TestRakeFileCreationTask < Rake::TestCase - include Rake - include Rake::DSL - - DUMMY_DIR = 'dummy_dir' - - def setup - super - - Task.clear - end - - def test_file_needed - create_dir DUMMY_DIR - fc_task = Task[DUMMY_DIR] - assert_equal DUMMY_DIR, fc_task.name - FileUtils.rm_rf fc_task.name - assert fc_task.needed?, "file should be needed" - FileUtils.mkdir fc_task.name - assert_equal nil, fc_task.prerequisites.map { |n| Task[n].timestamp }.max - assert ! fc_task.needed?, "file should not be needed" - end - - def test_directory - directory DUMMY_DIR - fc_task = Task[DUMMY_DIR] - assert_equal DUMMY_DIR, fc_task.name - assert FileCreationTask === fc_task - end - - def test_no_retriggers_on_filecreate_task - create_timed_files(OLDFILE, NEWFILE) - t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileCreationTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - assert ! t1.needed?, "Should not need to rebuild old file because of new" - end - - def test_no_retriggers_on_file_task - create_timed_files(OLDFILE, NEWFILE) - t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileCreationTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - assert ! t1.needed?, "Should not need to rebuild old file because of new" - end - - def test_very_early_timestamp - t1 = Rake.application.intern(FileCreationTask, OLDFILE) - assert t1.timestamp < Time.now - assert t1.timestamp < Time.now - 1_000_000 - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_list.rb deleted file mode 100644 index 6f4e5674..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_list.rb +++ /dev/null @@ -1,670 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'pathname' - -class TestRakeFileList < Rake::TestCase - FileList = Rake::FileList - - def setup - super - - FileUtils.mkdir "CVS" rescue nil - FileUtils.mkdir ".svn" rescue nil - @cdir = "cfiles" - FileUtils.mkdir @cdir rescue nil - FileUtils.touch ".dummy" - FileUtils.touch "x.bak" - FileUtils.touch "x~" - FileUtils.touch "core" - FileUtils.touch "x.c" - FileUtils.touch "xyz.c" - FileUtils.touch "abc.c" - FileUtils.touch "abc.h" - FileUtils.touch "abc.x" - FileUtils.touch "existing" - - open 'xyzzy.txt', 'w' do |io| - io.puts 'x' - io.puts 'XYZZY' - end - - end - - def test_delegating_methods_do_not_include_to_a_or_to_ary - assert ! FileList::DELEGATING_METHODS.include?("to_a"), "should not include to_a" - assert ! FileList::DELEGATING_METHODS.include?(:to_a), "should not include to_a" - assert ! FileList::DELEGATING_METHODS.include?("to_ary"), "should not include to_ary" - assert ! FileList::DELEGATING_METHODS.include?(:to_ary), "should not include to_ary" - end - - def test_create - fl = FileList.new - assert_equal 0, fl.size - end - - def test_create_with_args - fl = FileList.new("*.c", "x") - assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort, - fl.sort - end - - def test_create_with_pathname - fl = FileList.new(Pathname.new("*.c")) - assert_equal ["abc.c", "x.c", "xyz.c"].sort, - fl.sort - end - - def test_create_with_block - fl = FileList.new { |f| f.include("x") } - assert_equal ["x"], fl.resolve - end - - def test_create_with_brackets - fl = FileList["*.c", "x"] - assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort, - fl.sort - end - - def test_create_with_brackets_and_filelist - fl = FileList[FileList["*.c", "x"]] - assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort, - fl.sort - end - - def test_include_with_another_array - fl = FileList.new.include(["x", "y", "z"]) - assert_equal ["x", "y", "z"].sort, fl.sort - end - - def test_include_with_another_filelist - fl = FileList.new.include(FileList["*.c", "x"]) - assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort, - fl.sort - end - - def test_include_with_pathname - fl = FileList.new.include(Pathname.new("*.c")) - assert_equal ["abc.c", "x.c", "xyz.c"].sort, - fl.sort - end - - def test_append - fl = FileList.new - fl << "a.rb" << "b.rb" - assert_equal ['a.rb', 'b.rb'], fl - end - - def test_append_pathname - fl = FileList.new - fl << Pathname.new("a.rb") - assert_equal ['a.rb'], fl - end - - def test_add_many - fl = FileList.new - fl.include %w(a d c) - fl.include('x', 'y') - assert_equal ['a', 'd', 'c', 'x', 'y'], fl - assert_equal ['a', 'd', 'c', 'x', 'y'], fl.resolve - end - - def test_add_return - f = FileList.new - g = f << "x" - assert_equal f.object_id, g.object_id - h = f.include("y") - assert_equal f.object_id, h.object_id - end - - def test_match - fl = FileList.new - fl.include '*.c' - - assert_equal %w[abc.c x.c xyz.c], fl.sort - end - - def test_add_matching - fl = FileList.new - fl << "a.java" - fl.include '*.c' - - assert_equal %w[a.java abc.c x.c xyz.c], fl.sort - end - - def test_multiple_patterns - fl = FileList.new - fl.include('*.z', '*foo*') - - assert_equal [], fl - - fl.include('*.c', '*xist*') - assert_equal %w[x.c xyz.c abc.c existing].sort, fl.sort - end - - def test_square_bracket_pattern - fl = FileList.new - fl.include("abc.[ch]") - assert fl.size == 2 - assert fl.include?("abc.c") - assert fl.include?("abc.h") - end - - def test_curly_bracket_pattern - fl = FileList.new - fl.include("abc.{c,h}") - assert fl.size == 2 - assert fl.include?("abc.c") - assert fl.include?("abc.h") - end - - def test_reject - fl = FileList.new - fl.include %w(x.c abc.c xyz.c existing) - fl.reject! { |fn| fn =~ /^x/ } - assert_equal %w[abc.c existing], fl - end - - def test_exclude - fl = FileList['x.c', 'abc.c', 'xyz.c', 'existing'] - fl.each { |fn| touch fn, :verbose => false } - - x = fl.exclude(%r{^x.+\.}) - - assert_equal FileList, x.class - assert_equal %w(x.c abc.c existing), fl - assert_equal fl.object_id, x.object_id - - fl.exclude('*.c') - - assert_equal ['existing'], fl - - fl.exclude('existing') - - assert_equal [], fl - end - - def test_exclude_pathname - fl = FileList['x.c', 'abc.c', 'other'] - fl.each { |fn| touch fn, :verbose => false } - - fl.exclude(Pathname.new('*.c')) - - assert_equal ['other'], fl - end - - def test_excluding_via_block - fl = FileList['a.c', 'b.c', 'xyz.c'] - fl.exclude { |fn| fn.pathmap('%n') == 'xyz' } - assert fl.excluded_from_list?("xyz.c"), "Should exclude xyz.c" - assert_equal ['a.c', 'b.c'], fl - end - - def test_exclude_return_on_create - fl = FileList['*'].exclude(/.*\.[hcx]$/) - assert_equal %w[cfiles existing xyzzy.txt], fl.sort - assert_equal FileList, fl.class - end - - def test_exclude_with_string_return_on_create - fl = FileList['*'].exclude('abc.c') - assert_equal %w[abc.h abc.x cfiles existing x.c xyz.c xyzzy.txt], fl.sort - assert_equal FileList, fl.class - end - - def test_default_exclude - fl = FileList.new - fl.clear_exclude - fl.include("**/*~", "**/*.bak", "**/core") - assert fl.member?("core"), "Should include core" - assert fl.member?("x.bak"), "Should include .bak files" - end - - def test_unique - fl = FileList.new - fl << "x.c" << "a.c" << "b.rb" << "a.c" - assert_equal ['x.c', 'a.c', 'b.rb', 'a.c'], fl - fl.uniq! - assert_equal ['x.c', 'a.c', 'b.rb'], fl - end - - def test_to_string - fl = FileList.new - fl << "a.java" << "b.java" - assert_equal "a.java b.java", fl.to_s - assert_equal "a.java b.java", "#{fl}" - end - - def test_to_array - fl = FileList['a.java', 'b.java'] - assert_equal ['a.java', 'b.java'], fl.to_a - assert_equal Array, fl.to_a.class - assert_equal ['a.java', 'b.java'], fl.to_ary - assert_equal Array, fl.to_ary.class - end - - def test_to_s_pending - fl = FileList['abc.*'] - result = fl.to_s - assert_match(%r{abc\.c}, result) - assert_match(%r{abc\.h}, result) - assert_match(%r{abc\.x}, result) - assert_match(%r{(abc\..\b ?){2}}, result) - end - - def test_inspect_pending - fl = FileList['abc.*'] - result = fl.inspect - assert_match(%r{"abc\.c"}, result) - assert_match(%r{"abc\.h"}, result) - assert_match(%r{"abc\.x"}, result) - assert_match(%r|^\[("abc\..", ){2}"abc\.."\]$|, result) - end - - def test_sub - fl = FileList["*.c"] - f2 = fl.sub(/\.c$/, ".o") - assert_equal FileList, f2.class - assert_equal ["abc.o", "x.o", "xyz.o"].sort, - f2.sort - f3 = fl.gsub(/\.c$/, ".o") - assert_equal FileList, f3.class - assert_equal ["abc.o", "x.o", "xyz.o"].sort, - f3.sort - end - - def test_claim_to_be_a_kind_of_array - fl = FileList['*.c'] - assert fl.is_a?(Array) - assert fl.kind_of?(Array) - end - - def test_claim_to_be_a_kind_of_filelist - fl = FileList['*.c'] - assert fl.is_a?(FileList) - assert fl.kind_of?(FileList) - end - - def test_claim_to_be_a_filelist_instance - fl = FileList['*.c'] - assert fl.instance_of?(FileList) - end - - def test_dont_claim_to_be_an_array_instance - fl = FileList['*.c'] - assert ! fl.instance_of?(Array) - end - - def test_sub! - f = "x/a.c" - fl = FileList[f, "x/b.c"] - res = fl.sub!(/\.c$/, ".o") - assert_equal ["x/a.o", "x/b.o"].sort, fl.sort - assert_equal "x/a.c", f - assert_equal fl.object_id, res.object_id - end - - def test_sub_with_block - fl = FileList["src/org/onestepback/a.java", "src/org/onestepback/b.java"] -# The block version doesn't work the way I want it to ... -# f2 = fl.sub(%r{^src/(.*)\.java$}) { |x| "classes/" + $1 + ".class" } - f2 = fl.sub(%r{^src/(.*)\.java$}, "classes/\\1.class") - assert_equal [ - "classes/org/onestepback/a.class", - "classes/org/onestepback/b.class" - ].sort, - f2.sort - end - - def test_string_ext - assert_equal "one.net", "one.two".ext("net") - assert_equal "one.net", "one.two".ext(".net") - assert_equal "one.net", "one".ext("net") - assert_equal "one.net", "one".ext(".net") - assert_equal "one.two.net", "one.two.c".ext(".net") - assert_equal "one/two.net", "one/two.c".ext(".net") - assert_equal "one.x/two.net", "one.x/two.c".ext(".net") - assert_equal "one.x/two.net", "one.x/two".ext(".net") - assert_equal ".onerc.net", ".onerc.dot".ext("net") - assert_equal ".onerc.net", ".onerc".ext("net") - assert_equal ".a/.onerc.net", ".a/.onerc".ext("net") - assert_equal "one", "one.two".ext('') - assert_equal "one", "one.two".ext - assert_equal ".one", ".one.two".ext - assert_equal ".one", ".one".ext - assert_equal ".", ".".ext("c") - assert_equal "..", "..".ext("c") - # These only need to work in windows - if Rake::Win32.windows? - assert_equal "one.x\\two.net", "one.x\\two.c".ext(".net") - assert_equal "one.x\\two.net", "one.x\\two".ext(".net") - end - end - - def test_filelist_ext - assert_equal FileList['one.c', '.one.c'], - FileList['one.net', '.one'].ext('c') - end - - def test_gsub - fl = FileList["*.c"] - f2 = fl.gsub(/a/, "A") - assert_equal ["Abc.c", "x.c", "xyz.c"].sort, - f2.sort - end - - def test_gsub! - f = FileList["*.c"] - f.gsub!(/a/, "A") - assert_equal ["Abc.c", "x.c", "xyz.c"].sort, - f.sort - end - - def test_egrep_returns_0_if_no_matches - files = FileList['test/lib/*_test.rb'].exclude("test/lib/filelist_test.rb") - assert_equal 0, files.egrep(/XYZZY/) { } - end - - def test_egrep_with_output - files = FileList['*.txt'] - - out, = capture_io do - files.egrep(/XYZZY/) - end - - assert_equal "xyzzy.txt:2:XYZZY\n", out - end - - def test_egrep_with_block - files = FileList['*.txt'] - found = nil - - files.egrep(/XYZZY/) do |fn, ln, line| - found = [fn, ln, line] - end - - assert_equal ["xyzzy.txt", 2, "XYZZY\n"], found - end - - def test_egrep_with_error - files = FileList['*.txt'] - - _, err = capture_io do - files.egrep(/XYZZY/) do |fn, ln, line | - raise "_EGREP_FAILURE_" - end - end - - assert_equal "Error while processing 'xyzzy.txt': _EGREP_FAILURE_\n", err - end - - def test_existing - fl = FileList['abc.c', 'notthere.c'] - assert_equal ["abc.c"], fl.existing - assert fl.existing.is_a?(FileList) - end - - def test_existing! - fl = FileList['abc.c', 'notthere.c'] - result = fl.existing! - assert_equal ["abc.c"], fl - assert_equal fl.object_id, result.object_id - end - - def test_ignore_special - f = FileList['*'] - assert ! f.include?("CVS"), "Should not contain CVS" - assert ! f.include?(".svn"), "Should not contain .svn" - assert ! f.include?(".dummy"), "Should not contain dot files" - assert ! f.include?("x.bak"), "Should not contain .bak files" - assert ! f.include?("x~"), "Should not contain ~ files" - assert ! f.include?("core"), "Should not contain core files" - end - - def test_clear_ignore_patterns - f = FileList['*', '.svn'] - f.clear_exclude - assert f.include?("abc.c") - assert f.include?("xyz.c") - assert f.include?("CVS") - assert f.include?(".svn") - assert f.include?("x.bak") - assert f.include?("x~") - end - - def test_exclude_with_alternate_file_seps - fl = FileList.new - assert fl.excluded_from_list?("x/CVS/y") - assert fl.excluded_from_list?("x\\CVS\\y") - assert fl.excluded_from_list?("x/.svn/y") - assert fl.excluded_from_list?("x\\.svn\\y") - assert fl.excluded_from_list?("x/core") - assert fl.excluded_from_list?("x\\core") - end - - def test_add_default_exclude_list - fl = FileList.new - fl.exclude(/~\d+$/) - assert fl.excluded_from_list?("x/CVS/y") - assert fl.excluded_from_list?("x\\CVS\\y") - assert fl.excluded_from_list?("x/.svn/y") - assert fl.excluded_from_list?("x\\.svn\\y") - assert fl.excluded_from_list?("x/core") - assert fl.excluded_from_list?("x\\core") - assert fl.excluded_from_list?("x/abc~1") - end - - def test_basic_array_functions - f = FileList['b', 'c', 'a'] - assert_equal 'b', f.first - assert_equal 'b', f[0] - assert_equal 'a', f.last - assert_equal 'a', f[2] - assert_equal 'a', f[-1] - assert_equal ['a', 'b', 'c'], f.sort - f.sort! - assert_equal ['a', 'b', 'c'], f - end - - def test_flatten - assert_equal ['a', 'x.c', 'xyz.c', 'abc.c'].sort, - ['a', FileList['*.c']].flatten.sort - end - - def test_clone_and_dup - a = FileList['a', 'b', 'c'] - c = a.clone - d = a.dup - a << 'd' - assert_equal ['a', 'b', 'c', 'd'], a - assert_equal ['a', 'b', 'c'], c - assert_equal ['a', 'b', 'c'], d - end - - def test_dup_and_clone_replicate_taint - a = FileList['a', 'b', 'c'] - a.taint - c = a.clone - d = a.dup - assert c.tainted?, "Clone should be tainted" - assert d.tainted?, "Dup should be tainted" - end - - def test_duped_items_will_thaw - a = FileList['a', 'b', 'c'] - a.freeze - d = a.dup - d << 'more' - assert_equal ['a', 'b', 'c', 'more'], d - end - - def test_cloned_items_stay_frozen - a = FileList['a', 'b', 'c'] - a.freeze - c = a.clone - assert_raises(TypeError, RuntimeError) do - c << 'more' - end - end - - def test_array_comparisons - fl = FileList['b', 'b'] - a = ['b', 'a'] - b = ['b', 'b'] - c = ['b', 'c'] - assert_equal(1, fl <=> a) - assert_equal(0, fl <=> b) - assert_equal(-1, fl <=> c) - assert_equal(-1, a <=> fl) - assert_equal(0, b <=> fl) - assert_equal(1, c <=> fl) - end - - def test_array_equality - a = FileList['a', 'b'] - b = ['a', 'b'] - assert a == b - assert b == a -# assert a.eql?(b) -# assert b.eql?(a) - assert ! a.equal?(b) - assert ! b.equal?(a) - end - - def test_enumeration_methods - a = FileList['a', 'b'] - b = a.map { |it| it.upcase } - assert_equal ['A', 'B'], b - assert_equal FileList, b.class - - b = a.map { |it| it.upcase } - assert_equal ['A', 'B'], b - assert_equal FileList, b.class - - b = a.sort - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.sort_by { |it| it } - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.select { |it| it == 'b' } - assert_equal ['b'], b - assert_equal FileList, b.class - - b = a.select { |it| it.size == 1 } - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.reject { |it| it == 'b' } - assert_equal ['a'], b - assert_equal FileList, b.class - - b = a.grep(/./) - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.partition { |it| it == 'b' } - assert_equal [['b'], ['a']], b - assert_equal Array, b.class - assert_equal FileList, b[0].class - assert_equal FileList, b[1].class - - b = a.zip(['x', 'y']).to_a - assert_equal [['a', 'x'], ['b', 'y']], b - assert_equal Array, b.class - assert_equal Array, b[0].class - assert_equal Array, b[1].class - end - - def test_array_operators - a = ['a', 'b'] - b = ['c', 'd'] - f = FileList['x', 'y'] - g = FileList['w', 'z'] - - r = f + g - assert_equal ['x', 'y', 'w', 'z'], r - assert_equal FileList, r.class - - r = a + g - assert_equal ['a', 'b', 'w', 'z'], r - assert_equal Array, r.class - - r = f + b - assert_equal ['x', 'y', 'c', 'd'], r - assert_equal FileList, r.class - - r = FileList['w', 'x', 'y', 'z'] - f - assert_equal ['w', 'z'], r - assert_equal FileList, r.class - - r = FileList['w', 'x', 'y', 'z'] & f - assert_equal ['x', 'y'], r - assert_equal FileList, r.class - - r = f * 2 - assert_equal ['x', 'y', 'x', 'y'], r - assert_equal FileList, r.class - - r = f * ',' - assert_equal 'x,y', r - assert_equal String, r.class - - r = f | ['a', 'x'] - assert_equal ['a', 'x', 'y'].sort, r.sort - assert_equal FileList, r.class - end - - def test_other_array_returning_methods - f = FileList['a', nil, 'b'] - r = f.compact - assert_equal ['a', 'b'], r - assert_equal FileList, r.class - - f = FileList['a', 'b'] - r = f.concat(['x', 'y']) - assert_equal ['a', 'b', 'x', 'y'], r - assert_equal FileList, r.class - - f = FileList['a', ['b', 'c'], FileList['d', 'e']] - r = f.flatten - assert_equal ['a', 'b', 'c', 'd', 'e'], r - assert_equal FileList, r.class - - f = FileList['a', 'b', 'a'] - r = f.uniq - assert_equal ['a', 'b'], r - assert_equal FileList, r.class - - f = FileList['a', 'b', 'c', 'd'] - r = f.values_at(1, 3) - assert_equal ['b', 'd'], r - assert_equal FileList, r.class - end - - def test_special_return_delegating_methods_object_type - custom_file_list = Class.new(FileList) - f = custom_file_list.new - - FileList::SPECIAL_RETURN.each do |m| - r = if [].method(m).arity == 1 - f.send(m, []) - else - f.send(m) - end - - assert_equal custom_file_list, r.class - end - end - - def test_file_utils_can_use_filelists - cfiles = FileList['*.c'] - - cp cfiles, @cdir, :verbose => false - - assert File.exist?(File.join(@cdir, 'abc.c')) - assert File.exist?(File.join(@cdir, 'xyz.c')) - assert File.exist?(File.join(@cdir, 'x.c')) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb deleted file mode 100644 index 5935dc26..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb +++ /dev/null @@ -1,8 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeFileListPathMap < Rake::TestCase - def test_file_list_supports_pathmap - assert_equal ['a', 'b'], FileList['dir/a.rb', 'dir/b.rb'].pathmap("%n") - end -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_task.rb deleted file mode 100644 index a2495114..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_task.rb +++ /dev/null @@ -1,197 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'pathname' - -class TestRakeFileTask < Rake::TestCase - include Rake - - def setup - super - - Task.clear - @runs = Array.new - FileUtils.rm_f NEWFILE - FileUtils.rm_f OLDFILE - end - - def test_file_need - name = "dummy" - file name - - ftask = Task[name] - - assert_equal name.to_s, ftask.name - File.delete(ftask.name) rescue nil - - assert ftask.needed?, "file should be needed" - assert_equal Rake::LATE, ftask.timestamp - - open(ftask.name, "w") { |f| f.puts "HI" } - - assert_equal nil, ftask.prerequisites.map { |n| Task[n].timestamp }.max - assert ! ftask.needed?, "file should not be needed" - ensure - File.delete(ftask.name) rescue nil - end - - def test_file_times_new_depends_on_old - create_timed_files(OLDFILE, NEWFILE) - - t1 = Rake.application.intern(FileTask, NEWFILE).enhance([OLDFILE]) - t2 = Rake.application.intern(FileTask, OLDFILE) - assert ! t2.needed?, "Should not need to build old file" - assert ! t1.needed?, "Should not need to rebuild new file because of old" - end - - def test_file_times_new_depend_on_regular_task_timestamps - load_phony - - name = "dummy" - task name - - create_timed_files(NEWFILE) - - t1 = Rake.application.intern(FileTask, NEWFILE).enhance([name]) - - assert t1.needed?, "depending on non-file task uses Time.now" - - task(name => :phony) - - assert t1.needed?, "unless the non-file task has a timestamp" - end - - def test_file_times_old_depends_on_new - create_timed_files(OLDFILE, NEWFILE) - - t1 = Rake.application.intern(FileTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - preq_stamp = t1.prerequisites.map { |t| Task[t].timestamp }.max - assert_equal t2.timestamp, preq_stamp - assert t1.timestamp < preq_stamp, "T1 should be older" - assert t1.needed?, "Should need to rebuild old file because of new" - end - - def test_file_depends_on_task_depend_on_file - create_timed_files(OLDFILE, NEWFILE) - - file NEWFILE => [:obj] do |t| @runs << t.name end - task :obj => [OLDFILE] do |t| @runs << t.name end - file OLDFILE do |t| @runs << t.name end - - Task[:obj].invoke - Task[NEWFILE].invoke - assert @runs.include?(NEWFILE) - end - - def test_existing_file_depends_on_non_existing_file - create_file(OLDFILE) - delete_file(NEWFILE) - file NEWFILE do |t| @runs << t.name end - file OLDFILE => NEWFILE do |t| @runs << t.name end - - Task[OLDFILE].invoke - - assert_equal [NEWFILE, OLDFILE], @runs - end - - def test_needed_eh_build_all - create_file 'a' - - file 'a' - - a_task = Task['a'] - - refute a_task.needed? - - Rake.application.options.build_all = true - - assert a_task.needed? - ensure - delete_file 'a' - end - - def test_needed_eh_dependency - create_file 'a', Time.now - create_file 'b', Time.now - 60 - - create_file 'c', Time.now - create_file 'd', Time.now - 60 - - file 'b' => 'a' - - b_task = Task['b'] - - assert b_task.needed? - - file 'c' => 'd' - - c_task = Task['c'] - - refute c_task.needed? - ensure - delete_file 'old' - delete_file 'new' - end - - def test_needed_eh_exists - name = "dummy" - file name - - ftask = Task[name] - - assert ftask.needed? - - create_file name - - refute ftask.needed? - ensure - delete_file name - end - - def test_source_is_first_prerequisite - t = file :f => ["preqA", "preqB"] - assert_equal "preqA", t.source - end - - def test_sources_is_all_prerequisites - t = file :f => ["preqA", "preqB"] - assert_equal ["preqA", "preqB"], t.sources - end - - def test_task_can_be_pathname - name = "dummy" - file Pathname.new name - - ftask = Task[name] - - assert_equal name.to_s, ftask.name - end - - def test_prerequisite_can_be_pathname - t = file :f => Pathname.new("preq") - assert_equal "preq", t.source - end - - # I have currently disabled this test. I'm not convinced that - # deleting the file target on failure is always the proper thing to - # do. I'm willing to hear input on this topic. - def ztest_file_deletes_on_failure - task :obj - file NEWFILE => [:obj] do |t| - FileUtils.touch NEWFILE - fail "Ooops" - end - assert Task[NEWFILE] - begin - Task[NEWFILE].invoke - rescue Exception - end - assert(! File.exist?(NEWFILE), "NEWFILE should be deleted") - end - - def load_phony - load File.join(@rake_lib, "rake/phony.rb") - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_utils.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_utils.rb deleted file mode 100644 index 90e01dfb..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_file_utils.rb +++ /dev/null @@ -1,314 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'stringio' - -class TestRakeFileUtils < Rake::TestCase - def setup - super - @rake_test_sh = ENV['RAKE_TEST_SH'] - end - - def teardown - FileUtils::LN_SUPPORTED[0] = true - RakeFileUtils.verbose_flag = Rake::FileUtilsExt::DEFAULT - ENV['RAKE_TEST_SH'] = @rake_test_sh - - super - end - - def test_rm_one_file - create_file("a") - FileUtils.rm_rf "a" - refute File.exist?("a") - end - - def test_rm_two_files - create_file("a") - create_file("b") - FileUtils.rm_rf ["a", "b"] - refute File.exist?("a") - refute File.exist?("b") - end - - def test_rm_filelist - list = Rake::FileList.new << "a" << "b" - list.each { |fn| create_file(fn) } - FileUtils.rm_r list - refute File.exist?("a") - refute File.exist?("b") - end - - def test_ln - open("a", "w") { |f| f.puts "TEST_LN" } - - Rake::FileUtilsExt.safe_ln("a", "b", :verbose => false) - - assert_equal "TEST_LN\n", File.read('b') - end - - class BadLink - include Rake::FileUtilsExt - attr_reader :cp_args - - def initialize(klass) - @failure_class = klass - end - - def cp(*args) - @cp_args = args - end - - def ln(*args) - fail @failure_class, "ln not supported" - end - - public :safe_ln - end - - def test_safe_ln_failover_to_cp_on_standard_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(StandardError) - c.safe_ln "a", "b" - assert_equal ['a', 'b'], c.cp_args - c.safe_ln "x", "y" - assert_equal ['x', 'y'], c.cp_args - end - - def test_safe_ln_failover_to_cp_on_not_implemented_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(NotImplementedError) - c.safe_ln "a", "b" - assert_equal ['a', 'b'], c.cp_args - end - - def test_safe_ln_fails_on_script_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(ScriptError) - assert_raises(ScriptError) do c.safe_ln "a", "b" end - end - - def test_verbose - verbose true - assert_equal true, verbose - verbose false - assert_equal false, verbose - verbose(true) { - assert_equal true, verbose - } - assert_equal false, verbose - end - - def test_nowrite - nowrite true - assert_equal true, nowrite - nowrite false - assert_equal false, nowrite - nowrite(true) { - assert_equal true, nowrite - } - assert_equal false, nowrite - end - - def test_file_utils_methods_are_available_at_top_level - create_file("a") - - capture_io do - rm_rf "a" - end - - refute File.exist?("a") - end - - def test_fileutils_methods_dont_leak - obj = Object.new - assert_raises(NoMethodError) { obj.copy } # from FileUtils - assert_raises(NoMethodError) { obj.ruby "-v" } # from RubyFileUtils - end - - def test_sh - shellcommand - - verbose(false) { sh %{#{Rake::TestCase::RUBY} shellcommand.rb} } - assert true, "should not fail" - end - - def test_sh_with_a_single_string_argument - check_expansion - - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - sh %{#{RUBY} check_expansion.rb #{env_var} someval} - } - end - - def test_sh_with_multiple_arguments - check_no_expansion - ENV['RAKE_TEST_SH'] = 'someval' - - verbose(false) { - sh RUBY, 'check_no_expansion.rb', env_var, 'someval' - } - end - - def test_sh_failure - shellcommand - - assert_raises(RuntimeError) { - verbose(false) { sh %{#{RUBY} shellcommand.rb 1} } - } - end - - def test_sh_special_handling - shellcommand - - count = 0 - verbose(false) { - sh(%{#{RUBY} shellcommand.rb}) do |ok, res| - assert(ok) - assert_equal 0, res.exitstatus - count += 1 - end - sh(%{#{RUBY} shellcommand.rb 1}) do |ok, res| - assert(!ok) - assert_equal 1, res.exitstatus - count += 1 - end - } - assert_equal 2, count, "Block count should be 2" - end - - def test_sh_noop - shellcommand - - verbose(false) { sh %{shellcommand.rb 1}, :noop=>true } - assert true, "should not fail" - end - - def test_sh_bad_option - shellcommand - - ex = assert_raises(ArgumentError) { - verbose(false) { sh %{shellcommand.rb}, :bad_option=>true } - } - assert_match(/bad_option/, ex.message) - end - - def test_sh_verbose - shellcommand - - _, err = capture_io do - verbose(true) { - sh %{shellcommand.rb}, :noop=>true - } - end - - assert_equal "shellcommand.rb\n", err - end - - def test_sh_verbose_false - shellcommand - - _, err = capture_io do - verbose(false) { - sh %{shellcommand.rb}, :noop=>true - } - end - - assert_equal '', err - end - - def test_sh_verbose_flag_nil - shellcommand - - RakeFileUtils.verbose_flag = nil - - assert_silent do - sh %{shellcommand.rb}, :noop=>true - end - end - - def test_ruby_with_a_single_string_argument - check_expansion - - ENV['RAKE_TEST_SH'] = 'someval' - - verbose(false) { - replace_ruby { - ruby %{check_expansion.rb #{env_var} someval} - } - } - end - - def test_ruby_with_multiple_arguments - check_no_expansion - - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - replace_ruby { - ruby 'check_no_expansion.rb', env_var, 'someval' - } - } - end - - def test_split_all - assert_equal ['a'], Rake::FileUtilsExt.split_all('a') - assert_equal ['..'], Rake::FileUtilsExt.split_all('..') - assert_equal ['/'], Rake::FileUtilsExt.split_all('/') - assert_equal ['a', 'b'], Rake::FileUtilsExt.split_all('a/b') - assert_equal ['/', 'a', 'b'], Rake::FileUtilsExt.split_all('/a/b') - assert_equal ['..', 'a', 'b'], Rake::FileUtilsExt.split_all('../a/b') - end - - def command(name, text) - open name, 'w', 0750 do |io| - io << text - end - end - - def check_no_expansion - command 'check_no_expansion.rb', <<-CHECK_EXPANSION -if ARGV[0] != ARGV[1] - exit 0 -else - exit 1 -end - CHECK_EXPANSION - end - - def check_expansion - command 'check_expansion.rb', <<-CHECK_EXPANSION -if ARGV[0] != ARGV[1] - exit 1 -else - exit 0 -end - CHECK_EXPANSION - end - - def replace_ruby - ruby = FileUtils::RUBY - FileUtils.send :remove_const, :RUBY - FileUtils.const_set :RUBY, RUBY - yield - ensure - FileUtils.send :remove_const, :RUBY - FileUtils.const_set:RUBY, ruby - end - - def shellcommand - command 'shellcommand.rb', <<-SHELLCOMMAND -#!/usr/bin/env ruby - -exit((ARGV[0] || "0").to_i) - SHELLCOMMAND - end - - def env_var - windows? ? '%RAKE_TEST_SH%' : '$RAKE_TEST_SH' - end - - def windows? - ! File::ALT_SEPARATOR.nil? - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_ftp_file.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_ftp_file.rb deleted file mode 100644 index 5749b8a5..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_ftp_file.rb +++ /dev/null @@ -1,74 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'date' -require 'time' -require 'rake/contrib/ftptools' - -class FakeDate - def self.today - Date.new(2003, 10, 3) - end - - def self.now - Time.local(2003, 10, 3, 12, 00, 00) - end -end - -class TestRakeFtpFile < Rake::TestCase - - def setup - super - - Rake::FtpFile.class_eval { - @date_class = FakeDate - @time_class = FakeDate - } - end - - def test_general - file = Rake::FtpFile.new( - "here", - "-rw-r--r-- 1 a279376 develop 121770 Mar 6 14:50 wiki.pl") - assert_equal "wiki.pl", file.name - assert_equal "here/wiki.pl", file.path - assert_equal "a279376", file.owner - assert_equal "develop", file.group - assert_equal 0644, file.mode - assert_equal 121_770, file.size - assert_equal Time.mktime(2003, 3, 6, 14, 50, 0, 0), file.time - assert ! file.directory? - assert ! file.symlink? - end - - def test_far_date - file = Rake::FtpFile.new( - ".", - "drwxr-xr-x 3 a279376 develop 4096 Nov 26 2001 vss") - assert_equal Time.mktime(2001, 11, 26, 0, 0, 0, 0), file.time - end - - def test_close_date - file = Rake::FtpFile.new( - ".", - "drwxr-xr-x 3 a279376 develop 4096 Nov 26 15:35 vss") - assert_equal Time.mktime(2002, 11, 26, 15, 35, 0, 0), file.time - end - - def test_directory - file = Rake::FtpFile.new( - ".", - "drwxrwxr-x 9 a279376 develop 4096 Mar 13 14:32 working") - assert file.directory? - assert !file.symlink? - end - - def test_symlink - file = Rake::FtpFile.new( - ".", - "lrwxrwxrwx 1 a279376 develop 64 Mar 26 2002 " + - "xtrac -> /home/a279376/working/ics/development/java/" + - "com/fmr/fwp/ics/xtrac") - assert_equal 'xtrac', file.name - assert file.symlink? - assert !file.directory? - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_functional.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_functional.rb deleted file mode 100644 index bf7ba92f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_functional.rb +++ /dev/null @@ -1,482 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'open3' - -class TestRakeFunctional < Rake::TestCase - include RubyRunner - - def setup - super - - if @verbose - puts - puts - puts '-' * 80 - puts @__name__ - puts '-' * 80 - end - end - - def test_rake_default - rakefile_default - - rake - - assert_match(/^DEFAULT$/, @out) - end - - def test_rake_error_on_bad_task - rakefile_default - - rake '-t', 'xyz' - - assert_match(/rake aborted/, @err) - end - - def test_env_available_at_top_scope - rakefile_default - - rake "TESTTOPSCOPE=1" - - assert_match(/^TOPSCOPE$/, @out) - end - - def test_env_available_at_task_scope - rakefile_default - - rake 'TESTTASKSCOPE=1', 'task_scope' - - assert_match(/^TASKSCOPE$/, @out) - end - - def test_multi_desc - ENV['RAKE_COLUMNS'] = '80' - rakefile_multidesc - - rake "-T" - - assert_match %r{^rake a *# A / A2 *$}, @out - assert_match %r{^rake b *# B *$}, @out - refute_match %r{^rake c}, @out - assert_match %r{^rake d *# x{65}\.\.\.$}, @out - end - - def test_long_description - rakefile_multidesc - - rake "--describe" - - assert_match %r{^rake a\n *A\n *A2 *$}m, @out - assert_match %r{^rake b\n *B *$}m, @out - assert_match %r{^rake d\n *x{80}}m, @out - refute_match %r{^rake c\n}m, @out - end - - def test_proper_namespace_access - rakefile_access - - rake - - refute_match %r{^BAD:}, @out - end - - def test_rbext - rakefile_rbext - - rake "-N" - - assert_match %r{^OK$}, @out - end - - def test_system - rake_system_dir - - rake '-g', "sys1" - - assert_match %r{^SYS1}, @out - end - - def test_system_excludes_rakelib_files_too - rake_system_dir - - rake '-g', "sys1", '-T', 'extra' - - refute_match %r{extra:extra}, @out - end - - def test_by_default_rakelib_files_are_included - rake_system_dir - rakefile_extra - - rake '-T', 'extra', '--trace' - - assert_match %r{extra:extra}, @out - end - - def test_implicit_system - rake_system_dir - Dir.chdir @tempdir - - rake "sys1", "--trace" - - assert_match %r{^SYS1}, @out - end - - def test_no_system - rake_system_dir - rakefile_extra - - rake '-G', "sys1" - - assert_match %r{^Don't know how to build task}, @err # emacs wart: ' - end - - def test_nosearch_with_rakefile_uses_local_rakefile - rakefile_default - - rake "--nosearch" - - assert_match %r{^DEFAULT}, @out - end - - def test_nosearch_without_rakefile_finds_system - rakefile_nosearch - rake_system_dir - - rake "--nosearch", "sys1" - - assert_match %r{^SYS1}, @out - end - - def test_nosearch_without_rakefile_and_no_system_fails - rakefile_nosearch - ENV['RAKE_SYSTEM'] = 'not_exist' - - rake "--nosearch" - - assert_match %r{^No Rakefile found}, @err - end - - def test_invalid_command_line_options - rakefile_default - - rake "--bad-options" - - assert_match %r{invalid +option}i, @err - end - - def test_inline_verbose_default_should_show_command - rakefile_verbose - - rake "inline_verbose_default" - - assert_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_inline_verbose_true_should_show_command - rakefile_verbose - - rake "inline_verbose_true" - - assert_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_inline_verbose_false_should_not_show_command - rakefile_verbose - - rake "inline_verbose_false" - - refute_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_block_verbose_false_should_not_show_command - rakefile_verbose - - rake "block_verbose_false" - - refute_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_block_verbose_true_should_show_command - rakefile_verbose - - rake "block_verbose_true" - - assert_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_standalone_verbose_true_should_show_command - rakefile_verbose - - rake "standalone_verbose_true" - - assert_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_standalone_verbose_false_should_not_show_command - rakefile_verbose - - rake "standalone_verbose_false" - - refute_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_dry_run - rakefile_default - - rake "-n", "other" - - assert_match %r{Execute \(dry run\) default}, @err - assert_match %r{Execute \(dry run\) other}, @err - refute_match %r{DEFAULT}, @out - refute_match %r{OTHER}, @out - end - - # Test for the trace/dry_run bug found by Brian Chandler - def test_dry_run_bug - rakefile_dryrun - - rake - - FileUtils.rm_f 'temp_one' - - rake "--dry-run" - - refute_match(/No such file/, @out) - end - - # Test for the trace/dry_run bug found by Brian Chandler - def test_trace_bug - rakefile_dryrun - - rake - - FileUtils.rm_f 'temp_one' - - rake "--trace" - - refute_match(/No such file/, @out) - end - - def test_imports - rakefile_imports - - rake - - assert File.exist?(File.join(@tempdir, 'dynamic_deps')), - "'dynamic_deps' file should exist" - assert_match(/^FIRST$\s+^DYNAMIC$\s+^STATIC$\s+^OTHER$/, @out) - end - - def test_regenerate_imports - rakefile_regenerate_imports - - rake - - assert_match(/^INITIAL\s+^REGENERATED$/, @out) - end - - def test_rules_chaining_to_file_task - rakefile_chains - - rake - - assert File.exist?(File.join(@tempdir, 'play.app')), - "'play.app' file should exist" - end - - def test_file_creation_task - rakefile_file_creation - - rake "prep" - rake "run" - rake "run" - - assert(@err !~ /^cp src/, "Should not recopy data") - end - - def test_dash_f_with_no_arg_foils_rakefile_lookup - rakefile_rakelib - - rake '-I', 'rakelib', '-rtest1', '-f' - - assert_match(/^TEST1$/, @out) - end - - def test_dot_rake_files_can_be_loaded_with_dash_r - rakefile_rakelib - - rake '-I', 'rakelib', '-rtest2', '-f' - - assert_empty @err - assert_match(/^TEST2$/, @out) - end - - def test_can_invoke_task_in_toplevel_namespace - rakefile_namespace - - rake "copy" - - assert_match(/^COPY$/, @out) - end - - def test_can_invoke_task_in_nested_namespace - rakefile_namespace - - rake "nest:copy" - - assert_match(/^NEST COPY$/, @out) - end - - def test_tasks_can_reference_task_in_same_namespace - rakefile_namespace - - rake "nest:xx" - - assert_match(/^NEST COPY$/m, @out) - end - - def test_tasks_can_reference_task_in_other_namespaces - rakefile_namespace - - rake "b:run" - - assert_match(/^IN A\nIN B$/m, @out) - end - - def test_anonymous_tasks_can_be_invoked_indirectly - rakefile_namespace - - rake "anon" - - assert_match(/^ANON COPY$/m, @out) - end - - def test_rake_namespace_refers_to_toplevel - rakefile_namespace - - rake "very:nested:run" - - assert_match(/^COPY$/m, @out) - end - - def test_file_task_are_not_scoped_by_namespaces - rakefile_namespace - - rake "xyz.rb" - - assert_match(/^XYZ1\nXYZ2$/m, @out) - end - - def test_file_task_dependencies_scoped_by_namespaces - rakefile_namespace - - rake "scopedep.rb" - - assert_match(/^PREPARE\nSCOPEDEP$/m, @out) - end - - def test_test_task_descriptions - rakefile_test_task - - rake "-T" - - assert_match(/custom test task description/, @out) - end - - def test_comment_before_task_acts_like_desc - rakefile_comments - - rake "-T" - - refute_match(/comment for t1/, @out) - end - - def test_comment_separated_from_task_by_blank_line_is_not_picked_up - rakefile_comments - - rake "-T" - - refute_match("t2", @out) - end - - def test_comment_after_desc_is_ignored - rakefile_comments - - rake "-T" - - assert_match("override comment for t3", @out) - end - - def test_comment_before_desc_is_ignored - rakefile_comments - - rake "-T" - - assert_match("override comment for t4", @out) - end - - def test_correct_number_of_tasks_reported - rakefile_comments - - rake "-T" - - assert_equal(2, @out.split(/\n/).grep(/t\d/).size) - end - - def test_file_list_is_requirable_separately - ruby '-rrake/file_list', '-e', 'puts Rake::FileList["a"].size' - assert_equal "1\n", @out - end - - def can_detect_signals? - system RUBY, '-e', 'Process.kill "TERM", $$' - status = $? - if @verbose - puts " SIG status = #{$?.inspect}" - puts " SIG status.respond_to?(:signaled?) = " + - "#{$?.respond_to?(:signaled?).inspect}" - puts " SIG status.signaled? = #{status.signaled?}" if - status.respond_to?(:signaled?) - end - status.respond_to?(:signaled?) && status.signaled? - end - - def test_signal_propagation_in_tests - if can_detect_signals? - rakefile_test_signal - rake - assert_match(/ATEST/, @out) - refute_match(/BTEST/, @out) - else - skip "Signal detect seems broken on this system" - end - end - - def test_failing_test_sets_exit_status - skip if uncertain_exit_status? - rakefile_failing_test_task - rake - assert @exit.exitstatus > 0, "should be non-zero" - end - - def test_stand_alone_filelist - rakefile_stand_alone_filelist - - run_ruby @ruby_options + ["stand_alone_filelist.rb"] - - assert_match(/^stand_alone_filelist\.rb$/, @out) - assert_equal 0, @exit.exitstatus unless uncertain_exit_status? - end - - private - - # We are unable to accurately verify that Rake returns a proper - # error exit status using popen3 in Ruby 1.8.7 and JRuby. This - # predicate function can be used to skip tests or assertions as - # needed. - def uncertain_exit_status? - RUBY_VERSION < "1.9" || defined?(JRUBY_VERSION) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_invocation_chain.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_invocation_chain.rb deleted file mode 100644 index 0176339b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_invocation_chain.rb +++ /dev/null @@ -1,64 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeInvocationChain < Rake::TestCase - include Rake - - def setup - super - - @empty = InvocationChain.empty - - @first_member = "A" - @second_member = "B" - @one = @empty.append(@first_member) - @two = @one.append(@second_member) - end - - def test_conj_on_invocation_chains - list = InvocationChain.empty.conj("B").conj("A") - assert_equal InvocationChain.make("A", "B"), list - assert_equal InvocationChain, list.class - end - - def test_make_on_invocation_chains - assert_equal @empty, InvocationChain.make() - assert_equal @one, InvocationChain.make(@first_member) - assert_equal @two, InvocationChain.make(@second_member, @first_member) - end - - def test_append_with_one_argument - chain = @empty.append("A") - - assert_equal 'TOP => A', chain.to_s # HACK - end - - def test_append_one_circular - ex = assert_raises RuntimeError do - @one.append(@first_member) - end - assert_match(/circular +dependency/i, ex.message) - assert_match(/A.*=>.*A/, ex.message) - end - - def test_append_two_circular - ex = assert_raises RuntimeError do - @two.append(@first_member) - end - assert_match(/A.*=>.*B.*=>.*A/, ex.message) - end - - def test_member_eh_one - assert @one.member?(@first_member) - end - - def test_member_eh_two - assert @two.member?(@first_member) - assert @two.member?(@second_member) - end - - def test_to_s_empty - assert_equal "TOP", @empty.to_s - assert_equal "TOP => A", @one.to_s - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_late_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_late_time.rb deleted file mode 100644 index 4b910a70..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_late_time.rb +++ /dev/null @@ -1,18 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeLateTime < Rake::TestCase - def test_late_time_comparisons - late = Rake::LATE - assert_equal late, late - assert late >= Time.now - assert late > Time.now - assert late != Time.now - assert Time.now < late - assert Time.now <= late - assert Time.now != late - end - - def test_to_s - assert_equal '', Rake::LATE.to_s - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_linked_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_linked_list.rb deleted file mode 100644 index 32d73062..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_linked_list.rb +++ /dev/null @@ -1,84 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestLinkedList < Rake::TestCase - include Rake - - def test_empty_list - empty = LinkedList::EMPTY - assert empty.empty?, "should be empty" - end - - def test_list_with_one_item - list = LinkedList.make(:one) - assert ! list.empty?, "should not be empty" - assert_equal :one, list.head - assert_equal LinkedList::EMPTY, list.tail - end - - def test_make_with_no_arguments - empty = LinkedList.make() - assert_equal LinkedList::EMPTY, empty - end - - def test_make_with_one_argument - list = LinkedList.make(:one) - assert ! list.empty? - assert_equal :one, list.head - assert_equal LinkedList::EMPTY, list.tail - end - - def test_make_with_two_arguments - list = LinkedList.make(:one, :two) - assert ! list.empty? - assert_equal :one, list.head - assert_equal :two, list.tail.head - assert_equal LinkedList::EMPTY, list.tail.tail - end - - def test_list_with_several_items - list = LinkedList.make(:one, :two, :three) - - assert ! list.empty?, "should not be empty" - assert_equal :one, list.head - assert_equal :two, list.tail.head - assert_equal :three, list.tail.tail.head - assert_equal LinkedList::EMPTY, list.tail.tail.tail - end - - def test_lists_are_structurally_equivalent - list = LinkedList.make(1, 2, 3) - same = LinkedList.make(1, 2, 3) - diff = LinkedList.make(1, 2, 4) - short = LinkedList.make(1, 2) - - assert_equal list, same - refute_equal list, diff - refute_equal list, short - refute_equal short, list - end - - def test_conversion_to_string - list = LinkedList.make(:one, :two, :three) - assert_equal "LL(one, two, three)", list.to_s - assert_equal "LL()", LinkedList.make().to_s - end - - def test_conversion_with_inspect - list = LinkedList.make(:one, :two, :three) - assert_equal "LL(:one, :two, :three)", list.inspect - assert_equal "LL()", LinkedList.make().inspect - end - - def test_lists_are_enumerable - list = LinkedList.make(1, 2, 3) - new_list = list.map { |item| item + 10 } - expected = [11, 12, 13] - assert_equal expected, new_list - end - - def test_conjunction - list = LinkedList.make.conj("C").conj("B").conj("A") - assert_equal LinkedList.make("A", "B", "C"), list - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_makefile_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_makefile_loader.rb deleted file mode 100644 index 9e9265ad..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_makefile_loader.rb +++ /dev/null @@ -1,46 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/loaders/makefile' - -class TestRakeMakefileLoader < Rake::TestCase - include Rake - - def test_parse - Dir.chdir @tempdir - - open 'sample.mf', 'w' do |io| - io << <<-'SAMPLE_MF' -# Comments -a: a1 a2 a3 a4 -b: b1 b2 b3 \ - b4 b5 b6\ -# Mid: Comment -b7 - - a : a5 a6 a7 -c: c1 -d: d1 d2 \ - -e f : e1 f1 - -g\ 0: g1 g\ 2 g\ 3 g4 - SAMPLE_MF - end - - Task.clear - loader = Rake::MakefileLoader.new - loader.load 'sample.mf' - %w(a b c d).each do |t| - assert Task.task_defined?(t), "#{t} should be a defined task" - end - assert_equal %w(a1 a2 a3 a4 a5 a6 a7).sort, Task['a'].prerequisites.sort - assert_equal %w(b1 b2 b3 b4 b5 b6 b7).sort, Task['b'].prerequisites.sort - assert_equal %w(c1).sort, Task['c'].prerequisites.sort - assert_equal %w(d1 d2).sort, Task['d'].prerequisites.sort - assert_equal %w(e1 f1).sort, Task['e'].prerequisites.sort - assert_equal %w(e1 f1).sort, Task['f'].prerequisites.sort - assert_equal( - ["g1", "g 2", "g 3", "g4"].sort, - Task['g 0'].prerequisites.sort) - assert_equal 7, Task.tasks.size - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_multi_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_multi_task.rb deleted file mode 100644 index 9f8fed6d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_multi_task.rb +++ /dev/null @@ -1,64 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'thread' - -class TestRakeMultiTask < Rake::TestCase - include Rake - include Rake::DSL - - def setup - super - - Task.clear - @runs = Array.new - @mutex = Mutex.new - end - - def teardown - Rake.application.thread_pool.join - - super - end - - def add_run(obj) - @mutex.synchronize do - @runs << obj - end - end - - def test_running_multitasks - task :a do 3.times do |i| add_run("A#{i}"); sleep 0.01; end end - task :b do 3.times do |i| add_run("B#{i}"); sleep 0.01; end end - multitask :both => [:a, :b] - Task[:both].invoke - assert_equal 6, @runs.size - assert @runs.index("A0") < @runs.index("A1") - assert @runs.index("A1") < @runs.index("A2") - assert @runs.index("B0") < @runs.index("B1") - assert @runs.index("B1") < @runs.index("B2") - end - - def test_all_multitasks_wait_on_slow_prerequisites - task :slow do 3.times do |i| add_run("S#{i}"); sleep 0.05 end end - task :a => [:slow] do 3.times do |i| add_run("A#{i}"); sleep 0.01 end end - task :b => [:slow] do 3.times do |i| add_run("B#{i}"); sleep 0.01 end end - multitask :both => [:a, :b] - Task[:both].invoke - assert_equal 9, @runs.size - assert @runs.index("S0") < @runs.index("S1") - assert @runs.index("S1") < @runs.index("S2") - assert @runs.index("S2") < @runs.index("A0") - assert @runs.index("S2") < @runs.index("B0") - assert @runs.index("A0") < @runs.index("A1") - assert @runs.index("A1") < @runs.index("A2") - assert @runs.index("B0") < @runs.index("B1") - assert @runs.index("B1") < @runs.index("B2") - end - - def test_multitasks_with_parameters - task :a, [:arg] do |t, args| add_run(args[:arg]) end - multitask :b, [:arg] => [:a] do |t, args| add_run(args[:arg] + 'mt') end - Task[:b].invoke "b" - assert @runs[0] == "b" - assert @runs[1] == "bmt" - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_name_space.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_name_space.rb deleted file mode 100644 index d35e70e1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_name_space.rb +++ /dev/null @@ -1,57 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeNameSpace < Rake::TestCase - - class TM - include Rake::TaskManager - end - - def test_namespace_creation - mgr = TM.new - ns = Rake::NameSpace.new(mgr, []) - refute_nil ns - end - - def test_namespace_lookup - mgr = TM.new - ns = mgr.in_namespace("n") do - mgr.define_task(Rake::Task, "t") - end - - refute_nil ns["t"] - assert_equal mgr["n:t"], ns["t"] - end - - def test_namespace_reports_tasks_it_owns - mgr = TM.new - nns = nil - ns = mgr.in_namespace("n") do - mgr.define_task(Rake::Task, :x) - mgr.define_task(Rake::Task, :y) - nns = mgr.in_namespace("nn") do - mgr.define_task(Rake::Task, :z) - end - end - mgr.in_namespace("m") do - mgr.define_task(Rake::Task, :x) - end - - assert_equal ["n:nn:z", "n:x", "n:y"], - ns.tasks.map { |tsk| tsk.name } - assert_equal ["n:nn:z"], nns.tasks.map { |t| t.name } - end - - def test_scope - mgr = TM.new - - scope = Rake::LinkedList.new 'b' - scope = scope.conj 'a' - - ns = Rake::NameSpace.new mgr, scope - - assert_equal scope, ns.scope - - refute_same scope, ns.scope - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_package_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_package_task.rb deleted file mode 100644 index 87cb57c1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_package_task.rb +++ /dev/null @@ -1,79 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/packagetask' - -class TestRakePackageTask < Rake::TestCase - - def test_initialize - touch 'install.rb' - touch 'a.c' - touch 'b.c' - mkdir 'CVS' - touch 'a.rb~' - - pkg = Rake::PackageTask.new("pkgr", "1.2.3") { |p| - p.package_files << "install.rb" - p.package_files.include '*.c' - p.package_files.exclude(/\bCVS\b/) - p.package_files.exclude(/~$/) - p.package_dir = 'pkg' - p.need_tar = true - p.need_tar_gz = true - p.need_tar_bz2 = true - p.need_zip = true - } - - assert_equal "pkg", pkg.package_dir - - assert_includes pkg.package_files, 'a.c' - - assert_equal 'pkgr', pkg.name - assert_equal '1.2.3', pkg.version - assert Rake::Task[:package] - assert Rake::Task['pkg/pkgr-1.2.3.tgz'] - assert Rake::Task['pkg/pkgr-1.2.3.tar.gz'] - assert Rake::Task['pkg/pkgr-1.2.3.tar.bz2'] - assert Rake::Task['pkg/pkgr-1.2.3.zip'] - assert Rake::Task['pkg/pkgr-1.2.3'] - assert Rake::Task[:clobber_package] - assert Rake::Task[:repackage] - end - - def test_initialize_no_version - e = assert_raises RuntimeError do - Rake::PackageTask.new 'pkgr' - end - - assert_equal 'Version required (or :noversion)', e.message - end - - def test_initialize_noversion - pkg = Rake::PackageTask.new 'pkgr', :noversion - - assert_equal 'pkg', pkg.package_dir - assert_equal 'pkgr', pkg.name - assert_equal nil, pkg.version - end - - def test_clone - pkg = Rake::PackageTask.new("x", :noversion) - p2 = pkg.clone - pkg.package_files << "y" - p2.package_files << "x" - assert_equal ["y"], pkg.package_files - assert_equal ["x"], p2.package_files - end - - def test_package_name - pkg = Rake::PackageTask.new 'a', '1' - - assert_equal 'a-1', pkg.package_name - end - - def test_package_name_noversion - pkg = Rake::PackageTask.new 'a', :noversion - - assert_equal 'a', pkg.package_name - end - -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_path_map.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_path_map.rb deleted file mode 100644 index 98e8df06..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_path_map.rb +++ /dev/null @@ -1,168 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakePathMap < Rake::TestCase - - def test_returns_self_with_no_args - assert_equal "abc.rb", "abc.rb".pathmap - end - - def test_s_returns_file_separator - sep = File::ALT_SEPARATOR || File::SEPARATOR - assert_equal sep, "abc.rb".pathmap("%s") - assert_equal sep, "".pathmap("%s") - assert_equal "a#{sep}b", "a/b".pathmap("%d%s%f") - end - - def test_f_returns_basename - assert_equal "abc.rb", "abc.rb".pathmap("%f") - assert_equal "abc.rb", "this/is/a/dir/abc.rb".pathmap("%f") - assert_equal "abc.rb", "/this/is/a/dir/abc.rb".pathmap("%f") - end - - def test_n_returns_basename_without_extension - assert_equal "abc", "abc.rb".pathmap("%n") - assert_equal "abc", "abc".pathmap("%n") - assert_equal "abc", "this/is/a/dir/abc.rb".pathmap("%n") - assert_equal "abc", "/this/is/a/dir/abc.rb".pathmap("%n") - assert_equal "abc", "/this/is/a/dir/abc".pathmap("%n") - end - - def test_d_returns_dirname - assert_equal ".", "abc.rb".pathmap("%d") - assert_equal "/", "/abc".pathmap("%d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%d") - assert_equal "/this/is/a/dir", "/this/is/a/dir/abc.rb".pathmap("%d") - end - - def test_9d_returns_partial_dirname - assert_equal "this/is", "this/is/a/dir/abc.rb".pathmap("%2d") - assert_equal "this", "this/is/a/dir/abc.rb".pathmap("%1d") - assert_equal ".", "this/is/a/dir/abc.rb".pathmap("%0d") - assert_equal "dir", "this/is/a/dir/abc.rb".pathmap("%-1d") - assert_equal "a/dir", "this/is/a/dir/abc.rb".pathmap("%-2d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%100d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%-100d") - end - - def test_x_returns_extension - assert_equal "", "abc".pathmap("%x") - assert_equal ".rb", "abc.rb".pathmap("%x") - assert_equal ".rb", "abc.xyz.rb".pathmap("%x") - assert_equal "", ".depends".pathmap("%x") - assert_equal "", "dir/.depends".pathmap("%x") - end - - def test_x_returns_everything_but_extension - assert_equal "abc", "abc".pathmap("%X") - assert_equal "abc", "abc.rb".pathmap("%X") - assert_equal "abc.xyz", "abc.xyz.rb".pathmap("%X") - assert_equal "ab.xyz", "ab.xyz.rb".pathmap("%X") - assert_equal "a.xyz", "a.xyz.rb".pathmap("%X") - assert_equal "abc", "abc.rb".pathmap("%X") - assert_equal "ab", "ab.rb".pathmap("%X") - assert_equal "a", "a.rb".pathmap("%X") - assert_equal ".depends", ".depends".pathmap("%X") - assert_equal "a/dir/.depends", "a/dir/.depends".pathmap("%X") - assert_equal "/.depends", "/.depends".pathmap("%X") - end - - def test_p_returns_entire_pathname - assert_equal "abc.rb", "abc.rb".pathmap("%p") - assert_equal "this/is/a/dir/abc.rb", "this/is/a/dir/abc.rb".pathmap("%p") - assert_equal "/this/is/a/dir/abc.rb", "/this/is/a/dir/abc.rb".pathmap("%p") - end - - def test_dash_returns_empty_string - assert_equal "", "abc.rb".pathmap("%-") - assert_equal "abc.rb", "abc.rb".pathmap("%X%-%x") - end - - def test_percent_percent_returns_percent - assert_equal "a%b", "".pathmap("a%%b") - end - - def test_undefined_percent_causes_error - assert_raises(ArgumentError) { - "dir/abc.rb".pathmap("%z") - } - end - - def test_pattern_returns_substitutions - assert_equal "bin/org/osb", - "src/org/osb/Xyz.java".pathmap("%{src,bin}d") - end - - def test_pattern_can_use_backreferences - assert_equal "dir/hi/is", "dir/this/is".pathmap("%{t(hi)s,\\1}p") - end - - def test_pattern_with_star_replacement_string_uses_block - assert_equal "src/ORG/osb", - "src/org/osb/Xyz.java".pathmap("%{/org,*}d") { |d| d.upcase } - assert_equal "Xyz.java", - "src/org/osb/Xyz.java".pathmap("%{.*,*}f") { |f| f.capitalize } - end - - def test_pattern_with_no_replacement_nor_block_substitutes_empty_string - assert_equal "bc.rb", "abc.rb".pathmap("%{a}f") - end - - def test_pattern_works_with_certain_valid_operators - assert_equal "dir/xbc.rb", "dir/abc.rb".pathmap("%{a,x}p") - assert_equal "d1r", "dir/abc.rb".pathmap("%{i,1}d") - assert_equal "xbc.rb", "dir/abc.rb".pathmap("%{a,x}f") - assert_equal ".Rb", "dir/abc.rb".pathmap("%{r,R}x") - assert_equal "xbc", "dir/abc.rb".pathmap("%{a,x}n") - end - - def test_multiple_patterns - assert_equal "this/is/b/directory/abc.rb", - "this/is/a/dir/abc.rb".pathmap("%{a,b;dir,\\0ectory}p") - end - - def test_partial_directory_selection_works_with_patterns - assert_equal "this/is/a/long", - "this/is/a/really/long/path/ok.rb".pathmap("%{/really/,/}5d") - end - - def test_pattern_with_invalid_operator - ex = assert_raises(ArgumentError) do - "abc.xyz".pathmap("%{src,bin}z") - end - assert_match(/unknown.*pathmap.*spec.*z/i, ex.message) - end - - def test_works_with_windows_separators - if File::ALT_SEPARATOR - assert_equal "abc", 'dir\abc.rb'.pathmap("%n") - assert_equal 'this\is\a\dir', - 'this\is\a\dir\abc.rb'.pathmap("%d") - end - end - - def test_complex_patterns - sep = "".pathmap("%s") - assert_equal( - "dir/abc.rb", - "dir/abc.rb".pathmap("%d/%n%x")) - assert_equal( - "./abc.rb", - "abc.rb".pathmap("%d/%n%x")) - assert_equal( - "Your file extension is '.rb'", - "dir/abc.rb".pathmap("Your file extension is '%x'")) - assert_equal( - "bin/org/onestepback/proj/A.class", - "src/org/onestepback/proj/A.java".pathmap("%{src,bin}d/%n.class")) - assert_equal( - "src_work/bin/org/onestepback/proj/A.class", - "src_work/src/org/onestepback/proj/A.java". - pathmap('%{\bsrc\b,bin}X.class')) - assert_equal( - ".depends.bak", - ".depends".pathmap("%X.bak")) - assert_equal( - "d#{sep}a/b/c#{sep}file.txt", - "a/b/c/d/file.txt".pathmap("%-1d%s%3d%s%f")) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_path_map_explode.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_path_map_explode.rb deleted file mode 100644 index a79235ee..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_path_map_explode.rb +++ /dev/null @@ -1,34 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakePathMapExplode < Rake::TestCase - def setup - super - - String.class_eval { public :pathmap_explode } - end - - def teardown - String.class_eval { protected :pathmap_explode } - - super - end - - def test_explode - assert_equal ['a'], 'a'.pathmap_explode - assert_equal ['a', 'b'], 'a/b'.pathmap_explode - assert_equal ['a', 'b', 'c'], 'a/b/c'.pathmap_explode - assert_equal ['/', 'a'], '/a'.pathmap_explode - assert_equal ['/', 'a', 'b'], '/a/b'.pathmap_explode - assert_equal ['/', 'a', 'b', 'c'], '/a/b/c'.pathmap_explode - - if File::ALT_SEPARATOR - assert_equal ['c:.', 'a'], 'c:a'.pathmap_explode - assert_equal ['c:.', 'a', 'b'], 'c:a/b'.pathmap_explode - assert_equal ['c:.', 'a', 'b', 'c'], 'c:a/b/c'.pathmap_explode - assert_equal ['c:/', 'a'], 'c:/a'.pathmap_explode - assert_equal ['c:/', 'a', 'b'], 'c:/a/b'.pathmap_explode - assert_equal ['c:/', 'a', 'b', 'c'], 'c:/a/b/c'.pathmap_explode - end - end -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_path_map_partial.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_path_map_partial.rb deleted file mode 100644 index 566e681b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_path_map_partial.rb +++ /dev/null @@ -1,18 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakePathMapPartial < Rake::TestCase - def test_pathmap_partial - @path = "1/2/file" - def @path.call(n) - pathmap_partial(n) - end - assert_equal("1", @path.call(1)) - assert_equal("1/2", @path.call(2)) - assert_equal("1/2", @path.call(3)) - assert_equal(".", @path.call(0)) - assert_equal("2", @path.call(-1)) - assert_equal("1/2", @path.call(-2)) - assert_equal("1/2", @path.call(-3)) - end -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb deleted file mode 100644 index 7da702d0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb +++ /dev/null @@ -1,15 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/ext/pathname' - -class TestRakePathnameExtensions < Rake::TestCase - def test_ext_works_on_pathnames - pathname = Pathname.new("abc.foo") - assert_equal Pathname.new("abc.bar"), pathname.ext("bar") - end - - def test_path_map_works_on_pathnames - pathname = Pathname.new("this/is/a/dir/abc.rb") - assert_equal Pathname.new("abc.rb"), pathname.pathmap("%f") - assert_equal Pathname.new("this/is/a/dir"), pathname.pathmap("%d") - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_pseudo_status.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_pseudo_status.rb deleted file mode 100644 index 51b3fef3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_pseudo_status.rb +++ /dev/null @@ -1,21 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakePseudoStatus < Rake::TestCase - def test_with_zero_exit_status - s = Rake::PseudoStatus.new - assert_equal 0, s.exitstatus - assert_equal 0, s.to_i - assert_equal 0, s >> 8 - refute s.stopped? - assert s.exited? - end - - def test_with_99_exit_status - s = Rake::PseudoStatus.new(99) - assert_equal 99, s.exitstatus - assert_equal 25344, s.to_i - assert_equal 99, s >> 8 - refute s.stopped? - assert s.exited? - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb deleted file mode 100644 index 0485c4c8..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb +++ /dev/null @@ -1,20 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeRakeTestLoader < Rake::TestCase - - def test_pattern - orig_loaded_features = $:.dup - FileUtils.touch 'foo.rb' - FileUtils.touch 'test_a.rb' - FileUtils.touch 'test_b.rb' - - ARGV.replace %w[foo.rb test_*.rb -v] - - load File.join(@rake_lib, 'rake/rake_test_loader.rb') - - assert_equal %w[-v], ARGV - ensure - $:.replace orig_loaded_features - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_reduce_compat.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_reduce_compat.rb deleted file mode 100644 index d2952665..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_reduce_compat.rb +++ /dev/null @@ -1,26 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'open3' - -class TestRakeReduceCompat < Rake::TestCase - include RubyRunner - - def invoke_normal(task_name) - rake task_name.to_s - @out - end - - def test_no_deprecated_dsl - rakefile %q{ - task :check_task do - Module.new { p defined?(task) } - end - - task :check_file do - Module.new { p defined?(file) } - end - } - - assert_equal "nil", invoke_normal(:check_task).chomp - assert_equal "nil", invoke_normal(:check_file).chomp - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_require.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_require.rb deleted file mode 100644 index d229edbc..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_require.rb +++ /dev/null @@ -1,40 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeRequire < Rake::TestCase - - def test_can_load_rake_library - rakefile_rakelib - app = Rake::Application.new - - assert app.instance_eval { - rake_require("test2", ['rakelib'], []) - } - end - - def test_wont_reload_rake_library - rakefile_rakelib - app = Rake::Application.new - - paths = ['rakelib'] - loaded_files = [] - app.rake_require("test2", paths, loaded_files) - - assert ! app.instance_eval { - rake_require("test2", paths, loaded_files) - } - end - - def test_throws_error_if_library_not_found - rakefile_rakelib - - app = Rake::Application.new - ex = assert_raises(LoadError) { - assert app.instance_eval { - rake_require("testx", ['rakelib'], []) - } - } - assert_match(/(can *not|can't)\s+find/i, ex.message) - assert_match(/testx/, ex.message) - end -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_rules.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_rules.rb deleted file mode 100644 index ece75e5d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_rules.rb +++ /dev/null @@ -1,388 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' - -class TestRakeRules < Rake::TestCase - include Rake - - SRCFILE = "abc.c" - SRCFILE2 = "xyz.c" - FTNFILE = "abc.f" - OBJFILE = "abc.o" - FOOFILE = "foo" - DOTFOOFILE = ".foo" - - def setup - super - - Task.clear - @runs = [] - end - - def test_multiple_rules1 - create_file(FTNFILE) - delete_file(SRCFILE) - delete_file(OBJFILE) - rule(/\.o$/ => ['.c']) do @runs << :C end - rule(/\.o$/ => ['.f']) do @runs << :F end - t = Task[OBJFILE] - t.invoke - Task[OBJFILE].invoke - assert_equal [:F], @runs - end - - def test_multiple_rules2 - create_file(FTNFILE) - delete_file(SRCFILE) - delete_file(OBJFILE) - rule(/\.o$/ => ['.f']) do @runs << :F end - rule(/\.o$/ => ['.c']) do @runs << :C end - Task[OBJFILE].invoke - assert_equal [:F], @runs - end - - def test_create_with_source - create_file(SRCFILE) - rule(/\.o$/ => ['.c']) do |t| - @runs << t.name - assert_equal OBJFILE, t.name - assert_equal SRCFILE, t.source - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_single_dependent - create_file(SRCFILE) - rule(/\.o$/ => '.c') do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_rule_can_be_created_by_string - create_file(SRCFILE) - rule '.o' => ['.c'] do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_rule_prereqs_can_be_created_by_string - create_file(SRCFILE) - rule '.o' => '.c' do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_plain_strings_as_dependents_refer_to_files - create_file(SRCFILE) - rule '.o' => SRCFILE do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_file_names_beginning_with_dot_can_be_tricked_into_referring_to_file - verbose(false) do - create_file('.foo') - rule '.o' => "./.foo" do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - end - - def test_file_names_beginning_with_dot_can_be_wrapped_in_lambda - verbose(false) do - - create_file(".foo") - rule '.o' => lambda { ".foo" } do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - .foo"], @runs - end - end - - def test_file_names_containing_percent_can_be_wrapped_in_lambda - verbose(false) do - create_file("foo%x") - rule '.o' => lambda { "foo%x" } do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - foo%x"], @runs - end - end - - def test_non_extension_rule_name_refers_to_file - verbose(false) do - create_file("abc.c") - rule "abc" => '.c' do |t| - @runs << t.name - end - Task["abc"].invoke - assert_equal ["abc"], @runs - end - end - - def test_pathmap_automatically_applies_to_name - verbose(false) do - create_file("zzabc.c") - rule ".o" => 'zz%{x,a}n.c' do |t| - @runs << "#{t.name} - #{t.source}" - end - Task["xbc.o"].invoke - assert_equal ["xbc.o - zzabc.c"], @runs - end - end - - def test_plain_strings_are_just_filenames - verbose(false) do - create_file("plainname") - rule ".o" => 'plainname' do |t| - @runs << "#{t.name} - #{t.source}" - end - Task["xbc.o"].invoke - assert_equal ["xbc.o - plainname"], @runs - end - end - - def test_rule_runs_when_explicit_task_has_no_actions - create_file(SRCFILE) - create_file(SRCFILE2) - delete_file(OBJFILE) - rule '.o' => '.c' do |t| - @runs << t.source - end - file OBJFILE => [SRCFILE2] - Task[OBJFILE].invoke - assert_equal [SRCFILE], @runs - end - - def test_close_matches_on_name_do_not_trigger_rule - create_file("x.c") - rule '.o' => ['.c'] do |t| - @runs << t.name - end - assert_raises(RuntimeError) { Task['x.obj'].invoke } - assert_raises(RuntimeError) { Task['x.xyo'].invoke } - end - - def test_rule_rebuilds_obj_when_source_is_newer - create_timed_files(OBJFILE, SRCFILE) - rule(/\.o$/ => ['.c']) do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [:RULE], @runs - end - - def test_rule_with_two_sources_runs_if_both_sources_are_present - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [:RULE], @runs - end - - def test_rule_with_two_sources_but_one_missing_does_not_run - create_timed_files(OBJFILE, SRCFILE) - delete_file(SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [], @runs - end - - def test_rule_with_two_sources_builds_both_sources - task 'x.aa' - task 'x.bb' - rule '.a' => '.aa' do - @runs << "A" - end - rule '.b' => '.bb' do - @runs << "B" - end - rule ".c" => ['.a', '.b'] do - @runs << "C" - end - Task["x.c"].invoke - assert_equal ["A", "B", "C"], @runs.sort - end - - def test_second_rule_runs_when_first_rule_doesnt - create_timed_files(OBJFILE, SRCFILE) - delete_file(SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE1 - end - rule OBJFILE => [lambda { SRCFILE }] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE2], @runs - end - - def test_second_rule_doest_run_if_first_triggers - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE1 - end - rule OBJFILE => [lambda { SRCFILE }] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE1], @runs - end - - def test_second_rule_doest_run_if_first_triggers_with_reversed_rules - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }] do - @runs << :RULE1 - end - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE1], @runs - end - - def test_rule_with_proc_dependent_will_trigger - mkdir_p("src/jw") - create_file("src/jw/X.java") - rule %r(classes/.*\.class) => [ - proc { |fn| fn.pathmap("%{classes,src}d/%n.java") } - ] do |task| - assert_equal task.name, 'classes/jw/X.class' - assert_equal task.source, 'src/jw/X.java' - @runs << :RULE - end - Task['classes/jw/X.class'].invoke - assert_equal [:RULE], @runs - ensure - rm_r("src", :verbose=>false) rescue nil - end - - def test_proc_returning_lists_are_flattened_into_prereqs - ran = false - mkdir_p("flatten") - create_file("flatten/a.txt") - task 'flatten/b.data' do |t| - ran = true - touch t.name, :verbose => false - end - rule '.html' => - proc { |fn| - [ - fn.ext("txt"), - "flatten/b.data" - ] - } do |task| - end - Task['flatten/a.html'].invoke - assert ran, "Should have triggered flattened dependency" - ensure - rm_r("flatten", :verbose=>false) rescue nil - end - - def test_recursive_rules_will_work_as_long_as_they_terminate - actions = [] - create_file("abc.xml") - rule '.y' => '.xml' do actions << 'y' end - rule '.c' => '.y' do actions << 'c'end - rule '.o' => '.c' do actions << 'o'end - rule '.exe' => '.o' do actions << 'exe'end - Task["abc.exe"].invoke - assert_equal ['y', 'c', 'o', 'exe'], actions - end - - def test_recursive_rules_that_dont_terminate_will_overflow - create_file("a.a") - prev = 'a' - ('b'..'z').each do |letter| - rule ".#{letter}" => ".#{prev}" do |t| puts "#{t.name}" end - prev = letter - end - ex = assert_raises(Rake::RuleRecursionOverflowError) { - Task["a.z"].invoke - } - assert_match(/a\.z => a.y/, ex.message) - end - - def test_rules_with_bad_dependents_will_fail - rule "a" => [1] do |t| puts t.name end - assert_raises(RuntimeError) do Task['a'].invoke end - end - - def test_string_rule_with_args - delete_file(OBJFILE) - create_file(SRCFILE) - rule '.o', [:a] => SRCFILE do |t, args| - assert_equal 'arg', args.a - end - Task[OBJFILE].invoke('arg') - end - - def test_regex_rule_with_args - delete_file(OBJFILE) - create_file(SRCFILE) - rule(/.o$/, [:a] => SRCFILE) do |t, args| - assert_equal 'arg', args.a - end - Task[OBJFILE].invoke('arg') - end - - def test_string_rule_with_args_and_lambda_prereq - delete_file(OBJFILE) - create_file(SRCFILE) - rule '.o', [:a] => [lambda{SRCFILE}]do |t, args| - assert_equal 'arg', args.a - end - Task[OBJFILE].invoke('arg') - end - - def test_regex_rule_with_args_and_lambda_prereq - delete_file(OBJFILE) - create_file(SRCFILE) - rule(/.o$/, [:a] => [lambda{SRCFILE}]) do |t, args| - assert_equal 'arg', args.a - end - Task[OBJFILE].invoke('arg') - end - - def test_rule_with_method_prereq - create_file(".foo") - obj = Object.new - def obj.find_prereq - ".foo" - end - rule '.o' => obj.method(:find_prereq) do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - .foo"], @runs - end - - def test_rule_with_one_arg_method_prereq - create_file(SRCFILE) - obj = Object.new - def obj.find_prereq(task_name) - task_name.ext(".c") - end - rule '.o' => obj.method(:find_prereq) do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - abc.c"], @runs - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_scope.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_scope.rb deleted file mode 100644 index ef06618b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_scope.rb +++ /dev/null @@ -1,44 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeScope < Rake::TestCase - include Rake - - def test_path_against_empty_scope - scope = Scope.make - assert_equal scope, Scope::EMPTY - assert_equal scope.path, "" - end - - def test_path_against_one_element - scope = Scope.make(:one) - assert_equal "one", scope.path - end - - def test_path_against_two_elements - scope = Scope.make(:inner, :outer) - assert_equal "outer:inner", scope.path - end - - def test_path_with_task_name - scope = Scope.make(:inner, :outer) - assert_equal "outer:inner:task", scope.path_with_task_name("task") - end - - def test_path_with_task_name_against_empty_scope - scope = Scope.make - assert_equal "task", scope.path_with_task_name("task") - end - - def test_conj_against_two_elements - scope = Scope.make.conj("B").conj("A") - assert_equal Scope.make("A", "B"), scope - end - - def test_trim - scope = Scope.make("A", "B") - assert_equal scope, scope.trim(0) - assert_equal scope.tail, scope.trim(1) - assert_equal scope.tail.tail, scope.trim(2) - assert_equal scope.tail.tail, scope.trim(3) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task.rb deleted file mode 100644 index 52e935b2..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task.rb +++ /dev/null @@ -1,393 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' - -class TestRakeTask < Rake::TestCase - include Rake - - def setup - super - - Task.clear - Rake::TaskManager.record_task_metadata = true - end - - def teardown - Rake::TaskManager.record_task_metadata = false - Rake.application.thread_pool.join - - super - end - - def test_create - arg = nil - t = task(:name) { |task| arg = task; 1234 } - assert_equal "name", t.name - assert_equal [], t.prerequisites - assert t.needed? - t.execute(0) - assert_equal t, arg - assert_nil t.source - assert_equal [], t.sources - assert_equal 1, t.locations.size - assert_match(/#{Regexp.quote(__FILE__)}/, t.locations.first) - end - - def test_inspect - t = task(:foo => [:bar, :baz]) - assert_equal " [bar, baz]>", t.inspect - end - - def test_invoke - runlist = [] - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - task(:t2) { |t| runlist << t.name } - task(:t3) { |t| runlist << t.name } - assert_equal ["t2", "t3"], t1.prerequisites - t1.invoke - assert_equal ["t2", "t3", "t1"], runlist - end - - def test_invoke_with_circular_dependencies - runlist = [] - t1 = task(:t1 => [:t2]) { |t| runlist << t.name; 3321 } - t2 = task(:t2 => [:t1]) { |t| runlist << t.name } - assert_equal ["t2"], t1.prerequisites - assert_equal ["t1"], t2.prerequisites - ex = assert_raises RuntimeError do - t1.invoke - end - assert_match(/circular dependency/i, ex.message) - assert_match(/t1 => t2 => t1/, ex.message) - end - - def test_dry_run_prevents_actions - Rake.application.options.dryrun = true - runlist = [] - t1 = task(:t1) { |t| runlist << t.name; 3321 } - _, err = capture_io { t1.invoke } - assert_match(/execute .*t1/i, err) - assert_match(/dry run/i, err) - refute_match(/invoke/i, err) - assert_equal [], runlist - ensure - Rake.application.options.dryrun = false - end - - def test_tasks_can_be_traced - Rake.application.options.trace = true - t1 = task(:t1) - _, err = capture_io { - t1.invoke - } - assert_match(/invoke t1/i, err) - assert_match(/execute t1/i, err) - ensure - Rake.application.options.trace = false - end - - def test_no_double_invoke - runlist = [] - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - task(:t2 => [:t3]) { |t| runlist << t.name } - task(:t3) { |t| runlist << t.name } - t1.invoke - assert_equal ["t3", "t2", "t1"], runlist - end - - def test_can_double_invoke_with_reenable - runlist = [] - t1 = task(:t1) { |t| runlist << t.name } - t1.invoke - t1.reenable - t1.invoke - assert_equal ["t1", "t1"], runlist - end - - def test_clear - desc "a task" - t = task("t" => "a") { } - t.clear - assert t.prerequisites.empty?, "prerequisites should be empty" - assert t.actions.empty?, "actions should be empty" - assert_nil t.comment, "comments should be empty" - end - - def test_clear_prerequisites - t = task("t" => ["a", "b"]) - assert_equal ['a', 'b'], t.prerequisites - t.clear_prerequisites - assert_equal [], t.prerequisites - end - - def test_clear_actions - t = task("t") { } - t.clear_actions - assert t.actions.empty?, "actions should be empty" - end - - def test_clear_comments - desc "the original foo" - task :foo => [:x] do - # Dummy action - end - - task(:foo).clear_comments - - desc "a slightly different foo" - task :foo - - assert_equal "a slightly different foo", task(:foo).comment - assert_equal ["x"], task(:foo).prerequisites - assert_equal 1, task(:foo).actions.size - end - - def test_find - task :tfind - assert_equal "tfind", Task[:tfind].name - ex = assert_raises(RuntimeError) { Task[:leaves] } - assert_equal "Don't know how to build task 'leaves' (see --tasks)", ex.message - end - - def test_defined - assert ! Task.task_defined?(:a) - task :a - assert Task.task_defined?(:a) - end - - def test_multi_invocations - runs = [] - p = proc do |t| runs << t.name end - task({ :t1 => [:t2, :t3] }, &p) - task({ :t2 => [:t3] }, &p) - task(:t3, &p) - Task[:t1].invoke - assert_equal ["t1", "t2", "t3"], runs.sort - end - - def test_task_list - task :t2 - task :t1 => [:t2] - assert_equal ["t1", "t2"], Task.tasks.map { |t| t.name } - end - - def test_task_gives_name_on_to_s - task :abc - assert_equal "abc", Task[:abc].to_s - end - - def test_symbols_can_be_prerequisites - task :a => :b - assert_equal ["b"], Task[:a].prerequisites - end - - def test_strings_can_be_prerequisites - task :a => "b" - assert_equal ["b"], Task[:a].prerequisites - end - - def test_arrays_can_be_prerequisites - task :a => ["b", "c"] - assert_equal ["b", "c"], Task[:a].prerequisites - end - - def test_filelists_can_be_prerequisites - task :a => FileList.new.include("b", "c") - assert_equal ["b", "c"], Task[:a].prerequisites - end - - def test_prerequisite_tasks_returns_tasks_not_strings - a = task :a => ["b", "c"] - b = task :b - c = task :c - assert_equal [b, c], a.prerequisite_tasks - end - - def test_prerequisite_tasks_fails_if_prerequisites_are_undefined - a = task :a => ["b", "c"] - task :b - assert_raises(RuntimeError) do - a.prerequisite_tasks - end - end - - def test_prerequisite_tasks_honors_namespaces - a = b = nil - namespace "X" do - a = task :a => ["b", "c"] - b = task :b - end - c = task :c - - assert_equal [b, c], a.prerequisite_tasks - end - - def test_all_prerequisite_tasks_includes_all_prerequisites - a = task :a => "b" - b = task :b => ["c", "d"] - c = task :c => "e" - d = task :d - e = task :e - - assert_equal [b, c, d, e], a.all_prerequisite_tasks.sort_by { |t| t.name } - end - - def test_all_prerequisite_tasks_does_not_include_duplicates - a = task :a => ["b", "c"] - b = task :b => "c" - c = task :c - - assert_equal [b, c], a.all_prerequisite_tasks.sort_by { |t| t.name } - end - - def test_all_prerequisite_tasks_includes_self_on_cyclic_dependencies - a = task :a => "b" - b = task :b => "a" - - assert_equal [a, b], a.all_prerequisite_tasks.sort_by { |t| t.name } - end - - def test_timestamp_returns_now_if_all_prereqs_have_no_times - a = task :a => ["b", "c"] - task :b - task :c - - assert_in_delta Time.now, a.timestamp, 0.1, 'computer too slow?' - end - - def test_timestamp_returns_latest_prereq_timestamp - a = task :a => ["b", "c"] - b = task :b - c = task :c - - now = Time.now - def b.timestamp() Time.now + 10 end - def c.timestamp() Time.now + 5 end - - assert_in_delta now, a.timestamp, 0.1, 'computer too slow?' - end - - def test_always_multitask - mx = Mutex.new - result = [] - - t_a = task(:a) do |t| - sleep 0.2 - mx.synchronize { result << t.name } - end - - t_b = task(:b) do |t| - mx.synchronize { result << t.name } - end - - t_c = task(:c => [:a, :b]) do |t| - mx.synchronize { result << t.name } - end - - t_c.invoke - - # task should always run in order - assert_equal ['a', 'b', 'c'], result - - [t_a, t_b, t_c].each { |t| t.reenable } - result.clear - - Rake.application.options.always_multitask = true - t_c.invoke - - # with multitask, task 'b' should grab the mutex first - assert_equal ['b', 'a', 'c'], result - end - - def test_investigation_output - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - task(:t2) - task(:t3) - out = t1.investigation - assert_match(/class:\s*Rake::Task/, out) - assert_match(/needed:\s*true/, out) - assert_match(/pre-requisites:\s*--t[23]/, out) - end - - # NOTE: Rail-ties uses comment=. - def test_comment_setting - t = task(:t, :name, :rev) - t.comment = "A Comment" - assert_equal "A Comment", t.comment - end - - def test_comments_with_sentences - desc "Comment 1. Comment 2." - t = task(:t, :name, :rev) - assert_equal "Comment 1", t.comment - end - - def test_comments_with_tabbed_sentences - desc "Comment 1.\tComment 2." - t = task(:t, :name, :rev) - assert_equal "Comment 1", t.comment - end - - def test_comments_with_decimal_points - desc "Revision 1.2.3." - t = task(:t, :name, :rev) - assert_equal "Revision 1.2.3", t.comment - end - - def test_comments_do_not_set - t = task(:t, :name, :rev) - assert_equal nil, t.comment - end - - def test_comments_is_nil - t = task(:t, :name, :rev) - t.comment = nil - assert_equal nil, t.comment - end - - def test_extended_comments - desc %{ - This is a comment. - - And this is the extended comment. - name -- Name of task to execute. - rev -- Software revision to use. - } - t = task(:t, :name, :rev) - assert_equal "[name,rev]", t.arg_description - assert_equal "This is a comment", t.comment - assert_match(/^\s*name -- Name/, t.full_comment) - assert_match(/^\s*rev -- Software/, t.full_comment) - assert_match(/\A\s*This is a comment\.$/, t.full_comment) - end - - def test_multiple_comments - desc "line one" - t = task(:t) - desc "line two" - task(:t) - assert_equal "line one / line two", t.comment - end - - def test_duplicate_comments - desc "line one" - t = task(:t) - desc "line one" - task(:t) - assert_equal "line one", t.comment - end - - def test_interspersed_duplicate_comments - desc "line one" - t = task(:t) - desc "line two" - task(:t) - desc "line one" - task(:t) - assert_equal "line one / line two", t.comment - end - - def test_source_is_first_prerequisite - t = task :t => ["preqA", "preqB"] - assert_equal "preqA", t.source - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb deleted file mode 100644 index 3cb5d9cf..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb +++ /dev/null @@ -1,119 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTaskArgumentParsing < Rake::TestCase - def setup - super - - @app = Rake::Application.new - end - - def test_name_only - name, args = @app.parse_task_string("name") - assert_equal "name", name - assert_equal [], args - end - - def test_empty_args - name, args = @app.parse_task_string("name[]") - assert_equal "name", name - assert_equal [], args - end - - def test_one_argument - name, args = @app.parse_task_string("name[one]") - assert_equal "name", name - assert_equal ["one"], args - end - - def test_two_arguments - name, args = @app.parse_task_string("name[one,two]") - assert_equal "name", name - assert_equal ["one", "two"], args - end - - def test_can_handle_spaces_between_args - name, args = @app.parse_task_string("name[one, two,\tthree , \tfour]") - assert_equal "name", name - assert_equal ["one", "two", "three", "four"], args - end - - def test_keeps_embedded_spaces - name, args = @app.parse_task_string("name[a one ana, two]") - assert_equal "name", name - assert_equal ["a one ana", "two"], args - end - - def test_can_handle_commas_in_args - name, args = @app.parse_task_string("name[one, two, three_a\\, three_b, four]") - assert_equal "name", name - assert_equal ["one", "two", "three_a, three_b", "four"], args - end - - def test_treat_blank_arg_as_empty_string - name, args = @app.parse_task_string("name[one,]") - assert_equal "name", name - assert_equal ["one", ""], args - - name, args = @app.parse_task_string("name[one,,two]") - assert_equal "name", name - assert_equal ["one", "", "two"], args - end - - def test_terminal_width_using_env - app = Rake::Application.new - app.terminal_columns = 1234 - - assert_equal 1234, app.terminal_width - end - - def test_terminal_width_using_stty - def @app.unix?() true end - def @app.dynamic_width_stty() 1235 end - def @app.dynamic_width_tput() 0 end - - assert_equal 1235, @app.terminal_width - end - - def test_terminal_width_using_tput - def @app.unix?() true end - def @app.dynamic_width_stty() 0 end - def @app.dynamic_width_tput() 1236 end - - assert_equal 1236, @app.terminal_width - end - - def test_terminal_width_using_hardcoded_80 - def @app.unix?() false end - - assert_equal 80, @app.terminal_width - end - - def test_terminal_width_with_failure - def @app.unix?() raise end - - assert_equal 80, @app.terminal_width - end - - def test_no_rakeopt - ARGV << '--trace' - app = Rake::Application.new - app.init - assert !app.options.silent - end - - def test_rakeopt_with_blank_options - ARGV << '--trace' - app = Rake::Application.new - app.init - assert !app.options.silent - end - - def test_rakeopt_with_silent_options - ENV['RAKEOPT'] = '-s' - app = Rake::Application.new - - app.init - - assert app.options.silent - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_arguments.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_arguments.rb deleted file mode 100644 index 369ecf6e..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_arguments.rb +++ /dev/null @@ -1,127 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -###################################################################### -class TestRakeTaskArguments < Rake::TestCase - def teardown - ENV.delete('rev') - ENV.delete('VER') - - super - end - - def test_empty_arg_list_is_empty - ta = Rake::TaskArguments.new([], []) - assert_equal({}, ta.to_hash) - end - - def test_multiple_values_in_args - ta = Rake::TaskArguments.new([:a, :b, :c], [:one, :two, :three]) - assert_equal({:a => :one, :b => :two, :c => :three}, ta.to_hash) - end - - def test_has_key - ta = Rake::TaskArguments.new([:a], [:one]) - assert(ta.has_key?(:a)) - refute(ta.has_key?(:b)) - end - - def test_to_s - ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3]) - assert_equal ta.to_hash.inspect, ta.to_s - assert_equal ta.to_hash.inspect, ta.inspect - end - - def test_enumerable_behavior - ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3]) - assert_equal [10, 20, 30], ta.map { |k, v| v * 10 }.sort - end - - def test_named_args - ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2]) - assert_equal 1, ta.aa - assert_equal 1, ta[:aa] - assert_equal 1, ta["aa"] - assert_equal 2, ta.bb - assert_nil ta.cc - end - - def test_args_knows_its_names - ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2]) - assert_equal ["aa", "bb"], ta.names - end - - def test_extra_names_are_nil - ta = Rake::TaskArguments.new(["aa", "bb", "cc"], [1, 2]) - assert_nil ta.cc - end - - def test_args_do_not_reference_env_values - ta = Rake::TaskArguments.new(["aa"], [1]) - ENV['rev'] = "1.2" - ENV['VER'] = "2.3" - assert_nil ta.rev - assert_nil ta.ver - end - - def test_creating_new_argument_scopes - parent = Rake::TaskArguments.new(['p'], [1]) - child = parent.new_scope(['c', 'p']) - assert_equal({:p=>1}, child.to_hash) - assert_equal 1, child.p - assert_equal 1, child["p"] - assert_equal 1, child[:p] - assert_nil child.c - end - - def test_child_hides_parent_arg_names - parent = Rake::TaskArguments.new(['aa'], [1]) - child = Rake::TaskArguments.new(['aa'], [2], parent) - assert_equal 2, child.aa - end - - def test_default_arguments_values_can_be_merged - ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"]) - ta.with_defaults({ :aa => 'default_val' }) - assert_equal 'default_val', ta[:aa] - assert_equal 'original_val', ta[:bb] - end - - def test_default_arguments_that_dont_match_names_are_ignored - ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"]) - ta.with_defaults({ "cc" => "default_val" }) - assert_nil ta[:cc] - end - - def test_all_and_extra_arguments_without_named_arguments - app = Rake::Application.new - _, args = app.parse_task_string("task[1,two,more]") - ta = Rake::TaskArguments.new([], args) - assert_equal [], ta.names - assert_equal ['1', 'two', 'more'], ta.to_a - assert_equal ['1', 'two', 'more'], ta.extras - end - - def test_all_and_extra_arguments_with_named_arguments - app = Rake::Application.new - _, args = app.parse_task_string("task[1,two,more,still more]") - ta = Rake::TaskArguments.new([:first, :second], args) - assert_equal [:first, :second], ta.names - assert_equal "1", ta[:first] - assert_equal "two", ta[:second] - assert_equal ['1', 'two', 'more', 'still more'], ta.to_a - assert_equal ['more', 'still more'], ta.extras - end - - def test_extra_args_with_less_than_named_arguments - app = Rake::Application.new - _, args = app.parse_task_string("task[1,two]") - ta = Rake::TaskArguments.new([:first, :second, :third], args) - assert_equal [:first, :second, :third], ta.names - assert_equal "1", ta[:first] - assert_equal "two", ta[:second] - assert_equal nil, ta[:third] - assert_equal ['1', 'two'], ta.to_a - assert_equal [], ta.extras - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_lib.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_lib.rb deleted file mode 100644 index 9f3f7e9d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_lib.rb +++ /dev/null @@ -1,9 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/tasklib' - -class TestRakeTaskLib < Rake::TestCase - def test_paste - tl = Rake::TaskLib.new - assert_equal :ab, tl.paste(:a, :b) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_manager.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_manager.rb deleted file mode 100644 index 1bcb7a74..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_manager.rb +++ /dev/null @@ -1,178 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTaskManager < Rake::TestCase - - def setup - super - - @tm = Rake::TestCase::TaskManager.new - end - - def test_create_task_manager - refute_nil @tm - assert_equal [], @tm.tasks - end - - def test_define_task - t = @tm.define_task(Rake::Task, :t) - assert_equal "t", t.name - assert_equal @tm, t.application - end - - def test_index - e = assert_raises RuntimeError do - @tm['bad'] - end - - assert_equal "Don't know how to build task 'bad' (see --tasks)", e.message - end - - def test_name_lookup - t = @tm.define_task(Rake::Task, :t) - assert_equal t, @tm[:t] - end - - def test_namespace_task_create - @tm.in_namespace("x") do - t = @tm.define_task(Rake::Task, :t) - assert_equal "x:t", t.name - end - assert_equal ["x:t"], @tm.tasks.map { |t| t.name } - end - - def test_define_namespaced_task - t = @tm.define_task(Rake::Task, 'n:a:m:e:t') - assert_equal Rake::Scope.make("e", "m", "a", "n"), t.scope - assert_equal "n:a:m:e:t", t.name - assert_equal @tm, t.application - end - - def test_define_namespace_in_namespace - t = nil - @tm.in_namespace("n") do - t = @tm.define_task(Rake::Task, 'a:m:e:t') - end - assert_equal Rake::Scope.make("e", "m", "a", "n"), t.scope - assert_equal "n:a:m:e:t", t.name - assert_equal @tm, t.application - end - - def test_anonymous_namespace - anon_ns = @tm.in_namespace(nil) do - t = @tm.define_task(Rake::Task, :t) - assert_equal "_anon_1:t", t.name - end - task = anon_ns[:t] - assert_equal "_anon_1:t", task.name - end - - def test_create_filetask_in_namespace - @tm.in_namespace("x") do - t = @tm.define_task(Rake::FileTask, "fn") - assert_equal "fn", t.name - end - - assert_equal ["fn"], @tm.tasks.map { |t| t.name } - end - - def test_namespace_yields_same_namespace_as_returned - yielded_namespace = nil - returned_namespace = @tm.in_namespace("x") do |ns| - yielded_namespace = ns - end - assert_equal returned_namespace, yielded_namespace - end - - def test_name_lookup_with_implicit_file_tasks - FileUtils.touch 'README.rdoc' - - t = @tm["README.rdoc"] - - assert_equal "README.rdoc", t.name - assert Rake::FileTask === t - end - - def test_name_lookup_with_nonexistent_task - assert_raises(RuntimeError) { - @tm["DOES NOT EXIST"] - } - end - - def test_name_lookup_in_multiple_scopes - aa = nil - bb = nil - xx = @tm.define_task(Rake::Task, :xx) - top_z = @tm.define_task(Rake::Task, :z) - @tm.in_namespace("a") do - aa = @tm.define_task(Rake::Task, :aa) - mid_z = @tm.define_task(Rake::Task, :z) - ns_d = @tm.define_task(Rake::Task, "n:t") - @tm.in_namespace("b") do - bb = @tm.define_task(Rake::Task, :bb) - bot_z = @tm.define_task(Rake::Task, :z) - - assert_equal Rake::Scope.make("b", "a"), @tm.current_scope - - assert_equal bb, @tm["a:b:bb"] - assert_equal aa, @tm["a:aa"] - assert_equal xx, @tm["xx"] - assert_equal bot_z, @tm["z"] - assert_equal mid_z, @tm["^z"] - assert_equal top_z, @tm["^^z"] - assert_equal top_z, @tm["^^^z"] # Over the top - assert_equal top_z, @tm["rake:z"] - end - - assert_equal Rake::Scope.make("a"), @tm.current_scope - - assert_equal bb, @tm["a:b:bb"] - assert_equal aa, @tm["a:aa"] - assert_equal xx, @tm["xx"] - assert_equal bb, @tm["b:bb"] - assert_equal aa, @tm["aa"] - assert_equal mid_z, @tm["z"] - assert_equal top_z, @tm["^z"] - assert_equal top_z, @tm["^^z"] # Over the top - assert_equal top_z, @tm["rake:z"] - assert_equal ns_d, @tm["n:t"] - assert_equal ns_d, @tm["a:n:t"] - end - - assert_equal Rake::Scope.make, @tm.current_scope - - assert_equal Rake::Scope.make, xx.scope - assert_equal Rake::Scope.make('a'), aa.scope - assert_equal Rake::Scope.make('b', 'a'), bb.scope - end - - def test_lookup_with_explicit_scopes - t1, t2, t3, s = (0...4).map { nil } - t1 = @tm.define_task(Rake::Task, :t) - @tm.in_namespace("a") do - t2 = @tm.define_task(Rake::Task, :t) - s = @tm.define_task(Rake::Task, :s) - @tm.in_namespace("b") do - t3 = @tm.define_task(Rake::Task, :t) - end - end - assert_equal t1, @tm[:t, Rake::Scope.make] - assert_equal t2, @tm[:t, Rake::Scope.make("a")] - assert_equal t3, @tm[:t, Rake::Scope.make("b", "a")] - assert_equal s, @tm[:s, Rake::Scope.make("b", "a")] - assert_equal s, @tm[:s, Rake::Scope.make("a")] - end - - def test_correctly_scoped_prerequisites_are_invoked - values = [] - @tm = Rake::Application.new - @tm.define_task(Rake::Task, :z) do values << "top z" end - @tm.in_namespace("a") do - @tm.define_task(Rake::Task, :z) do values << "next z" end - @tm.define_task(Rake::Task, :x => :z) - end - - @tm["a:x"].invoke - assert_equal ["next z"], values - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb deleted file mode 100644 index 43fa2ac4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb +++ /dev/null @@ -1,19 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTaskManagerArgumentResolution < Rake::TestCase - - def test_good_arg_patterns - assert_equal [:t, [], []], task(:t) - assert_equal [:t, [], [:x]], task(:t => :x) - assert_equal [:t, [], [:x, :y]], task(:t => [:x, :y]) - - assert_equal [:t, [:a, :b], []], task(:t, [:a, :b]) - assert_equal [:t, [:a, :b], [:x]], task(:t, [:a, :b] => :x) - assert_equal [:t, [:a, :b], [:x, :y]], task(:t, [:a, :b] => [:x, :y]) - end - - def task(*args) - tm = Rake::TestCase::TaskManager.new - tm.resolve_args(args) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb deleted file mode 100644 index 8646fc04..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb +++ /dev/null @@ -1,172 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTaskWithArguments < Rake::TestCase - include Rake - - def setup - super - - Task.clear - Rake::TaskManager.record_task_metadata = true - end - - def teardown - Rake::TaskManager.record_task_metadata = false - Rake.application.thread_pool.join - - super - end - - def test_no_args_given - t = task :t - assert_equal [], t.arg_names - end - - def test_args_given - t = task :t, :a, :b - assert_equal [:a, :b], t.arg_names - end - - def test_name_and_needs - t = task(:t => [:pre]) - assert_equal "t", t.name - assert_equal [], t.arg_names - assert_equal ["pre"], t.prerequisites - end - - def test_name_args_and_prereqs - t = task(:t, [:x, :y] => [:pre]) - assert_equal "t", t.name - assert_equal [:x, :y], t.arg_names - assert_equal ["pre"], t.prerequisites - end - - def test_arg_list_is_empty_if_no_args_given - t = task(:t) { |tt, args| assert_equal({}, args.to_hash) } - t.invoke(1, 2, 3) - end - - def test_tasks_can_access_arguments_as_hash - t = task :t, :a, :b, :c do |tt, args| - assert_equal({:a => 1, :b => 2, :c => 3}, args.to_hash) - assert_equal 1, args[:a] - assert_equal 2, args[:b] - assert_equal 3, args[:c] - assert_equal 1, args.a - assert_equal 2, args.b - assert_equal 3, args.c - end - t.invoke(1, 2, 3) - end - - def test_actions_of_various_arity_are_ok_with_args - notes = [] - t = task(:t, :x) do - notes << :a - end - t.enhance do | | - notes << :b - end - t.enhance do |task| - notes << :c - assert_kind_of Task, task - end - t.enhance do |t2, args| - notes << :d - assert_equal t, t2 - assert_equal({:x => 1}, args.to_hash) - end - t.invoke(1) - assert_equal [:a, :b, :c, :d], notes - end - - def test_arguments_are_passed_to_block - t = task(:t, :a, :b) { |tt, args| - assert_equal({ :a => 1, :b => 2 }, args.to_hash) - } - t.invoke(1, 2) - end - - def test_extra_parameters_are_ignored - t = task(:t, :a) { |tt, args| - assert_equal 1, args.a - assert_nil args.b - } - t.invoke(1, 2) - end - - def test_arguments_are_passed_to_all_blocks - counter = 0 - t = task :t, :a - task :t do |tt, args| - assert_equal 1, args.a - counter += 1 - end - task :t do |tt, args| - assert_equal 1, args.a - counter += 1 - end - t.invoke(1) - assert_equal 2, counter - end - - def test_block_with_no_parameters_is_ok - t = task(:t) { } - t.invoke(1, 2) - end - - def test_name_with_args - desc "T" - t = task(:tt, :a, :b) - assert_equal "tt", t.name - assert_equal "T", t.comment - assert_equal "[a,b]", t.arg_description - assert_equal "tt[a,b]", t.name_with_args - assert_equal [:a, :b], t.arg_names - end - - def test_named_args_are_passed_to_prereqs - value = nil - task(:pre, :rev) { |t, args| value = args.rev } - t = task(:t, [:name, :rev] => [:pre]) - t.invoke("bill", "1.2") - assert_equal "1.2", value - end - - def test_args_not_passed_if_no_prereq_names_on_task - task(:pre) { |t, args| - assert_equal({}, args.to_hash) - assert_equal "bill", args.name - } - t = task(:t, [:name, :rev] => [:pre]) - t.invoke("bill", "1.2") - end - - def test_args_not_passed_if_no_prereq_names_on_multitask - task(:pre) { |t, args| - assert_equal({}, args.to_hash) - assert_equal "bill", args.name - } - t = multitask(:t, [:name, :rev] => [:pre]) - t.invoke("bill", "1.2") - end - - def test_args_not_passed_if_no_arg_names - task(:pre, :rev) { |t, args| - assert_equal({}, args.to_hash) - } - t = task(:t => [:pre]) - t.invoke("bill", "1.2") - end - - def test_values_at - t = task(:pre, [:a, :b, :c]) { |task, args| - a, b, c = args.values_at(:a, :b, :c) - assert_equal %w[1 2 3], [a, b, c] - } - - t.invoke(*%w[1 2 3]) - - # HACK no assertions - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_test_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_test_task.rb deleted file mode 100644 index 5c4be797..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_test_task.rb +++ /dev/null @@ -1,146 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/testtask' - -class TestRakeTestTask < Rake::TestCase - include Rake - - def test_initialize - tt = Rake::TestTask.new do |t| end - refute_nil tt - assert_equal :test, tt.name - assert_equal ['lib'], tt.libs - assert_equal 'test/test*.rb', tt.pattern - assert_equal false, tt.verbose - assert Task.task_defined?(:test) - end - - def test_initialize_override - tt = Rake::TestTask.new(:example) do |t| - t.description = "Run example tests" - t.libs = ['src', 'ext'] - t.pattern = 'test/tc_*.rb' - t.verbose = true - end - refute_nil tt - assert_equal "Run example tests", tt.description - assert_equal :example, tt.name - assert_equal ['src', 'ext'], tt.libs - assert_equal 'test/tc_*.rb', tt.pattern - assert_equal true, tt.verbose - assert Task.task_defined?(:example) - end - - def test_file_list_env_test - ENV['TEST'] = 'testfile.rb' - tt = Rake::TestTask.new do |t| - t.pattern = '*' - end - - assert_equal ["testfile.rb"], tt.file_list.to_a - ensure - ENV.delete 'TEST' - end - - def test_libs_equals - test_task = Rake::TestTask.new do |t| - t.libs << ["A", "B"] - end - - path = %w[lib A B].join File::PATH_SEPARATOR - - assert_equal "-I\"#{path}\"", test_task.ruby_opts_string - end - - def test_libs_equals_empty - test_task = Rake::TestTask.new do |t| - t.libs = [] - end - - assert_equal '', test_task.ruby_opts_string - end - - def test_pattern_equals - tt = Rake::TestTask.new do |t| - t.pattern = '*.rb' - end - assert_equal ['*.rb'], tt.file_list.to_a - end - - def test_pattern_equals_test_files_equals - tt = Rake::TestTask.new do |t| - t.test_files = FileList['a.rb', 'b.rb'] - t.pattern = '*.rb' - end - assert_equal ['a.rb', 'b.rb', '*.rb'], tt.file_list.to_a - end - - def test_run_code_direct - test_task = Rake::TestTask.new do |t| - t.loader = :direct - end - - assert_equal '-e "ARGV.each{|f| require f}"', test_task.run_code - end - - def test_run_code_rake - spec = Gem::Specification.new 'rake', 0 - spec.loaded_from = File.join Gem::Specification.dirs.last, 'rake-0.gemspec' - rake, Gem.loaded_specs['rake'] = Gem.loaded_specs['rake'], spec - - test_task = Rake::TestTask.new do |t| - t.loader = :rake - end - - assert_match(/\A-I".*?" ".*?"\Z/, test_task.run_code) - ensure - Gem.loaded_specs['rake'] = rake - end - - def test_run_code_rake_default_gem - skip 'this ruby does not have default gems' unless - Gem::Specification.method_defined? :default_specifications_dir - - default_spec = Gem::Specification.new 'rake', 0 - default_spec.loaded_from = File.join Gem::Specification.default_specifications_dir, 'rake-0.gemspec' - begin - rake, Gem.loaded_specs['rake'] = Gem.loaded_specs['rake'], default_spec - - test_task = Rake::TestTask.new do |t| - t.loader = :rake - end - - assert_match(/\A(-I".*?" *)* ".*?"\Z/, test_task.run_code) - ensure - Gem.loaded_specs['rake'] = rake - end - end - - def test_run_code_testrb_ruby_1_8_2 - test_task = Rake::TestTask.new do |t| - t.loader = :testrb - end - - def test_task.ruby_version() '1.8.2' end - - assert_match(/^-S testrb +".*"$/, test_task.run_code) - end - - def test_run_code_testrb_ruby_1_8_6 - test_task = Rake::TestTask.new do |t| - t.loader = :testrb - end - - def test_task.ruby_version() '1.8.6' end - - assert_match(/^-S testrb +$/, test_task.run_code) - end - - def test_test_files_equals - tt = Rake::TestTask.new do |t| - t.test_files = FileList['a.rb', 'b.rb'] - end - - assert_equal ["a.rb", 'b.rb'], tt.file_list.to_a - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_thread_pool.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_thread_pool.rb deleted file mode 100644 index 35a1fe9d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_thread_pool.rb +++ /dev/null @@ -1,145 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/thread_pool' - -class TestRakeTestThreadPool < Rake::TestCase - include Rake - - def test_pool_executes_in_current_thread_for_zero_threads - pool = ThreadPool.new(0) - f = pool.future { Thread.current } - pool.join - assert_equal Thread.current, f.value - end - - def test_pool_executes_in_other_thread_for_pool_of_size_one - pool = ThreadPool.new(1) - f = pool.future { Thread.current } - pool.join - refute_equal Thread.current, f.value - end - - def test_pool_executes_in_two_other_threads_for_pool_of_size_two - pool = ThreadPool.new(2) - threads = 2.times.map { - pool.future { - sleep 0.1 - Thread.current - } - }.each { |f| - f.value - } - - refute_equal threads[0], threads[1] - refute_equal Thread.current, threads[0] - refute_equal Thread.current, threads[1] - ensure - pool.join - end - - def test_pool_creates_the_correct_number_of_threads - pool = ThreadPool.new(2) - threads = Set.new - t_mutex = Mutex.new - 10.times.each do - pool.future do - sleep 0.02 - t_mutex.synchronize { threads << Thread.current } - end - end - pool.join - assert_equal 2, threads.count - end - - def test_pool_future_does_not_duplicate_arguments - pool = ThreadPool.new(2) - obj = Object.new - captured = nil - pool.future(obj) { |var| captured = var } - pool.join - assert_equal obj, captured - end - - def test_pool_join_empties_queue - pool = ThreadPool.new(2) - repeat = 25 - repeat.times { - pool.future do - repeat.times { - pool.future do - repeat.times { - pool.future do end - } - end - } - end - } - - pool.join - assert_equal( - true, - pool.__send__(:__queue__).empty?, - "queue should be empty") - end - - CustomError = Class.new(StandardError) - - # test that throwing an exception way down in the blocks propagates - # to the top - def test_exceptions - pool = ThreadPool.new(10) - - deep_exception_block = lambda do |count| - raise CustomError if count < 1 - pool.future(count - 1, &deep_exception_block).value - end - - assert_raises(CustomError) do - pool.future(2, &deep_exception_block).value - end - ensure - pool.join - end - - def test_pool_prevents_deadlock - pool = ThreadPool.new(5) - - common_dependency_a = pool.future { sleep 0.2 } - futures_a = 10.times.map { - pool.future { - common_dependency_a.value - sleep(rand() * 0.01) - } - } - - common_dependency_b = pool.future { futures_a.each { |f| f.value } } - futures_b = 10.times.map { - pool.future { - common_dependency_b.value - sleep(rand() * 0.01) - } - } - - futures_b.each { |f| f.value } - pool.join - end - - def test_pool_reports_correct_results - pool = ThreadPool.new(7) - - a = 18 - b = 5 - c = 3 - - result = a.times.map do - pool.future do - b.times.map do - pool.future { sleep rand * 0.001; c } - end.reduce(0) { |m, f| m + f.value } - end - end.reduce(0) { |m, f| m + f.value } - - assert_equal a * b * c, result - pool.join - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_top_level_functions.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_top_level_functions.rb deleted file mode 100644 index fee702dc..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_top_level_functions.rb +++ /dev/null @@ -1,71 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTopLevelFunctions < Rake::TestCase - - def setup - super - - @app = Object.new - - def @app.called - @called - end - - def @app.method_missing(*a, &b) - @called ||= [] - @called << [a, b] - nil - end - - Rake.application = @app - end - - def test_namespace - block = proc do end - - namespace("xyz", &block) - - expected = [ - [[:in_namespace, 'xyz'], block] - ] - - assert_equal expected, @app.called - end - - def test_import - import('x', 'y', 'z') - - expected = [ - [[:add_import, 'x'], nil], - [[:add_import, 'y'], nil], - [[:add_import, 'z'], nil], - ] - - assert_equal expected, @app.called - end - - def test_when_writing - out, = capture_io do - when_writing("NOTWRITING") do - puts "WRITING" - end - end - assert_equal "WRITING\n", out - end - - def test_when_not_writing - Rake::FileUtilsExt.nowrite_flag = true - _, err = capture_io do - when_writing("NOTWRITING") do - puts "WRITING" - end - end - assert_equal "DRYRUN: NOTWRITING\n", err - ensure - Rake::FileUtilsExt.nowrite_flag = false - end - - def test_missing_other_constant - assert_raises(NameError) do Object.const_missing(:Xyz) end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_win32.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_win32.rb deleted file mode 100644 index fc2746a0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_rake_win32.rb +++ /dev/null @@ -1,72 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeWin32 < Rake::TestCase - - Win32 = Rake::Win32 - - def test_win32_system_dir_uses_home_if_defined - ENV['HOME'] = 'C:\\HP' - - assert_equal "C:/HP/Rake", Win32.win32_system_dir - end - - def test_win32_system_dir_uses_homedrive_homepath_when_no_home_defined - ENV['HOME'] = nil - ENV['HOMEDRIVE'] = 'C:' - ENV['HOMEPATH'] = '\\HP' - - assert_equal "C:/HP/Rake", Win32.win32_system_dir - end - - def test_win32_system_dir_uses_appdata_when_no_home_or_home_combo - ENV['APPDATA'] = "C:\\Documents and Settings\\HP\\Application Data" - ENV['HOME'] = nil - ENV['HOMEDRIVE'] = nil - ENV['HOMEPATH'] = nil - - assert_equal "C:/Documents and Settings/HP/Application Data/Rake", - Win32.win32_system_dir - end - - def test_win32_system_dir_fallback_to_userprofile_otherwise - ENV['HOME'] = nil - ENV['HOMEDRIVE'] = nil - ENV['HOMEPATH'] = nil - ENV['APPDATA'] = nil - ENV['USERPROFILE'] = "C:\\Documents and Settings\\HP" - - assert_equal "C:/Documents and Settings/HP/Rake", Win32.win32_system_dir - end - - def test_win32_system_dir_nil_of_no_env_vars - ENV['APPDATA'] = nil - ENV['HOME'] = nil - ENV['HOMEDRIVE'] = nil - ENV['HOMEPATH'] = nil - ENV['RAKE_SYSTEM'] = nil - ENV['USERPROFILE'] = nil - - assert_raises(Rake::Win32::Win32HomeError) do - Win32.win32_system_dir - end - end - - def test_win32_backtrace_with_different_case - ex = nil - begin - raise 'test exception' - rescue => ex - end - - ex.set_backtrace ['abc', 'rakefile'] - - rake = Rake::Application.new - rake.options.trace = true - rake.instance_variable_set(:@rakefile, 'Rakefile') - - _, err = capture_io { rake.display_error_message(ex) } - - assert_match(/rakefile/, err) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_thread_history_display.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_thread_history_display.rb deleted file mode 100644 index bb5879cf..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_thread_history_display.rb +++ /dev/null @@ -1,101 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -require 'rake/thread_history_display' - -class TestThreadHistoryDisplay < Rake::TestCase - def setup - super - @time = 1_000_000 - @stats = [] - @display = Rake::ThreadHistoryDisplay.new(@stats) - end - - def test_banner - out, _ = capture_io do - @display.show - end - assert_match(/Job History/i, out) - end - - def test_item_queued - @stats << event(:item_queued, :item_id => 123) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +item_queued +item_id:1$/, out) - end - - def test_item_dequeued - @stats << event(:item_dequeued, :item_id => 123) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +item_dequeued +item_id:1$/, out) - end - - def test_multiple_items - @stats << event(:item_queued, :item_id => 123) - @stats << event(:item_queued, :item_id => 124) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +item_queued +item_id:1$/, out) - assert_match(/^ *1000001 +A +item_queued +item_id:2$/, out) - end - - def test_waiting - @stats << event(:waiting, :item_id => 123) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +waiting +item_id:1$/, out) - end - - def test_continue - @stats << event(:continue, :item_id => 123) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +continue +item_id:1$/, out) - end - - def test_thread_deleted - @stats << event( - :thread_deleted, - :deleted_thread => 123_456, - :thread_count => 12) - out, _ = capture_io do - @display.show - end - assert_match( - /^ *1000000 +A +thread_deleted( +deleted_thread:B| +thread_count:12){2}$/, - out) - end - - def test_thread_created - @stats << event( - :thread_created, - :new_thread => 123_456, - :thread_count => 13) - out, _ = capture_io do - @display.show - end - assert_match( - /^ *1000000 +A +thread_created( +new_thread:B| +thread_count:13){2}$/, - out) - end - - private - - def event(type, data = {}) - result = { - :event => type, - :time => @time / 1_000_000.0, - :data => data, - :thread => Thread.current.object_id - } - @time += 1 - result - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_trace_output.rb b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_trace_output.rb deleted file mode 100644 index f9aead98..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/test/test_trace_output.rb +++ /dev/null @@ -1,52 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'stringio' - -class TestTraceOutput < Rake::TestCase - include Rake::TraceOutput - - class PrintSpy - attr_reader :result, :calls - - def initialize - @result = "" - @calls = 0 - end - - def print(string) - @result << string - @calls += 1 - end - end - - def test_trace_issues_single_io_for_args_with_empty_args - spy = PrintSpy.new - trace_on(spy) - assert_equal "\n", spy.result - assert_equal 1, spy.calls - end - - def test_trace_issues_single_io_for_args_multiple_strings - spy = PrintSpy.new - trace_on(spy, "HI\n", "LO") - assert_equal "HI\nLO\n", spy.result - assert_equal 1, spy.calls - end - - def test_trace_handles_nil_objects - spy = PrintSpy.new - trace_on(spy, "HI\n", nil, "LO") - assert_equal "HI\nLO\n", spy.result - assert_equal 1, spy.calls - end - - def test_trace_issues_single_io_for_args_multiple_strings_and_alternate_sep - old_sep = $\ - $\ = "\r" - spy = PrintSpy.new - trace_on(spy, "HI\r", "LO") - assert_equal "HI\rLO\r", spy.result - assert_equal 1, spy.calls - ensure - $\ = old_sep - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/specifications/rake-10.4.2.gemspec b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/specifications/rake-10.4.2.gemspec deleted file mode 100644 index 8a8082e8..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/specifications/rake-10.4.2.gemspec +++ /dev/null @@ -1,43 +0,0 @@ -# -*- encoding: utf-8 -*- -# stub: rake 10.4.2 ruby lib - -Gem::Specification.new do |s| - s.name = "rake" - s.version = "10.4.2" - - s.required_rubygems_version = Gem::Requirement.new(">= 1.3.2") if s.respond_to? :required_rubygems_version= - s.require_paths = ["lib"] - s.authors = ["Eric Hodel", "Jim Weirich"] - s.date = "2014-12-03" - s.description = "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are\nspecified in standard Ruby syntax.\n\nRake has the following features:\n\n* Rakefiles (rake's version of Makefiles) are completely defined in\n standard Ruby syntax. No XML files to edit. No quirky Makefile\n syntax to worry about (is that a tab or a space?)\n\n* Users can specify tasks with prerequisites.\n\n* Rake supports rule patterns to synthesize implicit tasks.\n\n* Flexible FileLists that act like arrays but know about manipulating\n file names and paths.\n\n* A library of prepackaged tasks to make building rakefiles easier. For example,\n tasks for building tarballs and publishing to FTP or SSH sites. (Formerly\n tasks for building RDoc and Gems were included in rake but they're now\n available in RDoc and RubyGems respectively.)\n\n* Supports parallel execution of tasks." - s.email = ["drbrain@segment7.net", ""] - s.executables = ["rake"] - s.extra_rdoc_files = ["CONTRIBUTING.rdoc", "History.rdoc", "Manifest.txt", "README.rdoc", "doc/command_line_usage.rdoc", "doc/glossary.rdoc", "doc/proto_rake.rdoc", "doc/rakefile.rdoc", "doc/rational.rdoc", "doc/release_notes/rake-0.4.14.rdoc", "doc/release_notes/rake-0.4.15.rdoc", "doc/release_notes/rake-0.5.0.rdoc", "doc/release_notes/rake-0.5.3.rdoc", "doc/release_notes/rake-0.5.4.rdoc", "doc/release_notes/rake-0.6.0.rdoc", "doc/release_notes/rake-0.7.0.rdoc", "doc/release_notes/rake-0.7.1.rdoc", "doc/release_notes/rake-0.7.2.rdoc", "doc/release_notes/rake-0.7.3.rdoc", "doc/release_notes/rake-0.8.0.rdoc", "doc/release_notes/rake-0.8.2.rdoc", "doc/release_notes/rake-0.8.3.rdoc", "doc/release_notes/rake-0.8.4.rdoc", "doc/release_notes/rake-0.8.5.rdoc", "doc/release_notes/rake-0.8.6.rdoc", "doc/release_notes/rake-0.8.7.rdoc", "doc/release_notes/rake-0.9.0.rdoc", "doc/release_notes/rake-0.9.1.rdoc", "doc/release_notes/rake-0.9.2.2.rdoc", "doc/release_notes/rake-0.9.2.rdoc", "doc/release_notes/rake-0.9.3.rdoc", "doc/release_notes/rake-0.9.4.rdoc", "doc/release_notes/rake-0.9.5.rdoc", "doc/release_notes/rake-0.9.6.rdoc", "doc/release_notes/rake-10.0.0.rdoc", "doc/release_notes/rake-10.0.1.rdoc", "doc/release_notes/rake-10.0.2.rdoc", "doc/release_notes/rake-10.0.3.rdoc", "doc/release_notes/rake-10.1.0.rdoc", "MIT-LICENSE"] - s.files = ["CONTRIBUTING.rdoc", "History.rdoc", "MIT-LICENSE", "Manifest.txt", "README.rdoc", "bin/rake", "doc/command_line_usage.rdoc", "doc/glossary.rdoc", "doc/proto_rake.rdoc", "doc/rakefile.rdoc", "doc/rational.rdoc", "doc/release_notes/rake-0.4.14.rdoc", "doc/release_notes/rake-0.4.15.rdoc", "doc/release_notes/rake-0.5.0.rdoc", "doc/release_notes/rake-0.5.3.rdoc", "doc/release_notes/rake-0.5.4.rdoc", "doc/release_notes/rake-0.6.0.rdoc", "doc/release_notes/rake-0.7.0.rdoc", "doc/release_notes/rake-0.7.1.rdoc", "doc/release_notes/rake-0.7.2.rdoc", "doc/release_notes/rake-0.7.3.rdoc", "doc/release_notes/rake-0.8.0.rdoc", "doc/release_notes/rake-0.8.2.rdoc", "doc/release_notes/rake-0.8.3.rdoc", "doc/release_notes/rake-0.8.4.rdoc", "doc/release_notes/rake-0.8.5.rdoc", "doc/release_notes/rake-0.8.6.rdoc", "doc/release_notes/rake-0.8.7.rdoc", "doc/release_notes/rake-0.9.0.rdoc", "doc/release_notes/rake-0.9.1.rdoc", "doc/release_notes/rake-0.9.2.2.rdoc", "doc/release_notes/rake-0.9.2.rdoc", "doc/release_notes/rake-0.9.3.rdoc", "doc/release_notes/rake-0.9.4.rdoc", "doc/release_notes/rake-0.9.5.rdoc", "doc/release_notes/rake-0.9.6.rdoc", "doc/release_notes/rake-10.0.0.rdoc", "doc/release_notes/rake-10.0.1.rdoc", "doc/release_notes/rake-10.0.2.rdoc", "doc/release_notes/rake-10.0.3.rdoc", "doc/release_notes/rake-10.1.0.rdoc"] - s.homepage = "https://github.com/ruby/rake" - s.licenses = ["MIT"] - s.rdoc_options = ["--main", "README.rdoc"] - s.required_ruby_version = Gem::Requirement.new(">= 1.8.7") - s.rubygems_version = "2.4.5" - s.summary = "Rake is a Make-like program implemented in Ruby" - - s.installed_by_version = "2.4.5" if s.respond_to? :installed_by_version - - if s.respond_to? :specification_version then - s.specification_version = 4 - - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_development_dependency(%q, ["~> 5.4"]) - s.add_development_dependency(%q, ["~> 4.0"]) - s.add_development_dependency(%q, ["~> 3.13"]) - else - s.add_dependency(%q, ["~> 5.4"]) - s.add_dependency(%q, ["~> 4.0"]) - s.add_dependency(%q, ["~> 3.13"]) - end - else - s.add_dependency(%q, ["~> 5.4"]) - s.add_dependency(%q, ["~> 4.0"]) - s.add_dependency(%q, ["~> 3.13"]) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/specifications/rake-10.5.0.gemspec b/spec/sample_bundler/vendor/bundle/jruby/2.2.0/specifications/rake-10.5.0.gemspec deleted file mode 100644 index d9f85f60..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/specifications/rake-10.5.0.gemspec +++ /dev/null @@ -1,43 +0,0 @@ -# -*- encoding: utf-8 -*- -# stub: rake 10.5.0 ruby lib - -Gem::Specification.new do |s| - s.name = "rake" - s.version = "10.5.0" - - s.required_rubygems_version = Gem::Requirement.new(">= 1.3.2") if s.respond_to? :required_rubygems_version= - s.require_paths = ["lib"] - s.authors = ["Eric Hodel", "Jim Weirich"] - s.date = "2016-01-13" - s.description = "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are\nspecified in standard Ruby syntax.\n\nRake has the following features:\n\n* Rakefiles (rake's version of Makefiles) are completely defined in\n standard Ruby syntax. No XML files to edit. No quirky Makefile\n syntax to worry about (is that a tab or a space?)\n\n* Users can specify tasks with prerequisites.\n\n* Rake supports rule patterns to synthesize implicit tasks.\n\n* Flexible FileLists that act like arrays but know about manipulating\n file names and paths.\n\n* A library of prepackaged tasks to make building rakefiles easier. For example,\n tasks for building tarballs and publishing to FTP or SSH sites. (Formerly\n tasks for building RDoc and Gems were included in rake but they're now\n available in RDoc and RubyGems respectively.)\n\n* Supports parallel execution of tasks." - s.email = ["drbrain@segment7.net", ""] - s.executables = ["rake"] - s.extra_rdoc_files = ["CONTRIBUTING.rdoc", "History.rdoc", "Manifest.txt", "README.rdoc", "doc/command_line_usage.rdoc", "doc/glossary.rdoc", "doc/proto_rake.rdoc", "doc/rakefile.rdoc", "doc/rational.rdoc", "doc/release_notes/rake-0.4.14.rdoc", "doc/release_notes/rake-0.4.15.rdoc", "doc/release_notes/rake-0.5.0.rdoc", "doc/release_notes/rake-0.5.3.rdoc", "doc/release_notes/rake-0.5.4.rdoc", "doc/release_notes/rake-0.6.0.rdoc", "doc/release_notes/rake-0.7.0.rdoc", "doc/release_notes/rake-0.7.1.rdoc", "doc/release_notes/rake-0.7.2.rdoc", "doc/release_notes/rake-0.7.3.rdoc", "doc/release_notes/rake-0.8.0.rdoc", "doc/release_notes/rake-0.8.2.rdoc", "doc/release_notes/rake-0.8.3.rdoc", "doc/release_notes/rake-0.8.4.rdoc", "doc/release_notes/rake-0.8.5.rdoc", "doc/release_notes/rake-0.8.6.rdoc", "doc/release_notes/rake-0.8.7.rdoc", "doc/release_notes/rake-0.9.0.rdoc", "doc/release_notes/rake-0.9.1.rdoc", "doc/release_notes/rake-0.9.2.2.rdoc", "doc/release_notes/rake-0.9.2.rdoc", "doc/release_notes/rake-0.9.3.rdoc", "doc/release_notes/rake-0.9.4.rdoc", "doc/release_notes/rake-0.9.5.rdoc", "doc/release_notes/rake-0.9.6.rdoc", "doc/release_notes/rake-10.0.0.rdoc", "doc/release_notes/rake-10.0.1.rdoc", "doc/release_notes/rake-10.0.2.rdoc", "doc/release_notes/rake-10.0.3.rdoc", "doc/release_notes/rake-10.1.0.rdoc", "MIT-LICENSE"] - s.files = ["CONTRIBUTING.rdoc", "History.rdoc", "MIT-LICENSE", "Manifest.txt", "README.rdoc", "bin/rake", "doc/command_line_usage.rdoc", "doc/glossary.rdoc", "doc/proto_rake.rdoc", "doc/rakefile.rdoc", "doc/rational.rdoc", "doc/release_notes/rake-0.4.14.rdoc", "doc/release_notes/rake-0.4.15.rdoc", "doc/release_notes/rake-0.5.0.rdoc", "doc/release_notes/rake-0.5.3.rdoc", "doc/release_notes/rake-0.5.4.rdoc", "doc/release_notes/rake-0.6.0.rdoc", "doc/release_notes/rake-0.7.0.rdoc", "doc/release_notes/rake-0.7.1.rdoc", "doc/release_notes/rake-0.7.2.rdoc", "doc/release_notes/rake-0.7.3.rdoc", "doc/release_notes/rake-0.8.0.rdoc", "doc/release_notes/rake-0.8.2.rdoc", "doc/release_notes/rake-0.8.3.rdoc", "doc/release_notes/rake-0.8.4.rdoc", "doc/release_notes/rake-0.8.5.rdoc", "doc/release_notes/rake-0.8.6.rdoc", "doc/release_notes/rake-0.8.7.rdoc", "doc/release_notes/rake-0.9.0.rdoc", "doc/release_notes/rake-0.9.1.rdoc", "doc/release_notes/rake-0.9.2.2.rdoc", "doc/release_notes/rake-0.9.2.rdoc", "doc/release_notes/rake-0.9.3.rdoc", "doc/release_notes/rake-0.9.4.rdoc", "doc/release_notes/rake-0.9.5.rdoc", "doc/release_notes/rake-0.9.6.rdoc", "doc/release_notes/rake-10.0.0.rdoc", "doc/release_notes/rake-10.0.1.rdoc", "doc/release_notes/rake-10.0.2.rdoc", "doc/release_notes/rake-10.0.3.rdoc", "doc/release_notes/rake-10.1.0.rdoc"] - s.homepage = "https://github.com/ruby/rake" - s.licenses = ["MIT"] - s.rdoc_options = ["--main", "README.rdoc"] - s.required_ruby_version = Gem::Requirement.new(">= 1.8.7") - s.rubygems_version = "2.4.8" - s.summary = "Rake is a Make-like program implemented in Ruby" - - s.installed_by_version = "2.4.8" if s.respond_to? :installed_by_version - - if s.respond_to? :specification_version then - s.specification_version = 4 - - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_development_dependency(%q, ["~> 5.8"]) - s.add_development_dependency(%q, ["~> 4.0"]) - s.add_development_dependency(%q, ["~> 3.14"]) - else - s.add_dependency(%q, ["~> 5.8"]) - s.add_dependency(%q, ["~> 4.0"]) - s.add_dependency(%q, ["~> 3.14"]) - end - else - s.add_dependency(%q, ["~> 5.8"]) - s.add_dependency(%q, ["~> 4.0"]) - s.add_dependency(%q, ["~> 3.14"]) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/cache/rake-10.5.0.gem b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/cache/rake-10.5.0.gem deleted file mode 100644 index 0fe2757cbc0fc5ce6005112d8d50340fe35dbeed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130560 zcmeFXLy#_B5ccfIM@M9%w(Igwf%7b9g+s+Lr##bSgmO?kwbwIF$;yltzll4}o6{vvoj597Vmv@ua1b{Md2k zCqaBS!NV)12^kHudPxpfXZKeBKSVb41zOHCFb-K9L~S)E^^Aq3TQBwjoj(!HDM&xL zUuXYNUJVHlHtXNDbnc&+`?$e2SIAnj%&sD#wAzNGM^RB?tQ*i(E!VaMHkFTAD)|=H zsFN=&+8@Puf5^5r|BL5nCi%NF=Z_~x85ZYa_pp{Lk4ha|{9^;UMT|*xQKaqftw=fX zWysQ_PD9R0|3Ejy+y(6jY0KhQ_<{CJOqlBvt8R{7l0UP1*aZ|(JA*{l!H5_fRU~&7 zWo4j|z)*$woQ@{ZVzQ++alvO8@T>&E%zRIo->U4^hE0U3tTFXBB}q}&R)s}kYtwlg zqW)2bq!yZ>kos}^Ok{n;k+Am&#GXcafL1w`jr7`galbXa zEE~cPd^U0ym7uPwiBws&w6*12D>ocswWt0N?JQU;VE^crvL)<{M6CK#eK-Md-Rb)3 zbJmwaQy&0bn_8M`G1~Tu{+qFp_8>c$(eu`8F4H}~Hv+~&n4c#;%Sf}c>f`Qb#1Mw& z24U&$HBej>Nyi__(m3k-S+0QK&f)*|b9lP!-dHU|@&J@bsJ6?uH?#|r18e+fY__ZC z|9JD#Wpeb2#f~COECc$Yq-@pUp4^S9Y_p|cVI_$vPOd&KXMOf*m&FE#rqe=hMjjd> zuv@Xn*(cbC4cx^GJw#*=IQ0RXb_mx)On9+CvS0;d!VlmYtgixm>%b?vuu1YX`l=fbx{OXersZgELb49@PN7aVDeu1 zb`FH%c#eI2|E~VHHLW|+Ho6QufB7AhIVt8;Gu^WyBFs)*=(45cKq_aEiA2z?T21_b+7ri9OO-#G^52!pmWo#krh`|5+vU?kl)NK~ zbxw9(0aiFlRyfIRHbUbld1gk^B&7@98{=Wya|C>I4;8qz8WKd$ap-2LB~8M|xA8*m zax@zTl3CZxt&+N*vmo?_sCe4O9yi-)cCe~SL{9Y0(jk~_WUX-40i}&)##n}+qTA4E zB~hITQnt?MzyluSqWj?z?d`|wd5MA;@tvlg+Y%6EC!@)>#$BD9d-LWDRL&YaQga4w z0q3_`6JMNhyiK$%6Jz5avIO(GmckC%((y9#lX;wU;mz1Z^70yAT4C|Um1q1 z3e;vr3%!r52v3}aP?5QhY{+#SW5o{F)H?`b$w*gdciE!l_`wv4$l_`pHZ5@SzNuPb zE1Q_*rq*P!xF$L3L2HK#kvSF3H+u3Urc%-D!(WFMNcf(PzPA)^S}c|?cksozo1T$% zQ@D&brd+oy$ex_jkWbB_#x3Zt)+!9+Y$}8sLdJpO)3uR1N{0+}oxOb%IvsH!7x0@=N@8xf%UaI>G-7uUw4B}}vc=j}igz{M=lcrWsp25?kFGYr6s^ z0CMBh`0C}9Xvz^VT~WyLFz+v6sSb+_Hl!8->Z;iNPW-A|NQZeNY{%M^E=jTHs(}-1 z@63tIyN%R5lG+Wj-?`y;e9?dF;=t4Yb1lVsrDyTm3g^w$PzyS@{^3mNgs)J1z1}DA zg;~qPvEp+*qZUkQBT?~{qs*U!;UbxysW=oWri-xmh2?Twv{_ofzS3OHXHKkg=vlP~$~?Ri&M_742J zTf3nT+d4Qp{>nK1AF%$9tdGd&Q`aM}!`@STPrbYyzr_BLzmL3zBwDME z+7DCDVZ(c*arLYEh+tX=p@R&4*khL*44<<~Q`5S%=-|Gs^;K$q!LDBjApU7!jwMw$ zoPY#BR+k(B-}le?$20OrKi&w78)NJrrB8o%o9dq5e4owV{ImLGG9gxeIA($SAs2)f zd!C1nLV+C>5|2ZkxlP`gAjXKVGb7#(eXSA@LgC-1J?68Y>q?Gm1U@SpvYbqgI~^(B z_^|8zv%4G8t|w%NOOaR-{}Ukvbv5sc(&RbfsUC#tKI3-zZ_6AxXoF_co8d<+RpotK z&be$U#E*Jn%u6j^SnWX<~NY{-?bNW&tC`o+y9~U zxE|c6D|2*~QIbVM4GSkr#eqGTZ&$V%%#f$2o@}qRURMpohr_=W8VdF;AK&k`*Sr0K z{2SWGNeyfy(AB4#-r=9yYFE`dUin&nytv;|ih3oR+Nkt1gYwYXJ5LYit$r@A|0*As z{~`IX$KCtu@7kKU*3bUtj>m)9uYX*>?`q`PsFsb5Mc z3|r*#3_*}?yMfS!xi$m1%lJg4N7m*}xesx}(l6xTVM` z>LII(cJ%+1QUN+&5MQj~}b%6_@D8of)B6VTxCY zW?F&QTM%@~6b#Bf4!w((e}vv8y?NizW{_Ls7bX1g8+w^=z%r=BkDUSJ6$x20)4l!O zaBTiUh+(Jo)bTuxw*P39jG7^w{F2K}IcxF!nTc=?Xg}^SxKi=RIF`yqj{uyd(_y~q zXe9Q#K0AaQ3Y$FWU+P_D=*JRX!9rU`E6zxP=W^e3dcn;3F#Xfz00^c7WA5l;qB?RDN2T{BXeT~7+e^TZ)~9`Fj-?lIOQ_n z&)Rv<6E=GA0bvxoQEuJpiU^ZuO+soHIF1#z1m)5Y;wPg4(0oN!XkR)o>j2phKPbA_ z1`JqqYS9`k=joI0Ii#S`n?9%}und62A=Ih{9L4`nt-f$|K)UF#d1S0Mr8Xh?!mi)u?*jjUmmh6z{Y0Dwgcg9matQZv&otG(_9-&W^RcE!Uj09EPXr2!{z+ z(gdbtpMa?SYM0kNc7=_*@DApit#k>l8Fc@J{~d(vkGK>sSdqM{Y$a?)kc}(dbD_?j(Wzlln>1@|78w8_QwUl(uEbY5|C*OJ_Pb592N=-AwU7N zsbYm3fiQgD7)f)Bq2SsRDlmc`XXGJ5JPJ*Y_pSw6{TSOln?wFIzGo;D{W6q~3}L2d zP=8rV@UgLa=mTz?9WD@RPI*qG824apYfqR$a3%nDDdBJ_cMQA6YY->r&BdOc1_Fj= z3!;x?&bQ_Dfx1yEtTmKPvL0plkmQlad?sCqN(bR1XK9RVC~)D$Ei#Rst{mT%k4W7& zaP5auUCh-$(yfD2rjtEeTZ?x7Yt1g-LnLogQ)UT1K6pbP>-R64PFP$(ysAHsOGnd^!;S?g?027!2mN5idfy{>f>DcXf~>=#h~0 zOSu@mJNVtD8!{|8c6g(j;W5ww*F-a84iz*9NB}n=k_9F5xX#{|#YuE8_OpJ2BPgh2 zXIgS&4%{BpH|#oL42r&&Sa$#kPOxpNMIJB_SVRJQeD{DR?JV}>CH8QV&<(U4VH~~s zvd%i@tcjV>C~ssM8-y8B9UTpnD_<`p3;iudZ9~)j*0O4s>=O|jZvE|vnA8J}2Yewn zZQLW;K@;B8eNJ*j|AN8&U|RXN-bz1CFbum211e#JGpQCnRFJ-hp4B;eN%v^JXRwtc zjG->xD7f?C}tkwne&}u7-r4aD@DW*V zVG}ZeJN6)dOpupUQGRzsO+?m$UBWb6EFkHF$PP9A_35jy2xq)fRPb>_;5wy#rR}mD<3zb&-Co9>CoS9F>1!oCZ;;bAjqGpe_96^Z* zS)e^ic7R1%BprznQNWhlEN2affI;C7`L>Il#$UaG2A)D~*eu~&6eZ(49Tj{CKpAbJ z7Eu;G3C0$QjhmxXDd`x1GSs~1wHYfWxBqMAvP))EfEJkKT&)jEln_iyG0-D7A9%H- zHC*h1IByGm7eYCJuuu&z`>w^9_j!nnb^$<>K!a}CYWzg8W{%>>Vt6d3;%3-HjT+)8 z>la9`NQ;1(Dw=^e5`#F* zq3kTL@>csxHsfWK&MuOmB}{b|+e_F4(KHJ3P9#rpX@+Yq#XHR91vcfrOmADjm&XXcw3Y7 z+Uh|>4_ukI;INQ|^4=~=77sOuBPb1GJe_w5@`A{MeNZ%1{(~FI3;CxKVTl}NmmrAB zjV4O702p5U1&q>^)^SI!l)DdsC24E~5$3I3WWx{Y4Q)o1CNfM*h?ZKKP=uf*T(tfS zmy|TaG89-dDn&392=BzIK_kZDcWFU=_QZh%wTr5=&;d7*Ye{irf)JZMG3$Mj%5z8YI_(Ny=%2OZ3tZ z1W(rXYVg)DN~ffXdgQnTt zIh=ivfqrSW^jZ(|Eg{5b!cs9>q{V=WET*XBCkWl2DI*;2h&;RdH@3R+G-~e(dDZJW zlwWbN`YruE7K82X8yt#}Ykn+UfxTc~@ykEZ^dN9x8EZt#Ege#DiLwR=syM_vWX60c z?X#)3dUBXFh@R{?GC%2$D`ZC$#Ei)EE$ip(Vn4{TAUw&A>1aor<{x?R#x7hS1U%V~ z1)J=6j~bLH&pGqsX})49KP*x~8{pN<1B8t=F4~syIScI!H;&zVhH1q%NW1xfdXP{b zd~Xg$IA_%!R#c`4VD{$>w`b)AbHi?b32O#!f{Rd!S|D~l$0>ElOVGKUN6z=r_`2il zoHjdPEs34iz|5e!W6psOkfp3=`WTUcob=j9jB9upEWv4?M5S;`>o{da$M+KuNCfHe zxD8Vk;%}7&>dBWtU*e^3L&@j+N!h5B_~^N1E<2gEy-!jHt_`S+cYq>hANB)AVRz~p zm?bApMJrFJZv;zpHugD&ibV>vvW*QeQf|Nm-6b;A&QP2ihuQY^HBq85m2w1zV?WgxA?YSM9MXG5NW&Bx((8n7KvK61tZEvq1c+(e&a0K~*$22Q zdNNC3M5g?A*|a_pE!j-n!)zoO?G<;H_n?gT70%Gr9DprHh(FFXah6NP&0!_=)?)uQ zN&I1j^?eb#^WK;#5*239!7MYbbXBh*kdoT0ctK(7a@&8lxV>FhfssbL^VXeNcZk8V z#G<~g&FQy>v4?_~sX~kjD=ge_YpLSwE-jKhEQ?>kh2Jhorzn8%Jt2Hs(=~9y*qHCu|hP!!RC?{g?P0{oqU%07*vL zAqqK9zzI~F)#dPr>0s!EG%ZwcG(y+qs?Jt(OM^Jg@)T$D%;8>7m>M_xZxGRJJ^Zw!F zfJJL4_y?O>vKmBz8gHa_Ii3DIQU6_edX4cu6hYM0^=2rvppYw8@Jl0olvn)*Kn~iu zUUe6sU+lYiejTvyk7TwsB;^C9wxd=K>2hjkNoeKa$O=97BI*{P1Ga}5!iLapj5rEf z#R7ttYDQh~Pt=H3N@yC~He{j9RCLVzG0oDq_8puZn%Uy3NY3DE)`Tk09Ko&T%4H8v zVBX}&o7nAsE~v6PQbGc^Fo;DYZxo{A2XV#IKezVo-^RknoV*CUPvOw@buAB!{m~3e zq9ZYUkqks49(`XYnDOb$x~ole(MiBkhu;18il|LM z6{_^*h)iR8NMf*!Q>~!Y`Y+>f;-VLb5%?iR5q~LRUGb0B=A)R*@w3mE9TCb%Tb;+dptP?x#}N>8Jh;cF!}ZI4R~nYx zBzz=Vo?$4R$MDD+P)2i`TOvPeze4ROF3|D4aEZNv*uqJFR+y8zp>d&3XeADNQf zk&?`J#^?aoWm%Ao3)=Of2&RHZXL_AFkjgK`{$idi96-b*^DkY%4d^oGkTdlG(xON2 zt=uVx6eASmQ#P=M5O{_1!qUQdUIG8`&_te>r{kLaf`5FSyng#C_IIDHs{ygEm7YF+ zYgcWU*Q%9)p1vM#eoh;VFJ~@Dfr=`7Zx`Y4+b9m*CFULnZ4cvufTgnJzV zAOmNx?!b9Vs?rwDJRY~cs+V8aP)=4A}zlE}I!A8MTNI1R+% z^MjS>g!iIi9H>|VkIM`tV|OJZY~o5|B`6r{Wo{PI;Exit=tU<>hYVfJ>Dt0TvkQ;m zojl#l0;piKf7s)e``aC8F|2by@M5bmyPbj>#QJgNfeji%0X+6Fdamt+Sd{e&ZtejR zO`LIGb;=Hvv%pI>Yb z;=ZsWGbG~jfosIBi%R|`BlC85HOTKG#(`SMPiGC=epwRhGyW_LNZvEOvyY&LLfm2P zn*b$}Ol&8IaH;%4SLo_M+y0ULhP^2jK26cLH%LOxCT0>)RNKS;E!RaF_T?TrtL#V7Al_bU?9ODO%Weap{ z`gT|phwcIVyx=&mAoQn;-*18B1&R$kK;(FLkGcs#%Vtahz88XkQrt2sQm@X`x9GpF zRTb5eY(2U07>^L>7JiSDlTg7WCGvlG`Z;~vJhzOz zD>=voMh$5&aIu7k+?U4$%w-MP%*tSo)|~l`78V8_r3&C48v*u5=5@l|9^}NJ+_67L zI@w#t&XnAaGEopYa5ar_7J?vS5HG2K%v%vb9cdoflZ8JU*uE(IprveokUBenE-iTNsGFZgFwruF>!7VigIMSPD3H5?NB|~ zqq3mRrTWIc#ZbHZjs*;AMvBf~*f#dWfo4wOTNjO12iD_5hf`Vt1-e2Ofzd#IRzsr* zQL!iU_;MD_ej*Zo6j8gJ^3xcbGWUhYWLl6qFVKTa8CB=13p6A5AysGK%R)x|!f_u% z8x=DWqGmRyzb|xbv=zloc~L(miND>4spLs*osGO6PHm6gQP4^z-nGd=$A zK`{g=7~!RfaI~#NEbZ;#eLm-(QFTtsZ_{&cQ03y(FlaGk7d0ln}p z!s0CMhR#fPXHgeIT()LY{6amzCN0)yCu**o`6e*iMEX75M#vA?JE;L@;!sM9_SC!{SUyvQj zlT&GC`qB-C6bZ#Z9WFIu*73avrfhIb>2^IwKv>A5mFO#$pmbH~TD1K$5j(r(Q@S@=gjn3mA%3%=n@65`6GsY%NxaU>D;vl*^GorLaAo|;IXT>3pOFn2q$-NJOro(( zX_e8s;>H6yR?T|<>>@M9^Vvm6gM5m=IADo;q85>ja-h{vvnA{=Y~TR2Vt_vQw23_U zee56P07eW0S?70gp5$rUBc%}H&o&PFZff9PxzRGI7W#ZDXE$I;mbmwm_^FuTj@v?| zXlU;ubZi@X85|e23-nmQObgHJAKr1OF?objs0ZFA3vG55m{5ExyUI1ViCKA|v#j8s zD~xmCgkZv{R0KP_LK_?OWBnrJGe>`T!uehshx5%l!^-l#D}2E^GSLMs4eeAqL3_bYcV$NmR9DXR+roHHpn}B($33<%tAu@!54zF&n!=C028u4Qx+->u0-+3a zmRw8G_DI!5MaeeQl9*!8+u?A8u&&b5LiAI<+<_3)*a*9PVy)cgq`W=d=f@e+sa_WLiQ71t@>OR@oynC#z_mrENo0-@$|6GFLOy`CDu=`q zO>z+id@vG$&gWsq@Wt^8v;b5pCYX&rD@2@IiihZvOcXvY6CE@DbVR zBoio^h_M2Wpn?DPd30Jd3o01_wUE7SOM|$XI0fW;tp`~iwTYtgvoa^vu!$Xv_`zdY z-6-cc*h}ua^iS36B0TE#?qC_k|;4n3fqat~K+R;}!~%>9MG#7VVp+I=@lD zNj_0VHbAv8v}YaPNq>uAiH@L+ArCnF zq=Y=zVYX${u3$XoYIOTb2Gk#aaG{8@)PwIyRo)Yi7+)sQI{<@F=}$%5dnTh9sgMFt z6D+i(5JQB?BqU8ar4bWCtY_QYE9pvm7z0YyDWN=<+2>WX$c>{pxME5a3n#(72mzw= z<*-zUj&#S34*?O0a7L(zf&ZUBoVScEjrO-1H1(FL_6H>mC!A6%WjtqJB43(xm?Q@CCZr}QrbWz zXYNurrCuSKY{TeDbiTU}L6HqpD~*D`L!>vO9K zD&GNGs3B&Ga%$oo?8zIwI3DxE!MZZ{$)pHOQ|We*jpVWhOM4tb+DSzz(;G}1`Y!;a z;ZMuGl)|(z*Y^rVi4XF;x(j9Qw906-D#_L#VjOQJT)Hw#g^5yjzS=D?t&fDNi=eK} zd9=}>UnUjpJ&(g7+Y<`yRf$~gVhkKo5li6ExGY=hRW$Y}_2)13%(jw$hOjjYQd3l5bp+i~ao3XOt>mpeh@L7TF34IM{+lo02MEBup&M3>OfB zN=7X!xw?{MDP%S<#eO$jf=5&?hhj(ZtBvW}rw}TVJGzMz3uqE>9lF;spm;f};IrC4 zHdbSamM!MZJFd4;4n$3U`WwC&M0u6;SM6NaM{;&ommGlaEOlFDC3klSJQh{6Ho*+TA?r==zrL zH(MbO{4S$A*QiYH*E4Z5KAl>?$WiZ5RZyoBP;s@DIGc`<(ygg;i^|Wzp_2Q}W#jZ7 z?2!!id?H?fN|J$SkLX;5s}x6XI5jn;TCAou0lN;m z+BUF_O)LA#`ZMZH#!YeUp2SW*5eBFOPV}56E!v*6NJpxRqK*a{q#wSxc!` zxD!WoJN`^^Lsd#6y*A$fsb!as>IM@Wn}*YSnyQPdmRWJ(kYhP}%HoJ#zR^iuR0at6 zfOo`Rp@)%%iAKG`zUN|QsB}okGiLx>4(quN3j(rGbrw`tXtS(pGp6;;@uIHk1p-P)kTyi6Y2p9`oHk+Ozh^y4|Q;8X;pjk?0neAlcnJg$bo&fR~auQAA{P{jx)zR_Iyn)DLNh5f#B z*0D_QC@;T4L9K(a{Ef;4b6Doj8}~{zidjSG zffH7e9q}$Nq6r3$%ku50$d0nQfk|tc`aw)xe1#yBQdJ;p(H zLP&%-fn#<_A%`~K>}c>Y3ZrEK%l@Uk6a$f^KRK(;WMSzO<3fM3>M-> zfvi(kEhMg>R}B9*eE|9>QIb0uxr&hISD@l4Px9P(dib}BjGjd?d(FdiZynrubJ6X7 zTU5oWRv^*iJv;k%NbFA}oXCh>r0>l}-uPA`@+!&fmsmT6y3xV$qEt=qi&iaJmQ)SA z8ekRbZKU@M31aPMbj7(ZUz8uhQlGRdVSnoZQ){uzqy@uQ*d*7C{Kt;?HEOm%u@uPlT+%#^*)d(|FdIi&qcx!foV0-;`#oY$80a=gP0>FU=mZpK*>U84<`?e4ak%nA)+jvN;3e=?65NwgFyE(7TvlH0&j9F%PUajcW@ zEt;rmOPd+?p#aJyjG@{FQO%}H(D%|_ixa(`a{@vguRz$CXcn#8N$SrOY}bln?}4-Z zMH*7<3h+7RxKqiW@eN^0eTHtk4|9R=QjsxHcmL??L*uQX@zoVqZ=+KS#*;~V@!ER} z>y?wG2%nI?|B{@j$3tXz&`=UO5kl(L zd4v91VT|fqHl#o0@93RoM*Dqsl48WaZR%%1TueJ|?K=o<5U7>&$$&dLYVf@%l4fgq zo=s;H(pxiJm%y}?Cpb4XorRXnhI)4Yf3zW;O2I!62nYaK#&DF37{)t?7EL-A&L?Gd zO>IAYNXT;@eTUVhNK5jK4vXkJ{CDbEbf{b(pd?V@4l9(YwXv}{J~mD!hAj(jeEMWb zY?rtLGxym4Hd5#?v*(gv)^c*|u)x z1gYwz@|j5*1WBezwlENXRt!yzP3O+suXy`0~vIiA{`w$t6lvhdx4-+Doh~<$P7mFBRV`G#oNW{uTp~d~A3TWHx>#ktx45o21=PxhFPt4HB`@$q~NkK zNL&JB)<*5k<3WXrC;tYzjH}@C26%DOrSbUAQK|@aMNt;FKCKC-Ke9GnxD+M=3=KN! z&5Wd@h$OrTOYzmDPNMV?Vvg~^$696b#>TjG42@a)jBJ+e^AxJusb*$n; zlX;-gmfg{cb>?;pwsrZa{Z-*6Vqn;B1k;$uhWBcFjjUTvq=yjK#wKq_znN~k)Wvn* zZ>ih5EGee1r`ONNZH-qgT@5^w7U|`>=-28hX^;uCUKZl@TfR~%ouQ*@0_b#T9n+I3~F4%<$g@dk0W?$iPo7>XB z+^pXA@^kW9`fe(8^W(n3*U9N_C{Ia;z{_r!qM@hq zJS$bct5{o|3@<-%zX}#Gei4F=0SbDV+l~b--%4Eri8^?uk?XdXUhMV{)zGz}NpIsj zDgCe?;`g=4FvRGk31O39_?Lqt&z4VX>bIf!GxXO#?aQD0w%Wu3*i}|r(1J=R!=xP6 zk@kJD(Q&fVx;<`gOIK3oG{+CoaS0>lp0sTMe+$^#tfM1WPeU~nM9bu zml`a@4x0pwDh|Zrjg3+D{U_G$oz|CR8cEX(=1EJZmmuOcnx4EWg`#dNc2B9q4<9U` z-nG5DyJ$z#I*-}(D`|bOO*Y_}ml=Sjix-|J#GdQo$C5iZ;P_Lb3Y{k(P>%kYd2*?QJKB+-Ze5*@F+Zg_9|`K}k7q-oyolE$Hra$MbP4MXCPg#a@Fg@h@aR0`4oQo(;$ZLEkk`k=ZGmctvK$eWE(g*l0E7Eiw#03MJ9UD?2-5Kpl5+T-o}@J zpiPURoND`yOE%tcNb3q<@Y?FO1KSvSb$LgD0RC@ogfQy9(EfLf%1}l@c;n?{z)&qw zOSWCC_El2O8yC6cPAJX^`qn*~KqVuYyNl3L-wCk-5I=Om=NXL7&Ky+GZmD%9 zv|OCSgXy_cB!A&V)DuQDcl&|E)*DkWS~D~4;6>)={JNgk_oq>}Y9L#BA2yu2p8@%L zXC#*6K8~$glLidg7PA#Heh2<9Sgu{mY#nRSf46{YSlpXQi+1 zvSx{GGJw7CsZw_|#HhZ@WTbyQV|pi8f9tvBqc;tz z4{*{F`}?zXw9KS!FCI7jX<26Te<(lqmv_lN_fK!eFh2LsCV%6A7F3%j`DZLr5S0>S)!(PhV}<-k8v zAs!^UFJ|Am{f@+fCx2Fkab?lKtY7>_Q|fVjd_DmQujkl>aZd55;kIeGvmj?7xlt~Z z^v>UT^HYCLb)8a;{ZoTT2)Q{=fgTnn)jmTOLLT{8HMX)N`W5~9D70oCQ*@nJsiijQ z+$&hV8|8m2Cj=OIp-S@>HD>OIhN?~%L#4m3uT&{2W2g!#`o-;?dl?U?V5xR8MA%pc? zH)W2^Q4&`TVnvgR;w2&-Stt3Pi1zR)7s_j_Ofnp#MHbXj+okY`rTm?=D$6zQlC0Io zH)M16<&VnuK2&NT0V+?X25>RF@JI_VQBqP=Mm5d)P`MKB_!w$0JENcA%ZGD2CN9%}$x6@fY^_0*UCY{Ajfi#aw^my9}vDgr9cIgHLNL$KUT0bNk)%*(CX`Fp}kPn~MylaYzmvSuSo*B45dJ6kVhdmiFBUt+Gv$ z+XQ_yw8SCh6QgmvmbhA1tm2N~kXCCz&a@jwUZ?5~N;Sm^bgTC^ts!TeQxp&11EH%m zV;a-2VCh_xvvSI&pfek;1jgPw~zy-Ek-&n?^Un_B*3sx(I2@7`ks z1D(HaSr?rm7=#O5Y6r-!&G5Hj5~DiTR#;FdOo9ka>xHyNK1d-!39Wm2YBn3o;J3B|VZ&lk5zM!3zVoGRA#s)>ecGG|zo1<_x>Ue;ly-k9K zvvvSPp`Fe`85O5WW%l_Bm4^L7b>B@jZnZUiK;phlA-Sj^pk3!Os0?W$rpIWfi^=So1A}z+YWB} z0-h1NcR04cqp5d9j;Gyke{`FBz^f9=qpXa*t&N?dy{+BdeeG5<@fb?F-ewU1MG(1n zOLY*81}KXvqDftI@Z6J`XXPFLjB?%PNG z=kCfD*PB4b)%%BBf1eWXJ_USz@Z%AbWS$-EXPa;=v>l$ZnpCgmzkifCyaW0g{Xip z?Cye5s1}rSW!vIAxEk#0s`w9o+_FJl?JL4wvf`{3F4qgJq-_Ph77>FWo>ZNyE;o4a zy(&h^af(P)l?77IJO1a+i0iNvrzYHfRA1a>Bqa@SJ8qXS-}L$HE9P1oS8TD3{~`Q0 z@_7j&O0W)MfG22lPZS0$7pyO0WOr?d|IjA48G@QkHr5=&W;{vg9uMx3ZwF+A$M+Loj24|1X zAEUDDTjYeopiS4MC~BGHABbG)JTx``^Bv}n0R=jOzhT;L%Jz(1j%=wK!y6F=*N1TN zvKD>^6=GT;cK2-X%w`Cul3*5(rs&52s`rq3XLoO2{LDn&6%1^@D&45S}yQ39|L18zhA>jt#(Dlc*eSQd^= z>c1wnz^Wkf8|x|8@h#5o?QHjT46jDv!9Ul2({++DN75AzYp5pw1Sm7A zd2eGNgX_F>P8;j(9gcoHPR4McvNOdr94o&31Rpp!UZHlwQjs@y()3v;L<;r{*4_J? zc|y}YgA$zhAv20*{g~Ut1H>1mfcaW4PQ1c1oqCAJ`j-CO747MOzHdZ=H2U%iVaY;t z3e9JeC&QTNgivTtBS%@}SAVUAATh|ueg^?3uUNfG1efNL6hMg>+Y8O^Y18x>}h z!}Jx@Mv#|4z0DBj!7j|vUBy*Bgb$bO2Rw7}xk6A}^RyECRij;FC^Mi~e7R6-cIgy9 z*V~$j@>>P*Im1;|s!XY!k)&(Ay-RGUesWWVPuTWE08!v)J5bNJj1z90j_6eheV_(r zP{21lYLY`mFio8iTIK4ZylVDDg@6{s+*WV9Dp(Z4$mcWeei^`LJcVph=OZIqWo_iz zI#{ph{e4;eT#s4M(~`HB&CUpBIALdapmz>4^|!28sw)EALpANFyv+R(W-PuaV2!n2 zQ-LB&ZnfEB#bwg6zdg?JL20aexhOwA6SWdw{84Ikt1pRYNz<4G5nF2?dxLTANu>R` z$V4IddX2_}LKgzpb(CqSyt94>JqU?#xWB^u*A`gD}MB z$65tEt(LR!LMJEx%m>Fz<%3w;s6lz~^v#5I?0jjOw09Kpx6e8@y4puP)5y?K#R0KUqprU+MOwU62yr(B-D&liSN zaud>kaN5+03fQUlFu_Z84Z!} zN7d^4qX6vp+#pr=-yj8OpKym%ecByT0CxW^Qg!z&(nlnZ|05SkZIv2;{XJJnsT2R$ zZBmurCIw)B=Y3LDzE29EKIKNK`m`IRs1n_Or&N8~ol*ewz^zjCiML8|fcM=iRlo0E zDNcR)X6d7~wN)aJi11Z8%4OwZnUNP28ZJa4ms@aaokw3TuztedJ?D0x%l~V8ccbk8 z^&~)+Xa4j6O(4(K;m1BcQQ$Xve6|h+Se5AbSvikv9wxQ` z16f`X3~LbcM0*4jT~*-4v;F~&2CeNT8JNPPEab$5f$h?ifMhx@9h$*73>Af(D|7&Z z&+*urO<;&L2vuvg>O7KHl9_|!19~PC5T_LAa(w3_ePrKY=Y&z541DPV27R}3gQXLW z#?K+z(MP1AFeoRd-H9YqILb6SSYh5hXaQhOhvzmfE}t#b@hM$0^0b1iUv zmwl`x>NC56=+<<1xYzKVlK!x@uI`fDp_{W3O$DjRLM2`$BaWY&`_*Mil7rcK0j)67 zCJ8Jarvf)-0H!VYfP?2Gi8O99zDFxTunjUV zGbx%VhM|zHMmSiv z-e?+ek1+V>kP?+(G~P?t|C!Z_$&*c)LMd0%kWmgqXwLtl@)%oEg58EjI{dUa)kr_2 zjEoge|8Stb-bVs~!a81YWbmP{6P0F5V45@Ra0%G#USJJ1GlS%?)Qx-K>&#@OCfW}) zK?|VkGKxj$I}}RhT@FIWo_f+Ex+QTd0RN?49tr-&aWyFrng1bM(choqeky&8=2J9% zA()@)@0k;IgfgV!Ozp>Dd#~_cKC48d51%_!>wXG zR=c$>2d-NhR^pq)QyO21y}{fWM--Y#f>QLvRV@t9pZa-~=9Fh$XR9OsLdkzcPI=1g zB=m#T4W!b^4hJsfFs^(0EVdTK3f2yO?MYB!p4!?YGaYMcr*2J=j7|e!d{8!kNGEQ7 zpwj+kUWsC{qMrwsWD^3}PWeT>T=hw*!|-Bx32dBg;>{q9xO|;NFjiwe6r$|TnBQfP z>MSeb&25P%M8BRdv~y`guq8-KQ50#{>r5E=TzCUcEF@S`)50BrY5t^%d|mYYReMO+ z#e`zml*cFDV}L8Ti+9M(Rv^}*Nw^D(Ga)f$1mXFji2d>__^3$e=v#jbQtB-xf+6Y50%B!am$f4jdBs% z{vbCgR^@?UIa9~mP4bHkO1t|5&0N#(*Jz|`SLU%s?9KX~QBEUGJ_kM?H2QT{BfW`^ zDWSGG>#+_s%Cv&D5sh~ZhQ6kAzSD{>ub(V32}U%gA{0vyzOuT&&CAXiAfLUnA0`&D z&TgSaqO#L-aiI$PEPsKEb*1;&Jd2y0I*W*gopTjW;#+@hpPoEFI=O-!VKRHAZ0^C6 z?tDMU&eO7hAVnhWh|7`w(Dz4_zSQJ>xnmIM>1v75T~1#!(W#28i-@LV(U5ueF zwZNyKIlhxKE6JF&um1A#;;g++8-n0@I)kN#fwy#655a7hoF5wNwJtA@THV&V@op4; zQJT;fr3uxe;UsQ)ObwnajY15fS(tS*4xOe!S|s+st)U4-FpbSHwPyED*1}T8PZCbr zW-!J^p>*Ph)J%ZB+?FTHkhs*j&E{l8?r_u%Tq}}L8rqdc@$zz;g?*!|P%~P>u*P|Z zjU>~Y9@8Alts4sXBEmOYJw&$V)K}%LBEr99zWNO(D7D_sM1uNr9-*{YGo9C}-$^;YQwA)nyA1(n<~JbqR50@6d%% zlYezdPo-JEb2Gdt!{iHuNM1Q8_);A$j+;c2NJm+8VZq#5W=SO~JH)1XlIJJSelC1p zwxpKv*sqP!)aND=>fOY{g!6?6?iRrr`X~pHxv43M`cgfOe=CZAww_{D)A{`n?nxvG zRPaz1g@qM~<~9Am3rh}8+UwR;ZagOAGtZx9cbrT~#CzL*Jn_o-^!w#|s+w->AE>u`Xc2ku zI8?aexp9SF!>>W*J^7wx=y{eV1GTR*mja@t^L}mpog4pUy`ie^po+o+X1^N`2I|qT zQ1qi}4pcLS2d?q4!Uw(FNZ&Nl|JOA_@j-Pv94z#o-_*tPAC6B>+Z_P)mgcU(qidM< z-^-N8{hzQax`N%yiv7Xrp>)7*RxwlsO(|@Ld%-P`OD22oCez+1cR#J7PbQM-qacBY z|ERuqeGjrOWlg+pP z+kL-=q*H$+y3n~g)TEK=4$#&2Ho?>d+(8^-HW^Kiq^Sy!w>l6dQ-z5ZWmN6|ghLZD zF3$N_O+Eni1!7;fbsa zzwGq?fA)X>Khyqy@@4=3q5Hpo|NifP+5i9F?SHm;`~mxar>y_&JlXnk|LYIi{}|yo ziIf%tzAe1y;|m8J3du3bPzfrCKl=Jd;-g=f+W0~x{*&+jLO8U~&;Pf#pX@B}|1a@> zKg-{~dLgUtIPB%4_Ruf$5Z#co7!SQ{r=K{%SR8y05zpEv*eix>R4s84qS#l)mW0u7 z3x4|S*axutVLX6(wO1+oQV)IYu-RXzwPC!rzUD{6H8t~sB*plm`uv=__l8{r^$}<8 zs*PutF&-wT#%T$U@1?u>*_{l8T`4FcsyQajeOwykMtaSjuY8OzN7neF;Mwhkw;pAc zmbYoaZ>pw!UjiM~k^;cmUPuMkxw

BN|{Wziy8)0qQ&jEtQv`AZi>MlWu}Yz#nqP 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 M{@Vlp*FEq*02o?;L;wH) diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/.autotest b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/.autotest deleted file mode 100644 index 0988b12a..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/.autotest +++ /dev/null @@ -1,7 +0,0 @@ -require 'autotest/restart' - -Autotest.add_hook :initialize do |at| - at.testlib = '' - at.add_exception '.git' -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/.rubocop.yml b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/.rubocop.yml deleted file mode 100644 index 6d2bfcdb..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/.rubocop.yml +++ /dev/null @@ -1,27 +0,0 @@ -StringLiterals: - Enabled: false - -MultilineBlocks: - Enabled: false - -SingleLineBlocks: - Enabled: false - -NewLambdaLiteral: - Enabled: false - -SpaceAroundEqualsInParameterDefault: - Enabled: false - -HashSyntax: - Enabled: false - -LineLength: - Enabled: true - Max: 90 - -WhileUntilModifier: - Enabled: false - -IfUnlessModifier: - Enabled: false diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/.togglerc b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/.togglerc deleted file mode 100644 index c8c5a0a9..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/.togglerc +++ /dev/null @@ -1,7 +0,0 @@ -(add-to-list - 'toggle-mapping-styles - '(rake . ( - ("test/test_rake_\\1.rb" . "lib/rake/\\1.rb") - ) )) - -(buffer-toggle-style 'rake) diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/History.rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/History.rdoc deleted file mode 100644 index ca24412d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/History.rdoc +++ /dev/null @@ -1,659 +0,0 @@ -=== 10.5.0 / 2016-01-13 - -Enhancements: - -* Removed monkey patching for Ruby 1.8. Pull request #46 by Pablo Herrero. -* Inheritance class of Rake::FileList returns always self class. - Pull request #74 by Thomas Scholz - -=== 10.4.2 / 2014-12-02 - -Bug fixes: - -* Rake no longer edits ARGV. This allows you to re-exec rake from a rake - task. Pull requset #9 by Matt Palmer. -* Documented how Rake::DSL#desc handles sentences in task descriptions. - Issue #7 by Raza Sayed. -* Fixed test error on 1.9.3 with legacy RubyGems. Issue #8 by Matt Palmer. -* Deleted duplicated History entry. Pull request #10 by Yuji Yamamoto. - -=== 10.4.1 / 2014-12-01 - -Bug fixes: - -* Reverted fix for #277 as it caused numerous issues for rake users. - rails/spring issue #366 by Gustavo Dutra. - -=== 10.4.0 / 2014-11-22 - -Enhancements: - -* Upgraded to minitest 5. Pull request #292 by Teo Ljungberg. -* Added support for Pathname in rake tasks. Pull request #271 by Randy - Coulman. -* Rake now ignores falsy dependencies which allows for easier programmatic - creation of tasks. Pull request #273 by Manav. -* Rake no longer edits ARGV. This allows you to re-exec rake from a rake - task. Issue #277 by Matt Palmer. -* Etc.nprocessors is used for counting the number of CPUs. - -Bug fixes: - -* Updated rake manpage. Issue #283 by Nathan Long, pull request #291 by - skittleys. -* Add Rake::LATE to allow rebuilding of files that depend on deleted files. - Bug #286, pull request #287 by David Grayson. -* Fix relinking of files when repackaging. Bug #276 by Muenze. -* Fixed some typos. Pull request #280 by Jed Northridge. -* Try counting CPUs via cpuinfo if host_os was not matched. Pull request - #282 by Edouard B. - -=== 10.3.2 / 2014-05-15 - -Bug fixes: - -* Rake no longer infinitely loops when showing exception causes that refer to - each other. Bug #272 by Chris Bandy. -* Fixed documentation typos. Bug #275 by Jake Worth. - -=== 10.3.1 / 2014-04-17 - -Bug fixes: - -* Really stop reporting an error when cleaning already-deleted files. Pull - request #269 by Randy Coulman -* Fixed infinite loop when cleaning already-deleted files on windows. - -=== 10.3 / 2014-04-15 - -Enhancements: - -* Added --build-all option to rake which treats all file prerequisites as - out-of-date. Pull request #254 by Andrew Gilbert. -* Added Rake::NameSpace#scope. Issue #263 by Jon San Miguel. - -Bug fixes: - -* Suppress org.jruby package files in rake error messages for JRuby users. - Issue #213 by Charles Nutter. -* Fixed typo, removed extra "h". Pull request #267 by Hsing-Hui Hsu. -* Rake no longer reports an error when cleaning already-deleted files. Pull - request #266 by Randy Coulman. -* Consume stderr while determining CPU count to avoid hang. Issue #268 by - Albert Sun. - -=== 10.2.2 / 2014-03-27 - -Bug fixes: - -* Restored Ruby 1.8.7 compatibility - -=== 10.2.1 / 2014-03-25 - -Bug fixes: - -* File tasks including a ':' are now top-level tasks again. Issue #262 by - Josh Holtrop. -* Use sysctl for CPU count for all BSDs. Pull request #261 by Joshua Stein. -* Fixed CPU detection for unknown platforms. - -=== 10.2.0 / 2014-03-24 - -Enhancements: - -* Rake now requires Ruby 1.9 or newer. For me, this is a breaking change, but - it seems that Jim planned to release it with Rake 10.2. See also pull - request #247 by Philip Arndt. -* Rake now allows you to declare tasks under a namespace like: - - task 'a:b' do ... end - - Pull request #232 by Judson Lester. -* Task#source defaults to the first prerequisite in non-rule tasks. Pull - request #215 by Avdi Grimm. -* Rake now automatically rebuilds and reloads imported files. Pull request - #209 by Randy Coulman. -* The rake task arguments can contain escaped commas. Pull request #214 by - Filip Hrbek. -* Rake now prints the exception class on errors. Patch #251 by David Cornu. - -Bug fixes: - -* Fixed typos. Pull request #256 by Valera Rozuvan, #250 via Jake Worth, #260 - by Zachary Scott. -* Fixed documentation for calling tasks with arguments. Pull request #235 by - John Varghese. -* Clarified `rake -f` usage message. Pull request #252 by Marco Pfatschbacher. -* Fixed a test failure on windows. Pull request #231 by Hiroshi Shirosaki. -* Fixed corrupted rake.1.gz. Pull request #225 by Michel Boaventura. -* Fixed bug in can_detect_signals? in test. Patch from #243 by Alexey - Borzenkov. - -=== 10.1.1 and earlier - -Additions to the old CHANGES file were not made consistently so some -versions are missing from this file. These changes are usually described in -the individual release notes files. - -=== 0.9.3 - -* The rake test loader now removes arguments it has processed. Issue #51 -* Rake::TaskArguments now responds to #values_at -* RakeFileUtils.verbose_flag = nil silences output the same as 0.8.7 -* Rake tests are now directory-independent -* Rake tests are no longer require flexmock -* Commands constant is no longer polluting top level namespace. -* Show only the interesting portion of the backtrace by default (James M. Lawrence). -* Added --reduce-compat optiont to remove backward compatible DSL hacks (James M. Lawrence). -* lib/rake/file_list.rb (Rake::FileList#egrep): there is no need to - open files in binary mode. (NAKAMURA Usaku) - -=== 0.9.2 - -* Unknown - -=== 0.9.1 - -* Added deprecation warnings to the Rake DSL methods. - -=== 0.9.0 - -* *Incompatible* *change*: Rake DSL commands ('task', 'file', etc.) are - no longer private methods in Object. If you need to call 'task :xzy' inside - your class, include Rake::DSL into the class. The DSL is still available at - the top level scope (via the top level object which extends Rake::DSL). - -* Rake now warns when the deprecated :needs syntax used. - -* Rake history is now UTF-8 encoded. - -* Rake now uses case-insensitive comparisons to find the Rakefile on Windows. - Based on patch by Roger Pack. - -* Rake now requires (instead of loads) files in the test task. Patch by Cezary - Baginski. - -* Fixed typos. Patches by Sean Scot August Moon and R.T. Lechow. - -* Rake now prints the Rakefile directory only when it's different from the - current directory. Patch by Alex Chaffee. - -* Improved rakefile_location discovery on Windows. Patch by James Tucker. - -* Rake now recognizes "Windows Server" as a windows system. Patch by Matthias - Lüdtke - -* Rake::RDocTask is deprecated. Use RDoc::Task from RDoc 2.4.2+ (require - 'rdoc/task') - -* Rake::GemPackageTask is deprecated. Use Gem::PackageTask (require - 'rubygems/package_task') - -* Rake now outputs various messages to $stderr instead of $stdout. - -* Rake no longer emits warnings for Config. Patch by Santiago Pastorino. - -* Split rake.rb into individual files. - -* Support for the --where (-W) flag for showing where a task is defined. - -* Fixed quoting in test task. - (http://onestepback.org/redmine/issues/show/44, - http://www.pivotaltracker.com/story/show/1223138) - -* Fixed the silent option parsing problem. - (http://onestepback.org/redmine/issues/show/47) - -* Fixed :verbose=>false flag on sh and ruby commands. - -* Rake command line options may be given by default in a RAKEOPT - environment variable. - -* Errors in Rake will now display the task invocation chain in effect - at the time of the error. - -* Accepted change by warnickr to not expand test patterns in shell - (allowing more files in the test suite). - -* Fixed that file tasks did not perform prereq lookups in scope - (Redmine #57). - -=== 0.8.7 - -* Fixed EXEEXT for JRuby on windows. - -=== 0.8.6 - -* Minor fixes to the RDoc generation (removed dependency on darkfish - and removed inline source option). - -* Now allow # comments to comment a task definition. - -=== 0.8.5 - -* Better support for the system command on Windows. - -=== 0.8.4 - -* Preserve case when locating rakefiles (patch from James - M. Lawrence/quix) - -* Better support for windows paths in the test task (patch from Simon - Chiang/bahuvrihi) - -* Windows system dir search order is now: HOME, HOMEDRIVE + HOMEPATH, - APPDATA, USERPROFILE (patch from Luis Lavena) - -* MingGW is now recognized as a windows platform. (patch from Luis - Lavena) - -* Numerous fixes to the windows test suite (patch from Luis Lavena). - -* Improved Rakefile case insensitivity testing (patch from Luis - Lavena). - -* Fixed stray ARGV option problem that was interfering with - Test::Unit::Runner. - -* Fixed default verbose mode (was accidently changed to false). - -* Removed reference to manage_gem to fix the warning produced by the - gem package task. - -=== 0.8.3 - -* Enhanced the system directory detection in windows. We now check - HOMEDRIVE/HOMEPATH and USERPROFILE if APPDATA isn't found. (Patch - supplied by James Tucker). Rake no long aborts if it can't find the - directory. - -* Added fix to handle ruby installations in directories with spaces in - their name. - -=== 0.8.2 - -* Fixed bug in package task so that it will include the subdir - directory in the package for testing. (Bug found by Adam Majer) - -* Added ENV var to rakefile to prevent OS X from including extended - attribute junk in a tar file. (Bug found by Adam Majer) - -* Fixed filename dependency order bug in test_inspect_pending and - test_to_s_pending. (Bug found by Adam Majer) - -* Fixed check for file utils options to make them immune to the - symbol/string differences. (Patch supplied by Edwin Pratomo) - -* Fixed bug with rules involving multiple source (Patch supplied by - Emanuel Indermühle) - -* Switched from getoptlong to optparse (patches supplied by Edwin - Pratomo) - -* The -T option will now attempt to dynamically sense the size of the - terminal. RAKE_COLUMNS will override any dynamic sensing. - -* FileList#clone and FileList#dup have better sematics w.r.t. taint - and freeze. - -* Added ability clear prerequisites, and/or actions from an existing - task. - -* Added the ability to reenable a task to be invoked a second time. - -* Changed RDoc test task to have no default template. This makes it - easier for the tempate to pick up the template from the environment. - -* Changed from using Mutex to Monitor. Evidently Mutex causes thread - join errors when Ruby is compiled with -disable-pthreads. (Patch - supplied by Ittay Dror) - -* Fixed bug in makefile parser that had problems with extra spaces in - file task names. (Patch supplied by Ittay Dror) - -* Added a performance patch for reading large makefile dependency - files. (Patch supplied by Ittay Dror) - -* Default values for task arguments can easily be specified with the - :with_defaults method. (Idea for default argument merging supplied - by (Adam Q. Salter) - -* The -T output will only self-truncate if the output is a tty. - However, if RAKE_COLUMNS is explicitly set, it will be honored in - any case. (Patch provided by Gavin Stark). - -* Numerous fixes for running under windows. A big thanks to Bheeshmar - Redheendran for spending a good part of the afternoon at the - Lonestar Ruby Conference to help me work out these issues. - -=== 0.8.1 - -* Removed requires on parsedate.rb (in Ftptools) -* Removed ftools from rake.rb. Made it options in sys.rb - -=== 0.8.0 - -* Added task parameters (e.g. "rake build[version7]") -* Made task parameters passable to prerequisites. -* Comments are limited to 80 columns or so (suggested by Jamis Buck). -* Added -D to display full comments (suggested by Jamis Buck). -* The rake program will set the status value used in any explicit - exit(n) calls. (patch provided by Stephen Touset) -* Fixed error in functional tests that were not including session (and - silently skipping the functionl tests. -* Removed --usage and make -h the same as -H. -* Make a prettier inspect for tasks. - -=== 0.7.3 - -* Added existing and existing! methods to FileList -* FileLists now claim to be Arrays (via is_a?) to get better support - from the FileUtil module. -* Added init and top_level for custom rake applications. - -=== 0.7.2 - -* Error messages are now send to stderr rather than stdout (from - Payton Quackenbush). -* Better error handling on invalid command line arguments (from Payton - Quackenbush). -* Added rcov task and updated unit testing for better code coverage. -* Fixed some bugs where the application object was going to the global - appliation instead of using its own data. -* Added square and curly bracket patterns to FileList#include (Tilman - Sauerbeck). -* Added plain filename support to rule dependents (suggested by Nobu - Nakada). -* Added pathmap support to rule dependents. -* Added a 'tasks' method to a namespace to get a list of tasks - associated with the namespace. -* Fixed the method name leak from FileUtils (bug found by Glenn - Vanderburg). -* Added rake_extension to handle detection of extension collisions. -* Added test for noop, bad_option and verbose flags to sh command. -* Removed dependency on internal fu_xxx functions from FileUtils. -* Added a 'shame' task to the Rakefile. -* Added tar_command and zip_command options to the Package task. -* Added a description to the gem task in GemPackageTask. -* Fixed a bug when rules have multiple prerequisites (patch by Joel - VanderWerf) -* Added a protected 'require "rubygems"' to test/test_application to - unbreak cruisecontrol.rb. -* Added the handful of RakeFileUtils to the private method as well. -* Added block based exclusion. -* The clean task will no longer delete 'core' if it is a directory. -* Removed rake_dup. Now we just simply rescue a bad dup. -* Refactored the FileList reject logic to remove duplication. -* Removed if __FILE__ at the end of the rake.rb file. - -=== 0.7.1 - -* Added optional filter parameter to the --tasks command line option. -* Added flatten to allow rule transform procs to return lists of - prereqs (Joel VanderWerf provided patch). -* Added pathmap to String and FileList. -* The -r option will now load .rake files (but a straight require - doesn't yet). NOTE: This is experimental ... it may be - discontinued. -* The -f option without a value will disable the search for a - Rakefile. The assumption is that the -r files are adequate. -* Fixed the safe_ln function to fall back to cp in more error - scenarios. - -=== 0.7.0 - -* Added Rake.original_dir to return the original starting directory of - the rake application. -* Added safe_ln support for openAFS (from Ludvig Omholt). -* Added --trace reminder on short exception messages (David Heinemeier - Hansson suggestion). -* Added multitask declaration that executes prerequisites in - parallel. (Doug Young providied an initial implementation). -* Fixed missing_const hack to be compatible with Rails. (Jamis Buck - supplied test case). -* Made the RDoc task default to internal (in-process) RDoc formatting. - The old behavior is still available by setting the +external+ flag - to true. -* Rakefiles are now loaded with the expanded path to prevent - accidental polution from the Ruby load path. -* The +namespace+ command now returns a NameSpace object that can be - used to lookup tasks defined in that namespace. This allows for - better anonymous namespace behavior. -* Task objects my now be used in prerequisite lists directly. - -=== 0.6.1 - -* Rebuilt 0.6.0 gem without signing. - -=== 0.6.0 - -* Fixed file creation bug in the unit tests (caused infinite loop on - windows). -* Fixed bug where session based functional tests were run under - windows. -* Fixed bug in directory tasks so that updating a directory will not - retrigger file tasks depending on the directory (see - FileCreationTask and EarlyTime). -* Added egrep to FileList -* ruby command now runs same ruby version as rake. -* Added investigation to task object. (suggested by Martin Fowler) -* Added ruby_opts to the test task to allow arbitrary ruby options to - be passed to the test script. (Greg Fast) -* Fixed the test loader to ignore options. (Greg Fast) -* Moved Task, FileTask, FileCreationTask and RakeApp into the Rake - module namespace. Old style namespace behavior can be invoked via - the --classic-namespace option. (requested by Kelly Felkins). -* GemTask is now sensitive to the gem platform (Masao Mutoh). -* A non-existing file prerequisite will no longer cause an exception - (Philipp Neubeck). -* Multiple prerequisites on Rake rules now allowed (initial patch - supplied by Stuart Jansen). - -=== 0.5.4 - -* Added double quotes to the test runner. -* Added .svn to default ignore list. -* Updated FileList#include to support nested arrays and filelists. - -=== 0.5.3 - -* Added support for importing Rakefile and other dependencies. -* Fixed bug so that now rules can chain off of existing tasks as well - as existing files. -* Fixed verbose flag bug in the testing task. Shortened some failure - messages. -* Make FileUtils methods private at the top level module to avoid - accidental method leaking into other objects. -* Added test loader option to test task. "testrb" is no longer the - default test loader. It is now eating syntax errors that should - halt the unit tests. -* Revamped FileList so that it works more like and array (addressed - flatten bug). Added many tests around file list. -* Added +ext+ method to both String and FileList. - -=== 0.5.0 - -* Fixed documentation that was lacking the Rake module name (Tilman - Sauerbeck). -* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck). -* Recursive rules are now supported (Tilman Sauerbeck). -* Added warning option for the Test Task (requested by Eric Hodel). -* The jamis rdoc template is only used if it exists. -* Added fix for Ruby 1.8.2 test/unit and rails problem. -* Added contributed rake man file (Jani Monoses). -* Added Brian Candler's fix for problems in --trace and --dry-run - mode. - -=== 0.4.15 - -* Fixed a bug that prevented the TESTOPTS flag from working with the - revised for 1.8.2 test task. -* Updated the docs on --trace to indicate that it also enables a full - backtrace on errors. - -=== 0.4.14 - -* Modified the TestTask to workaround the Ruby 1.8.2 change in - autoexecuting unit tests. - -=== 0.4.13 - -* Fixed the dry-run flag so it is operating again. -* Multiple arguments to sh and ruby commands will not be interpreted - by the shell (patch provided by Jonathan Paisley). - -=== 0.4.12 - -* Added --silent (-s) to suppress the (in directory) rake message. - -=== 0.4.11 - -* Changed the "don't know how to rake" message (finally) -* Changes references to a literal "Rakefile" to reference the global - variable $rakefile (which contains the actual name of the rakefile). - -=== 0.4.10 - -* Added block support to the "sh" command, allowing users to take - special actions on the result of the system call. E.g. - - sh "shell_command" do |ok, res| - puts "Program returned #{res.exitstatus}" if ! ok - end - -=== 0.4.9 - -* Switched to Jamis Buck's RDoc template. -* Removed autorequire from Rake's gem spec. This prevents the Rake - libraries from loading while using rails. - -=== 0.4.8 - -* Added support for .rb versions of Rakefile. -* Removed \\\n's from test task. -* Fixed Ruby 1.9 compatibility issue with FileList. - -=== 0.4.7 - -* Fixed problem in FileList that caused Ruby 1.9 to go into infinite - recursion. Since to_a was removed from Object, it does not need to - added back into the list of methods to rewrite in FileList. (Thanks - to Kent Sibilev for pointing this out). - -=== 0.4.6 -* Removed test version of ln in FileUtils that prevented safe_ln from - using ln. - -=== 0.4.5 -* Upgraded comments in TestTask. -* FileList to_s and inspect now automatically resolve pending changes. -* FileList#exclude properly returns the FileList. - -=== 0.4.4 -* Fixed initialization problem with @comment. -* Now using multi -r technique in TestTask. Switch Rakefile back to - using the built-in test task macros because the rake runtime is no - longer needed. -* Added 'TEST=filename' and 'TESTOPTS=options' to the Test Task - macros. -* Allow a +test_files+ attribute in test tasks. This allows more - flexibility in specifying test files. - -=== 0.4.3 -* Fixed Comment leakage. - -=== 0.4.2 -* Added safe_ln that falls back to a copy if a file link is not supported. -* Package builder now uses safe_ln. - -=== 0.4.1 -* Task comments are now additive, combined with "/". -* Works with (soon to be released) rubygems 0.6.2 (or 0.7.0) - -=== 0.4.0 -* FileList now uses deferred loading. The file system is not searched - until the first call that needs the file names. -* VAR=VALUE options are now accepted on the command line and are - treated like environment variables. The values may be tested in a - Rakefile by referencing ENV['VAR']. -* File.mtime is now used (instead of File.new().mtime). - -=== 0.3.2.x - -* Removed some hidden dependencies on rubygems. Tests now will test - gems only if they are installed. -* Removed Sys from some example files. I believe that is that last - reference to Sys outside of the contrib area. -* Updated all copyright notices to include 2004. - -=== 0.3.2 - -* GEM Installation now works with the application stub. - -=== 0.3.1 - -* FileLists now automatically ignore CVS, .bak, ! -* GEM Installation now works. - -=== 0.3.0 - -Promoted 0.2.10. - -=== 0.2.10 -General - -* Added title to Rake's rdocs -* Contrib packages are no longer included in the documentation. - -RDoc Issues - -* Removed default for the '--main' option -* Fixed rendering of the rdoc options -* Fixed clean/clobber confusion with rerdoc -* 'title' attribute added - -Package Task Library Issues - -* Version (or explicit :noversion) is required. -* +package_file+ attribute is now writable - -FileList Issues - -* Dropped bang version of exclude. Now using ant-like include/exclude semantics. -* Enabled the "yield self" idiom in FileList#initialize. - -=== 0.2.9 - -This version contains numerous changes as the RubyConf.new(2003) -presentation was being prepared. The changes include: - -* The monolithic rubyapp task library is in the process of being - dropped in favor of lighter weight task libraries. - -=== 0.2.7 - -* Added "desc" for task descriptions. -* -T will now display tasks with descriptions. -* -P will display tasks and prerequisites. -* Dropped the Sys module in favor of the 1.8.x FileUtils module. Sys - is still supported in the contrib area. - -=== 0.2.6 - -* Moved to RubyForge - -=== 0.2.5 - -* Switched to standard ruby app builder. -* Added no_match option to file matcher. - -=== 0.2.4 - -* Fixed indir, which neglected to actually change directories. - -=== 0.2.3 - -* Added rake module for a help target -* Added 'for_files' to Sys -* Added a $rakefile constant -* Added test for selecting proper rule with multiple targets. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/MIT-LICENSE b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/MIT-LICENSE deleted file mode 100644 index 4292f3b3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/MIT-LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) Jim Weirich - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/Manifest.txt b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/Manifest.txt deleted file mode 100644 index a7829c97..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/Manifest.txt +++ /dev/null @@ -1,166 +0,0 @@ -.autotest -.rubocop.yml -.togglerc -CONTRIBUTING.rdoc -History.rdoc -MIT-LICENSE -Manifest.txt -README.rdoc -Rakefile -bin/rake -doc/command_line_usage.rdoc -doc/example/Rakefile1 -doc/example/Rakefile2 -doc/example/a.c -doc/example/b.c -doc/example/main.c -doc/glossary.rdoc -doc/jamis.rb -doc/proto_rake.rdoc -doc/rake.1 -doc/rakefile.rdoc -doc/rational.rdoc -doc/release_notes/rake-0.4.14.rdoc -doc/release_notes/rake-0.4.15.rdoc -doc/release_notes/rake-0.5.0.rdoc -doc/release_notes/rake-0.5.3.rdoc -doc/release_notes/rake-0.5.4.rdoc -doc/release_notes/rake-0.6.0.rdoc -doc/release_notes/rake-0.7.0.rdoc -doc/release_notes/rake-0.7.1.rdoc -doc/release_notes/rake-0.7.2.rdoc -doc/release_notes/rake-0.7.3.rdoc -doc/release_notes/rake-0.8.0.rdoc -doc/release_notes/rake-0.8.2.rdoc -doc/release_notes/rake-0.8.3.rdoc -doc/release_notes/rake-0.8.4.rdoc -doc/release_notes/rake-0.8.5.rdoc -doc/release_notes/rake-0.8.6.rdoc -doc/release_notes/rake-0.8.7.rdoc -doc/release_notes/rake-0.9.0.rdoc -doc/release_notes/rake-0.9.1.rdoc -doc/release_notes/rake-0.9.2.2.rdoc -doc/release_notes/rake-0.9.2.rdoc -doc/release_notes/rake-0.9.3.rdoc -doc/release_notes/rake-0.9.4.rdoc -doc/release_notes/rake-0.9.5.rdoc -doc/release_notes/rake-0.9.6.rdoc -doc/release_notes/rake-10.0.0.rdoc -doc/release_notes/rake-10.0.1.rdoc -doc/release_notes/rake-10.0.2.rdoc -doc/release_notes/rake-10.0.3.rdoc -doc/release_notes/rake-10.1.0.rdoc -lib/rake.rb -lib/rake/alt_system.rb -lib/rake/application.rb -lib/rake/backtrace.rb -lib/rake/clean.rb -lib/rake/cloneable.rb -lib/rake/contrib/.document -lib/rake/contrib/compositepublisher.rb -lib/rake/contrib/ftptools.rb -lib/rake/contrib/publisher.rb -lib/rake/contrib/rubyforgepublisher.rb -lib/rake/contrib/sshpublisher.rb -lib/rake/contrib/sys.rb -lib/rake/cpu_counter.rb -lib/rake/default_loader.rb -lib/rake/dsl_definition.rb -lib/rake/early_time.rb -lib/rake/ext/core.rb -lib/rake/ext/module.rb -lib/rake/ext/pathname.rb -lib/rake/ext/string.rb -lib/rake/ext/time.rb -lib/rake/file_creation_task.rb -lib/rake/file_list.rb -lib/rake/file_task.rb -lib/rake/file_utils.rb -lib/rake/file_utils_ext.rb -lib/rake/gempackagetask.rb -lib/rake/invocation_chain.rb -lib/rake/invocation_exception_mixin.rb -lib/rake/late_time.rb -lib/rake/linked_list.rb -lib/rake/loaders/makefile.rb -lib/rake/multi_task.rb -lib/rake/name_space.rb -lib/rake/packagetask.rb -lib/rake/pathmap.rb -lib/rake/phony.rb -lib/rake/private_reader.rb -lib/rake/promise.rb -lib/rake/pseudo_status.rb -lib/rake/rake_module.rb -lib/rake/rake_test_loader.rb -lib/rake/rdoctask.rb -lib/rake/ruby182_test_unit_fix.rb -lib/rake/rule_recursion_overflow_error.rb -lib/rake/runtest.rb -lib/rake/scope.rb -lib/rake/task.rb -lib/rake/task_argument_error.rb -lib/rake/task_arguments.rb -lib/rake/task_manager.rb -lib/rake/tasklib.rb -lib/rake/testtask.rb -lib/rake/thread_history_display.rb -lib/rake/thread_pool.rb -lib/rake/trace_output.rb -lib/rake/version.rb -lib/rake/win32.rb -rakelib/publish.rake -rakelib/test_times.rake -test/file_creation.rb -test/helper.rb -test/support/rakefile_definitions.rb -test/support/ruby_runner.rb -test/test_private_reader.rb -test/test_rake.rb -test/test_rake_application.rb -test/test_rake_application_options.rb -test/test_rake_backtrace.rb -test/test_rake_clean.rb -test/test_rake_cpu_counter.rb -test/test_rake_definitions.rb -test/test_rake_directory_task.rb -test/test_rake_dsl.rb -test/test_rake_early_time.rb -test/test_rake_extension.rb -test/test_rake_file_creation_task.rb -test/test_rake_file_list.rb -test/test_rake_file_list_path_map.rb -test/test_rake_file_task.rb -test/test_rake_file_utils.rb -test/test_rake_ftp_file.rb -test/test_rake_functional.rb -test/test_rake_invocation_chain.rb -test/test_rake_late_time.rb -test/test_rake_linked_list.rb -test/test_rake_makefile_loader.rb -test/test_rake_multi_task.rb -test/test_rake_name_space.rb -test/test_rake_package_task.rb -test/test_rake_path_map.rb -test/test_rake_path_map_explode.rb -test/test_rake_path_map_partial.rb -test/test_rake_pathname_extensions.rb -test/test_rake_pseudo_status.rb -test/test_rake_rake_test_loader.rb -test/test_rake_reduce_compat.rb -test/test_rake_require.rb -test/test_rake_rules.rb -test/test_rake_scope.rb -test/test_rake_task.rb -test/test_rake_task_argument_parsing.rb -test/test_rake_task_arguments.rb -test/test_rake_task_lib.rb -test/test_rake_task_manager.rb -test/test_rake_task_manager_argument_resolution.rb -test/test_rake_task_with_arguments.rb -test/test_rake_test_task.rb -test/test_rake_thread_pool.rb -test/test_rake_top_level_functions.rb -test/test_rake_win32.rb -test/test_thread_history_display.rb -test/test_trace_output.rb diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/Rakefile b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/Rakefile deleted file mode 100644 index 375ca880..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/Rakefile +++ /dev/null @@ -1,81 +0,0 @@ -# Rakefile for rake -*- ruby -*- - -# Copyright 2003, 2004, 2005 by Jim Weirich (jim@weirichhouse.org) -# All rights reserved. - -# This file may be distributed under an MIT style license. See -# MIT-LICENSE for details. - -require 'rbconfig' - -system_rake = File.join RbConfig::CONFIG['rubylibdir'], 'rake.rb' - -# Use our rake, not the installed rake from system -if $".include? system_rake or $".grep(/rake\/name_space\.rb$/).empty? then - exec Gem.ruby, '-Ilib', 'bin/rake', *ARGV -end - -require 'hoe' - -Hoe.plugin :git -Hoe.plugin :minitest -Hoe.plugin :travis - -hoe = Hoe.spec 'rake' do - developer 'Eric Hodel', 'drbrain@segment7.net' - developer 'Jim Weirich', '' - - require_ruby_version '>= 1.8.7' - require_rubygems_version '>= 1.3.2' - - dependency 'minitest', '~> 5.0', :developer - - license "MIT" - - self.readme_file = 'README.rdoc' - self.history_file = 'History.rdoc' - - self.extra_rdoc_files.concat FileList[ - 'MIT-LICENSE', - 'doc/**/*.rdoc', - '*.rdoc', - ] - - self.local_rdoc_dir = 'html' - self.rsync_args = '-avz --delete' - rdoc_locations << 'docs.seattlerb.org:/data/www/docs.seattlerb.org/rake/' - - self.clean_globs += [ - '**/*.o', - '**/*.rbc', - '*.dot', - 'TAGS', - 'doc/example/main', - ] -end - -hoe.test_prelude = 'gem "minitest", "~> 5.0"' - -# Use custom rdoc task due to existence of doc directory - -Rake::Task['docs'].clear -Rake::Task['clobber_docs'].clear - -begin - require 'rdoc/task' - - RDoc::Task.new :rdoc => 'docs', :clobber_rdoc => 'clobber_docs' do |doc| - doc.main = hoe.readme_file - doc.title = 'Rake -- Ruby Make' - - rdoc_files = Rake::FileList.new %w[lib History.rdoc MIT-LICENSE doc] - rdoc_files.add hoe.extra_rdoc_files - - doc.rdoc_files = rdoc_files - - doc.rdoc_dir = 'html' - end -rescue LoadError - warn 'run `rake newb` to install rdoc' -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/alt_system.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/alt_system.rb deleted file mode 100644 index aa7b7791..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/alt_system.rb +++ /dev/null @@ -1,110 +0,0 @@ -# -# Copyright (c) 2008 James M. Lawrence -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation files -# (the "Software"), to deal in the Software without restriction, -# including without limitation the rights to use, copy, modify, merge, -# publish, distribute, sublicense, and/or sell copies of the Software, -# and to permit persons to whom the Software is furnished to do so, -# subject to the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# - -require 'rbconfig' - -## -# Alternate implementations of system() and backticks `` on Windows -# for ruby-1.8 and earlier. -#-- -# TODO: Remove in Rake 11 - -module Rake::AltSystem # :nodoc: all - WINDOWS = RbConfig::CONFIG["host_os"] =~ - %r!(msdos|mswin|djgpp|mingw|[Ww]indows)! - - class << self - def define_module_function(name, &block) - define_method(name, &block) - module_function(name) - end - end - - if WINDOWS && RUBY_VERSION < "1.9.0" - RUNNABLE_EXTS = %w[com exe bat cmd] - RUNNABLE_PATTERN = %r!\.(#{RUNNABLE_EXTS.join('|')})\Z!i - - define_module_function :kernel_system, &Kernel.method(:system) - define_module_function :kernel_backticks, &Kernel.method(:'`') - - module_function - - def repair_command(cmd) - "call " + ( - if cmd =~ %r!\A\s*\".*?\"! - # already quoted - cmd - elsif match = cmd.match(%r!\A\s*(\S+)!) - if match[1] =~ %r!/! - # avoid x/y.bat interpretation as x with option /y - %Q!"#{match[1]}"! + match.post_match - else - # a shell command will fail if quoted - cmd - end - else - # empty or whitespace - cmd - end - ) - end - - def find_runnable(file) - if file =~ RUNNABLE_PATTERN - file - else - RUNNABLE_EXTS.each { |ext| - test = "#{file}.#{ext}" - return test if File.exist?(test) - } - nil - end - end - - def system(cmd, *args) - repaired = ( - if args.empty? - [repair_command(cmd)] - elsif runnable = find_runnable(cmd) - [File.expand_path(runnable), *args] - else - # non-existent file - [cmd, *args] - end - ) - kernel_system(*repaired) - end - - def backticks(cmd) - kernel_backticks(repair_command(cmd)) - end - - define_module_function :'`', &method(:backticks) - else - # Non-Windows or ruby-1.9+: same as Kernel versions - define_module_function :system, &Kernel.method(:system) - define_module_function :backticks, &Kernel.method(:'`') - define_module_function :'`', &Kernel.method(:'`') - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/application.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/application.rb deleted file mode 100644 index 115ca890..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/application.rb +++ /dev/null @@ -1,790 +0,0 @@ -require 'shellwords' -require 'optparse' - -require 'rake/task_manager' -require 'rake/file_list' -require 'rake/thread_pool' -require 'rake/thread_history_display' -require 'rake/trace_output' -require 'rake/win32' - -module Rake - - CommandLineOptionError = Class.new(StandardError) - - ## - # Rake main application object. When invoking +rake+ from the - # command line, a Rake::Application object is created and run. - - class Application - include TaskManager - include TraceOutput - - # The name of the application (typically 'rake') - attr_reader :name - - # The original directory where rake was invoked. - attr_reader :original_dir - - # Name of the actual rakefile used. - attr_reader :rakefile - - # Number of columns on the terminal - attr_accessor :terminal_columns - - # List of the top level task names (task names from the command line). - attr_reader :top_level_tasks - - DEFAULT_RAKEFILES = [ - 'rakefile', - 'Rakefile', - 'rakefile.rb', - 'Rakefile.rb' - ].freeze - - # Initialize a Rake::Application object. - def initialize - super - @name = 'rake' - @rakefiles = DEFAULT_RAKEFILES.dup - @rakefile = nil - @pending_imports = [] - @imported = [] - @loaders = {} - @default_loader = Rake::DefaultLoader.new - @original_dir = Dir.pwd - @top_level_tasks = [] - add_loader('rb', DefaultLoader.new) - add_loader('rf', DefaultLoader.new) - add_loader('rake', DefaultLoader.new) - @tty_output = STDOUT.tty? - @terminal_columns = ENV['RAKE_COLUMNS'].to_i - end - - # Run the Rake application. The run method performs the following - # three steps: - # - # * Initialize the command line options (+init+). - # * Define the tasks (+load_rakefile+). - # * Run the top level tasks (+top_level+). - # - # If you wish to build a custom rake command, you should call - # +init+ on your application. Then define any tasks. Finally, - # call +top_level+ to run your top level tasks. - def run - standard_exception_handling do - init - load_rakefile - top_level - end - end - - # Initialize the command line parameters and app name. - def init(app_name='rake') - standard_exception_handling do - @name = app_name - args = handle_options - collect_command_line_tasks(args) - end - end - - # Find the rakefile and then load it and any pending imports. - def load_rakefile - standard_exception_handling do - raw_load_rakefile - end - end - - # Run the top level tasks of a Rake application. - def top_level - run_with_threads do - if options.show_tasks - display_tasks_and_comments - elsif options.show_prereqs - display_prerequisites - else - top_level_tasks.each { |task_name| invoke_task(task_name) } - end - end - end - - # Run the given block with the thread startup and shutdown. - def run_with_threads - thread_pool.gather_history if options.job_stats == :history - - yield - - thread_pool.join - if options.job_stats - stats = thread_pool.statistics - puts "Maximum active threads: #{stats[:max_active_threads]} + main" - puts "Total threads in play: #{stats[:total_threads_in_play]} + main" - end - ThreadHistoryDisplay.new(thread_pool.history).show if - options.job_stats == :history - end - - # Add a loader to handle imported files ending in the extension - # +ext+. - def add_loader(ext, loader) - ext = ".#{ext}" unless ext =~ /^\./ - @loaders[ext] = loader - end - - # Application options from the command line - def options - @options ||= OpenStruct.new - end - - # Return the thread pool used for multithreaded processing. - def thread_pool # :nodoc: - @thread_pool ||= ThreadPool.new(options.thread_pool_size || Rake.suggested_thread_count-1) - end - - # internal ---------------------------------------------------------------- - - # Invokes a task with arguments that are extracted from +task_string+ - def invoke_task(task_string) # :nodoc: - name, args = parse_task_string(task_string) - t = self[name] - t.invoke(*args) - end - - def parse_task_string(string) # :nodoc: - /^([^\[]+)(?:\[(.*)\])$/ =~ string.to_s - - name = $1 - remaining_args = $2 - - return string, [] unless name - return name, [] if remaining_args.empty? - - args = [] - - begin - /((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args - - remaining_args = $2 - args << $1.gsub(/\\(.)/, '\1') - end while remaining_args - - return name, args - end - - # Provide standard exception handling for the given block. - def standard_exception_handling # :nodoc: - yield - rescue SystemExit - # Exit silently with current status - raise - rescue OptionParser::InvalidOption => ex - $stderr.puts ex.message - exit(false) - rescue Exception => ex - # Exit with error message - display_error_message(ex) - exit_because_of_exception(ex) - end - - # Exit the program because of an unhandled exception. - # (may be overridden by subclasses) - def exit_because_of_exception(ex) # :nodoc: - exit(false) - end - - # Display the error message that caused the exception. - def display_error_message(ex) # :nodoc: - trace "#{name} aborted!" - display_exception_details(ex) - trace "Tasks: #{ex.chain}" if has_chain?(ex) - trace "(See full trace by running task with --trace)" unless - options.backtrace - end - - def display_exception_details(ex) # :nodoc: - seen = Thread.current[:rake_display_exception_details_seen] ||= [] - return if seen.include? ex - seen << ex - - display_exception_message_details(ex) - display_exception_backtrace(ex) - display_exception_details(ex.cause) if has_cause?(ex) - end - - def has_cause?(ex) # :nodoc: - ex.respond_to?(:cause) && ex.cause - end - - def display_exception_message_details(ex) # :nodoc: - if ex.instance_of?(RuntimeError) - trace ex.message - else - trace "#{ex.class.name}: #{ex.message}" - end - end - - def display_exception_backtrace(ex) # :nodoc: - if options.backtrace - trace ex.backtrace.join("\n") - else - trace Backtrace.collapse(ex.backtrace).join("\n") - end - end - - # Warn about deprecated usage. - # - # Example: - # Rake.application.deprecate("import", "Rake.import", caller.first) - # - def deprecate(old_usage, new_usage, call_site) # :nodoc: - unless options.ignore_deprecate - $stderr.puts "WARNING: '#{old_usage}' is deprecated. " + - "Please use '#{new_usage}' instead.\n" + - " at #{call_site}" - end - end - - # Does the exception have a task invocation chain? - def has_chain?(exception) # :nodoc: - exception.respond_to?(:chain) && exception.chain - end - private :has_chain? - - # True if one of the files in RAKEFILES is in the current directory. - # If a match is found, it is copied into @rakefile. - def have_rakefile # :nodoc: - @rakefiles.each do |fn| - if File.exist?(fn) - others = FileList.glob(fn, File::FNM_CASEFOLD) - return others.size == 1 ? others.first : fn - elsif fn == '' - return fn - end - end - return nil - end - - # True if we are outputting to TTY, false otherwise - def tty_output? # :nodoc: - @tty_output - end - - # Override the detected TTY output state (mostly for testing) - def tty_output=(tty_output_state) # :nodoc: - @tty_output = tty_output_state - end - - # We will truncate output if we are outputting to a TTY or if we've been - # given an explicit column width to honor - def truncate_output? # :nodoc: - tty_output? || @terminal_columns.nonzero? - end - - # Display the tasks and comments. - def display_tasks_and_comments # :nodoc: - displayable_tasks = tasks.select { |t| - (options.show_all_tasks || t.comment) && - t.name =~ options.show_task_pattern - } - case options.show_tasks - when :tasks - width = displayable_tasks.map { |t| t.name_with_args.length }.max || 10 - if truncate_output? - max_column = terminal_width - name.size - width - 7 - else - max_column = nil - end - - displayable_tasks.each do |t| - printf("#{name} %-#{width}s # %s\n", - t.name_with_args, - max_column ? truncate(t.comment, max_column) : t.comment) - end - when :describe - displayable_tasks.each do |t| - puts "#{name} #{t.name_with_args}" - comment = t.full_comment || "" - comment.split("\n").each do |line| - puts " #{line}" - end - puts - end - when :lines - displayable_tasks.each do |t| - t.locations.each do |loc| - printf "#{name} %-30s %s\n", t.name_with_args, loc - end - end - else - fail "Unknown show task mode: '#{options.show_tasks}'" - end - end - - def terminal_width # :nodoc: - if @terminal_columns.nonzero? - result = @terminal_columns - else - result = unix? ? dynamic_width : 80 - end - (result < 10) ? 80 : result - rescue - 80 - end - - # Calculate the dynamic width of the - def dynamic_width # :nodoc: - @dynamic_width ||= (dynamic_width_stty.nonzero? || dynamic_width_tput) - end - - def dynamic_width_stty # :nodoc: - %x{stty size 2>/dev/null}.split[1].to_i - end - - def dynamic_width_tput # :nodoc: - %x{tput cols 2>/dev/null}.to_i - end - - def unix? # :nodoc: - RbConfig::CONFIG['host_os'] =~ - /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i - end - - def windows? # :nodoc: - Win32.windows? - end - - def truncate(string, width) # :nodoc: - if string.nil? - "" - elsif string.length <= width - string - else - (string[0, width - 3] || "") + "..." - end - end - - # Display the tasks and prerequisites - def display_prerequisites # :nodoc: - tasks.each do |t| - puts "#{name} #{t.name}" - t.prerequisites.each { |pre| puts " #{pre}" } - end - end - - def trace(*strings) # :nodoc: - options.trace_output ||= $stderr - trace_on(options.trace_output, *strings) - end - - def sort_options(options) # :nodoc: - options.sort_by { |opt| - opt.select { |o| o =~ /^-/ }.map { |o| o.downcase }.sort.reverse - } - end - private :sort_options - - # A list of all the standard options used in rake, suitable for - # passing to OptionParser. - def standard_rake_options # :nodoc: - sort_options( - [ - ['--all', '-A', - "Show all tasks, even uncommented ones (in combination with -T or -D)", - lambda { |value| - options.show_all_tasks = value - } - ], - ['--backtrace=[OUT]', - "Enable full backtrace. OUT can be stderr (default) or stdout.", - lambda { |value| - options.backtrace = true - select_trace_output(options, 'backtrace', value) - } - ], - ['--build-all', '-B', - "Build all prerequisites, including those which are up-to-date.", - lambda { |value| - options.build_all = true - } - ], - ['--comments', - "Show commented tasks only", - lambda { |value| - options.show_all_tasks = !value - } - ], - ['--describe', '-D [PATTERN]', - "Describe the tasks (matching optional PATTERN), then exit.", - lambda { |value| - select_tasks_to_show(options, :describe, value) - } - ], - ['--dry-run', '-n', - "Do a dry run without executing actions.", - lambda { |value| - Rake.verbose(true) - Rake.nowrite(true) - options.dryrun = true - options.trace = true - } - ], - ['--execute', '-e CODE', - "Execute some Ruby code and exit.", - lambda { |value| - eval(value) - exit - } - ], - ['--execute-print', '-p CODE', - "Execute some Ruby code, print the result, then exit.", - lambda { |value| - puts eval(value) - exit - } - ], - ['--execute-continue', '-E CODE', - "Execute some Ruby code, " + - "then continue with normal task processing.", - lambda { |value| eval(value) } - ], - ['--jobs', '-j [NUMBER]', - "Specifies the maximum number of tasks to execute in parallel. " + - "(default is number of CPU cores + 4)", - lambda { |value| - if value.nil? || value == '' - value = FIXNUM_MAX - elsif value =~ /^\d+$/ - value = value.to_i - else - value = Rake.suggested_thread_count - end - value = 1 if value < 1 - options.thread_pool_size = value - 1 - } - ], - ['--job-stats [LEVEL]', - "Display job statistics. " + - "LEVEL=history displays a complete job list", - lambda { |value| - if value =~ /^history/i - options.job_stats = :history - else - options.job_stats = true - end - } - ], - ['--libdir', '-I LIBDIR', - "Include LIBDIR in the search path for required modules.", - lambda { |value| $:.push(value) } - ], - ['--multitask', '-m', - "Treat all tasks as multitasks.", - lambda { |value| options.always_multitask = true } - ], - ['--no-search', '--nosearch', - '-N', "Do not search parent directories for the Rakefile.", - lambda { |value| options.nosearch = true } - ], - ['--prereqs', '-P', - "Display the tasks and dependencies, then exit.", - lambda { |value| options.show_prereqs = true } - ], - ['--quiet', '-q', - "Do not log messages to standard output.", - lambda { |value| Rake.verbose(false) } - ], - ['--rakefile', '-f [FILENAME]', - "Use FILENAME as the rakefile to search for.", - lambda { |value| - value ||= '' - @rakefiles.clear - @rakefiles << value - } - ], - ['--rakelibdir', '--rakelib', '-R RAKELIBDIR', - "Auto-import any .rake files in RAKELIBDIR. " + - "(default is 'rakelib')", - lambda { |value| - options.rakelib = value.split(File::PATH_SEPARATOR) - } - ], - ['--require', '-r MODULE', - "Require MODULE before executing rakefile.", - lambda { |value| - begin - require value - rescue LoadError => ex - begin - rake_require value - rescue LoadError - raise ex - end - end - } - ], - ['--rules', - "Trace the rules resolution.", - lambda { |value| options.trace_rules = true } - ], - ['--silent', '-s', - "Like --quiet, but also suppresses the " + - "'in directory' announcement.", - lambda { |value| - Rake.verbose(false) - options.silent = true - } - ], - ['--suppress-backtrace PATTERN', - "Suppress backtrace lines matching regexp PATTERN. " + - "Ignored if --trace is on.", - lambda { |value| - options.suppress_backtrace_pattern = Regexp.new(value) - } - ], - ['--system', '-g', - "Using system wide (global) rakefiles " + - "(usually '~/.rake/*.rake').", - lambda { |value| options.load_system = true } - ], - ['--no-system', '--nosystem', '-G', - "Use standard project Rakefile search paths, " + - "ignore system wide rakefiles.", - lambda { |value| options.ignore_system = true } - ], - ['--tasks', '-T [PATTERN]', - "Display the tasks (matching optional PATTERN) " + - "with descriptions, then exit.", - lambda { |value| - select_tasks_to_show(options, :tasks, value) - } - ], - ['--trace=[OUT]', '-t', - "Turn on invoke/execute tracing, enable full backtrace. " + - "OUT can be stderr (default) or stdout.", - lambda { |value| - options.trace = true - options.backtrace = true - select_trace_output(options, 'trace', value) - Rake.verbose(true) - } - ], - ['--verbose', '-v', - "Log message to standard output.", - lambda { |value| Rake.verbose(true) } - ], - ['--version', '-V', - "Display the program version.", - lambda { |value| - puts "rake, version #{RAKEVERSION}" - exit - } - ], - ['--where', '-W [PATTERN]', - "Describe the tasks (matching optional PATTERN), then exit.", - lambda { |value| - select_tasks_to_show(options, :lines, value) - options.show_all_tasks = true - } - ], - ['--no-deprecation-warnings', '-X', - "Disable the deprecation warnings.", - lambda { |value| - options.ignore_deprecate = true - } - ], - ]) - end - - def select_tasks_to_show(options, show_tasks, value) # :nodoc: - options.show_tasks = show_tasks - options.show_task_pattern = Regexp.new(value || '') - Rake::TaskManager.record_task_metadata = true - end - private :select_tasks_to_show - - def select_trace_output(options, trace_option, value) # :nodoc: - value = value.strip unless value.nil? - case value - when 'stdout' - options.trace_output = $stdout - when 'stderr', nil - options.trace_output = $stderr - else - fail CommandLineOptionError, - "Unrecognized --#{trace_option} option '#{value}'" - end - end - private :select_trace_output - - # Read and handle the command line options. Returns the command line - # arguments that we didn't understand, which should (in theory) be just - # task names and env vars. - def handle_options # :nodoc: - options.rakelib = ['rakelib'] - options.trace_output = $stderr - - OptionParser.new do |opts| - opts.banner = "#{Rake.application.name} [-f rakefile] {options} targets..." - opts.separator "" - opts.separator "Options are ..." - - opts.on_tail("-h", "--help", "-H", "Display this help message.") do - puts opts - exit - end - - standard_rake_options.each { |args| opts.on(*args) } - opts.environment('RAKEOPT') - end.parse(ARGV) - end - - # Similar to the regular Ruby +require+ command, but will check - # for *.rake files in addition to *.rb files. - def rake_require(file_name, paths=$LOAD_PATH, loaded=$") # :nodoc: - fn = file_name + ".rake" - return false if loaded.include?(fn) - paths.each do |path| - full_path = File.join(path, fn) - if File.exist?(full_path) - Rake.load_rakefile(full_path) - loaded << fn - return true - end - end - fail LoadError, "Can't find #{file_name}" - end - - def find_rakefile_location # :nodoc: - here = Dir.pwd - until (fn = have_rakefile) - Dir.chdir("..") - return nil if Dir.pwd == here || options.nosearch - here = Dir.pwd - end - [fn, here] - ensure - Dir.chdir(Rake.original_dir) - end - - def print_rakefile_directory(location) # :nodoc: - $stderr.puts "(in #{Dir.pwd})" unless - options.silent or original_dir == location - end - - def raw_load_rakefile # :nodoc: - rakefile, location = find_rakefile_location - if (! options.ignore_system) && - (options.load_system || rakefile.nil?) && - system_dir && File.directory?(system_dir) - print_rakefile_directory(location) - glob("#{system_dir}/*.rake") do |name| - add_import name - end - else - fail "No Rakefile found (looking for: #{@rakefiles.join(', ')})" if - rakefile.nil? - @rakefile = rakefile - Dir.chdir(location) - print_rakefile_directory(location) - Rake.load_rakefile(File.expand_path(@rakefile)) if - @rakefile && @rakefile != '' - options.rakelib.each do |rlib| - glob("#{rlib}/*.rake") do |name| - add_import name - end - end - end - load_imports - end - - def glob(path, &block) # :nodoc: - FileList.glob(path.gsub("\\", '/')).each(&block) - end - private :glob - - # The directory path containing the system wide rakefiles. - def system_dir # :nodoc: - @system_dir ||= - begin - if ENV['RAKE_SYSTEM'] - ENV['RAKE_SYSTEM'] - else - standard_system_dir - end - end - end - - # The standard directory containing system wide rake files. - if Win32.windows? - def standard_system_dir #:nodoc: - Win32.win32_system_dir - end - else - def standard_system_dir #:nodoc: - File.join(File.expand_path('~'), '.rake') - end - end - private :standard_system_dir - - # Collect the list of tasks on the command line. If no tasks are - # given, return a list containing only the default task. - # Environmental assignments are processed at this time as well. - # - # `args` is the list of arguments to peruse to get the list of tasks. - # It should be the command line that was given to rake, less any - # recognised command-line options, which OptionParser.parse will - # have taken care of already. - def collect_command_line_tasks(args) # :nodoc: - @top_level_tasks = [] - args.each do |arg| - if arg =~ /^(\w+)=(.*)$/m - ENV[$1] = $2 - else - @top_level_tasks << arg unless arg =~ /^-/ - end - end - @top_level_tasks.push(default_task_name) if @top_level_tasks.empty? - end - - # Default task name ("default"). - # (May be overridden by subclasses) - def default_task_name # :nodoc: - "default" - end - - # Add a file to the list of files to be imported. - def add_import(fn) # :nodoc: - @pending_imports << fn - end - - # Load the pending list of imported files. - def load_imports # :nodoc: - while fn = @pending_imports.shift - next if @imported.member?(fn) - fn_task = lookup(fn) and fn_task.invoke - ext = File.extname(fn) - loader = @loaders[ext] || @default_loader - loader.load(fn) - if fn_task = lookup(fn) and fn_task.needed? - fn_task.reenable - fn_task.invoke - loader.load(fn) - end - @imported << fn - end - end - - def rakefile_location(backtrace=caller) # :nodoc: - backtrace.map { |t| t[/([^:]+):/, 1] } - - re = /^#{@rakefile}$/ - re = /#{re.source}/i if windows? - - backtrace.find { |str| str =~ re } || '' - end - - private - FIXNUM_MAX = (2**(0.size * 8 - 2) - 1) # :nodoc: - - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/backtrace.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/backtrace.rb deleted file mode 100644 index dc187734..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/backtrace.rb +++ /dev/null @@ -1,23 +0,0 @@ -module Rake - module Backtrace # :nodoc: all - SYS_KEYS = RbConfig::CONFIG.keys.grep(/(?:[a-z]prefix|libdir)\z/) - SYS_PATHS = RbConfig::CONFIG.values_at(*SYS_KEYS).uniq + - [ File.join(File.dirname(__FILE__), "..") ] - - SUPPRESSED_PATHS = SYS_PATHS. - map { |s| s.gsub("\\", "/") }. - map { |f| File.expand_path(f) }. - reject { |s| s.nil? || s =~ /^ *$/ } - SUPPRESSED_PATHS_RE = SUPPRESSED_PATHS.map { |f| Regexp.quote(f) }.join("|") - SUPPRESSED_PATHS_RE << "|^org\\/jruby\\/\\w+\\.java" if - Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == 'jruby' - - SUPPRESS_PATTERN = %r!(\A(#{SUPPRESSED_PATHS_RE})|bin/rake:\d+)!i - - def self.collapse(backtrace) - pattern = Rake.application.options.suppress_backtrace_pattern || - SUPPRESS_PATTERN - backtrace.reject { |elem| elem =~ pattern } - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/.document b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/.document deleted file mode 100644 index 8b137891..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/.document +++ /dev/null @@ -1 +0,0 @@ - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb deleted file mode 100644 index 69952a08..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb +++ /dev/null @@ -1,21 +0,0 @@ -module Rake - - # Manage several publishers as a single entity. - class CompositePublisher - def initialize - @publishers = [] - end - - # Add a publisher to the composite. - def add(pub) - @publishers << pub - end - - # Upload all the individual publishers. - def upload - @publishers.each { |p| p.upload } - end - end - -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb deleted file mode 100644 index b178523b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb +++ /dev/null @@ -1,137 +0,0 @@ -# = Tools for FTP uploading. -# -# This file is still under development and is not released for general -# use. - -require 'date' -require 'net/ftp' -require 'rake/file_list' - -module Rake # :nodoc: - - class FtpFile # :nodoc: all - attr_reader :name, :size, :owner, :group, :time - - def self.date - @date_class ||= Date - end - - def self.time - @time_class ||= Time - end - - def initialize(path, entry) - @path = path - @mode, _, @owner, @group, size, d1, d2, d3, @name = entry.split(' ') - @size = size.to_i - @time = determine_time(d1, d2, d3) - end - - def path - File.join(@path, @name) - end - - def directory? - @mode[0] == ?d - end - - def mode - parse_mode(@mode) - end - - def symlink? - @mode[0] == ?l - end - - private # -------------------------------------------------------- - - def parse_mode(m) - result = 0 - (1..9).each do |i| - result = 2 * result + ((m[i] == ?-) ? 0 : 1) - end - result - end - - def determine_time(d1, d2, d3) - now = self.class.time.now - if /:/ !~ d3 - result = Time.parse("#{d1} #{d2} #{d3}") - else - result = Time.parse("#{d1} #{d2} #{now.year} #{d3}") - result = Time.parse("#{d1} #{d2} #{now.year - 1} #{d3}") if - result > now - end - result - end - end - - ## - # Manage the uploading of files to an FTP account. - class FtpUploader # :nodoc: - - # Log uploads to standard output when true. - attr_accessor :verbose - - class << FtpUploader - # Create an uploader and pass it to the given block as +up+. - # When the block is complete, close the uploader. - def connect(path, host, account, password) - up = self.new(path, host, account, password) - begin - yield(up) - ensure - up.close - end - end - end - - # Create an FTP uploader targeting the directory +path+ on +host+ - # using the given account and password. +path+ will be the root - # path of the uploader. - def initialize(path, host, account, password) - @created = Hash.new - @path = path - @ftp = Net::FTP.new(host, account, password) - makedirs(@path) - @ftp.chdir(@path) - end - - # Create the directory +path+ in the uploader root path. - def makedirs(path) - route = [] - File.split(path).each do |dir| - route << dir - current_dir = File.join(route) - if @created[current_dir].nil? - @created[current_dir] = true - $stderr.puts "Creating Directory #{current_dir}" if @verbose - @ftp.mkdir(current_dir) rescue nil - end - end - end - - # Upload all files matching +wildcard+ to the uploader's root - # path. - def upload_files(wildcard) - FileList.glob(wildcard).each do |fn| - upload(fn) - end - end - - # Close the uploader. - def close - @ftp.close - end - - private # -------------------------------------------------------- - - # Upload a single file to the uploader's root path. - def upload(file) - $stderr.puts "Uploading #{file}" if @verbose - dir = File.dirname(file) - makedirs(dir) - @ftp.putbinaryfile(file, file) unless File.directory?(file) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/publisher.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/publisher.rb deleted file mode 100644 index f4ee1abf..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/publisher.rb +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com) -# All rights reserved. - -# :stopdoc: - -# Configuration information about an upload host system. -# name :: Name of host system. -# webdir :: Base directory for the web information for the -# application. The application name (APP) is appended to -# this directory before using. -# pkgdir :: Directory on the host system where packages can be -# placed. -HostInfo = Struct.new(:name, :webdir, :pkgdir) - -# :startdoc: - -# TODO: Move to contrib/sshpublisher -#-- -# Manage several publishers as a single entity. -class CompositePublisher # :nodoc: - def initialize - @publishers = [] - end - - # Add a publisher to the composite. - def add(pub) - @publishers << pub - end - - # Upload all the individual publishers. - def upload - @publishers.each { |p| p.upload } - end -end - -# TODO: Remove in Rake 11, duplicated -#-- -# Publish an entire directory to an existing remote directory using -# SSH. -class SshDirPublisher # :nodoc: all - def initialize(host, remote_dir, local_dir) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - end - - def upload - run %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}} - end -end - -# TODO: Remove in Rake 11, duplicated -#-- -# Publish an entire directory to a fresh remote directory using SSH. -class SshFreshDirPublisher < SshDirPublisher # :nodoc: all - def upload - run %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil - run %{ssh #{@host} mkdir #{@remote_dir}} - super - end -end - -# TODO: Remove in Rake 11, duplicated -#-- -# Publish a list of files to an existing remote directory. -class SshFilePublisher # :nodoc: all - # Create a publisher using the give host information. - def initialize(host, remote_dir, local_dir, *files) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - @files = files - end - - # Upload the local directory to the remote directory. - def upload - @files.each do |fn| - run %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}} - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb deleted file mode 100644 index 00889ad7..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb +++ /dev/null @@ -1,18 +0,0 @@ -# TODO: Remove in Rake 11 - -require 'rake/contrib/sshpublisher' - -module Rake - - class RubyForgePublisher < SshDirPublisher # :nodoc: all - attr_reader :project, :proj_id, :user - - def initialize(projname, user) - super( - "#{user}@rubyforge.org", - "/var/www/gforge-projects/#{projname}", - "html") - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb deleted file mode 100644 index 64f57701..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb +++ /dev/null @@ -1,61 +0,0 @@ -require 'rake/dsl_definition' -require 'rake/contrib/compositepublisher' - -module Rake - - # Publish an entire directory to an existing remote directory using - # SSH. - class SshDirPublisher - include Rake::DSL - - # Creates an SSH publisher which will scp all files in +local_dir+ to - # +remote_dir+ on +host+ - - def initialize(host, remote_dir, local_dir) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - end - - # Uploads the files - - def upload - sh "scp", "-rq", "#{@local_dir}/*", "#{@host}:#{@remote_dir}" - end - end - - # Publish an entire directory to a fresh remote directory using SSH. - class SshFreshDirPublisher < SshDirPublisher - - # Uploads the files after removing the existing remote directory. - - def upload - sh "ssh", @host, "rm", "-rf", @remote_dir rescue nil - sh "ssh", @host, "mkdir", @remote_dir - super - end - end - - # Publish a list of files to an existing remote directory. - class SshFilePublisher - include Rake::DSL - - # Creates an SSH publisher which will scp all +files+ in +local_dir+ to - # +remote_dir+ on +host+. - - def initialize(host, remote_dir, local_dir, *files) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - @files = files - end - - # Uploads the files - - def upload - @files.each do |fn| - sh "scp", "-q", "#{@local_dir}/#{fn}", "#{@host}:#{@remote_dir}" - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/sys.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/sys.rb deleted file mode 100644 index 8d4c7354..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/contrib/sys.rb +++ /dev/null @@ -1,4 +0,0 @@ -# TODO: Remove in Rake 11 - -fail "ERROR: 'rake/contrib/sys' is obsolete and no longer supported. " + - "Use 'FileUtils' instead." diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/default_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/default_loader.rb deleted file mode 100644 index 6154408f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/default_loader.rb +++ /dev/null @@ -1,14 +0,0 @@ -module Rake - - # Default Rakefile loader used by +import+. - class DefaultLoader - - ## - # Loads a rakefile into the current application from +fn+ - - def load(fn) - Rake.load_rakefile(File.expand_path(fn)) - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/dsl_definition.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/dsl_definition.rb deleted file mode 100644 index 4c57c1eb..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/dsl_definition.rb +++ /dev/null @@ -1,201 +0,0 @@ -# Rake DSL functions. -require 'rake/file_utils_ext' - -module Rake - - ## - # DSL is a module that provides #task, #desc, #namespace, etc. Use this - # when you'd like to use rake outside the top level scope. - # - # For a Rakefile you run from the command line this module is automatically - # included. - - module DSL - - #-- - # Include the FileUtils file manipulation functions in the top - # level module, but mark them private so that they don't - # unintentionally define methods on other objects. - #++ - - include FileUtilsExt - private(*FileUtils.instance_methods(false)) - private(*FileUtilsExt.instance_methods(false)) - - private - - # :call-seq: - # task task_name - # task task_name: dependencies - # task task_name, arguments => dependencies - # task task_name, argument[, argument ...], :needs: dependencies - # - # Declare a basic task. The +task_name+ is always the first argument. If - # the task name contains a ":" it is defined in that namespace. - # - # The +dependencies+ may be a single task name or an Array of task names. - # The +argument+ (a single name) or +arguments+ (an Array of names) define - # the arguments provided to the task. - # - # The task, argument and dependency names may be either symbols or - # strings. - # - # A task with a single dependency: - # - # task clobber: %w[clean] do - # rm_rf "html" - # end - # - # A task with an argument and a dependency: - # - # task :package, [:version] => :test do |t, args| - # # ... - # end - # - # To invoke this task from the command line: - # - # $ rake package[1.2.3] - # - # Alternate definition: - # - # task :package, :version, needs: :test do |t, args| - # # ... - # end - # - def task(*args, &block) # :doc: - Rake::Task.define_task(*args, &block) - end - - # Declare a file task. - # - # Example: - # file "config.cfg" => ["config.template"] do - # open("config.cfg", "w") do |outfile| - # open("config.template") do |infile| - # while line = infile.gets - # outfile.puts line - # end - # end - # end - # end - # - def file(*args, &block) # :doc: - Rake::FileTask.define_task(*args, &block) - end - - # Declare a file creation task. - # (Mainly used for the directory command). - def file_create(*args, &block) - Rake::FileCreationTask.define_task(*args, &block) - end - - # Declare a set of files tasks to create the given directories on - # demand. - # - # Example: - # directory "testdata/doc" - # - def directory(*args, &block) # :doc: - result = file_create(*args, &block) - dir, _ = *Rake.application.resolve_args(args) - dir = Rake.from_pathname(dir) - Rake.each_dir_parent(dir) do |d| - file_create d do |t| - mkdir_p t.name unless File.exist?(t.name) - end - end - result - end - - # Declare a task that performs its prerequisites in - # parallel. Multitasks does *not* guarantee that its prerequisites - # will execute in any given order (which is obvious when you think - # about it) - # - # Example: - # multitask deploy: %w[deploy_gem deploy_rdoc] - # - def multitask(*args, &block) # :doc: - Rake::MultiTask.define_task(*args, &block) - end - - # Create a new rake namespace and use it for evaluating the given - # block. Returns a NameSpace object that can be used to lookup - # tasks defined in the namespace. - # - # Example: - # - # ns = namespace "nested" do - # # the "nested:run" task - # task :run - # end - # task_run = ns[:run] # find :run in the given namespace. - # - # Tasks can also be defined in a namespace by using a ":" in the task - # name: - # - # task "nested:test" do - # # ... - # end - # - def namespace(name=nil, &block) # :doc: - name = name.to_s if name.kind_of?(Symbol) - name = name.to_str if name.respond_to?(:to_str) - unless name.kind_of?(String) || name.nil? - raise ArgumentError, "Expected a String or Symbol for a namespace name" - end - Rake.application.in_namespace(name, &block) - end - - # Declare a rule for auto-tasks. - # - # Example: - # rule '.o' => '.c' do |t| - # sh 'cc', '-o', t.name, t.source - # end - # - def rule(*args, &block) # :doc: - Rake::Task.create_rule(*args, &block) - end - - # Describes the next rake task. Duplicate descriptions are discarded. - # Descriptions are shown with rake -T (up to the first - # sentence) and rake -D (the entire description). - # - # Example: - # desc "Run the Unit Tests" - # task test: [:build] - # # ... run tests - # end - # - def desc(description) # :doc: - Rake.application.last_description = description - end - - # Import the partial Rakefiles +fn+. Imported files are loaded - # _after_ the current file is completely loaded. This allows the - # import statement to appear anywhere in the importing file, and yet - # allowing the imported files to depend on objects defined in the - # importing file. - # - # A common use of the import statement is to include files - # containing dependency declarations. - # - # See also the --rakelibdir command line option. - # - # Example: - # import ".depend", "my_rules" - # - def import(*fns) # :doc: - fns.each do |fn| - Rake.application.add_import(fn) - end - end - end - extend FileUtilsExt -end - -# Extend the main object with the DSL commands. This allows top-level -# calls to task, etc. to work from a Rakefile without polluting the -# object inheritance tree. -self.extend Rake::DSL diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/early_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/early_time.rb deleted file mode 100644 index abcb1872..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/early_time.rb +++ /dev/null @@ -1,21 +0,0 @@ -module Rake - - # EarlyTime is a fake timestamp that occurs _before_ any other time value. - class EarlyTime - include Comparable - include Singleton - - ## - # The EarlyTime always comes before +other+! - - def <=>(other) - -1 - end - - def to_s # :nodoc: - "" - end - end - - EARLY = EarlyTime.instance -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/core.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/core.rb deleted file mode 100644 index 7575df15..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/core.rb +++ /dev/null @@ -1,25 +0,0 @@ -class Module - # Check for an existing method in the current class before extending. If - # the method already exists, then a warning is printed and the extension is - # not added. Otherwise the block is yielded and any definitions in the - # block will take effect. - # - # Usage: - # - # class String - # rake_extension("xyz") do - # def xyz - # ... - # end - # end - # end - # - def rake_extension(method) # :nodoc: - if method_defined?(method) - $stderr.puts "WARNING: Possible conflict with Rake extension: " + - "#{self}##{method} already exists" - else - yield - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/module.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/module.rb deleted file mode 100644 index 3ee155ff..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/module.rb +++ /dev/null @@ -1,2 +0,0 @@ - -# TODO: remove in Rake 11 diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/pathname.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/pathname.rb deleted file mode 100644 index 49e2cd47..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/pathname.rb +++ /dev/null @@ -1,25 +0,0 @@ -require 'rake/ext/core' -require 'pathname' - -class Pathname - - rake_extension("ext") do - # Return a new Pathname with String#ext applied to it. - # - # This Pathname extension comes from Rake - def ext(newext='') - Pathname.new(Rake.from_pathname(self).ext(newext)) - end - end - - rake_extension("pathmap") do - # Apply the pathmap spec to the Pathname, returning a - # new Pathname with the modified paths. (See String#pathmap for - # details.) - # - # This Pathname extension comes from Rake - def pathmap(spec=nil, &block) - Pathname.new(Rake.from_pathname(self).pathmap(spec, &block)) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/time.rb deleted file mode 100644 index 3c206e4d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/time.rb +++ /dev/null @@ -1,18 +0,0 @@ -#-- -# Extensions to time to allow comparisons with early and late time classes. - -require 'rake/early_time' -require 'rake/late_time' - -if RUBY_VERSION < "1.9" - class Time # :nodoc: all - alias rake_original_time_compare :<=> - def <=>(other) - if Rake::EarlyTime === other || Rake::LateTime === other - - other.<=>(self) - else - rake_original_time_compare(other) - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_task.rb deleted file mode 100644 index 4c9b0407..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_task.rb +++ /dev/null @@ -1,46 +0,0 @@ -require 'rake/task.rb' -require 'rake/early_time' - -module Rake - - # A FileTask is a task that includes time based dependencies. If any of a - # FileTask's prerequisites have a timestamp that is later than the file - # represented by this task, then the file must be rebuilt (using the - # supplied actions). - # - class FileTask < Task - - # Is this file task needed? Yes if it doesn't exist, or if its time stamp - # is out of date. - def needed? - ! File.exist?(name) || out_of_date?(timestamp) || @application.options.build_all - end - - # Time stamp for file task. - def timestamp - if File.exist?(name) - File.mtime(name.to_s) - else - Rake::LATE - end - end - - private - - # Are there any prerequisites with a later time than the given time stamp? - def out_of_date?(stamp) - @prerequisites.any? { |n| application[n, @scope].timestamp > stamp } - end - - # ---------------------------------------------------------------- - # Task class methods. - # - class << self - # Apply the scope to the task name according to the rules for this kind - # of task. File based tasks ignore the scope when creating the name. - def scope_name(scope, task_name) - Rake.from_pathname(task_name) - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_utils_ext.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_utils_ext.rb deleted file mode 100644 index 309159ae..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_utils_ext.rb +++ /dev/null @@ -1,144 +0,0 @@ -require 'rake/file_utils' - -module Rake - # - # FileUtilsExt provides a custom version of the FileUtils methods - # that respond to the verbose and nowrite - # commands. - # - module FileUtilsExt - include FileUtils - - class << self - attr_accessor :verbose_flag, :nowrite_flag - end - - DEFAULT = Object.new - - FileUtilsExt.verbose_flag = DEFAULT - FileUtilsExt.nowrite_flag = false - - FileUtils.commands.each do |name| - opts = FileUtils.options_of name - default_options = [] - if opts.include?("verbose") - default_options << ':verbose => FileUtilsExt.verbose_flag' - end - if opts.include?("noop") - default_options << ':noop => FileUtilsExt.nowrite_flag' - end - - next if default_options.empty? - module_eval(<<-EOS, __FILE__, __LINE__ + 1) - def #{name}( *args, &block ) - super( - *rake_merge_option(args, - #{default_options.join(', ')} - ), &block) - end - EOS - end - - # Get/set the verbose flag controlling output from the FileUtils - # utilities. If verbose is true, then the utility method is - # echoed to standard output. - # - # Examples: - # verbose # return the current value of the - # # verbose flag - # verbose(v) # set the verbose flag to _v_. - # verbose(v) { code } # Execute code with the verbose flag set - # # temporarily to _v_. Return to the - # # original value when code is done. - def verbose(value=nil) - oldvalue = FileUtilsExt.verbose_flag - FileUtilsExt.verbose_flag = value unless value.nil? - if block_given? - begin - yield - ensure - FileUtilsExt.verbose_flag = oldvalue - end - end - FileUtilsExt.verbose_flag - end - - # Get/set the nowrite flag controlling output from the FileUtils - # utilities. If verbose is true, then the utility method is - # echoed to standard output. - # - # Examples: - # nowrite # return the current value of the - # # nowrite flag - # nowrite(v) # set the nowrite flag to _v_. - # nowrite(v) { code } # Execute code with the nowrite flag set - # # temporarily to _v_. Return to the - # # original value when code is done. - def nowrite(value=nil) - oldvalue = FileUtilsExt.nowrite_flag - FileUtilsExt.nowrite_flag = value unless value.nil? - if block_given? - begin - yield - ensure - FileUtilsExt.nowrite_flag = oldvalue - end - end - oldvalue - end - - # Use this function to prevent potentially destructive ruby code - # from running when the :nowrite flag is set. - # - # Example: - # - # when_writing("Building Project") do - # project.build - # end - # - # The following code will build the project under normal - # conditions. If the nowrite(true) flag is set, then the example - # will print: - # - # DRYRUN: Building Project - # - # instead of actually building the project. - # - def when_writing(msg=nil) - if FileUtilsExt.nowrite_flag - $stderr.puts "DRYRUN: #{msg}" if msg - else - yield - end - end - - # Merge the given options with the default values. - def rake_merge_option(args, defaults) - if Hash === args.last - defaults.update(args.last) - args.pop - end - args.push defaults - args - end - - # Send the message to the default rake output (which is $stderr). - def rake_output_message(message) - $stderr.puts(message) - end - - # Check that the options do not contain options not listed in - # +optdecl+. An ArgumentError exception is thrown if non-declared - # options are found. - def rake_check_options(options, *optdecl) - h = options.dup - optdecl.each do |name| - h.delete name - end - raise ArgumentError, "no such option: #{h.keys.join(' ')}" unless - h.empty? - end - - extend self - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/gempackagetask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/gempackagetask.rb deleted file mode 100644 index 16e7ce04..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/gempackagetask.rb +++ /dev/null @@ -1,4 +0,0 @@ -# TODO: Remove in Rake 11 - -fail "ERROR: 'rake/gempackagetask' is obsolete and no longer supported. " + - "Use 'rubygems/package_task' instead." diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb deleted file mode 100644 index 84ff3353..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb +++ /dev/null @@ -1,16 +0,0 @@ -module Rake - module InvocationExceptionMixin - # Return the invocation chain (list of Rake tasks) that were in - # effect when this exception was detected by rake. May be null if - # no tasks were active. - def chain - @rake_invocation_chain ||= nil - end - - # Set the invocation chain in effect when this exception was - # detected. - def chain=(value) - @rake_invocation_chain = value - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/linked_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/linked_list.rb deleted file mode 100644 index b5ab7978..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/linked_list.rb +++ /dev/null @@ -1,103 +0,0 @@ -module Rake - - # Polylithic linked list structure used to implement several data - # structures in Rake. - class LinkedList - include Enumerable - - attr_reader :head, :tail - - def initialize(head, tail=EMPTY) - @head = head - @tail = tail - end - - # Polymorphically add a new element to the head of a list. The - # type of head node will be the same list type as the tail. - def conj(item) - self.class.cons(item, self) - end - - # Is the list empty? - def empty? - false - end - - # Lists are structurally equivalent. - def ==(other) - current = self - while ! current.empty? && ! other.empty? - return false if current.head != other.head - current = current.tail - other = other.tail - end - current.empty? && other.empty? - end - - # Convert to string: LL(item, item...) - def to_s - items = map { |item| item.to_s }.join(", ") - "LL(#{items})" - end - - # Same as +to_s+, but with inspected items. - def inspect - items = map { |item| item.inspect }.join(", ") - "LL(#{items})" - end - - # For each item in the list. - def each - current = self - while ! current.empty? - yield(current.head) - current = current.tail - end - self - end - - # Make a list out of the given arguments. This method is - # polymorphic - def self.make(*args) - result = empty - args.reverse_each do |item| - result = cons(item, result) - end - result - end - - # Cons a new head onto the tail list. - def self.cons(head, tail) - new(head, tail) - end - - # The standard empty list class for the given LinkedList class. - def self.empty - self::EMPTY - end - - # Represent an empty list, using the Null Object Pattern. - # - # When inheriting from the LinkedList class, you should implement - # a type specific Empty class as well. Make sure you set the class - # instance variable @parent to the associated list class (this - # allows conj, cons and make to work polymorphically). - class EmptyLinkedList < LinkedList - @parent = LinkedList - - def initialize - end - - def empty? - true - end - - def self.cons(head, tail) - @parent.cons(head, tail) - end - end - - EMPTY = EmptyLinkedList.new - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/multi_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/multi_task.rb deleted file mode 100644 index 5418a7a7..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/multi_task.rb +++ /dev/null @@ -1,13 +0,0 @@ -module Rake - - # Same as a regular task, but the immediate prerequisites are done in - # parallel using Ruby threads. - # - class MultiTask < Task - private - def invoke_prerequisites(task_args, invocation_chain) # :nodoc: - invoke_prerequisites_concurrently(task_args, invocation_chain) - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/name_space.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/name_space.rb deleted file mode 100644 index 58f911e4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/name_space.rb +++ /dev/null @@ -1,38 +0,0 @@ -## -# The NameSpace class will lookup task names in the scope defined by a -# +namespace+ command. - -class Rake::NameSpace - - ## - # Create a namespace lookup object using the given task manager - # and the list of scopes. - - def initialize(task_manager, scope_list) - @task_manager = task_manager - @scope = scope_list.dup - end - - ## - # Lookup a task named +name+ in the namespace. - - def [](name) - @task_manager.lookup(name, @scope) - end - - ## - # The scope of the namespace (a LinkedList) - - def scope - @scope.dup - end - - ## - # Return the list of tasks defined in this and nested namespaces. - - def tasks - @task_manager.tasks_in_scope(@scope) - end - -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/packagetask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/packagetask.rb deleted file mode 100644 index 249ee72b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/packagetask.rb +++ /dev/null @@ -1,199 +0,0 @@ -# Define a package task library to aid in the definition of -# redistributable package files. - -require 'rake' -require 'rake/tasklib' - -module Rake - - # Create a packaging task that will package the project into - # distributable files (e.g zip archive or tar files). - # - # The PackageTask will create the following targets: - # - # +:package+ :: - # Create all the requested package files. - # - # +:clobber_package+ :: - # Delete all the package files. This target is automatically - # added to the main clobber target. - # - # +:repackage+ :: - # Rebuild the package files from scratch, even if they are not out - # of date. - # - # "package_dir/name-version.tgz" :: - # Create a gzipped tar package (if need_tar is true). - # - # "package_dir/name-version.tar.gz" :: - # Create a gzipped tar package (if need_tar_gz is true). - # - # "package_dir/name-version.tar.bz2" :: - # Create a bzip2'd tar package (if need_tar_bz2 is true). - # - # "package_dir/name-version.zip" :: - # Create a zip package archive (if need_zip is true). - # - # Example: - # - # Rake::PackageTask.new("rake", "1.2.3") do |p| - # p.need_tar = true - # p.package_files.include("lib/**/*.rb") - # end - # - class PackageTask < TaskLib - # Name of the package (from the GEM Spec). - attr_accessor :name - - # Version of the package (e.g. '1.3.2'). - attr_accessor :version - - # Directory used to store the package files (default is 'pkg'). - attr_accessor :package_dir - - # True if a gzipped tar file (tgz) should be produced (default is - # false). - attr_accessor :need_tar - - # True if a gzipped tar file (tar.gz) should be produced (default - # is false). - attr_accessor :need_tar_gz - - # True if a bzip2'd tar file (tar.bz2) should be produced (default - # is false). - attr_accessor :need_tar_bz2 - - # True if a zip file should be produced (default is false) - attr_accessor :need_zip - - # List of files to be included in the package. - attr_accessor :package_files - - # Tar command for gzipped or bzip2ed archives. The default is 'tar'. - attr_accessor :tar_command - - # Zip command for zipped archives. The default is 'zip'. - attr_accessor :zip_command - - # Create a Package Task with the given name and version. Use +:noversion+ - # as the version to build a package without a version or to provide a - # fully-versioned package name. - - def initialize(name=nil, version=nil) - init(name, version) - yield self if block_given? - define unless name.nil? - end - - # Initialization that bypasses the "yield self" and "define" step. - def init(name, version) - @name = name - @version = version - @package_files = Rake::FileList.new - @package_dir = 'pkg' - @need_tar = false - @need_tar_gz = false - @need_tar_bz2 = false - @need_zip = false - @tar_command = 'tar' - @zip_command = 'zip' - end - - # Create the tasks defined by this task library. - def define - fail "Version required (or :noversion)" if @version.nil? - @version = nil if :noversion == @version - - desc "Build all the packages" - task :package - - desc "Force a rebuild of the package files" - task :repackage => [:clobber_package, :package] - - desc "Remove package products" - task :clobber_package do - rm_r package_dir rescue nil - end - - task :clobber => [:clobber_package] - - [ - [need_tar, tgz_file, "z"], - [need_tar_gz, tar_gz_file, "z"], - [need_tar_bz2, tar_bz2_file, "j"] - ].each do |(need, file, flag)| - if need - task :package => ["#{package_dir}/#{file}"] - file "#{package_dir}/#{file}" => - [package_dir_path] + package_files do - chdir(package_dir) do - sh @tar_command, "#{flag}cvf", file, package_name - end - end - end - end - - if need_zip - task :package => ["#{package_dir}/#{zip_file}"] - file "#{package_dir}/#{zip_file}" => - [package_dir_path] + package_files do - chdir(package_dir) do - sh @zip_command, "-r", zip_file, package_name - end - end - end - - directory package_dir_path => @package_files do - @package_files.each do |fn| - f = File.join(package_dir_path, fn) - fdir = File.dirname(f) - mkdir_p(fdir) unless File.exist?(fdir) - if File.directory?(fn) - mkdir_p(f) - else - rm_f f - safe_ln(fn, f) - end - end - end - self - end - - # The name of this package - - def package_name - @version ? "#{@name}-#{@version}" : @name - end - - # The directory this package will be built in - - def package_dir_path - "#{package_dir}/#{package_name}" - end - - # The package name with .tgz added - - def tgz_file - "#{package_name}.tgz" - end - - # The package name with .tar.gz added - - def tar_gz_file - "#{package_name}.tar.gz" - end - - # The package name with .tar.bz2 added - - def tar_bz2_file - "#{package_name}.tar.bz2" - end - - # The package name with .zip added - - def zip_file - "#{package_name}.zip" - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/pathmap.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/pathmap.rb deleted file mode 100644 index 9a840cda..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/pathmap.rb +++ /dev/null @@ -1,3 +0,0 @@ -# TODO: Remove in Rake 11 - -require 'rake/ext/string' diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/phony.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/phony.rb deleted file mode 100644 index 29633ae0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/phony.rb +++ /dev/null @@ -1,15 +0,0 @@ -# Defines a :phony task that you can use as a dependency. This allows -# file-based tasks to use non-file-based tasks as prerequisites -# without forcing them to rebuild. -# -# See FileTask#out_of_date? and Task#timestamp for more info. - -require 'rake' - -task :phony - -Rake::Task[:phony].tap do |task| - def task.timestamp # :nodoc: - Time.at 0 - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/private_reader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/private_reader.rb deleted file mode 100644 index 16209785..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/private_reader.rb +++ /dev/null @@ -1,20 +0,0 @@ -module Rake - - # Include PrivateReader to use +private_reader+. - module PrivateReader # :nodoc: all - - def self.included(base) - base.extend(ClassMethods) - end - - module ClassMethods - - # Declare a list of private accessors - def private_reader(*names) - attr_reader(*names) - private(*names) - end - end - - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/pseudo_status.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/pseudo_status.rb deleted file mode 100644 index 16e1903b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/pseudo_status.rb +++ /dev/null @@ -1,29 +0,0 @@ -module Rake - - ## - # Exit status class for times the system just gives us a nil. - class PseudoStatus # :nodoc: all - attr_reader :exitstatus - - def initialize(code=0) - @exitstatus = code - end - - def to_i - @exitstatus << 8 - end - - def >>(n) - to_i >> n - end - - def stopped? - false - end - - def exited? - true - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rake_module.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rake_module.rb deleted file mode 100644 index 36927534..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rake_module.rb +++ /dev/null @@ -1,38 +0,0 @@ -require 'rake/application' - -module Rake - - class << self - # Current Rake Application - def application - @application ||= Rake::Application.new - end - - # Set the current Rake application object. - def application=(app) - @application = app - end - - def suggested_thread_count # :nodoc: - @cpu_count ||= Rake::CpuCounter.count - @cpu_count + 4 - end - - # Return the original directory where the Rake application was started. - def original_dir - application.original_dir - end - - # Load a rakefile. - def load_rakefile(path) - load(path) - end - - # Add files to the rakelib list - def add_rakelib(*files) - application.options.rakelib ||= [] - application.options.rakelib.concat(files) - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb deleted file mode 100644 index 7e3a6b3f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb +++ /dev/null @@ -1,22 +0,0 @@ -require 'rake' - -# Load the test files from the command line. -argv = ARGV.select do |argument| - case argument - when /^-/ then - argument - when /\*/ then - FileList[argument].to_a.each do |file| - require File.expand_path file - end - - false - else - require File.expand_path argument - - false - end -end - -ARGV.replace argv - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rdoctask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rdoctask.rb deleted file mode 100644 index 8d7df4f1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rdoctask.rb +++ /dev/null @@ -1,4 +0,0 @@ -# TODO: Remove in Rake 11 - -fail "ERROR: 'rake/rdoctask' is obsolete and no longer supported. " + - "Use 'rdoc/task' (available in RDoc 2.4.2+) instead." diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb deleted file mode 100644 index 40b30a6f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb +++ /dev/null @@ -1,29 +0,0 @@ -# TODO: Remove in rake 11 - -# Local Rake override to fix bug in Ruby 0.8.2 -module Test # :nodoc: - # Local Rake override to fix bug in Ruby 0.8.2 - module Unit # :nodoc: - # Local Rake override to fix bug in Ruby 0.8.2 - module Collector # :nodoc: - # Local Rake override to fix bug in Ruby 0.8.2 - class Dir # :nodoc: - undef collect_file - def collect_file(name, suites, already_gathered) # :nodoc: - dir = File.dirname(File.expand_path(name)) - $:.unshift(dir) unless $:.first == dir - if @req - @req.require(name) - else - require(name) - end - find_test_cases(already_gathered).each do |t| - add_suite(suites, t.suite) - end - ensure - $:.delete_at $:.rindex(dir) - end - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb deleted file mode 100644 index da4318da..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb +++ /dev/null @@ -1,20 +0,0 @@ - -module Rake - - # Error indicating a recursion overflow error in task selection. - class RuleRecursionOverflowError < StandardError - def initialize(*args) - super - @targets = [] - end - - def add_target(target) - @targets << target - end - - def message - super + ": [" + @targets.reverse.join(' => ') + "]" - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/runtest.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/runtest.rb deleted file mode 100644 index 4774b0e2..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/runtest.rb +++ /dev/null @@ -1,27 +0,0 @@ -require 'test/unit' -require 'test/unit/assertions' -require 'rake/file_list' - -module Rake - include Test::Unit::Assertions - - ## - # Deprecated way of running tests in process, but only for Test::Unit. - #-- - # TODO: Remove in rake 11 - - def run_tests(pattern='test/test*.rb', log_enabled=false) # :nodoc: - FileList.glob(pattern).each do |fn| - $stderr.puts fn if log_enabled - begin - require fn - rescue Exception => ex - $stderr.puts "Error in #{fn}: #{ex.message}" - $stderr.puts ex.backtrace - assert false - end - end - end - - extend self -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/scope.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/scope.rb deleted file mode 100644 index dbefcea4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/scope.rb +++ /dev/null @@ -1,42 +0,0 @@ -module Rake - class Scope < LinkedList # :nodoc: all - - # Path for the scope. - def path - map { |item| item.to_s }.reverse.join(":") - end - - # Path for the scope + the named path. - def path_with_task_name(task_name) - "#{path}:#{task_name}" - end - - # Trim +n+ innermost scope levels from the scope. In no case will - # this trim beyond the toplevel scope. - def trim(n) - result = self - while n > 0 && ! result.empty? - result = result.tail - n -= 1 - end - result - end - - # Scope lists always end with an EmptyScope object. See Null - # Object Pattern) - class EmptyScope < EmptyLinkedList - @parent = Scope - - def path - "" - end - - def path_with_task_name(task_name) - task_name - end - end - - # Singleton null object for an empty scope. - EMPTY = EmptyScope.new - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task.rb deleted file mode 100644 index 9bcf7255..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task.rb +++ /dev/null @@ -1,383 +0,0 @@ -require 'rake/invocation_exception_mixin' - -module Rake - - ## - # A Task is the basic unit of work in a Rakefile. Tasks have associated - # actions (possibly more than one) and a list of prerequisites. When - # invoked, a task will first ensure that all of its prerequisites have an - # opportunity to run and then it will execute its own actions. - # - # Tasks are not usually created directly using the new method, but rather - # use the +file+ and +task+ convenience methods. - # - class Task - # List of prerequisites for a task. - attr_reader :prerequisites - - # List of actions attached to a task. - attr_reader :actions - - # Application owning this task. - attr_accessor :application - - # Array of nested namespaces names used for task lookup by this task. - attr_reader :scope - - # File/Line locations of each of the task definitions for this - # task (only valid if the task was defined with the detect - # location option set). - attr_reader :locations - - # Return task name - def to_s - name - end - - def inspect # :nodoc: - "<#{self.class} #{name} => [#{prerequisites.join(', ')}]>" - end - - # List of sources for task. - attr_writer :sources - def sources - if defined?(@sources) - @sources - else - prerequisites - end - end - - # List of prerequisite tasks - def prerequisite_tasks - prerequisites.map { |pre| lookup_prerequisite(pre) } - end - - def lookup_prerequisite(prerequisite_name) # :nodoc: - application[prerequisite_name, @scope] - end - private :lookup_prerequisite - - # List of all unique prerequisite tasks including prerequisite tasks' - # prerequisites. - # Includes self when cyclic dependencies are found. - def all_prerequisite_tasks - seen = {} - collect_prerequisites(seen) - seen.values - end - - def collect_prerequisites(seen) # :nodoc: - prerequisite_tasks.each do |pre| - next if seen[pre.name] - seen[pre.name] = pre - pre.collect_prerequisites(seen) - end - end - protected :collect_prerequisites - - # First source from a rule (nil if no sources) - def source - sources.first - end - - # Create a task named +task_name+ with no actions or prerequisites. Use - # +enhance+ to add actions and prerequisites. - def initialize(task_name, app) - @name = task_name.to_s - @prerequisites = [] - @actions = [] - @already_invoked = false - @comments = [] - @lock = Monitor.new - @application = app - @scope = app.current_scope - @arg_names = nil - @locations = [] - end - - # Enhance a task with prerequisites or actions. Returns self. - def enhance(deps=nil, &block) - @prerequisites |= deps if deps - @actions << block if block_given? - self - end - - # Name of the task, including any namespace qualifiers. - def name - @name.to_s - end - - # Name of task with argument list description. - def name_with_args # :nodoc: - if arg_description - "#{name}#{arg_description}" - else - name - end - end - - # Argument description (nil if none). - def arg_description # :nodoc: - @arg_names ? "[#{arg_names.join(',')}]" : nil - end - - # Name of arguments for this task. - def arg_names - @arg_names || [] - end - - # Reenable the task, allowing its tasks to be executed if the task - # is invoked again. - def reenable - @already_invoked = false - end - - # Clear the existing prerequisites and actions of a rake task. - def clear - clear_prerequisites - clear_actions - clear_comments - self - end - - # Clear the existing prerequisites of a rake task. - def clear_prerequisites - prerequisites.clear - self - end - - # Clear the existing actions on a rake task. - def clear_actions - actions.clear - self - end - - # Clear the existing comments on a rake task. - def clear_comments - @comments = [] - self - end - - # Invoke the task if it is needed. Prerequisites are invoked first. - def invoke(*args) - task_args = TaskArguments.new(arg_names, args) - invoke_with_call_chain(task_args, InvocationChain::EMPTY) - end - - # Same as invoke, but explicitly pass a call chain to detect - # circular dependencies. - def invoke_with_call_chain(task_args, invocation_chain) # :nodoc: - new_chain = InvocationChain.append(self, invocation_chain) - @lock.synchronize do - if application.options.trace - application.trace "** Invoke #{name} #{format_trace_flags}" - end - return if @already_invoked - @already_invoked = true - invoke_prerequisites(task_args, new_chain) - execute(task_args) if needed? - end - rescue Exception => ex - add_chain_to(ex, new_chain) - raise ex - end - protected :invoke_with_call_chain - - def add_chain_to(exception, new_chain) # :nodoc: - exception.extend(InvocationExceptionMixin) unless - exception.respond_to?(:chain) - exception.chain = new_chain if exception.chain.nil? - end - private :add_chain_to - - # Invoke all the prerequisites of a task. - def invoke_prerequisites(task_args, invocation_chain) # :nodoc: - if application.options.always_multitask - invoke_prerequisites_concurrently(task_args, invocation_chain) - else - prerequisite_tasks.each { |p| - prereq_args = task_args.new_scope(p.arg_names) - p.invoke_with_call_chain(prereq_args, invocation_chain) - } - end - end - - # Invoke all the prerequisites of a task in parallel. - def invoke_prerequisites_concurrently(task_args, invocation_chain)# :nodoc: - futures = prerequisite_tasks.map do |p| - prereq_args = task_args.new_scope(p.arg_names) - application.thread_pool.future(p) do |r| - r.invoke_with_call_chain(prereq_args, invocation_chain) - end - end - futures.each { |f| f.value } - end - - # Format the trace flags for display. - def format_trace_flags - flags = [] - flags << "first_time" unless @already_invoked - flags << "not_needed" unless needed? - flags.empty? ? "" : "(" + flags.join(", ") + ")" - end - private :format_trace_flags - - # Execute the actions associated with this task. - def execute(args=nil) - args ||= EMPTY_TASK_ARGS - if application.options.dryrun - application.trace "** Execute (dry run) #{name}" - return - end - application.trace "** Execute #{name}" if application.options.trace - application.enhance_with_matching_rule(name) if @actions.empty? - @actions.each do |act| - case act.arity - when 1 - act.call(self) - else - act.call(self, args) - end - end - end - - # Is this task needed? - def needed? - true - end - - # Timestamp for this task. Basic tasks return the current time for their - # time stamp. Other tasks can be more sophisticated. - def timestamp - Time.now - end - - # Add a description to the task. The description can consist of an option - # argument list (enclosed brackets) and an optional comment. - def add_description(description) - return unless description - comment = description.strip - add_comment(comment) if comment && ! comment.empty? - end - - def comment=(comment) # :nodoc: - add_comment(comment) - end - - def add_comment(comment) # :nodoc: - return if comment.nil? - @comments << comment unless @comments.include?(comment) - end - private :add_comment - - # Full collection of comments. Multiple comments are separated by - # newlines. - def full_comment - transform_comments("\n") - end - - # First line (or sentence) of all comments. Multiple comments are - # separated by a "/". - def comment - transform_comments(" / ") { |c| first_sentence(c) } - end - - # Transform the list of comments as specified by the block and - # join with the separator. - def transform_comments(separator, &block) - if @comments.empty? - nil - else - block ||= lambda { |c| c } - @comments.map(&block).join(separator) - end - end - private :transform_comments - - # Get the first sentence in a string. The sentence is terminated - # by the first period or the end of the line. Decimal points do - # not count as periods. - def first_sentence(string) - string.split(/\.[ \t]|\.$|\n/).first - end - private :first_sentence - - # Set the names of the arguments for this task. +args+ should be - # an array of symbols, one for each argument name. - def set_arg_names(args) - @arg_names = args.map { |a| a.to_sym } - end - - # Return a string describing the internal state of a task. Useful for - # debugging. - def investigation - result = "------------------------------\n" - result << "Investigating #{name}\n" - result << "class: #{self.class}\n" - result << "task needed: #{needed?}\n" - result << "timestamp: #{timestamp}\n" - result << "pre-requisites: \n" - prereqs = prerequisite_tasks - prereqs.sort! { |a, b| a.timestamp <=> b.timestamp } - prereqs.each do |p| - result << "--#{p.name} (#{p.timestamp})\n" - end - latest_prereq = prerequisite_tasks.map { |pre| pre.timestamp }.max - result << "latest-prerequisite time: #{latest_prereq}\n" - result << "................................\n\n" - return result - end - - # ---------------------------------------------------------------- - # Rake Module Methods - # - class << self - - # Clear the task list. This cause rake to immediately forget all the - # tasks that have been assigned. (Normally used in the unit tests.) - def clear - Rake.application.clear - end - - # List of all defined tasks. - def tasks - Rake.application.tasks - end - - # Return a task with the given name. If the task is not currently - # known, try to synthesize one from the defined rules. If no rules are - # found, but an existing file matches the task name, assume it is a file - # task with no dependencies or actions. - def [](task_name) - Rake.application[task_name] - end - - # TRUE if the task name is already defined. - def task_defined?(task_name) - Rake.application.lookup(task_name) != nil - end - - # Define a task given +args+ and an option block. If a rule with the - # given name already exists, the prerequisites and actions are added to - # the existing task. Returns the defined task. - def define_task(*args, &block) - Rake.application.define_task(self, *args, &block) - end - - # Define a rule for synthesizing tasks. - def create_rule(*args, &block) - Rake.application.create_rule(*args, &block) - end - - # Apply the scope to the task name according to the rules for - # this kind of task. Generic tasks will accept the scope as - # part of the name. - def scope_name(scope, task_name) -# (scope + [task_name]).join(':') - scope.path_with_task_name(task_name) - end - - end # class << Rake::Task - end # class Rake::Task -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task_argument_error.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task_argument_error.rb deleted file mode 100644 index 3e1dda64..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task_argument_error.rb +++ /dev/null @@ -1,7 +0,0 @@ -module Rake - - # Error indicating an ill-formed task declaration. - class TaskArgumentError < ArgumentError - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task_manager.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task_manager.rb deleted file mode 100644 index c9c080b4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task_manager.rb +++ /dev/null @@ -1,307 +0,0 @@ -module Rake - - # The TaskManager module is a mixin for managing tasks. - module TaskManager - # Track the last comment made in the Rakefile. - attr_accessor :last_description - - # TODO: Remove in Rake 11 - - alias :last_comment :last_description # :nodoc: Backwards compatibility - - def initialize # :nodoc: - super - @tasks = Hash.new - @rules = Array.new - @scope = Scope.make - @last_description = nil - end - - def create_rule(*args, &block) # :nodoc: - pattern, args, deps = resolve_args(args) - pattern = Regexp.new(Regexp.quote(pattern) + '$') if String === pattern - @rules << [pattern, args, deps, block] - end - - def define_task(task_class, *args, &block) # :nodoc: - task_name, arg_names, deps = resolve_args(args) - - original_scope = @scope - if String === task_name and - not task_class.ancestors.include? Rake::FileTask then - task_name, *definition_scope = *(task_name.split(":").reverse) - @scope = Scope.make(*(definition_scope + @scope.to_a)) - end - - task_name = task_class.scope_name(@scope, task_name) - deps = [deps] unless deps.respond_to?(:to_ary) - deps = deps.map { |d| Rake.from_pathname(d).to_s } - task = intern(task_class, task_name) - task.set_arg_names(arg_names) unless arg_names.empty? - if Rake::TaskManager.record_task_metadata - add_location(task) - task.add_description(get_description(task)) - end - task.enhance(deps, &block) - ensure - @scope = original_scope - end - - # Lookup a task. Return an existing task if found, otherwise - # create a task of the current type. - def intern(task_class, task_name) - @tasks[task_name.to_s] ||= task_class.new(task_name, self) - end - - # Find a matching task for +task_name+. - def [](task_name, scopes=nil) - task_name = task_name.to_s - self.lookup(task_name, scopes) or - enhance_with_matching_rule(task_name) or - synthesize_file_task(task_name) or - fail "Don't know how to build task '#{task_name}' (see --tasks)" - end - - def synthesize_file_task(task_name) # :nodoc: - return nil unless File.exist?(task_name) - define_task(Rake::FileTask, task_name) - end - - # Resolve the arguments for a task/rule. Returns a triplet of - # [task_name, arg_name_list, prerequisites]. - def resolve_args(args) - if args.last.is_a?(Hash) - deps = args.pop - resolve_args_with_dependencies(args, deps) - else - resolve_args_without_dependencies(args) - end - end - - # Resolve task arguments for a task or rule when there are no - # dependencies declared. - # - # The patterns recognized by this argument resolving function are: - # - # task :t - # task :t, [:a] - # - def resolve_args_without_dependencies(args) - task_name = args.shift - if args.size == 1 && args.first.respond_to?(:to_ary) - arg_names = args.first.to_ary - else - arg_names = args - end - [task_name, arg_names, []] - end - private :resolve_args_without_dependencies - - # Resolve task arguments for a task or rule when there are - # dependencies declared. - # - # The patterns recognized by this argument resolving function are: - # - # task :t => [:d] - # task :t, [a] => [:d] - # - def resolve_args_with_dependencies(args, hash) # :nodoc: - fail "Task Argument Error" if hash.size != 1 - key, value = hash.map { |k, v| [k, v] }.first - if args.empty? - task_name = key - arg_names = [] - deps = value || [] - else - task_name = args.shift - arg_names = key - deps = value - end - deps = [deps] unless deps.respond_to?(:to_ary) - [task_name, arg_names, deps] - end - private :resolve_args_with_dependencies - - # If a rule can be found that matches the task name, enhance the - # task with the prerequisites and actions from the rule. Set the - # source attribute of the task appropriately for the rule. Return - # the enhanced task or nil of no rule was found. - def enhance_with_matching_rule(task_name, level=0) - fail Rake::RuleRecursionOverflowError, - "Rule Recursion Too Deep" if level >= 16 - @rules.each do |pattern, args, extensions, block| - if pattern.match(task_name) - task = attempt_rule(task_name, args, extensions, block, level) - return task if task - end - end - nil - rescue Rake::RuleRecursionOverflowError => ex - ex.add_target(task_name) - fail ex - end - - # List of all defined tasks in this application. - def tasks - @tasks.values.sort_by { |t| t.name } - end - - # List of all the tasks defined in the given scope (and its - # sub-scopes). - def tasks_in_scope(scope) - prefix = scope.path - tasks.select { |t| - /^#{prefix}:/ =~ t.name - } - end - - # Clear all tasks in this application. - def clear - @tasks.clear - @rules.clear - end - - # Lookup a task, using scope and the scope hints in the task name. - # This method performs straight lookups without trying to - # synthesize file tasks or rules. Special scope names (e.g. '^') - # are recognized. If no scope argument is supplied, use the - # current scope. Return nil if the task cannot be found. - def lookup(task_name, initial_scope=nil) - initial_scope ||= @scope - task_name = task_name.to_s - if task_name =~ /^rake:/ - scopes = Scope.make - task_name = task_name.sub(/^rake:/, '') - elsif task_name =~ /^(\^+)/ - scopes = initial_scope.trim($1.size) - task_name = task_name.sub(/^(\^+)/, '') - else - scopes = initial_scope - end - lookup_in_scope(task_name, scopes) - end - - # Lookup the task name - def lookup_in_scope(name, scope) - loop do - tn = scope.path_with_task_name(name) - task = @tasks[tn] - return task if task - break if scope.empty? - scope = scope.tail - end - nil - end - private :lookup_in_scope - - # Return the list of scope names currently active in the task - # manager. - def current_scope - @scope - end - - # Evaluate the block in a nested namespace named +name+. Create - # an anonymous namespace if +name+ is nil. - def in_namespace(name) - name ||= generate_name - @scope = Scope.new(name, @scope) - ns = NameSpace.new(self, @scope) - yield(ns) - ns - ensure - @scope = @scope.tail - end - - private - - # Add a location to the locations field of the given task. - def add_location(task) - loc = find_location - task.locations << loc if loc - task - end - - # Find the location that called into the dsl layer. - def find_location - locations = caller - i = 0 - while locations[i] - return locations[i + 1] if locations[i] =~ /rake\/dsl_definition.rb/ - i += 1 - end - nil - end - - # Generate an anonymous namespace name. - def generate_name - @seed ||= 0 - @seed += 1 - "_anon_#{@seed}" - end - - def trace_rule(level, message) # :nodoc: - options.trace_output.puts "#{" " * level}#{message}" if - Rake.application.options.trace_rules - end - - # Attempt to create a rule given the list of prerequisites. - def attempt_rule(task_name, args, extensions, block, level) - sources = make_sources(task_name, extensions) - prereqs = sources.map { |source| - trace_rule level, "Attempting Rule #{task_name} => #{source}" - if File.exist?(source) || Rake::Task.task_defined?(source) - trace_rule level, "(#{task_name} => #{source} ... EXIST)" - source - elsif parent = enhance_with_matching_rule(source, level + 1) - trace_rule level, "(#{task_name} => #{source} ... ENHANCE)" - parent.name - else - trace_rule level, "(#{task_name} => #{source} ... FAIL)" - return nil - end - } - task = FileTask.define_task(task_name, {args => prereqs}, &block) - task.sources = prereqs - task - end - - # Make a list of sources from the list of file name extensions / - # translation procs. - def make_sources(task_name, extensions) - result = extensions.map { |ext| - case ext - when /%/ - task_name.pathmap(ext) - when %r{/} - ext - when /^\./ - task_name.ext(ext) - when String - ext - when Proc, Method - if ext.arity == 1 - ext.call(task_name) - else - ext.call - end - else - fail "Don't know how to handle rule dependent: #{ext.inspect}" - end - } - result.flatten - end - - # Return the current description, clearing it in the process. - def get_description(task) - desc = @last_description - @last_description = nil - desc - end - - class << self - attr_accessor :record_task_metadata # :nodoc: - TaskManager.record_task_metadata = false - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/tasklib.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/tasklib.rb deleted file mode 100644 index 6203d940..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/tasklib.rb +++ /dev/null @@ -1,24 +0,0 @@ -require 'rake' - -module Rake - - # Base class for Task Libraries. - class TaskLib - include Cloneable - include Rake::DSL - - # Make a symbol by pasting two strings together. - # - # NOTE: DEPRECATED! This method is kinda stupid. I don't know why - # I didn't just use string interpolation. But now other task - # libraries depend on this so I can't remove it without breaking - # other people's code. So for now it stays for backwards - # compatibility. BUT DON'T USE IT. - #-- - # TODO: Remove in Rake 11 - def paste(a, b) # :nodoc: - (a.to_s + b.to_s).intern - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/thread_history_display.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/thread_history_display.rb deleted file mode 100644 index c2af9ece..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/thread_history_display.rb +++ /dev/null @@ -1,48 +0,0 @@ -require 'rake/private_reader' - -module Rake - - class ThreadHistoryDisplay # :nodoc: all - include Rake::PrivateReader - - private_reader :stats, :items, :threads - - def initialize(stats) - @stats = stats - @items = { :_seq_ => 1 } - @threads = { :_seq_ => "A" } - end - - def show - puts "Job History:" - stats.each do |stat| - stat[:data] ||= {} - rename(stat, :thread, threads) - rename(stat[:data], :item_id, items) - rename(stat[:data], :new_thread, threads) - rename(stat[:data], :deleted_thread, threads) - printf("%8d %2s %-20s %s\n", - (stat[:time] * 1_000_000).round, - stat[:thread], - stat[:event], - stat[:data].map do |k, v| "#{k}:#{v}" end.join(" ")) - end - end - - private - - def rename(hash, key, renames) - if hash && hash[key] - original = hash[key] - value = renames[original] - unless value - value = renames[:_seq_] - renames[:_seq_] = renames[:_seq_].succ - renames[original] = value - end - hash[key] = value - end - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/thread_pool.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/thread_pool.rb deleted file mode 100644 index d2ac6e7a..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/thread_pool.rb +++ /dev/null @@ -1,164 +0,0 @@ -require 'thread' -require 'set' - -require 'rake/promise' - -module Rake - - class ThreadPool # :nodoc: all - - # Creates a ThreadPool object. The +thread_count+ parameter is the size - # of the pool. - def initialize(thread_count) - @max_active_threads = [thread_count, 0].max - @threads = Set.new - @threads_mon = Monitor.new - @queue = Queue.new - @join_cond = @threads_mon.new_cond - - @history_start_time = nil - @history = [] - @history_mon = Monitor.new - @total_threads_in_play = 0 - end - - # Creates a future executed by the +ThreadPool+. - # - # The args are passed to the block when executing (similarly to - # Thread#new) The return value is an object representing - # a future which has been created and added to the queue in the - # pool. Sending #value to the object will sleep the - # current thread until the future is finished and will return the - # result (or raise an exception thrown from the future) - def future(*args, &block) - promise = Promise.new(args, &block) - promise.recorder = lambda { |*stats| stat(*stats) } - - @queue.enq promise - stat :queued, :item_id => promise.object_id - start_thread - promise - end - - # Waits until the queue of futures is empty and all threads have exited. - def join - @threads_mon.synchronize do - begin - stat :joining - @join_cond.wait unless @threads.empty? - stat :joined - rescue Exception => e - stat :joined - $stderr.puts e - $stderr.print "Queue contains #{@queue.size} items. " + - "Thread pool contains #{@threads.count} threads\n" - $stderr.print "Current Thread #{Thread.current} status = " + - "#{Thread.current.status}\n" - $stderr.puts e.backtrace.join("\n") - @threads.each do |t| - $stderr.print "Thread #{t} status = #{t.status}\n" - # 1.8 doesn't support Thread#backtrace - $stderr.puts t.backtrace.join("\n") if t.respond_to? :backtrace - end - raise e - end - end - end - - # Enable the gathering of history events. - def gather_history #:nodoc: - @history_start_time = Time.now if @history_start_time.nil? - end - - # Return a array of history events for the thread pool. - # - # History gathering must be enabled to be able to see the events - # (see #gather_history). Best to call this when the job is - # complete (i.e. after ThreadPool#join is called). - def history # :nodoc: - @history_mon.synchronize { @history.dup }. - sort_by { |i| i[:time] }. - each { |i| i[:time] -= @history_start_time } - end - - # Return a hash of always collected statistics for the thread pool. - def statistics # :nodoc: - { - :total_threads_in_play => @total_threads_in_play, - :max_active_threads => @max_active_threads, - } - end - - private - - # processes one item on the queue. Returns true if there was an - # item to process, false if there was no item - def process_queue_item #:nodoc: - return false if @queue.empty? - - # Even though we just asked if the queue was empty, it - # still could have had an item which by this statement - # is now gone. For this reason we pass true to Queue#deq - # because we will sleep indefinitely if it is empty. - promise = @queue.deq(true) - stat :dequeued, :item_id => promise.object_id - promise.work - return true - - rescue ThreadError # this means the queue is empty - false - end - - def safe_thread_count - @threads_mon.synchronize do - @threads.count - end - end - - def start_thread # :nodoc: - @threads_mon.synchronize do - next unless @threads.count < @max_active_threads - - t = Thread.new do - begin - while safe_thread_count <= @max_active_threads - break unless process_queue_item - end - ensure - @threads_mon.synchronize do - @threads.delete Thread.current - stat :ended, :thread_count => @threads.count - @join_cond.broadcast if @threads.empty? - end - end - end - - @threads << t - stat( - :spawned, - :new_thread => t.object_id, - :thread_count => @threads.count) - @total_threads_in_play = @threads.count if - @threads.count > @total_threads_in_play - end - end - - def stat(event, data=nil) # :nodoc: - return if @history_start_time.nil? - info = { - :event => event, - :data => data, - :time => Time.now, - :thread => Thread.current.object_id, - } - @history_mon.synchronize { @history << info } - end - - # for testing only - - def __queue__ # :nodoc: - @queue - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/trace_output.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/trace_output.rb deleted file mode 100644 index 396096d4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/trace_output.rb +++ /dev/null @@ -1,22 +0,0 @@ -module Rake - module TraceOutput # :nodoc: all - - # Write trace output to output stream +out+. - # - # The write is done as a single IO call (to print) to lessen the - # chance that the trace output is interrupted by other tasks also - # producing output. - def trace_on(out, *strings) - sep = $\ || "\n" - if strings.empty? - output = sep - else - output = strings.map { |s| - next if s.nil? - s =~ /#{sep}$/ ? s : s + sep - }.join - end - out.print(output) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/version.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/version.rb deleted file mode 100644 index b9b1b2d4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/version.rb +++ /dev/null @@ -1,7 +0,0 @@ -module Rake - module Version # :nodoc: all - MAJOR, MINOR, BUILD, *OTHER = Rake::VERSION.split '.' - - NUMBERS = [MAJOR, MINOR, BUILD, *OTHER] - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/rakelib/publish.rake b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/rakelib/publish.rake deleted file mode 100644 index 40474aba..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/rakelib/publish.rake +++ /dev/null @@ -1,20 +0,0 @@ -# Optional publish task for Rake - -begin - require 'rake/contrib/sshpublisher' - require 'rake/contrib/rubyforgepublisher' - - publisher = Rake::SshDirPublisher.new( - 'linode', - 'htdocs/software/rake', - 'html') - - desc "Publish the Documentation to RubyForge." - task :publish => [:rdoc] do - publisher.upload - end - -rescue LoadError => ex - puts "#{ex.message} (#{ex.class})" - puts "No Publisher Task Available" -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/rakelib/test_times.rake b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/rakelib/test_times.rake deleted file mode 100644 index daf1bc6e..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/rakelib/test_times.rake +++ /dev/null @@ -1,25 +0,0 @@ -module TestTimes - def self.run(test_results, limit=0) - limit = limit.nonzero? || 10 - tests = [] - test_results.split(/\n/).each do |line| - if line =~ /^(.+?#[^:]+): ([0-9.]+) s: \.$/ - tests << [$1, $2.to_f, line] - end - end - - puts "#{limit} Slowest tests" - puts tests.sort_by { |item| - item[1] - }.reverse[0...limit].map { |item| - "%6.3f: %-s\n" % [item[1], item[0]] - } - end -end - -namespace :test do - desc "Find the slowest unit tests" - task :times, [:limit] do |t, args| - TestTimes.run `rake test:units TESTOPTS='--verbose'`, args.limit.to_i - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/file_creation.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/file_creation.rb deleted file mode 100644 index facc57a0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/file_creation.rb +++ /dev/null @@ -1,34 +0,0 @@ -module FileCreation - OLDFILE = "old" - NEWFILE = "new" - - def create_timed_files(oldfile, *newfiles) - return if (File.exist?(oldfile) && - newfiles.all? { |newfile| - File.exist?(newfile) && File.stat(newfile).mtime > File.stat(oldfile).mtime - }) - now = Time.now - - create_file(oldfile, now - 60) - - newfiles.each do |newfile| - create_file(newfile, now) - end - end - - def create_dir(dirname) - FileUtils.mkdir_p(dirname) unless File.exist?(dirname) - File.stat(dirname).mtime - end - - def create_file(name, file_time=nil) - create_dir(File.dirname(name)) - FileUtils.touch(name) unless File.exist?(name) - File.utime(file_time, file_time, name) unless file_time.nil? - File.stat(name).mtime - end - - def delete_file(name) - File.delete(name) rescue nil - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/helper.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/helper.rb deleted file mode 100644 index ac1205a6..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/helper.rb +++ /dev/null @@ -1,129 +0,0 @@ -require 'rubygems' -$:.unshift File.expand_path('../../lib', __FILE__) - -begin - gem 'minitest', '~> 5' -rescue Gem::LoadError -end - -require 'minitest/autorun' -require 'rake' -require 'tmpdir' -require File.expand_path('../file_creation', __FILE__) - - -begin - require_relative 'support/ruby_runner' - require_relative 'support/rakefile_definitions' -rescue NoMethodError, LoadError - # ruby 1.8 - require 'test/support/ruby_runner' - require 'test/support/rakefile_definitions' -end - -class Rake::TestCase < Minitest::Test - include FileCreation - - include Rake::DSL - - class TaskManager - include Rake::TaskManager - end - - RUBY = defined?(EnvUtil) ? EnvUtil.rubybin : Gem.ruby - - def setup - ARGV.clear - - test_dir = File.basename File.dirname File.expand_path __FILE__ - - @rake_root = - if test_dir == 'test' - # rake repository - File.expand_path '../../', __FILE__ - else - # ruby repository - File.expand_path '../../../', __FILE__ - end - - @verbose = ENV['VERBOSE'] - - @rake_exec = File.join @rake_root, 'bin', 'rake' - @rake_lib = File.join @rake_root, 'lib' - @ruby_options = ["-I#{@rake_lib}", "-I."] - - @orig_pwd = Dir.pwd - @orig_appdata = ENV['APPDATA'] - @orig_home = ENV['HOME'] - @orig_homedrive = ENV['HOMEDRIVE'] - @orig_homepath = ENV['HOMEPATH'] - @orig_rake_columns = ENV['RAKE_COLUMNS'] - @orig_rake_system = ENV['RAKE_SYSTEM'] - @orig_rakeopt = ENV['RAKEOPT'] - @orig_userprofile = ENV['USERPROFILE'] - ENV.delete 'RAKE_COLUMNS' - ENV.delete 'RAKE_SYSTEM' - ENV.delete 'RAKEOPT' - - tmpdir = Dir.chdir Dir.tmpdir do Dir.pwd end - @tempdir = File.join tmpdir, "test_rake_#{$$}" - - FileUtils.mkdir_p @tempdir - - Dir.chdir @tempdir - - Rake.application = Rake::Application.new - Rake::TaskManager.record_task_metadata = true - RakeFileUtils.verbose_flag = false - end - - def teardown - Dir.chdir @orig_pwd - FileUtils.rm_rf @tempdir - - if @orig_appdata - ENV['APPDATA'] = @orig_appdata - else - ENV.delete 'APPDATA' - end - - ENV['HOME'] = @orig_home - ENV['HOMEDRIVE'] = @orig_homedrive - ENV['HOMEPATH'] = @orig_homepath - ENV['RAKE_COLUMNS'] = @orig_rake_columns - ENV['RAKE_SYSTEM'] = @orig_rake_system - ENV['RAKEOPT'] = @orig_rakeopt - ENV['USERPROFILE'] = @orig_userprofile - end - - def ignore_deprecations - Rake.application.options.ignore_deprecate = true - yield - ensure - Rake.application.options.ignore_deprecate = false - end - - def rake_system_dir - @system_dir = 'system' - - FileUtils.mkdir_p @system_dir - - open File.join(@system_dir, 'sys1.rake'), 'w' do |io| - io << <<-SYS -task "sys1" do - puts "SYS1" -end - SYS - end - - ENV['RAKE_SYSTEM'] = @system_dir - end - - def rakefile(contents) - open 'Rakefile', 'w' do |io| - io << contents - end - end - - include RakefileDefinitions -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/support/rakefile_definitions.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/support/rakefile_definitions.rb deleted file mode 100644 index a637c7e9..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/support/rakefile_definitions.rb +++ /dev/null @@ -1,478 +0,0 @@ -module RakefileDefinitions - include FileUtils - - def rakefile_access - rakefile <<-ACCESS -TOP_LEVEL_CONSTANT = 0 - -def a_top_level_function -end - -task :default => [:work, :obj, :const] - -task :work do - begin - a_top_level_function - puts "GOOD:M Top level methods can be called in tasks" - rescue NameError => ex - puts "BAD:M Top level methods can not be called in tasks" - end -end - -# TODO: remove `disabled_' when DeprecatedObjectDSL removed -task :obj -task :disabled_obj do - begin - Object.new.instance_eval { task :xyzzy } - puts "BAD:D Rake DSL are polluting objects" - rescue StandardError => ex - puts "GOOD:D Rake DSL are not polluting objects" - end -end - -task :const do - begin - TOP_LEVEL_CONSTANT - puts "GOOD:C Top level constants are available in tasks" - rescue StandardError => ex - puts "BAD:C Top level constants are NOT available in tasks" - end -end - ACCESS - end - - def rakefile_test_task - rakefile <<-RAKEFILE - require "rake/testtask" - - Rake::TestTask.new(:unit) do |t| - t.description = "custom test task description" - end - RAKEFILE - end - - def rakefile_chains - rakefile <<-DEFAULT -task :default => "play.app" - -file "play.scpt" => "base" do |t| - cp t.prerequisites.first, t.name -end - -rule ".app" => ".scpt" do |t| - cp t.source, t.name -end - -file 'base' do - touch 'base' -end - DEFAULT - end - - def rakefile_comments - rakefile <<-COMMENTS -# comment for t1 -task :t1 do -end - -# no comment or task because there's a blank line - -task :t2 do -end - -desc "override comment for t3" -# this is not the description -multitask :t3 do -end - -# this is not the description -desc "override comment for t4" -file :t4 do -end - COMMENTS - end - - def rakefile_default - rakefile <<-DEFAULT -if ENV['TESTTOPSCOPE'] - puts "TOPSCOPE" -end - -task :default do - puts "DEFAULT" -end - -task :other => [:default] do - puts "OTHER" -end - -task :task_scope do - if ENV['TESTTASKSCOPE'] - puts "TASKSCOPE" - end -end - DEFAULT - end - - def rakefile_dryrun - rakefile <<-DRYRUN -task :default => ["temp_main"] - -file "temp_main" => [:all_apps] do touch "temp_main" end - -task :all_apps => [:one, :two] -task :one => ["temp_one"] -task :two => ["temp_two"] - -file "temp_one" do |t| - touch "temp_one" -end -file "temp_two" do |t| - touch "temp_two" -end - -task :clean do - ["temp_one", "temp_two", "temp_main"].each do |file| - rm_f file - end -end - DRYRUN - - FileUtils.touch 'temp_main' - FileUtils.touch 'temp_two' - end - - def rakefile_extra - rakefile 'task :default' - - FileUtils.mkdir_p 'rakelib' - - open File.join('rakelib', 'extra.rake'), 'w' do |io| - io << <<-EXTRA_RAKE -# Added for testing - -namespace :extra do - desc "An Extra Task" - task :extra do - puts "Read all about it" - end -end - EXTRA_RAKE - end - end - - def rakefile_file_creation - rakefile <<-'FILE_CREATION' -N = 2 - -task :default => :run - -BUILD_DIR = 'build' -task :clean do - rm_rf 'build' - rm_rf 'src' -end - -task :run - -TARGET_DIR = 'build/copies' - -FileList['src/*'].each do |src| - directory TARGET_DIR - target = File.join TARGET_DIR, File.basename(src) - file target => [src, TARGET_DIR] do - cp src, target - end - task :run => target -end - -task :prep => :clean do - mkdir_p 'src' - N.times do |n| - touch "src/foo#{n}" - end -end - FILE_CREATION - end - - def rakefile_imports - rakefile <<-IMPORTS -require 'rake/loaders/makefile' - -task :default - -task :other do - puts "OTHER" -end - -file "dynamic_deps" do |t| - open(t.name, "w") do |f| f.puts "puts 'DYNAMIC'" end -end - -import "dynamic_deps" -import "static_deps" -import "static_deps" -import "deps.mf" -puts "FIRST" - IMPORTS - - open 'deps.mf', 'w' do |io| - io << <<-DEPS -default: other - DEPS - end - - open "static_deps", "w" do |f| - f.puts 'puts "STATIC"' - end - end - - def rakefile_regenerate_imports - rakefile <<-REGENERATE_IMPORTS -task :default - -task :regenerate do - open("deps", "w") do |f| - f << <<-CONTENT -file "deps" => :regenerate -puts "REGENERATED" - CONTENT - end -end - -import "deps" - REGENERATE_IMPORTS - - open "deps", "w" do |f| - f << <<-CONTENT -file "deps" => :regenerate -puts "INITIAL" - CONTENT - end - end - - def rakefile_multidesc - rakefile <<-MULTIDESC -task :b - -desc "A" -task :a - -desc "B" -task :b - -desc "A2" -task :a - -task :c - -desc "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -task :d - MULTIDESC - end - - def rakefile_namespace - rakefile <<-NAMESPACE -desc "copy" -task :copy do - puts "COPY" -end - -namespace "nest" do - desc "nest copy" - task :copy do - puts "NEST COPY" - end - task :xx => :copy -end - -anon_ns = namespace do - desc "anonymous copy task" - task :copy do - puts "ANON COPY" - end -end - -desc "Top level task to run the anonymous version of copy" -task :anon => anon_ns[:copy] - -namespace "very" do - namespace "nested" do - task "run" => "rake:copy" - end -end - -namespace "a" do - desc "Run task in the 'a' namespace" - task "run" do - puts "IN A" - end -end - -namespace "b" do - desc "Run task in the 'b' namespace" - task "run" => "a:run" do - puts "IN B" - end -end - -namespace "file1" do - file "xyz.rb" do - puts "XYZ1" - end -end - -namespace "file2" do - file "xyz.rb" do - puts "XYZ2" - end -end - -namespace "scopedep" do - task :prepare do - touch "scopedep.rb" - puts "PREPARE" - end - file "scopedep.rb" => [:prepare] do - puts "SCOPEDEP" - end -end - NAMESPACE - end - - def rakefile_nosearch - FileUtils.touch 'dummy' - end - - def rakefile_rakelib - FileUtils.mkdir_p 'rakelib' - - Dir.chdir 'rakelib' do - open 'test1.rb', 'w' do |io| - io << <<-TEST1 -task :default do - puts "TEST1" -end - TEST1 - end - - open 'test2.rake', 'w' do |io| - io << <<-TEST1 -task :default do - puts "TEST2" -end - TEST1 - end - end - end - - def rakefile_rbext - open 'rakefile.rb', 'w' do |io| - io << 'task :default do puts "OK" end' - end - end - - def rakefile_unittest - rakefile '# Empty Rakefile for Unit Test' - - readme = File.join 'subdir', 'README' - FileUtils.mkdir_p File.dirname readme - - FileUtils.touch readme - end - - def rakefile_verbose - rakefile <<-VERBOSE -task :standalone_verbose_true do - verbose true - sh "#{RUBY} -e '0'" -end - -task :standalone_verbose_false do - verbose false - sh "#{RUBY} -e '0'" -end - -task :inline_verbose_default do - sh "#{RUBY} -e '0'" -end - -task :inline_verbose_false do - sh "#{RUBY} -e '0'", :verbose => false -end - -task :inline_verbose_true do - sh "#{RUBY} -e '0'", :verbose => true -end - -task :block_verbose_true do - verbose(true) do - sh "#{RUBY} -e '0'" - end -end - -task :block_verbose_false do - verbose(false) do - sh "#{RUBY} -e '0'" - end -end - VERBOSE - end - - def rakefile_test_signal - rakefile <<-TEST_SIGNAL -require 'rake/testtask' - -Rake::TestTask.new(:a) do |t| - t.test_files = ['a_test.rb'] -end - -Rake::TestTask.new(:b) do |t| - t.test_files = ['b_test.rb'] -end - -task :test do - Rake::Task[:a].invoke - Rake::Task[:b].invoke -end - -task :default => :test - TEST_SIGNAL - open 'a_test.rb', 'w' do |io| - io << 'puts "ATEST"' << "\n" - io << '$stdout.flush' << "\n" - io << 'Process.kill("TERM", $$)' << "\n" - end - open 'b_test.rb', 'w' do |io| - io << 'puts "BTEST"' << "\n" - io << '$stdout.flush' << "\n" - end - end - - def rakefile_failing_test_task - rakefile <<-TEST_TASK -require 'rake/testtask' - -task :default => :test -Rake::TestTask.new(:test) do |t| - t.test_files = ['a_test.rb'] -end - TEST_TASK - open 'a_test.rb', 'w' do |io| - io << "require 'minitest/autorun'\n" - io << "class ExitTaskTest < Minitest::Test\n" - io << " def test_exit\n" - io << " assert false, 'this should fail'\n" - io << " end\n" - io << "end\n" - end - end - - def rakefile_stand_alone_filelist - open 'stand_alone_filelist.rb', 'w' do |io| - io << "require 'rake/file_list'\n" - io << "FL = Rake::FileList['*.rb']\n" - io << "puts FL\n" - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/support/ruby_runner.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/support/ruby_runner.rb deleted file mode 100644 index d51dd24b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/support/ruby_runner.rb +++ /dev/null @@ -1,34 +0,0 @@ -module RubyRunner - include FileUtils - - # Run a shell Ruby command with command line options (using the - # default test options). Output is captured in @out and @err - def ruby(*option_list) - run_ruby(@ruby_options + option_list) - end - - # Run a command line rake with the give rake options. Default - # command line ruby options are included. Output is captured in - # @out and @err - def rake(*rake_options) - run_ruby @ruby_options + [@rake_exec] + rake_options - end - - # Low level ruby command runner ... - def run_ruby(option_list) - puts "COMMAND: [#{RUBY} #{option_list.join ' '}]" if @verbose - - Open3.popen3(RUBY, *option_list) {|inn, out, err, wait| - inn.close - - @exit = wait ? wait.value : $? - @out = out.read - @err = err.read - } - - puts "OUTPUT: [#{@out}]" if @verbose - puts "ERROR: [#{@err}]" if @verbose - puts "EXIT: [#{@exit.inspect}]" if @verbose - puts "PWD: [#{Dir.pwd}]" if @verbose - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_private_reader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_private_reader.rb deleted file mode 100644 index f86d4249..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_private_reader.rb +++ /dev/null @@ -1,42 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/private_reader' - -class TestPrivateAttrs < Rake::TestCase - - class Sample - include Rake::PrivateReader - - private_reader :reader, :a - - def initialize - @reader = :RVALUE - end - - def get_reader - reader - end - - end - - def setup - super - @sample = Sample.new - end - - def test_private_reader_is_private - assert_private do @sample.reader end - assert_private do @sample.a end - end - - def test_private_reader_returns_data - assert_equal :RVALUE, @sample.get_reader - end - - private - - def assert_private - ex = assert_raises(NoMethodError) do yield end - assert_match(/private/, ex.message) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake.rb deleted file mode 100644 index b2a3928b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake.rb +++ /dev/null @@ -1,40 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRake < Rake::TestCase - def test_each_dir_parent - assert_equal ['a'], alldirs('a') - assert_equal ['a/b', 'a'], alldirs('a/b') - assert_equal ['/a/b', '/a', '/'], alldirs('/a/b') - if File.dirname("c:/foo") == "c:" - # Under Unix - assert_equal ['c:/a/b', 'c:/a', 'c:'], alldirs('c:/a/b') - assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b') - else - # Under Windows - assert_equal ['c:/a/b', 'c:/a', 'c:/'], alldirs('c:/a/b') - assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b') - end - end - - def alldirs(fn) - result = [] - Rake.each_dir_parent(fn) { |d| result << d } - result - end - - def test_can_override_application - old_app = Rake.application - fake_app = Object.new - Rake.application = fake_app - - assert_equal fake_app, Rake.application - - ensure - Rake.application = old_app - end - - def test_original_dir_reports_current_dir - assert_equal @tempdir, Rake.original_dir - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_application.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_application.rb deleted file mode 100644 index c0108891..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_application.rb +++ /dev/null @@ -1,643 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeApplication < Rake::TestCase - - def setup - super - - @app = Rake.application - @app.options.rakelib = [] - end - - def setup_command_line(*options) - ARGV.clear - options.each do |option| - ARGV << option - end - end - - def test_display_exception_details - obj = Object.new - obj.instance_eval("def #{__method__}; raise 'test'; end", "ruby") - begin - obj.__send__(__method__) - rescue => ex - end - - out, err = capture_io do - @app.display_error_message ex - end - - assert_empty out - - assert_match 'rake aborted!', err - assert_match __method__.to_s, err - end - - def test_display_exception_details_cause - skip 'Exception#cause not implemented' unless - Exception.method_defined? :cause - - begin - raise 'cause a' - rescue - begin - raise 'cause b' - rescue => ex - end - end - - out, err = capture_io do - @app.display_error_message ex - end - - assert_empty out - - assert_match 'cause a', err - assert_match 'cause b', err - end - - def test_display_exception_details_cause_loop - skip 'Exception#cause not implemented' unless - Exception.method_defined? :cause - - begin - begin - raise 'cause a' - rescue => a - begin - raise 'cause b' - rescue - raise a - end - end - rescue => ex - end - - out, err = capture_io do - @app.display_error_message ex - end - - assert_empty out - - assert_match 'cause a', err - assert_match 'cause b', err - end - - def test_display_tasks - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# COMMENT/, out) - end - - def test_display_tasks_with_long_comments - @app.terminal_columns = 80 - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - numbers = "1234567890" * 8 - @app.last_description = numbers - @app.define_task(Rake::Task, "t") - - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - - assert_match(/^rake t/, out) - assert_match(/# #{numbers[0, 65]}\.\.\./, out) - end - - def test_display_tasks_with_task_name_wider_than_tty_display - @app.terminal_columns = 80 - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - task_name = "task name" * 80 - @app.last_description = "something short" - @app.define_task(Rake::Task, task_name) - - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - - # Ensure the entire task name is output and we end up showing no description - assert_match(/rake #{task_name} # .../, out) - end - - def test_display_tasks_with_very_long_task_name_to_a_non_tty_shows_name_and_comment - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - @app.tty_output = false - description = "something short" - task_name = "task name" * 80 - @app.last_description = "something short" - @app.define_task(Rake::Task, task_name) - - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - - # Ensure the entire task name is output and we end up showing no description - assert_match(/rake #{task_name} # #{description}/, out) - end - - def test_display_tasks_with_long_comments_to_a_non_tty_shows_entire_comment - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - @app.tty_output = false - @app.last_description = "1234567890" * 8 - @app.define_task(Rake::Task, "t") - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# #{@app.last_description}/, out) - end - - def test_truncating_comments_to_a_non_tty - @app.terminal_columns = 80 - @app.options.show_tasks = :tasks - @app.options.show_task_pattern = // - @app.tty_output = false - numbers = "1234567890" * 8 - @app.last_description = numbers - @app.define_task(Rake::Task, "t") - - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - - assert_match(/^rake t/, out) - assert_match(/# #{numbers[0, 65]}\.\.\./, out) - end - - def test_describe_tasks - @app.options.show_tasks = :describe - @app.options.show_task_pattern = // - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t$/, out) - assert_match(/^ {4}COMMENT$/, out) - end - - def test_show_lines - @app.options.show_tasks = :lines - @app.options.show_task_pattern = // - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - @app['t'].locations << "HERE:1" - out, = capture_io do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t +[^:]+:\d+ *$/, out) - end - - def test_finding_rakefile - rakefile_default - - assert_match(/Rakefile/i, @app.instance_eval { have_rakefile }) - end - - def test_not_finding_rakefile - @app.instance_eval { @rakefiles = ['NEVER_FOUND'] } - assert(! @app.instance_eval do have_rakefile end) - assert_nil @app.rakefile - end - - def test_load_rakefile - rakefile_unittest - - @app.instance_eval do - handle_options - options.silent = true - load_rakefile - end - - assert_equal "rakefile", @app.rakefile.downcase - assert_equal @tempdir, Dir.pwd - end - - def test_load_rakefile_doesnt_print_rakefile_directory_from_same_dir - rakefile_unittest - - _, err = capture_io do - @app.instance_eval do - # pretend we started from the unittest dir - @original_dir = File.expand_path(".") - raw_load_rakefile - end - end - - assert_empty err - end - - def test_load_rakefile_from_subdir - rakefile_unittest - Dir.chdir 'subdir' - - @app.instance_eval do - handle_options - options.silent = true - load_rakefile - end - - assert_equal "rakefile", @app.rakefile.downcase - assert_equal @tempdir, Dir.pwd - end - - def test_load_rakefile_prints_rakefile_directory_from_subdir - rakefile_unittest - Dir.chdir 'subdir' - - app = Rake::Application.new - app.options.rakelib = [] - - _, err = capture_io do - app.instance_eval do - raw_load_rakefile - end - end - - assert_equal "(in #{@tempdir}\)\n", err - end - - def test_load_rakefile_doesnt_print_rakefile_directory_from_subdir_if_silent - rakefile_unittest - Dir.chdir 'subdir' - - _, err = capture_io do - @app.instance_eval do - handle_options - options.silent = true - raw_load_rakefile - end - end - - assert_empty err - end - - def test_load_rakefile_not_found - ARGV.clear - Dir.chdir @tempdir - ENV['RAKE_SYSTEM'] = 'not_exist' - - @app.instance_eval do - handle_options - options.silent = true - end - - - ex = assert_raises(RuntimeError) do - @app.instance_eval do - raw_load_rakefile - end - end - - assert_match(/no rakefile found/i, ex.message) - end - - def test_load_from_system_rakefile - rake_system_dir - - @app.instance_eval do - handle_options - options.silent = true - options.load_system = true - options.rakelib = [] - load_rakefile - end - - assert_equal @system_dir, @app.system_dir - assert_nil @app.rakefile - rescue SystemExit - flunk 'failed to load rakefile' - end - - def test_load_from_calculated_system_rakefile - rakefile_default - def @app.standard_system_dir - "__STD_SYS_DIR__" - end - - ENV['RAKE_SYSTEM'] = nil - - @app.instance_eval do - handle_options - options.silent = true - options.load_system = true - options.rakelib = [] - load_rakefile - end - - assert_equal "__STD_SYS_DIR__", @app.system_dir - rescue SystemExit - flunk 'failed to find system rakefile' - end - - def test_terminal_columns - old_rake_columns = ENV['RAKE_COLUMNS'] - - ENV['RAKE_COLUMNS'] = '42' - - app = Rake::Application.new - - assert_equal 42, app.terminal_columns - ensure - if old_rake_columns - ENV['RAKE_COLUMNS'].delete - else - ENV['RAKE_COLUMNS'] = old_rake_columns - end - end - - def test_windows - assert ! (@app.windows? && @app.unix?) - end - - def test_loading_imports - loader = util_loader - - @app.instance_eval do - add_loader("dummy", loader) - add_import("x.dummy") - load_imports - end - - # HACK no assertions - end - - def test_building_imported_files_on_demand - loader = util_loader - - @app.instance_eval do - intern(Rake::Task, "x.dummy").enhance do loader.make_dummy end - add_loader("dummy", loader) - add_import("x.dummy") - load_imports - end - - # HACK no assertions - end - - def test_handle_options_should_not_strip_options_from_argv - assert !@app.options.trace - - valid_option = '--trace' - setup_command_line(valid_option) - - @app.handle_options - - assert ARGV.include?(valid_option) - assert @app.options.trace - end - - def test_handle_options_trace_default_is_stderr - setup_command_line("--trace") - - @app.handle_options - - assert_equal STDERR, @app.options.trace_output - assert @app.options.trace - end - - def test_handle_options_trace_overrides_to_stdout - setup_command_line("--trace=stdout") - - @app.handle_options - - assert_equal STDOUT, @app.options.trace_output - assert @app.options.trace - end - - def test_handle_options_trace_does_not_eat_following_task_names - assert !@app.options.trace - - setup_command_line("--trace", "sometask") - - @app.handle_options - assert ARGV.include?("sometask") - assert @app.options.trace - end - - def test_good_run - ran = false - - ARGV << '--rakelib=""' - - @app.options.silent = true - - @app.instance_eval do - intern(Rake::Task, "default").enhance { ran = true } - end - - rakefile_default - - out, err = capture_io do - @app.run - end - - assert ran - assert_empty err - assert_equal "DEFAULT\n", out - end - - def test_display_task_run - ran = false - setup_command_line('-f', '-s', '--tasks', '--rakelib=""') - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "default") - out, = capture_io { @app.run } - assert @app.options.show_tasks - assert ! ran - assert_match(/rake default/, out) - assert_match(/# COMMENT/, out) - end - - def test_display_prereqs - ran = false - setup_command_line('-f', '-s', '--prereqs', '--rakelib=""') - @app.last_description = "COMMENT" - t = @app.define_task(Rake::Task, "default") - t.enhance([:a, :b]) - @app.define_task(Rake::Task, "a") - @app.define_task(Rake::Task, "b") - out, = capture_io { @app.run } - assert @app.options.show_prereqs - assert ! ran - assert_match(/rake a$/, out) - assert_match(/rake b$/, out) - assert_match(/rake default\n( *(a|b)\n){2}/m, out) - end - - def test_bad_run - @app.intern(Rake::Task, "default").enhance { fail } - setup_command_line('-f', '-s', '--rakelib=""') - _, err = capture_io { - assert_raises(SystemExit){ @app.run } - } - assert_match(/see full trace/i, err) - ensure - ARGV.clear - end - - def test_bad_run_with_trace - @app.intern(Rake::Task, "default").enhance { fail } - setup_command_line('-f', '-s', '-t') - _, err = capture_io { - assert_raises(SystemExit) { @app.run } - } - refute_match(/see full trace/i, err) - ensure - ARGV.clear - end - - def test_bad_run_with_backtrace - @app.intern(Rake::Task, "default").enhance { fail } - setup_command_line('-f', '-s', '--backtrace') - _, err = capture_io { - assert_raises(SystemExit) { - @app.run - } - } - refute_match(/see full trace/, err) - ensure - ARGV.clear - end - - CustomError = Class.new(RuntimeError) - - def test_bad_run_includes_exception_name - @app.intern(Rake::Task, "default").enhance { - raise CustomError, "intentional" - } - setup_command_line('-f', '-s') - _, err = capture_io { - assert_raises(SystemExit) { - @app.run - } - } - assert_match(/CustomError: intentional/, err) - end - - def test_rake_error_excludes_exception_name - @app.intern(Rake::Task, "default").enhance { - fail "intentional" - } - setup_command_line('-f', '-s') - _, err = capture_io { - assert_raises(SystemExit) { - @app.run - } - } - refute_match(/RuntimeError/, err) - assert_match(/intentional/, err) - end - - def cause_supported? - ex = StandardError.new - ex.respond_to?(:cause) - end - - def test_printing_original_exception_cause - custom_error = Class.new(StandardError) - @app.intern(Rake::Task, "default").enhance { - begin - raise custom_error, "Original Error" - rescue custom_error - raise custom_error, "Secondary Error" - end - } - setup_command_line('-f', '-s') - _ ,err = capture_io { - assert_raises(SystemExit) { - @app.run - } - } - if cause_supported? - assert_match(/Original Error/, err) - end - assert_match(/Secondary Error/, err) - ensure - ARGV.clear - end - - def test_run_with_bad_options - @app.intern(Rake::Task, "default").enhance { fail } - setup_command_line('-f', '-s', '--xyzzy') - assert_raises(SystemExit) { - capture_io { @app.run } - } - ensure - ARGV.clear - end - - def test_standard_exception_handling_invalid_option - out, err = capture_io do - e = assert_raises SystemExit do - @app.standard_exception_handling do - raise OptionParser::InvalidOption, 'blah' - end - end - - assert_equal 1, e.status - end - - assert_empty out - assert_equal "invalid option: blah\n", err - end - - def test_standard_exception_handling_other - out, err = capture_io do - e = assert_raises SystemExit do - @app.standard_exception_handling do - raise 'blah' - end - end - - assert_equal 1, e.status - end - - assert_empty out - assert_match "rake aborted!\n", err - assert_match "blah\n", err - end - - def test_standard_exception_handling_system_exit - out, err = capture_io do - e = assert_raises SystemExit do - @app.standard_exception_handling do - exit 0 - end - end - - assert_equal 0, e.status - end - - assert_empty out - assert_empty err - end - - def test_standard_exception_handling_system_exit_nonzero - out, err = capture_io do - e = assert_raises SystemExit do - @app.standard_exception_handling do - exit 5 - end - end - - assert_equal 5, e.status - end - - assert_empty out - assert_empty err - end - - def util_loader - loader = Object.new - - loader.instance_variable_set :@load_called, false - def loader.load arg - raise ArgumentError, arg unless arg == 'x.dummy' - @load_called = true - end - - loader.instance_variable_set :@make_dummy_called, false - def loader.make_dummy - @make_dummy_called = true - end - - loader - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_application_options.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_application_options.rb deleted file mode 100644 index 25030268..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_application_options.rb +++ /dev/null @@ -1,468 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -TESTING_REQUIRE = [] - -class TestRakeApplicationOptions < Rake::TestCase - - def setup - super - - @testkey = ENV['TESTKEY'] - clear_argv - Rake::FileUtilsExt.verbose_flag = false - Rake::FileUtilsExt.nowrite_flag = false - TESTING_REQUIRE.clear - end - - def teardown - ENV['TESTKEY'] = @testkey - clear_argv - Rake::FileUtilsExt.verbose_flag = false - Rake::FileUtilsExt.nowrite_flag = false - - super - end - - def clear_argv - ARGV.pop until ARGV.empty? - end - - def test_default_options - opts = command_line - assert_nil opts.backtrace - assert_nil opts.dryrun - assert_nil opts.ignore_system - assert_nil opts.load_system - assert_nil opts.always_multitask - assert_nil opts.nosearch - assert_equal ['rakelib'], opts.rakelib - assert_nil opts.show_prereqs - assert_nil opts.show_task_pattern - assert_nil opts.show_tasks - assert_nil opts.silent - assert_nil opts.trace - assert_nil opts.thread_pool_size - assert_equal ['rakelib'], opts.rakelib - assert ! Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - - def test_dry_run - flags('--dry-run', '-n') do |opts| - assert opts.dryrun - assert opts.trace - assert Rake::FileUtilsExt.verbose_flag - assert Rake::FileUtilsExt.nowrite_flag - end - end - - def test_describe - flags('--describe') do |opts| - assert_equal :describe, opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - end - end - - def test_describe_with_pattern - flags('--describe=X') do |opts| - assert_equal :describe, opts.show_tasks - assert_equal(/X/.to_s, opts.show_task_pattern.to_s) - end - end - - def test_execute - $xyzzy = 0 - flags('--execute=$xyzzy=1', '-e $xyzzy=1') do |opts| - assert_equal 1, $xyzzy - assert_equal :exit, @exit - $xyzzy = 0 - end - end - - def test_execute_and_continue - $xyzzy = 0 - flags('--execute-continue=$xyzzy=1', '-E $xyzzy=1') do |opts| - assert_equal 1, $xyzzy - refute_equal :exit, @exit - $xyzzy = 0 - end - end - - def test_execute_and_print - $xyzzy = 0 - out, = capture_io do - flags('--execute-print=$xyzzy="pugh"', '-p $xyzzy="pugh"') do |opts| - assert_equal 'pugh', $xyzzy - assert_equal :exit, @exit - $xyzzy = 0 - end - end - - assert_match(/^pugh$/, out) - end - - def test_help - out, = capture_io do - flags '--help', '-H', '-h' - end - - assert_match(/\Arake/, out) - assert_match(/\boptions\b/, out) - assert_match(/\btargets\b/, out) - assert_equal :exit, @exit - end - - def test_jobs - flags([]) do |opts| - assert_nil opts.thread_pool_size - end - flags(['--jobs', '0'], ['-j', '0']) do |opts| - assert_equal 0, opts.thread_pool_size - end - flags(['--jobs', '1'], ['-j', '1']) do |opts| - assert_equal 0, opts.thread_pool_size - end - flags(['--jobs', '4'], ['-j', '4']) do |opts| - assert_equal 3, opts.thread_pool_size - end - flags(['--jobs', 'asdas'], ['-j', 'asdas']) do |opts| - assert_equal Rake.suggested_thread_count-1, opts.thread_pool_size - end - flags('--jobs', '-j') do |opts| - assert opts.thread_pool_size > 1_000_000, "thread pool size should be huge (was #{opts.thread_pool_size})" - end - end - - def test_libdir - flags(['--libdir', 'xx'], ['-I', 'xx'], ['-Ixx']) do |opts| - $:.include?('xx') - end - ensure - $:.delete('xx') - end - - def test_multitask - flags('--multitask', '-m') do |opts| - assert_equal opts.always_multitask, true - end - end - - def test_rakefile - flags(['--rakefile', 'RF'], ['--rakefile=RF'], ['-f', 'RF'], ['-fRF']) do |opts| - assert_equal ['RF'], @app.instance_eval { @rakefiles } - end - end - - def test_rakelib - dirs = %w(A B C).join(File::PATH_SEPARATOR) - flags( - ['--rakelibdir', dirs], - ["--rakelibdir=#{dirs}"], - ['-R', dirs], - ["-R#{dirs}"]) do |opts| - assert_equal ['A', 'B', 'C'], opts.rakelib - end - end - - def test_require - $LOAD_PATH.unshift @tempdir - - open 'reqfile.rb', 'w' do |io| io << 'TESTING_REQUIRE << 1' end - open 'reqfile2.rb', 'w' do |io| io << 'TESTING_REQUIRE << 2' end - open 'reqfile3.rake', 'w' do |io| io << 'TESTING_REQUIRE << 3' end - - flags(['--require', 'reqfile'], '-rreqfile2', '-rreqfile3') - - assert_includes TESTING_REQUIRE, 1 - assert_includes TESTING_REQUIRE, 2 - assert_includes TESTING_REQUIRE, 3 - - assert_equal 3, TESTING_REQUIRE.size - ensure - $LOAD_PATH.delete @tempdir - end - - def test_missing_require - ex = assert_raises(LoadError) do - flags(['--require', 'test/missing']) do |opts| - end - end - assert_match(/such file/, ex.message) - assert_match(/test\/missing/, ex.message) - end - - def test_prereqs - flags('--prereqs', '-P') do |opts| - assert opts.show_prereqs - end - end - - def test_quiet - Rake::FileUtilsExt.verbose_flag = true - flags('--quiet', '-q') do |opts| - assert ! Rake::FileUtilsExt.verbose_flag, "verbose flag should be false" - assert ! opts.silent, "should not be silent" - end - end - - def test_no_search - flags('--nosearch', '--no-search', '-N') do |opts| - assert opts.nosearch - end - end - - def test_silent - Rake::FileUtilsExt.verbose_flag = true - flags('--silent', '-s') do |opts| - assert ! Rake::FileUtilsExt.verbose_flag, "verbose flag should be false" - assert opts.silent, "should be silent" - end - end - - def test_system - flags('--system', '-g') do |opts| - assert opts.load_system - end - end - - def test_no_system - flags('--no-system', '-G') do |opts| - assert opts.ignore_system - end - end - - def test_trace - flags('--trace', '-t') do |opts| - assert opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stderr, opts.trace_output - assert Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - end - - def test_trace_with_stdout - flags('--trace=stdout', '-tstdout') do |opts| - assert opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stdout, opts.trace_output - assert Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - end - - def test_trace_with_stderr - flags('--trace=stderr', '-tstderr') do |opts| - assert opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stderr, opts.trace_output - assert Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - end - - def test_trace_with_error - ex = assert_raises(Rake::CommandLineOptionError) do - flags('--trace=xyzzy') do |opts| end - end - assert_match(/un(known|recognized).*\btrace\b.*xyzzy/i, ex.message) - end - - def test_trace_with_following_task_name - flags(['--trace', 'taskname'], ['-t', 'taskname']) do |opts| - assert opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stderr, opts.trace_output - assert Rake::FileUtilsExt.verbose_flag - assert_equal ['taskname'], @app.top_level_tasks - end - end - - def test_backtrace - flags('--backtrace') do |opts| - assert opts.backtrace, "should enable backtrace option" - assert_equal $stderr, opts.trace_output - assert ! opts.trace, "should not enable trace option" - end - end - - def test_backtrace_with_stdout - flags('--backtrace=stdout') do |opts| - assert opts.backtrace, "should enable backtrace option" - assert_equal $stdout, opts.trace_output - assert ! opts.trace, "should not enable trace option" - end - end - - def test_backtrace_with_stderr - flags('--backtrace=stderr') do |opts| - assert opts.backtrace, "should enable backtrace option" - assert_equal $stderr, opts.trace_output - assert ! opts.trace, "should not enable trace option" - end - end - - def test_backtrace_with_error - ex = assert_raises(Rake::CommandLineOptionError) do - flags('--backtrace=xyzzy') do |opts| end - end - assert_match(/un(known|recognized).*\bbacktrace\b.*xyzzy/i, ex.message) - end - - def test_backtrace_with_following_task_name - flags(['--backtrace', 'taskname']) do |opts| - assert ! opts.trace, "should enable trace option" - assert opts.backtrace, "should enabled backtrace option" - assert_equal $stderr, opts.trace_output - assert_equal ['taskname'], @app.top_level_tasks - end - end - - def test_trace_rules - flags('--rules') do |opts| - assert opts.trace_rules - end - end - - def test_tasks - flags('--tasks', '-T') do |opts| - assert_equal :tasks, opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - assert_equal nil, opts.show_all_tasks - end - flags(['--tasks', 'xyz'], ['-Txyz']) do |opts| - assert_equal :tasks, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal nil, opts.show_all_tasks - end - flags(['--tasks', 'xyz', '--comments']) do |opts| - assert_equal :tasks, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal false, opts.show_all_tasks - end - end - - def test_where - flags('--where', '-W') do |opts| - assert_equal :lines, opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - assert_equal true, opts.show_all_tasks - end - flags(['--where', 'xyz'], ['-Wxyz']) do |opts| - assert_equal :lines, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal true, opts.show_all_tasks - end - flags(['--where', 'xyz', '--comments'], ['-Wxyz', '--comments']) do |opts| - assert_equal :lines, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal false, opts.show_all_tasks - end - end - - def test_no_deprecated_messages - flags('--no-deprecation-warnings', '-X') do |opts| - assert opts.ignore_deprecate - end - end - - def test_verbose - capture_io do - flags('--verbose', '-v') do |opts| - assert Rake::FileUtilsExt.verbose_flag, "verbose should be true" - assert ! opts.silent, "opts should not be silent" - end - end - end - - def test_version - out, _ = capture_io do - flags '--version', '-V' - end - - assert_match(/\bversion\b/, out) - assert_match(/\b#{RAKEVERSION}\b/, out) - assert_equal :exit, @exit - end - - def test_bad_option - _, err = capture_io do - ex = assert_raises(OptionParser::InvalidOption) do - flags('--bad-option') - end - - if ex.message =~ /^While/ # Ruby 1.9 error message - assert_match(/while parsing/i, ex.message) - else # Ruby 1.8 error message - assert_match(/(invalid|unrecognized) option/i, ex.message) - assert_match(/--bad-option/, ex.message) - end - end - - assert_equal '', err - end - - def test_task_collection - command_line("a", "b") - assert_equal ["a", "b"], @tasks.sort - end - - def test_default_task_collection - command_line() - assert_equal ["default"], @tasks - end - - def test_environment_definition - ENV.delete('TESTKEY') - command_line("TESTKEY=12") - assert_equal '12', ENV['TESTKEY'] - end - - def test_multiline_environment_definition - ENV.delete('TESTKEY') - command_line("TESTKEY=a\nb\n") - assert_equal "a\nb\n", ENV['TESTKEY'] - end - - def test_environment_and_tasks_together - ENV.delete('TESTKEY') - command_line("a", "b", "TESTKEY=12") - assert_equal ["a", "b"], @tasks.sort - assert_equal '12', ENV['TESTKEY'] - end - - def test_rake_explicit_task_library - Rake.add_rakelib 'app/task', 'other' - - libs = Rake.application.options.rakelib - - assert libs.include?("app/task") - assert libs.include?("other") - end - - private - - def flags(*sets) - sets.each do |set| - ARGV.clear - - @exit = catch(:system_exit) { command_line(*set) } - - yield(@app.options) if block_given? - end - end - - def command_line(*options) - options.each do |opt| ARGV << opt end - @app = Rake::Application.new - def @app.exit(*args) - throw :system_exit, :exit - end - @app.instance_eval do - args = handle_options - collect_command_line_tasks(args) - end - @tasks = @app.top_level_tasks - @app.options - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_backtrace.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_backtrace.rb deleted file mode 100644 index 78eaa8d5..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_backtrace.rb +++ /dev/null @@ -1,119 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'open3' - -class TestBacktraceSuppression < Rake::TestCase - def test_bin_rake_suppressed - paths = ["something/bin/rake:12"] - - actual = Rake::Backtrace.collapse(paths) - - assert_equal [], actual - end - - def test_system_dir_suppressed - path = RbConfig::CONFIG['rubylibprefix'] - skip if path.nil? - path = File.expand_path path - - paths = [path + ":12"] - - actual = Rake::Backtrace.collapse(paths) - - assert_equal [], actual - end - - def test_near_system_dir_isnt_suppressed - path = RbConfig::CONFIG['rubylibprefix'] - skip if path.nil? - path = File.expand_path path - - paths = [" " + path + ":12"] - - actual = Rake::Backtrace.collapse(paths) - - assert_equal paths, actual - end -end - -class TestRakeBacktrace < Rake::TestCase - include RubyRunner - - def setup - super - - skip 'tmpdir is suppressed in backtrace' if - Rake::Backtrace::SUPPRESS_PATTERN =~ Dir.pwd - end - - def invoke(*args) - rake(*args) - @err - end - - def test_single_collapse - rakefile %q{ - task :foo do - raise "foooo!" - end - } - - lines = invoke("foo").split("\n") - - assert_equal "rake aborted!", lines[0] - assert_equal "foooo!", lines[1] - assert_something_matches %r!\A#{Regexp.quote Dir.pwd}/Rakefile:3!i, lines - assert_something_matches %r!\ATasks:!, lines - end - - def test_multi_collapse - rakefile %q{ - task :foo do - Rake.application.invoke_task(:bar) - end - task :bar do - raise "barrr!" - end - } - - lines = invoke("foo").split("\n") - - assert_equal "rake aborted!", lines[0] - assert_equal "barrr!", lines[1] - assert_something_matches %r!\A#{Regexp.quote Dir.pwd}/Rakefile:6!i, lines - assert_something_matches %r!\A#{Regexp.quote Dir.pwd}/Rakefile:3!i, lines - assert_something_matches %r!\ATasks:!, lines - end - - def test_suppress_option - rakefile %q{ - task :baz do - raise "bazzz!" - end - } - - lines = invoke("baz").split("\n") - assert_equal "rake aborted!", lines[0] - assert_equal "bazzz!", lines[1] - assert_something_matches %r!Rakefile!i, lines - - lines = invoke("--suppress-backtrace", ".ak.file", "baz").split("\n") - assert_equal "rake aborted!", lines[0] - assert_equal "bazzz!", lines[1] - refute_match %r!Rakefile!i, lines[2] - end - - private - - # Assert that the pattern matches at least one line in +lines+. - def assert_something_matches(pattern, lines) - lines.each do |ln| - if pattern =~ ln - assert_match pattern, ln - return - end - end - flunk "expected #{pattern.inspect} to match something in:\n" + - "#{lines.join("\n ")}" - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_clean.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_clean.rb deleted file mode 100644 index 0bce7bc0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_clean.rb +++ /dev/null @@ -1,61 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/clean' - -class TestRakeClean < Rake::TestCase - def test_clean - load 'rake/clean.rb', true - - assert Rake::Task['clean'], "Should define clean" - assert Rake::Task['clobber'], "Should define clobber" - assert Rake::Task['clobber'].prerequisites.include?("clean"), - "Clobber should require clean" - end - - def test_cleanup - file_name = create_undeletable_file - - out, _ = capture_io do - Rake::Cleaner.cleanup(file_name, :verbose => false) - end - assert_match(/failed to remove/i, out) - - ensure - remove_undeletable_file - end - - def test_cleanup_ignores_missing_files - file_name = File.join(@tempdir, "missing_directory", "no_such_file") - - out, _ = capture_io do - Rake::Cleaner.cleanup(file_name, :verbose => false) - end - refute_match(/failed to remove/i, out) - end - - private - - def create_undeletable_file - dir_name = File.join(@tempdir, "deletedir") - file_name = File.join(dir_name, "deleteme") - FileUtils.mkdir(dir_name) - FileUtils.touch(file_name) - FileUtils.chmod(0, file_name) - FileUtils.chmod(0, dir_name) - begin - FileUtils.chmod(0644, file_name) - rescue - file_name - else - skip "Permission to delete files is different on thie system" - end - end - - def remove_undeletable_file - dir_name = File.join(@tempdir, "deletedir") - file_name = File.join(dir_name, "deleteme") - FileUtils.chmod(0777, dir_name) - FileUtils.chmod(0777, file_name) - Rake::Cleaner.cleanup(file_name, :verbose => false) - Rake::Cleaner.cleanup(dir_name, :verbose => false) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_cpu_counter.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_cpu_counter.rb deleted file mode 100644 index 87d0601c..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_cpu_counter.rb +++ /dev/null @@ -1,68 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeCpuCounter < Rake::TestCase - - def setup - super - - @cpu_counter = Rake::CpuCounter.new - end - - def test_count - num = @cpu_counter.count - skip 'cannot count CPU' if num == nil - assert_kind_of Numeric, num - assert_operator num, :>=, 1 - end - - def test_count_with_default_nil - def @cpu_counter.count; nil; end - assert_equal(8, @cpu_counter.count_with_default(8)) - assert_equal(4, @cpu_counter.count_with_default) - end - - def test_count_with_default_raise - def @cpu_counter.count; raise; end - assert_equal(8, @cpu_counter.count_with_default(8)) - assert_equal(4, @cpu_counter.count_with_default) - end - - class TestClassMethod < Rake::TestCase - def setup - super - - @klass = Class.new(Rake::CpuCounter) - end - - def test_count - @klass.class_eval do - def count; 8; end - end - assert_equal(8, @klass.count) - end - - def test_count_nil - counted = false - @klass.class_eval do - define_method(:count) do - counted = true - nil - end - end - assert_equal(4, @klass.count) - assert_equal(true, counted) - end - - def test_count_raise - counted = false - @klass.class_eval do - define_method(:count) do - counted = true - raise - end - end - assert_equal(4, @klass.count) - assert_equal(true, counted) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_definitions.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_definitions.rb deleted file mode 100644 index ee474cb7..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_definitions.rb +++ /dev/null @@ -1,84 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' - -class TestRakeDefinitions < Rake::TestCase - include Rake - - EXISTINGFILE = "existing" - - def setup - super - - Task.clear - end - - def test_task - done = false - task :one => [:two] do done = true end - task :two - task :three => [:one, :two] - check_tasks(:one, :two, :three) - assert done, "Should be done" - end - - def test_file_task - done = false - file "one" => "two" do done = true end - file "two" - file "three" => ["one", "two"] - check_tasks("one", "two", "three") - assert done, "Should be done" - end - - def check_tasks(n1, n2, n3) - t = Task[n1] - assert Task === t, "Should be a Task" - assert_equal n1.to_s, t.name - assert_equal [n2.to_s], t.prerequisites.map { |n| n.to_s } - t.invoke - t2 = Task[n2] - assert_equal FileList[], t2.prerequisites - t3 = Task[n3] - assert_equal [n1.to_s, n2.to_s], t3.prerequisites.map { |n| n.to_s } - end - - def test_incremental_definitions - runs = [] - task :t1 => [:t2] do runs << "A"; 4321 end - task :t1 => [:t3] do runs << "B"; 1234 end - task :t1 => [:t3] - task :t2 - task :t3 - Task[:t1].invoke - assert_equal ["A", "B"], runs - assert_equal ["t2", "t3"], Task[:t1].prerequisites - end - - def test_missing_dependencies - task :x => ["missing"] - assert_raises(RuntimeError) { Task[:x].invoke } - end - - def test_falsey_dependencies - task :x => nil - assert_equal [], Task[:x].prerequisites - end - - def test_implicit_file_dependencies - runs = [] - create_existing_file - task :y => [EXISTINGFILE] do |t| runs << t.name end - Task[:y].invoke - assert_equal runs, ['y'] - end - - private # ---------------------------------------------------------- - - def create_existing_file - Dir.mkdir File.dirname(EXISTINGFILE) unless - File.exist?(File.dirname(EXISTINGFILE)) - open(EXISTINGFILE, "w") do |f| f.puts "HI" end unless - File.exist?(EXISTINGFILE) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_directory_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_directory_task.rb deleted file mode 100644 index 0014d1c1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_directory_task.rb +++ /dev/null @@ -1,76 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'pathname' - -class TestRakeDirectoryTask < Rake::TestCase - include Rake - - def test_directory - desc "DESC" - - directory "a/b/c" - - assert_equal FileCreationTask, Task["a"].class - assert_equal FileCreationTask, Task["a/b"].class - assert_equal FileCreationTask, Task["a/b/c"].class - - assert_nil Task["a"].comment - assert_nil Task["a/b"].comment - assert_equal "DESC", Task["a/b/c"].comment - - verbose(false) { - Task['a/b'].invoke - } - - assert File.exist?("a/b") - refute File.exist?("a/b/c") - end - - def test_directory_colon - directory "a:b" - - assert_equal FileCreationTask, Task['a:b'].class - end unless Rake::Win32.windows? - - if Rake::Win32.windows? - def test_directory_win32 - desc "WIN32 DESC" - directory 'c:/a/b/c' - assert_equal FileTask, Task['c:'].class - assert_equal FileCreationTask, Task['c:/a'].class - assert_equal FileCreationTask, Task['c:/a/b'].class - assert_equal FileCreationTask, Task['c:/a/b/c'].class - assert_nil Task['c:/'].comment - assert_equal "WIN32 DESC", Task['c:/a/b/c'].comment - assert_nil Task['c:/a/b'].comment - end - end - - def test_can_use_blocks - runlist = [] - - t1 = directory("a/b/c" => :t2) { |t| runlist << t.name } - task(:t2) { |t| runlist << t.name } - - verbose(false) { - t1.invoke - } - - assert_equal Task["a/b/c"], t1 - assert_equal FileCreationTask, Task["a/b/c"].class - assert_equal ["t2", "a/b/c"], runlist - assert File.directory?("a/b/c") - end - - def test_can_use_pathname - directory Pathname.new "a/b/c" - - assert_equal FileCreationTask, Task["a/b/c"].class - - verbose(false) { - Task['a/b/c'].invoke - } - - assert File.directory?("a/b/c") - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_dsl.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_dsl.rb deleted file mode 100644 index ad52f760..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_dsl.rb +++ /dev/null @@ -1,40 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeDsl < Rake::TestCase - - def setup - super - Rake::Task.clear - end - - def test_namespace_command - namespace "n" do - task "t" - end - refute_nil Rake::Task["n:t"] - end - - def test_namespace_command_with_bad_name - ex = assert_raises(ArgumentError) do - namespace 1 do end - end - assert_match(/string/i, ex.message) - assert_match(/symbol/i, ex.message) - end - - def test_namespace_command_with_a_string_like_object - name = Object.new - def name.to_str - "bob" - end - namespace name do - task "t" - end - refute_nil Rake::Task["bob:t"] - end - - def test_no_commands_constant - assert ! defined?(Commands), "should not define Commands" - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_early_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_early_time.rb deleted file mode 100644 index 18c4dad3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_early_time.rb +++ /dev/null @@ -1,31 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeEarlyTime < Rake::TestCase - def test_create - early = Rake::EarlyTime.instance - assert early <= Time.now - assert early < Time.now - assert early != Time.now - assert Time.now > early - assert Time.now >= early - assert Time.now != early - end - - def test_equality - early = Rake::EarlyTime.instance - assert_equal early, early, "two early times should be equal" - end - - def test_original_time_compare_is_not_messed_up - t1 = Time.mktime(1970, 1, 1, 0, 0, 0) - t2 = Time.now - assert t1 < t2 - assert t2 > t1 - assert t1 == t1 - assert t2 == t2 - end - - def test_to_s - assert_equal "", Rake::EARLY.to_s - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_extension.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_extension.rb deleted file mode 100644 index 18d55f19..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_extension.rb +++ /dev/null @@ -1,59 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'stringio' - -class TestRakeExtension < Rake::TestCase - - module Redirect - def error_redirect - old_err = $stderr - result = StringIO.new - $stderr = result - yield - result - ensure - $stderr = old_err - end - end - - class Sample - extend Redirect - - def duplicate_method - :original - end - - OK_ERRS = error_redirect do - rake_extension("a") do - def ok_method - end - end - end - - - DUP_ERRS = error_redirect do - rake_extension("duplicate_method") do - def duplicate_method - :override - end - end - end - end - - def test_methods_actually_exist - sample = Sample.new - sample.ok_method - sample.duplicate_method - end - - def test_no_warning_when_defining_ok_method - assert_equal "", Sample::OK_ERRS.string - end - - def test_extension_complains_when_a_method_that_is_present - assert_match(/warning:/i, Sample::DUP_ERRS.string) - assert_match(/already exists/i, Sample::DUP_ERRS.string) - assert_match(/duplicate_method/i, Sample::DUP_ERRS.string) - assert_equal :original, Sample.new.duplicate_method - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_creation_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_creation_task.rb deleted file mode 100644 index d8dcd965..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_creation_task.rb +++ /dev/null @@ -1,56 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' - -###################################################################### -class TestRakeFileCreationTask < Rake::TestCase - include Rake - include Rake::DSL - - DUMMY_DIR = 'dummy_dir' - - def setup - super - - Task.clear - end - - def test_file_needed - create_dir DUMMY_DIR - fc_task = Task[DUMMY_DIR] - assert_equal DUMMY_DIR, fc_task.name - FileUtils.rm_rf fc_task.name - assert fc_task.needed?, "file should be needed" - FileUtils.mkdir fc_task.name - assert_equal nil, fc_task.prerequisites.map { |n| Task[n].timestamp }.max - assert ! fc_task.needed?, "file should not be needed" - end - - def test_directory - directory DUMMY_DIR - fc_task = Task[DUMMY_DIR] - assert_equal DUMMY_DIR, fc_task.name - assert FileCreationTask === fc_task - end - - def test_no_retriggers_on_filecreate_task - create_timed_files(OLDFILE, NEWFILE) - t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileCreationTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - assert ! t1.needed?, "Should not need to rebuild old file because of new" - end - - def test_no_retriggers_on_file_task - create_timed_files(OLDFILE, NEWFILE) - t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileCreationTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - assert ! t1.needed?, "Should not need to rebuild old file because of new" - end - - def test_very_early_timestamp - t1 = Rake.application.intern(FileCreationTask, OLDFILE) - assert t1.timestamp < Time.now - assert t1.timestamp < Time.now - 1_000_000 - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_list.rb deleted file mode 100644 index 6f4e5674..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_list.rb +++ /dev/null @@ -1,670 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'pathname' - -class TestRakeFileList < Rake::TestCase - FileList = Rake::FileList - - def setup - super - - FileUtils.mkdir "CVS" rescue nil - FileUtils.mkdir ".svn" rescue nil - @cdir = "cfiles" - FileUtils.mkdir @cdir rescue nil - FileUtils.touch ".dummy" - FileUtils.touch "x.bak" - FileUtils.touch "x~" - FileUtils.touch "core" - FileUtils.touch "x.c" - FileUtils.touch "xyz.c" - FileUtils.touch "abc.c" - FileUtils.touch "abc.h" - FileUtils.touch "abc.x" - FileUtils.touch "existing" - - open 'xyzzy.txt', 'w' do |io| - io.puts 'x' - io.puts 'XYZZY' - end - - end - - def test_delegating_methods_do_not_include_to_a_or_to_ary - assert ! FileList::DELEGATING_METHODS.include?("to_a"), "should not include to_a" - assert ! FileList::DELEGATING_METHODS.include?(:to_a), "should not include to_a" - assert ! FileList::DELEGATING_METHODS.include?("to_ary"), "should not include to_ary" - assert ! FileList::DELEGATING_METHODS.include?(:to_ary), "should not include to_ary" - end - - def test_create - fl = FileList.new - assert_equal 0, fl.size - end - - def test_create_with_args - fl = FileList.new("*.c", "x") - assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort, - fl.sort - end - - def test_create_with_pathname - fl = FileList.new(Pathname.new("*.c")) - assert_equal ["abc.c", "x.c", "xyz.c"].sort, - fl.sort - end - - def test_create_with_block - fl = FileList.new { |f| f.include("x") } - assert_equal ["x"], fl.resolve - end - - def test_create_with_brackets - fl = FileList["*.c", "x"] - assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort, - fl.sort - end - - def test_create_with_brackets_and_filelist - fl = FileList[FileList["*.c", "x"]] - assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort, - fl.sort - end - - def test_include_with_another_array - fl = FileList.new.include(["x", "y", "z"]) - assert_equal ["x", "y", "z"].sort, fl.sort - end - - def test_include_with_another_filelist - fl = FileList.new.include(FileList["*.c", "x"]) - assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort, - fl.sort - end - - def test_include_with_pathname - fl = FileList.new.include(Pathname.new("*.c")) - assert_equal ["abc.c", "x.c", "xyz.c"].sort, - fl.sort - end - - def test_append - fl = FileList.new - fl << "a.rb" << "b.rb" - assert_equal ['a.rb', 'b.rb'], fl - end - - def test_append_pathname - fl = FileList.new - fl << Pathname.new("a.rb") - assert_equal ['a.rb'], fl - end - - def test_add_many - fl = FileList.new - fl.include %w(a d c) - fl.include('x', 'y') - assert_equal ['a', 'd', 'c', 'x', 'y'], fl - assert_equal ['a', 'd', 'c', 'x', 'y'], fl.resolve - end - - def test_add_return - f = FileList.new - g = f << "x" - assert_equal f.object_id, g.object_id - h = f.include("y") - assert_equal f.object_id, h.object_id - end - - def test_match - fl = FileList.new - fl.include '*.c' - - assert_equal %w[abc.c x.c xyz.c], fl.sort - end - - def test_add_matching - fl = FileList.new - fl << "a.java" - fl.include '*.c' - - assert_equal %w[a.java abc.c x.c xyz.c], fl.sort - end - - def test_multiple_patterns - fl = FileList.new - fl.include('*.z', '*foo*') - - assert_equal [], fl - - fl.include('*.c', '*xist*') - assert_equal %w[x.c xyz.c abc.c existing].sort, fl.sort - end - - def test_square_bracket_pattern - fl = FileList.new - fl.include("abc.[ch]") - assert fl.size == 2 - assert fl.include?("abc.c") - assert fl.include?("abc.h") - end - - def test_curly_bracket_pattern - fl = FileList.new - fl.include("abc.{c,h}") - assert fl.size == 2 - assert fl.include?("abc.c") - assert fl.include?("abc.h") - end - - def test_reject - fl = FileList.new - fl.include %w(x.c abc.c xyz.c existing) - fl.reject! { |fn| fn =~ /^x/ } - assert_equal %w[abc.c existing], fl - end - - def test_exclude - fl = FileList['x.c', 'abc.c', 'xyz.c', 'existing'] - fl.each { |fn| touch fn, :verbose => false } - - x = fl.exclude(%r{^x.+\.}) - - assert_equal FileList, x.class - assert_equal %w(x.c abc.c existing), fl - assert_equal fl.object_id, x.object_id - - fl.exclude('*.c') - - assert_equal ['existing'], fl - - fl.exclude('existing') - - assert_equal [], fl - end - - def test_exclude_pathname - fl = FileList['x.c', 'abc.c', 'other'] - fl.each { |fn| touch fn, :verbose => false } - - fl.exclude(Pathname.new('*.c')) - - assert_equal ['other'], fl - end - - def test_excluding_via_block - fl = FileList['a.c', 'b.c', 'xyz.c'] - fl.exclude { |fn| fn.pathmap('%n') == 'xyz' } - assert fl.excluded_from_list?("xyz.c"), "Should exclude xyz.c" - assert_equal ['a.c', 'b.c'], fl - end - - def test_exclude_return_on_create - fl = FileList['*'].exclude(/.*\.[hcx]$/) - assert_equal %w[cfiles existing xyzzy.txt], fl.sort - assert_equal FileList, fl.class - end - - def test_exclude_with_string_return_on_create - fl = FileList['*'].exclude('abc.c') - assert_equal %w[abc.h abc.x cfiles existing x.c xyz.c xyzzy.txt], fl.sort - assert_equal FileList, fl.class - end - - def test_default_exclude - fl = FileList.new - fl.clear_exclude - fl.include("**/*~", "**/*.bak", "**/core") - assert fl.member?("core"), "Should include core" - assert fl.member?("x.bak"), "Should include .bak files" - end - - def test_unique - fl = FileList.new - fl << "x.c" << "a.c" << "b.rb" << "a.c" - assert_equal ['x.c', 'a.c', 'b.rb', 'a.c'], fl - fl.uniq! - assert_equal ['x.c', 'a.c', 'b.rb'], fl - end - - def test_to_string - fl = FileList.new - fl << "a.java" << "b.java" - assert_equal "a.java b.java", fl.to_s - assert_equal "a.java b.java", "#{fl}" - end - - def test_to_array - fl = FileList['a.java', 'b.java'] - assert_equal ['a.java', 'b.java'], fl.to_a - assert_equal Array, fl.to_a.class - assert_equal ['a.java', 'b.java'], fl.to_ary - assert_equal Array, fl.to_ary.class - end - - def test_to_s_pending - fl = FileList['abc.*'] - result = fl.to_s - assert_match(%r{abc\.c}, result) - assert_match(%r{abc\.h}, result) - assert_match(%r{abc\.x}, result) - assert_match(%r{(abc\..\b ?){2}}, result) - end - - def test_inspect_pending - fl = FileList['abc.*'] - result = fl.inspect - assert_match(%r{"abc\.c"}, result) - assert_match(%r{"abc\.h"}, result) - assert_match(%r{"abc\.x"}, result) - assert_match(%r|^\[("abc\..", ){2}"abc\.."\]$|, result) - end - - def test_sub - fl = FileList["*.c"] - f2 = fl.sub(/\.c$/, ".o") - assert_equal FileList, f2.class - assert_equal ["abc.o", "x.o", "xyz.o"].sort, - f2.sort - f3 = fl.gsub(/\.c$/, ".o") - assert_equal FileList, f3.class - assert_equal ["abc.o", "x.o", "xyz.o"].sort, - f3.sort - end - - def test_claim_to_be_a_kind_of_array - fl = FileList['*.c'] - assert fl.is_a?(Array) - assert fl.kind_of?(Array) - end - - def test_claim_to_be_a_kind_of_filelist - fl = FileList['*.c'] - assert fl.is_a?(FileList) - assert fl.kind_of?(FileList) - end - - def test_claim_to_be_a_filelist_instance - fl = FileList['*.c'] - assert fl.instance_of?(FileList) - end - - def test_dont_claim_to_be_an_array_instance - fl = FileList['*.c'] - assert ! fl.instance_of?(Array) - end - - def test_sub! - f = "x/a.c" - fl = FileList[f, "x/b.c"] - res = fl.sub!(/\.c$/, ".o") - assert_equal ["x/a.o", "x/b.o"].sort, fl.sort - assert_equal "x/a.c", f - assert_equal fl.object_id, res.object_id - end - - def test_sub_with_block - fl = FileList["src/org/onestepback/a.java", "src/org/onestepback/b.java"] -# The block version doesn't work the way I want it to ... -# f2 = fl.sub(%r{^src/(.*)\.java$}) { |x| "classes/" + $1 + ".class" } - f2 = fl.sub(%r{^src/(.*)\.java$}, "classes/\\1.class") - assert_equal [ - "classes/org/onestepback/a.class", - "classes/org/onestepback/b.class" - ].sort, - f2.sort - end - - def test_string_ext - assert_equal "one.net", "one.two".ext("net") - assert_equal "one.net", "one.two".ext(".net") - assert_equal "one.net", "one".ext("net") - assert_equal "one.net", "one".ext(".net") - assert_equal "one.two.net", "one.two.c".ext(".net") - assert_equal "one/two.net", "one/two.c".ext(".net") - assert_equal "one.x/two.net", "one.x/two.c".ext(".net") - assert_equal "one.x/two.net", "one.x/two".ext(".net") - assert_equal ".onerc.net", ".onerc.dot".ext("net") - assert_equal ".onerc.net", ".onerc".ext("net") - assert_equal ".a/.onerc.net", ".a/.onerc".ext("net") - assert_equal "one", "one.two".ext('') - assert_equal "one", "one.two".ext - assert_equal ".one", ".one.two".ext - assert_equal ".one", ".one".ext - assert_equal ".", ".".ext("c") - assert_equal "..", "..".ext("c") - # These only need to work in windows - if Rake::Win32.windows? - assert_equal "one.x\\two.net", "one.x\\two.c".ext(".net") - assert_equal "one.x\\two.net", "one.x\\two".ext(".net") - end - end - - def test_filelist_ext - assert_equal FileList['one.c', '.one.c'], - FileList['one.net', '.one'].ext('c') - end - - def test_gsub - fl = FileList["*.c"] - f2 = fl.gsub(/a/, "A") - assert_equal ["Abc.c", "x.c", "xyz.c"].sort, - f2.sort - end - - def test_gsub! - f = FileList["*.c"] - f.gsub!(/a/, "A") - assert_equal ["Abc.c", "x.c", "xyz.c"].sort, - f.sort - end - - def test_egrep_returns_0_if_no_matches - files = FileList['test/lib/*_test.rb'].exclude("test/lib/filelist_test.rb") - assert_equal 0, files.egrep(/XYZZY/) { } - end - - def test_egrep_with_output - files = FileList['*.txt'] - - out, = capture_io do - files.egrep(/XYZZY/) - end - - assert_equal "xyzzy.txt:2:XYZZY\n", out - end - - def test_egrep_with_block - files = FileList['*.txt'] - found = nil - - files.egrep(/XYZZY/) do |fn, ln, line| - found = [fn, ln, line] - end - - assert_equal ["xyzzy.txt", 2, "XYZZY\n"], found - end - - def test_egrep_with_error - files = FileList['*.txt'] - - _, err = capture_io do - files.egrep(/XYZZY/) do |fn, ln, line | - raise "_EGREP_FAILURE_" - end - end - - assert_equal "Error while processing 'xyzzy.txt': _EGREP_FAILURE_\n", err - end - - def test_existing - fl = FileList['abc.c', 'notthere.c'] - assert_equal ["abc.c"], fl.existing - assert fl.existing.is_a?(FileList) - end - - def test_existing! - fl = FileList['abc.c', 'notthere.c'] - result = fl.existing! - assert_equal ["abc.c"], fl - assert_equal fl.object_id, result.object_id - end - - def test_ignore_special - f = FileList['*'] - assert ! f.include?("CVS"), "Should not contain CVS" - assert ! f.include?(".svn"), "Should not contain .svn" - assert ! f.include?(".dummy"), "Should not contain dot files" - assert ! f.include?("x.bak"), "Should not contain .bak files" - assert ! f.include?("x~"), "Should not contain ~ files" - assert ! f.include?("core"), "Should not contain core files" - end - - def test_clear_ignore_patterns - f = FileList['*', '.svn'] - f.clear_exclude - assert f.include?("abc.c") - assert f.include?("xyz.c") - assert f.include?("CVS") - assert f.include?(".svn") - assert f.include?("x.bak") - assert f.include?("x~") - end - - def test_exclude_with_alternate_file_seps - fl = FileList.new - assert fl.excluded_from_list?("x/CVS/y") - assert fl.excluded_from_list?("x\\CVS\\y") - assert fl.excluded_from_list?("x/.svn/y") - assert fl.excluded_from_list?("x\\.svn\\y") - assert fl.excluded_from_list?("x/core") - assert fl.excluded_from_list?("x\\core") - end - - def test_add_default_exclude_list - fl = FileList.new - fl.exclude(/~\d+$/) - assert fl.excluded_from_list?("x/CVS/y") - assert fl.excluded_from_list?("x\\CVS\\y") - assert fl.excluded_from_list?("x/.svn/y") - assert fl.excluded_from_list?("x\\.svn\\y") - assert fl.excluded_from_list?("x/core") - assert fl.excluded_from_list?("x\\core") - assert fl.excluded_from_list?("x/abc~1") - end - - def test_basic_array_functions - f = FileList['b', 'c', 'a'] - assert_equal 'b', f.first - assert_equal 'b', f[0] - assert_equal 'a', f.last - assert_equal 'a', f[2] - assert_equal 'a', f[-1] - assert_equal ['a', 'b', 'c'], f.sort - f.sort! - assert_equal ['a', 'b', 'c'], f - end - - def test_flatten - assert_equal ['a', 'x.c', 'xyz.c', 'abc.c'].sort, - ['a', FileList['*.c']].flatten.sort - end - - def test_clone_and_dup - a = FileList['a', 'b', 'c'] - c = a.clone - d = a.dup - a << 'd' - assert_equal ['a', 'b', 'c', 'd'], a - assert_equal ['a', 'b', 'c'], c - assert_equal ['a', 'b', 'c'], d - end - - def test_dup_and_clone_replicate_taint - a = FileList['a', 'b', 'c'] - a.taint - c = a.clone - d = a.dup - assert c.tainted?, "Clone should be tainted" - assert d.tainted?, "Dup should be tainted" - end - - def test_duped_items_will_thaw - a = FileList['a', 'b', 'c'] - a.freeze - d = a.dup - d << 'more' - assert_equal ['a', 'b', 'c', 'more'], d - end - - def test_cloned_items_stay_frozen - a = FileList['a', 'b', 'c'] - a.freeze - c = a.clone - assert_raises(TypeError, RuntimeError) do - c << 'more' - end - end - - def test_array_comparisons - fl = FileList['b', 'b'] - a = ['b', 'a'] - b = ['b', 'b'] - c = ['b', 'c'] - assert_equal(1, fl <=> a) - assert_equal(0, fl <=> b) - assert_equal(-1, fl <=> c) - assert_equal(-1, a <=> fl) - assert_equal(0, b <=> fl) - assert_equal(1, c <=> fl) - end - - def test_array_equality - a = FileList['a', 'b'] - b = ['a', 'b'] - assert a == b - assert b == a -# assert a.eql?(b) -# assert b.eql?(a) - assert ! a.equal?(b) - assert ! b.equal?(a) - end - - def test_enumeration_methods - a = FileList['a', 'b'] - b = a.map { |it| it.upcase } - assert_equal ['A', 'B'], b - assert_equal FileList, b.class - - b = a.map { |it| it.upcase } - assert_equal ['A', 'B'], b - assert_equal FileList, b.class - - b = a.sort - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.sort_by { |it| it } - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.select { |it| it == 'b' } - assert_equal ['b'], b - assert_equal FileList, b.class - - b = a.select { |it| it.size == 1 } - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.reject { |it| it == 'b' } - assert_equal ['a'], b - assert_equal FileList, b.class - - b = a.grep(/./) - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.partition { |it| it == 'b' } - assert_equal [['b'], ['a']], b - assert_equal Array, b.class - assert_equal FileList, b[0].class - assert_equal FileList, b[1].class - - b = a.zip(['x', 'y']).to_a - assert_equal [['a', 'x'], ['b', 'y']], b - assert_equal Array, b.class - assert_equal Array, b[0].class - assert_equal Array, b[1].class - end - - def test_array_operators - a = ['a', 'b'] - b = ['c', 'd'] - f = FileList['x', 'y'] - g = FileList['w', 'z'] - - r = f + g - assert_equal ['x', 'y', 'w', 'z'], r - assert_equal FileList, r.class - - r = a + g - assert_equal ['a', 'b', 'w', 'z'], r - assert_equal Array, r.class - - r = f + b - assert_equal ['x', 'y', 'c', 'd'], r - assert_equal FileList, r.class - - r = FileList['w', 'x', 'y', 'z'] - f - assert_equal ['w', 'z'], r - assert_equal FileList, r.class - - r = FileList['w', 'x', 'y', 'z'] & f - assert_equal ['x', 'y'], r - assert_equal FileList, r.class - - r = f * 2 - assert_equal ['x', 'y', 'x', 'y'], r - assert_equal FileList, r.class - - r = f * ',' - assert_equal 'x,y', r - assert_equal String, r.class - - r = f | ['a', 'x'] - assert_equal ['a', 'x', 'y'].sort, r.sort - assert_equal FileList, r.class - end - - def test_other_array_returning_methods - f = FileList['a', nil, 'b'] - r = f.compact - assert_equal ['a', 'b'], r - assert_equal FileList, r.class - - f = FileList['a', 'b'] - r = f.concat(['x', 'y']) - assert_equal ['a', 'b', 'x', 'y'], r - assert_equal FileList, r.class - - f = FileList['a', ['b', 'c'], FileList['d', 'e']] - r = f.flatten - assert_equal ['a', 'b', 'c', 'd', 'e'], r - assert_equal FileList, r.class - - f = FileList['a', 'b', 'a'] - r = f.uniq - assert_equal ['a', 'b'], r - assert_equal FileList, r.class - - f = FileList['a', 'b', 'c', 'd'] - r = f.values_at(1, 3) - assert_equal ['b', 'd'], r - assert_equal FileList, r.class - end - - def test_special_return_delegating_methods_object_type - custom_file_list = Class.new(FileList) - f = custom_file_list.new - - FileList::SPECIAL_RETURN.each do |m| - r = if [].method(m).arity == 1 - f.send(m, []) - else - f.send(m) - end - - assert_equal custom_file_list, r.class - end - end - - def test_file_utils_can_use_filelists - cfiles = FileList['*.c'] - - cp cfiles, @cdir, :verbose => false - - assert File.exist?(File.join(@cdir, 'abc.c')) - assert File.exist?(File.join(@cdir, 'xyz.c')) - assert File.exist?(File.join(@cdir, 'x.c')) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb deleted file mode 100644 index 5935dc26..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb +++ /dev/null @@ -1,8 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeFileListPathMap < Rake::TestCase - def test_file_list_supports_pathmap - assert_equal ['a', 'b'], FileList['dir/a.rb', 'dir/b.rb'].pathmap("%n") - end -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_task.rb deleted file mode 100644 index a2495114..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_task.rb +++ /dev/null @@ -1,197 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'pathname' - -class TestRakeFileTask < Rake::TestCase - include Rake - - def setup - super - - Task.clear - @runs = Array.new - FileUtils.rm_f NEWFILE - FileUtils.rm_f OLDFILE - end - - def test_file_need - name = "dummy" - file name - - ftask = Task[name] - - assert_equal name.to_s, ftask.name - File.delete(ftask.name) rescue nil - - assert ftask.needed?, "file should be needed" - assert_equal Rake::LATE, ftask.timestamp - - open(ftask.name, "w") { |f| f.puts "HI" } - - assert_equal nil, ftask.prerequisites.map { |n| Task[n].timestamp }.max - assert ! ftask.needed?, "file should not be needed" - ensure - File.delete(ftask.name) rescue nil - end - - def test_file_times_new_depends_on_old - create_timed_files(OLDFILE, NEWFILE) - - t1 = Rake.application.intern(FileTask, NEWFILE).enhance([OLDFILE]) - t2 = Rake.application.intern(FileTask, OLDFILE) - assert ! t2.needed?, "Should not need to build old file" - assert ! t1.needed?, "Should not need to rebuild new file because of old" - end - - def test_file_times_new_depend_on_regular_task_timestamps - load_phony - - name = "dummy" - task name - - create_timed_files(NEWFILE) - - t1 = Rake.application.intern(FileTask, NEWFILE).enhance([name]) - - assert t1.needed?, "depending on non-file task uses Time.now" - - task(name => :phony) - - assert t1.needed?, "unless the non-file task has a timestamp" - end - - def test_file_times_old_depends_on_new - create_timed_files(OLDFILE, NEWFILE) - - t1 = Rake.application.intern(FileTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - preq_stamp = t1.prerequisites.map { |t| Task[t].timestamp }.max - assert_equal t2.timestamp, preq_stamp - assert t1.timestamp < preq_stamp, "T1 should be older" - assert t1.needed?, "Should need to rebuild old file because of new" - end - - def test_file_depends_on_task_depend_on_file - create_timed_files(OLDFILE, NEWFILE) - - file NEWFILE => [:obj] do |t| @runs << t.name end - task :obj => [OLDFILE] do |t| @runs << t.name end - file OLDFILE do |t| @runs << t.name end - - Task[:obj].invoke - Task[NEWFILE].invoke - assert @runs.include?(NEWFILE) - end - - def test_existing_file_depends_on_non_existing_file - create_file(OLDFILE) - delete_file(NEWFILE) - file NEWFILE do |t| @runs << t.name end - file OLDFILE => NEWFILE do |t| @runs << t.name end - - Task[OLDFILE].invoke - - assert_equal [NEWFILE, OLDFILE], @runs - end - - def test_needed_eh_build_all - create_file 'a' - - file 'a' - - a_task = Task['a'] - - refute a_task.needed? - - Rake.application.options.build_all = true - - assert a_task.needed? - ensure - delete_file 'a' - end - - def test_needed_eh_dependency - create_file 'a', Time.now - create_file 'b', Time.now - 60 - - create_file 'c', Time.now - create_file 'd', Time.now - 60 - - file 'b' => 'a' - - b_task = Task['b'] - - assert b_task.needed? - - file 'c' => 'd' - - c_task = Task['c'] - - refute c_task.needed? - ensure - delete_file 'old' - delete_file 'new' - end - - def test_needed_eh_exists - name = "dummy" - file name - - ftask = Task[name] - - assert ftask.needed? - - create_file name - - refute ftask.needed? - ensure - delete_file name - end - - def test_source_is_first_prerequisite - t = file :f => ["preqA", "preqB"] - assert_equal "preqA", t.source - end - - def test_sources_is_all_prerequisites - t = file :f => ["preqA", "preqB"] - assert_equal ["preqA", "preqB"], t.sources - end - - def test_task_can_be_pathname - name = "dummy" - file Pathname.new name - - ftask = Task[name] - - assert_equal name.to_s, ftask.name - end - - def test_prerequisite_can_be_pathname - t = file :f => Pathname.new("preq") - assert_equal "preq", t.source - end - - # I have currently disabled this test. I'm not convinced that - # deleting the file target on failure is always the proper thing to - # do. I'm willing to hear input on this topic. - def ztest_file_deletes_on_failure - task :obj - file NEWFILE => [:obj] do |t| - FileUtils.touch NEWFILE - fail "Ooops" - end - assert Task[NEWFILE] - begin - Task[NEWFILE].invoke - rescue Exception - end - assert(! File.exist?(NEWFILE), "NEWFILE should be deleted") - end - - def load_phony - load File.join(@rake_lib, "rake/phony.rb") - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_utils.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_utils.rb deleted file mode 100644 index 90e01dfb..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_file_utils.rb +++ /dev/null @@ -1,314 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'stringio' - -class TestRakeFileUtils < Rake::TestCase - def setup - super - @rake_test_sh = ENV['RAKE_TEST_SH'] - end - - def teardown - FileUtils::LN_SUPPORTED[0] = true - RakeFileUtils.verbose_flag = Rake::FileUtilsExt::DEFAULT - ENV['RAKE_TEST_SH'] = @rake_test_sh - - super - end - - def test_rm_one_file - create_file("a") - FileUtils.rm_rf "a" - refute File.exist?("a") - end - - def test_rm_two_files - create_file("a") - create_file("b") - FileUtils.rm_rf ["a", "b"] - refute File.exist?("a") - refute File.exist?("b") - end - - def test_rm_filelist - list = Rake::FileList.new << "a" << "b" - list.each { |fn| create_file(fn) } - FileUtils.rm_r list - refute File.exist?("a") - refute File.exist?("b") - end - - def test_ln - open("a", "w") { |f| f.puts "TEST_LN" } - - Rake::FileUtilsExt.safe_ln("a", "b", :verbose => false) - - assert_equal "TEST_LN\n", File.read('b') - end - - class BadLink - include Rake::FileUtilsExt - attr_reader :cp_args - - def initialize(klass) - @failure_class = klass - end - - def cp(*args) - @cp_args = args - end - - def ln(*args) - fail @failure_class, "ln not supported" - end - - public :safe_ln - end - - def test_safe_ln_failover_to_cp_on_standard_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(StandardError) - c.safe_ln "a", "b" - assert_equal ['a', 'b'], c.cp_args - c.safe_ln "x", "y" - assert_equal ['x', 'y'], c.cp_args - end - - def test_safe_ln_failover_to_cp_on_not_implemented_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(NotImplementedError) - c.safe_ln "a", "b" - assert_equal ['a', 'b'], c.cp_args - end - - def test_safe_ln_fails_on_script_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(ScriptError) - assert_raises(ScriptError) do c.safe_ln "a", "b" end - end - - def test_verbose - verbose true - assert_equal true, verbose - verbose false - assert_equal false, verbose - verbose(true) { - assert_equal true, verbose - } - assert_equal false, verbose - end - - def test_nowrite - nowrite true - assert_equal true, nowrite - nowrite false - assert_equal false, nowrite - nowrite(true) { - assert_equal true, nowrite - } - assert_equal false, nowrite - end - - def test_file_utils_methods_are_available_at_top_level - create_file("a") - - capture_io do - rm_rf "a" - end - - refute File.exist?("a") - end - - def test_fileutils_methods_dont_leak - obj = Object.new - assert_raises(NoMethodError) { obj.copy } # from FileUtils - assert_raises(NoMethodError) { obj.ruby "-v" } # from RubyFileUtils - end - - def test_sh - shellcommand - - verbose(false) { sh %{#{Rake::TestCase::RUBY} shellcommand.rb} } - assert true, "should not fail" - end - - def test_sh_with_a_single_string_argument - check_expansion - - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - sh %{#{RUBY} check_expansion.rb #{env_var} someval} - } - end - - def test_sh_with_multiple_arguments - check_no_expansion - ENV['RAKE_TEST_SH'] = 'someval' - - verbose(false) { - sh RUBY, 'check_no_expansion.rb', env_var, 'someval' - } - end - - def test_sh_failure - shellcommand - - assert_raises(RuntimeError) { - verbose(false) { sh %{#{RUBY} shellcommand.rb 1} } - } - end - - def test_sh_special_handling - shellcommand - - count = 0 - verbose(false) { - sh(%{#{RUBY} shellcommand.rb}) do |ok, res| - assert(ok) - assert_equal 0, res.exitstatus - count += 1 - end - sh(%{#{RUBY} shellcommand.rb 1}) do |ok, res| - assert(!ok) - assert_equal 1, res.exitstatus - count += 1 - end - } - assert_equal 2, count, "Block count should be 2" - end - - def test_sh_noop - shellcommand - - verbose(false) { sh %{shellcommand.rb 1}, :noop=>true } - assert true, "should not fail" - end - - def test_sh_bad_option - shellcommand - - ex = assert_raises(ArgumentError) { - verbose(false) { sh %{shellcommand.rb}, :bad_option=>true } - } - assert_match(/bad_option/, ex.message) - end - - def test_sh_verbose - shellcommand - - _, err = capture_io do - verbose(true) { - sh %{shellcommand.rb}, :noop=>true - } - end - - assert_equal "shellcommand.rb\n", err - end - - def test_sh_verbose_false - shellcommand - - _, err = capture_io do - verbose(false) { - sh %{shellcommand.rb}, :noop=>true - } - end - - assert_equal '', err - end - - def test_sh_verbose_flag_nil - shellcommand - - RakeFileUtils.verbose_flag = nil - - assert_silent do - sh %{shellcommand.rb}, :noop=>true - end - end - - def test_ruby_with_a_single_string_argument - check_expansion - - ENV['RAKE_TEST_SH'] = 'someval' - - verbose(false) { - replace_ruby { - ruby %{check_expansion.rb #{env_var} someval} - } - } - end - - def test_ruby_with_multiple_arguments - check_no_expansion - - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - replace_ruby { - ruby 'check_no_expansion.rb', env_var, 'someval' - } - } - end - - def test_split_all - assert_equal ['a'], Rake::FileUtilsExt.split_all('a') - assert_equal ['..'], Rake::FileUtilsExt.split_all('..') - assert_equal ['/'], Rake::FileUtilsExt.split_all('/') - assert_equal ['a', 'b'], Rake::FileUtilsExt.split_all('a/b') - assert_equal ['/', 'a', 'b'], Rake::FileUtilsExt.split_all('/a/b') - assert_equal ['..', 'a', 'b'], Rake::FileUtilsExt.split_all('../a/b') - end - - def command(name, text) - open name, 'w', 0750 do |io| - io << text - end - end - - def check_no_expansion - command 'check_no_expansion.rb', <<-CHECK_EXPANSION -if ARGV[0] != ARGV[1] - exit 0 -else - exit 1 -end - CHECK_EXPANSION - end - - def check_expansion - command 'check_expansion.rb', <<-CHECK_EXPANSION -if ARGV[0] != ARGV[1] - exit 1 -else - exit 0 -end - CHECK_EXPANSION - end - - def replace_ruby - ruby = FileUtils::RUBY - FileUtils.send :remove_const, :RUBY - FileUtils.const_set :RUBY, RUBY - yield - ensure - FileUtils.send :remove_const, :RUBY - FileUtils.const_set:RUBY, ruby - end - - def shellcommand - command 'shellcommand.rb', <<-SHELLCOMMAND -#!/usr/bin/env ruby - -exit((ARGV[0] || "0").to_i) - SHELLCOMMAND - end - - def env_var - windows? ? '%RAKE_TEST_SH%' : '$RAKE_TEST_SH' - end - - def windows? - ! File::ALT_SEPARATOR.nil? - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_ftp_file.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_ftp_file.rb deleted file mode 100644 index 5749b8a5..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_ftp_file.rb +++ /dev/null @@ -1,74 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'date' -require 'time' -require 'rake/contrib/ftptools' - -class FakeDate - def self.today - Date.new(2003, 10, 3) - end - - def self.now - Time.local(2003, 10, 3, 12, 00, 00) - end -end - -class TestRakeFtpFile < Rake::TestCase - - def setup - super - - Rake::FtpFile.class_eval { - @date_class = FakeDate - @time_class = FakeDate - } - end - - def test_general - file = Rake::FtpFile.new( - "here", - "-rw-r--r-- 1 a279376 develop 121770 Mar 6 14:50 wiki.pl") - assert_equal "wiki.pl", file.name - assert_equal "here/wiki.pl", file.path - assert_equal "a279376", file.owner - assert_equal "develop", file.group - assert_equal 0644, file.mode - assert_equal 121_770, file.size - assert_equal Time.mktime(2003, 3, 6, 14, 50, 0, 0), file.time - assert ! file.directory? - assert ! file.symlink? - end - - def test_far_date - file = Rake::FtpFile.new( - ".", - "drwxr-xr-x 3 a279376 develop 4096 Nov 26 2001 vss") - assert_equal Time.mktime(2001, 11, 26, 0, 0, 0, 0), file.time - end - - def test_close_date - file = Rake::FtpFile.new( - ".", - "drwxr-xr-x 3 a279376 develop 4096 Nov 26 15:35 vss") - assert_equal Time.mktime(2002, 11, 26, 15, 35, 0, 0), file.time - end - - def test_directory - file = Rake::FtpFile.new( - ".", - "drwxrwxr-x 9 a279376 develop 4096 Mar 13 14:32 working") - assert file.directory? - assert !file.symlink? - end - - def test_symlink - file = Rake::FtpFile.new( - ".", - "lrwxrwxrwx 1 a279376 develop 64 Mar 26 2002 " + - "xtrac -> /home/a279376/working/ics/development/java/" + - "com/fmr/fwp/ics/xtrac") - assert_equal 'xtrac', file.name - assert file.symlink? - assert !file.directory? - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_functional.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_functional.rb deleted file mode 100644 index bf7ba92f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_functional.rb +++ /dev/null @@ -1,482 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'open3' - -class TestRakeFunctional < Rake::TestCase - include RubyRunner - - def setup - super - - if @verbose - puts - puts - puts '-' * 80 - puts @__name__ - puts '-' * 80 - end - end - - def test_rake_default - rakefile_default - - rake - - assert_match(/^DEFAULT$/, @out) - end - - def test_rake_error_on_bad_task - rakefile_default - - rake '-t', 'xyz' - - assert_match(/rake aborted/, @err) - end - - def test_env_available_at_top_scope - rakefile_default - - rake "TESTTOPSCOPE=1" - - assert_match(/^TOPSCOPE$/, @out) - end - - def test_env_available_at_task_scope - rakefile_default - - rake 'TESTTASKSCOPE=1', 'task_scope' - - assert_match(/^TASKSCOPE$/, @out) - end - - def test_multi_desc - ENV['RAKE_COLUMNS'] = '80' - rakefile_multidesc - - rake "-T" - - assert_match %r{^rake a *# A / A2 *$}, @out - assert_match %r{^rake b *# B *$}, @out - refute_match %r{^rake c}, @out - assert_match %r{^rake d *# x{65}\.\.\.$}, @out - end - - def test_long_description - rakefile_multidesc - - rake "--describe" - - assert_match %r{^rake a\n *A\n *A2 *$}m, @out - assert_match %r{^rake b\n *B *$}m, @out - assert_match %r{^rake d\n *x{80}}m, @out - refute_match %r{^rake c\n}m, @out - end - - def test_proper_namespace_access - rakefile_access - - rake - - refute_match %r{^BAD:}, @out - end - - def test_rbext - rakefile_rbext - - rake "-N" - - assert_match %r{^OK$}, @out - end - - def test_system - rake_system_dir - - rake '-g', "sys1" - - assert_match %r{^SYS1}, @out - end - - def test_system_excludes_rakelib_files_too - rake_system_dir - - rake '-g', "sys1", '-T', 'extra' - - refute_match %r{extra:extra}, @out - end - - def test_by_default_rakelib_files_are_included - rake_system_dir - rakefile_extra - - rake '-T', 'extra', '--trace' - - assert_match %r{extra:extra}, @out - end - - def test_implicit_system - rake_system_dir - Dir.chdir @tempdir - - rake "sys1", "--trace" - - assert_match %r{^SYS1}, @out - end - - def test_no_system - rake_system_dir - rakefile_extra - - rake '-G', "sys1" - - assert_match %r{^Don't know how to build task}, @err # emacs wart: ' - end - - def test_nosearch_with_rakefile_uses_local_rakefile - rakefile_default - - rake "--nosearch" - - assert_match %r{^DEFAULT}, @out - end - - def test_nosearch_without_rakefile_finds_system - rakefile_nosearch - rake_system_dir - - rake "--nosearch", "sys1" - - assert_match %r{^SYS1}, @out - end - - def test_nosearch_without_rakefile_and_no_system_fails - rakefile_nosearch - ENV['RAKE_SYSTEM'] = 'not_exist' - - rake "--nosearch" - - assert_match %r{^No Rakefile found}, @err - end - - def test_invalid_command_line_options - rakefile_default - - rake "--bad-options" - - assert_match %r{invalid +option}i, @err - end - - def test_inline_verbose_default_should_show_command - rakefile_verbose - - rake "inline_verbose_default" - - assert_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_inline_verbose_true_should_show_command - rakefile_verbose - - rake "inline_verbose_true" - - assert_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_inline_verbose_false_should_not_show_command - rakefile_verbose - - rake "inline_verbose_false" - - refute_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_block_verbose_false_should_not_show_command - rakefile_verbose - - rake "block_verbose_false" - - refute_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_block_verbose_true_should_show_command - rakefile_verbose - - rake "block_verbose_true" - - assert_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_standalone_verbose_true_should_show_command - rakefile_verbose - - rake "standalone_verbose_true" - - assert_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_standalone_verbose_false_should_not_show_command - rakefile_verbose - - rake "standalone_verbose_false" - - refute_match(/#{Regexp.quote(RUBY)} -e/, @err) - end - - def test_dry_run - rakefile_default - - rake "-n", "other" - - assert_match %r{Execute \(dry run\) default}, @err - assert_match %r{Execute \(dry run\) other}, @err - refute_match %r{DEFAULT}, @out - refute_match %r{OTHER}, @out - end - - # Test for the trace/dry_run bug found by Brian Chandler - def test_dry_run_bug - rakefile_dryrun - - rake - - FileUtils.rm_f 'temp_one' - - rake "--dry-run" - - refute_match(/No such file/, @out) - end - - # Test for the trace/dry_run bug found by Brian Chandler - def test_trace_bug - rakefile_dryrun - - rake - - FileUtils.rm_f 'temp_one' - - rake "--trace" - - refute_match(/No such file/, @out) - end - - def test_imports - rakefile_imports - - rake - - assert File.exist?(File.join(@tempdir, 'dynamic_deps')), - "'dynamic_deps' file should exist" - assert_match(/^FIRST$\s+^DYNAMIC$\s+^STATIC$\s+^OTHER$/, @out) - end - - def test_regenerate_imports - rakefile_regenerate_imports - - rake - - assert_match(/^INITIAL\s+^REGENERATED$/, @out) - end - - def test_rules_chaining_to_file_task - rakefile_chains - - rake - - assert File.exist?(File.join(@tempdir, 'play.app')), - "'play.app' file should exist" - end - - def test_file_creation_task - rakefile_file_creation - - rake "prep" - rake "run" - rake "run" - - assert(@err !~ /^cp src/, "Should not recopy data") - end - - def test_dash_f_with_no_arg_foils_rakefile_lookup - rakefile_rakelib - - rake '-I', 'rakelib', '-rtest1', '-f' - - assert_match(/^TEST1$/, @out) - end - - def test_dot_rake_files_can_be_loaded_with_dash_r - rakefile_rakelib - - rake '-I', 'rakelib', '-rtest2', '-f' - - assert_empty @err - assert_match(/^TEST2$/, @out) - end - - def test_can_invoke_task_in_toplevel_namespace - rakefile_namespace - - rake "copy" - - assert_match(/^COPY$/, @out) - end - - def test_can_invoke_task_in_nested_namespace - rakefile_namespace - - rake "nest:copy" - - assert_match(/^NEST COPY$/, @out) - end - - def test_tasks_can_reference_task_in_same_namespace - rakefile_namespace - - rake "nest:xx" - - assert_match(/^NEST COPY$/m, @out) - end - - def test_tasks_can_reference_task_in_other_namespaces - rakefile_namespace - - rake "b:run" - - assert_match(/^IN A\nIN B$/m, @out) - end - - def test_anonymous_tasks_can_be_invoked_indirectly - rakefile_namespace - - rake "anon" - - assert_match(/^ANON COPY$/m, @out) - end - - def test_rake_namespace_refers_to_toplevel - rakefile_namespace - - rake "very:nested:run" - - assert_match(/^COPY$/m, @out) - end - - def test_file_task_are_not_scoped_by_namespaces - rakefile_namespace - - rake "xyz.rb" - - assert_match(/^XYZ1\nXYZ2$/m, @out) - end - - def test_file_task_dependencies_scoped_by_namespaces - rakefile_namespace - - rake "scopedep.rb" - - assert_match(/^PREPARE\nSCOPEDEP$/m, @out) - end - - def test_test_task_descriptions - rakefile_test_task - - rake "-T" - - assert_match(/custom test task description/, @out) - end - - def test_comment_before_task_acts_like_desc - rakefile_comments - - rake "-T" - - refute_match(/comment for t1/, @out) - end - - def test_comment_separated_from_task_by_blank_line_is_not_picked_up - rakefile_comments - - rake "-T" - - refute_match("t2", @out) - end - - def test_comment_after_desc_is_ignored - rakefile_comments - - rake "-T" - - assert_match("override comment for t3", @out) - end - - def test_comment_before_desc_is_ignored - rakefile_comments - - rake "-T" - - assert_match("override comment for t4", @out) - end - - def test_correct_number_of_tasks_reported - rakefile_comments - - rake "-T" - - assert_equal(2, @out.split(/\n/).grep(/t\d/).size) - end - - def test_file_list_is_requirable_separately - ruby '-rrake/file_list', '-e', 'puts Rake::FileList["a"].size' - assert_equal "1\n", @out - end - - def can_detect_signals? - system RUBY, '-e', 'Process.kill "TERM", $$' - status = $? - if @verbose - puts " SIG status = #{$?.inspect}" - puts " SIG status.respond_to?(:signaled?) = " + - "#{$?.respond_to?(:signaled?).inspect}" - puts " SIG status.signaled? = #{status.signaled?}" if - status.respond_to?(:signaled?) - end - status.respond_to?(:signaled?) && status.signaled? - end - - def test_signal_propagation_in_tests - if can_detect_signals? - rakefile_test_signal - rake - assert_match(/ATEST/, @out) - refute_match(/BTEST/, @out) - else - skip "Signal detect seems broken on this system" - end - end - - def test_failing_test_sets_exit_status - skip if uncertain_exit_status? - rakefile_failing_test_task - rake - assert @exit.exitstatus > 0, "should be non-zero" - end - - def test_stand_alone_filelist - rakefile_stand_alone_filelist - - run_ruby @ruby_options + ["stand_alone_filelist.rb"] - - assert_match(/^stand_alone_filelist\.rb$/, @out) - assert_equal 0, @exit.exitstatus unless uncertain_exit_status? - end - - private - - # We are unable to accurately verify that Rake returns a proper - # error exit status using popen3 in Ruby 1.8.7 and JRuby. This - # predicate function can be used to skip tests or assertions as - # needed. - def uncertain_exit_status? - RUBY_VERSION < "1.9" || defined?(JRUBY_VERSION) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_invocation_chain.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_invocation_chain.rb deleted file mode 100644 index 0176339b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_invocation_chain.rb +++ /dev/null @@ -1,64 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeInvocationChain < Rake::TestCase - include Rake - - def setup - super - - @empty = InvocationChain.empty - - @first_member = "A" - @second_member = "B" - @one = @empty.append(@first_member) - @two = @one.append(@second_member) - end - - def test_conj_on_invocation_chains - list = InvocationChain.empty.conj("B").conj("A") - assert_equal InvocationChain.make("A", "B"), list - assert_equal InvocationChain, list.class - end - - def test_make_on_invocation_chains - assert_equal @empty, InvocationChain.make() - assert_equal @one, InvocationChain.make(@first_member) - assert_equal @two, InvocationChain.make(@second_member, @first_member) - end - - def test_append_with_one_argument - chain = @empty.append("A") - - assert_equal 'TOP => A', chain.to_s # HACK - end - - def test_append_one_circular - ex = assert_raises RuntimeError do - @one.append(@first_member) - end - assert_match(/circular +dependency/i, ex.message) - assert_match(/A.*=>.*A/, ex.message) - end - - def test_append_two_circular - ex = assert_raises RuntimeError do - @two.append(@first_member) - end - assert_match(/A.*=>.*B.*=>.*A/, ex.message) - end - - def test_member_eh_one - assert @one.member?(@first_member) - end - - def test_member_eh_two - assert @two.member?(@first_member) - assert @two.member?(@second_member) - end - - def test_to_s_empty - assert_equal "TOP", @empty.to_s - assert_equal "TOP => A", @one.to_s - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_late_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_late_time.rb deleted file mode 100644 index 4b910a70..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_late_time.rb +++ /dev/null @@ -1,18 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeLateTime < Rake::TestCase - def test_late_time_comparisons - late = Rake::LATE - assert_equal late, late - assert late >= Time.now - assert late > Time.now - assert late != Time.now - assert Time.now < late - assert Time.now <= late - assert Time.now != late - end - - def test_to_s - assert_equal '', Rake::LATE.to_s - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_linked_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_linked_list.rb deleted file mode 100644 index 32d73062..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_linked_list.rb +++ /dev/null @@ -1,84 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestLinkedList < Rake::TestCase - include Rake - - def test_empty_list - empty = LinkedList::EMPTY - assert empty.empty?, "should be empty" - end - - def test_list_with_one_item - list = LinkedList.make(:one) - assert ! list.empty?, "should not be empty" - assert_equal :one, list.head - assert_equal LinkedList::EMPTY, list.tail - end - - def test_make_with_no_arguments - empty = LinkedList.make() - assert_equal LinkedList::EMPTY, empty - end - - def test_make_with_one_argument - list = LinkedList.make(:one) - assert ! list.empty? - assert_equal :one, list.head - assert_equal LinkedList::EMPTY, list.tail - end - - def test_make_with_two_arguments - list = LinkedList.make(:one, :two) - assert ! list.empty? - assert_equal :one, list.head - assert_equal :two, list.tail.head - assert_equal LinkedList::EMPTY, list.tail.tail - end - - def test_list_with_several_items - list = LinkedList.make(:one, :two, :three) - - assert ! list.empty?, "should not be empty" - assert_equal :one, list.head - assert_equal :two, list.tail.head - assert_equal :three, list.tail.tail.head - assert_equal LinkedList::EMPTY, list.tail.tail.tail - end - - def test_lists_are_structurally_equivalent - list = LinkedList.make(1, 2, 3) - same = LinkedList.make(1, 2, 3) - diff = LinkedList.make(1, 2, 4) - short = LinkedList.make(1, 2) - - assert_equal list, same - refute_equal list, diff - refute_equal list, short - refute_equal short, list - end - - def test_conversion_to_string - list = LinkedList.make(:one, :two, :three) - assert_equal "LL(one, two, three)", list.to_s - assert_equal "LL()", LinkedList.make().to_s - end - - def test_conversion_with_inspect - list = LinkedList.make(:one, :two, :three) - assert_equal "LL(:one, :two, :three)", list.inspect - assert_equal "LL()", LinkedList.make().inspect - end - - def test_lists_are_enumerable - list = LinkedList.make(1, 2, 3) - new_list = list.map { |item| item + 10 } - expected = [11, 12, 13] - assert_equal expected, new_list - end - - def test_conjunction - list = LinkedList.make.conj("C").conj("B").conj("A") - assert_equal LinkedList.make("A", "B", "C"), list - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_makefile_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_makefile_loader.rb deleted file mode 100644 index 9e9265ad..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_makefile_loader.rb +++ /dev/null @@ -1,46 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/loaders/makefile' - -class TestRakeMakefileLoader < Rake::TestCase - include Rake - - def test_parse - Dir.chdir @tempdir - - open 'sample.mf', 'w' do |io| - io << <<-'SAMPLE_MF' -# Comments -a: a1 a2 a3 a4 -b: b1 b2 b3 \ - b4 b5 b6\ -# Mid: Comment -b7 - - a : a5 a6 a7 -c: c1 -d: d1 d2 \ - -e f : e1 f1 - -g\ 0: g1 g\ 2 g\ 3 g4 - SAMPLE_MF - end - - Task.clear - loader = Rake::MakefileLoader.new - loader.load 'sample.mf' - %w(a b c d).each do |t| - assert Task.task_defined?(t), "#{t} should be a defined task" - end - assert_equal %w(a1 a2 a3 a4 a5 a6 a7).sort, Task['a'].prerequisites.sort - assert_equal %w(b1 b2 b3 b4 b5 b6 b7).sort, Task['b'].prerequisites.sort - assert_equal %w(c1).sort, Task['c'].prerequisites.sort - assert_equal %w(d1 d2).sort, Task['d'].prerequisites.sort - assert_equal %w(e1 f1).sort, Task['e'].prerequisites.sort - assert_equal %w(e1 f1).sort, Task['f'].prerequisites.sort - assert_equal( - ["g1", "g 2", "g 3", "g4"].sort, - Task['g 0'].prerequisites.sort) - assert_equal 7, Task.tasks.size - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_multi_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_multi_task.rb deleted file mode 100644 index 9f8fed6d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_multi_task.rb +++ /dev/null @@ -1,64 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'thread' - -class TestRakeMultiTask < Rake::TestCase - include Rake - include Rake::DSL - - def setup - super - - Task.clear - @runs = Array.new - @mutex = Mutex.new - end - - def teardown - Rake.application.thread_pool.join - - super - end - - def add_run(obj) - @mutex.synchronize do - @runs << obj - end - end - - def test_running_multitasks - task :a do 3.times do |i| add_run("A#{i}"); sleep 0.01; end end - task :b do 3.times do |i| add_run("B#{i}"); sleep 0.01; end end - multitask :both => [:a, :b] - Task[:both].invoke - assert_equal 6, @runs.size - assert @runs.index("A0") < @runs.index("A1") - assert @runs.index("A1") < @runs.index("A2") - assert @runs.index("B0") < @runs.index("B1") - assert @runs.index("B1") < @runs.index("B2") - end - - def test_all_multitasks_wait_on_slow_prerequisites - task :slow do 3.times do |i| add_run("S#{i}"); sleep 0.05 end end - task :a => [:slow] do 3.times do |i| add_run("A#{i}"); sleep 0.01 end end - task :b => [:slow] do 3.times do |i| add_run("B#{i}"); sleep 0.01 end end - multitask :both => [:a, :b] - Task[:both].invoke - assert_equal 9, @runs.size - assert @runs.index("S0") < @runs.index("S1") - assert @runs.index("S1") < @runs.index("S2") - assert @runs.index("S2") < @runs.index("A0") - assert @runs.index("S2") < @runs.index("B0") - assert @runs.index("A0") < @runs.index("A1") - assert @runs.index("A1") < @runs.index("A2") - assert @runs.index("B0") < @runs.index("B1") - assert @runs.index("B1") < @runs.index("B2") - end - - def test_multitasks_with_parameters - task :a, [:arg] do |t, args| add_run(args[:arg]) end - multitask :b, [:arg] => [:a] do |t, args| add_run(args[:arg] + 'mt') end - Task[:b].invoke "b" - assert @runs[0] == "b" - assert @runs[1] == "bmt" - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_name_space.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_name_space.rb deleted file mode 100644 index d35e70e1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_name_space.rb +++ /dev/null @@ -1,57 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeNameSpace < Rake::TestCase - - class TM - include Rake::TaskManager - end - - def test_namespace_creation - mgr = TM.new - ns = Rake::NameSpace.new(mgr, []) - refute_nil ns - end - - def test_namespace_lookup - mgr = TM.new - ns = mgr.in_namespace("n") do - mgr.define_task(Rake::Task, "t") - end - - refute_nil ns["t"] - assert_equal mgr["n:t"], ns["t"] - end - - def test_namespace_reports_tasks_it_owns - mgr = TM.new - nns = nil - ns = mgr.in_namespace("n") do - mgr.define_task(Rake::Task, :x) - mgr.define_task(Rake::Task, :y) - nns = mgr.in_namespace("nn") do - mgr.define_task(Rake::Task, :z) - end - end - mgr.in_namespace("m") do - mgr.define_task(Rake::Task, :x) - end - - assert_equal ["n:nn:z", "n:x", "n:y"], - ns.tasks.map { |tsk| tsk.name } - assert_equal ["n:nn:z"], nns.tasks.map { |t| t.name } - end - - def test_scope - mgr = TM.new - - scope = Rake::LinkedList.new 'b' - scope = scope.conj 'a' - - ns = Rake::NameSpace.new mgr, scope - - assert_equal scope, ns.scope - - refute_same scope, ns.scope - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_package_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_package_task.rb deleted file mode 100644 index 87cb57c1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_package_task.rb +++ /dev/null @@ -1,79 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/packagetask' - -class TestRakePackageTask < Rake::TestCase - - def test_initialize - touch 'install.rb' - touch 'a.c' - touch 'b.c' - mkdir 'CVS' - touch 'a.rb~' - - pkg = Rake::PackageTask.new("pkgr", "1.2.3") { |p| - p.package_files << "install.rb" - p.package_files.include '*.c' - p.package_files.exclude(/\bCVS\b/) - p.package_files.exclude(/~$/) - p.package_dir = 'pkg' - p.need_tar = true - p.need_tar_gz = true - p.need_tar_bz2 = true - p.need_zip = true - } - - assert_equal "pkg", pkg.package_dir - - assert_includes pkg.package_files, 'a.c' - - assert_equal 'pkgr', pkg.name - assert_equal '1.2.3', pkg.version - assert Rake::Task[:package] - assert Rake::Task['pkg/pkgr-1.2.3.tgz'] - assert Rake::Task['pkg/pkgr-1.2.3.tar.gz'] - assert Rake::Task['pkg/pkgr-1.2.3.tar.bz2'] - assert Rake::Task['pkg/pkgr-1.2.3.zip'] - assert Rake::Task['pkg/pkgr-1.2.3'] - assert Rake::Task[:clobber_package] - assert Rake::Task[:repackage] - end - - def test_initialize_no_version - e = assert_raises RuntimeError do - Rake::PackageTask.new 'pkgr' - end - - assert_equal 'Version required (or :noversion)', e.message - end - - def test_initialize_noversion - pkg = Rake::PackageTask.new 'pkgr', :noversion - - assert_equal 'pkg', pkg.package_dir - assert_equal 'pkgr', pkg.name - assert_equal nil, pkg.version - end - - def test_clone - pkg = Rake::PackageTask.new("x", :noversion) - p2 = pkg.clone - pkg.package_files << "y" - p2.package_files << "x" - assert_equal ["y"], pkg.package_files - assert_equal ["x"], p2.package_files - end - - def test_package_name - pkg = Rake::PackageTask.new 'a', '1' - - assert_equal 'a-1', pkg.package_name - end - - def test_package_name_noversion - pkg = Rake::PackageTask.new 'a', :noversion - - assert_equal 'a', pkg.package_name - end - -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_path_map.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_path_map.rb deleted file mode 100644 index 98e8df06..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_path_map.rb +++ /dev/null @@ -1,168 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakePathMap < Rake::TestCase - - def test_returns_self_with_no_args - assert_equal "abc.rb", "abc.rb".pathmap - end - - def test_s_returns_file_separator - sep = File::ALT_SEPARATOR || File::SEPARATOR - assert_equal sep, "abc.rb".pathmap("%s") - assert_equal sep, "".pathmap("%s") - assert_equal "a#{sep}b", "a/b".pathmap("%d%s%f") - end - - def test_f_returns_basename - assert_equal "abc.rb", "abc.rb".pathmap("%f") - assert_equal "abc.rb", "this/is/a/dir/abc.rb".pathmap("%f") - assert_equal "abc.rb", "/this/is/a/dir/abc.rb".pathmap("%f") - end - - def test_n_returns_basename_without_extension - assert_equal "abc", "abc.rb".pathmap("%n") - assert_equal "abc", "abc".pathmap("%n") - assert_equal "abc", "this/is/a/dir/abc.rb".pathmap("%n") - assert_equal "abc", "/this/is/a/dir/abc.rb".pathmap("%n") - assert_equal "abc", "/this/is/a/dir/abc".pathmap("%n") - end - - def test_d_returns_dirname - assert_equal ".", "abc.rb".pathmap("%d") - assert_equal "/", "/abc".pathmap("%d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%d") - assert_equal "/this/is/a/dir", "/this/is/a/dir/abc.rb".pathmap("%d") - end - - def test_9d_returns_partial_dirname - assert_equal "this/is", "this/is/a/dir/abc.rb".pathmap("%2d") - assert_equal "this", "this/is/a/dir/abc.rb".pathmap("%1d") - assert_equal ".", "this/is/a/dir/abc.rb".pathmap("%0d") - assert_equal "dir", "this/is/a/dir/abc.rb".pathmap("%-1d") - assert_equal "a/dir", "this/is/a/dir/abc.rb".pathmap("%-2d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%100d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%-100d") - end - - def test_x_returns_extension - assert_equal "", "abc".pathmap("%x") - assert_equal ".rb", "abc.rb".pathmap("%x") - assert_equal ".rb", "abc.xyz.rb".pathmap("%x") - assert_equal "", ".depends".pathmap("%x") - assert_equal "", "dir/.depends".pathmap("%x") - end - - def test_x_returns_everything_but_extension - assert_equal "abc", "abc".pathmap("%X") - assert_equal "abc", "abc.rb".pathmap("%X") - assert_equal "abc.xyz", "abc.xyz.rb".pathmap("%X") - assert_equal "ab.xyz", "ab.xyz.rb".pathmap("%X") - assert_equal "a.xyz", "a.xyz.rb".pathmap("%X") - assert_equal "abc", "abc.rb".pathmap("%X") - assert_equal "ab", "ab.rb".pathmap("%X") - assert_equal "a", "a.rb".pathmap("%X") - assert_equal ".depends", ".depends".pathmap("%X") - assert_equal "a/dir/.depends", "a/dir/.depends".pathmap("%X") - assert_equal "/.depends", "/.depends".pathmap("%X") - end - - def test_p_returns_entire_pathname - assert_equal "abc.rb", "abc.rb".pathmap("%p") - assert_equal "this/is/a/dir/abc.rb", "this/is/a/dir/abc.rb".pathmap("%p") - assert_equal "/this/is/a/dir/abc.rb", "/this/is/a/dir/abc.rb".pathmap("%p") - end - - def test_dash_returns_empty_string - assert_equal "", "abc.rb".pathmap("%-") - assert_equal "abc.rb", "abc.rb".pathmap("%X%-%x") - end - - def test_percent_percent_returns_percent - assert_equal "a%b", "".pathmap("a%%b") - end - - def test_undefined_percent_causes_error - assert_raises(ArgumentError) { - "dir/abc.rb".pathmap("%z") - } - end - - def test_pattern_returns_substitutions - assert_equal "bin/org/osb", - "src/org/osb/Xyz.java".pathmap("%{src,bin}d") - end - - def test_pattern_can_use_backreferences - assert_equal "dir/hi/is", "dir/this/is".pathmap("%{t(hi)s,\\1}p") - end - - def test_pattern_with_star_replacement_string_uses_block - assert_equal "src/ORG/osb", - "src/org/osb/Xyz.java".pathmap("%{/org,*}d") { |d| d.upcase } - assert_equal "Xyz.java", - "src/org/osb/Xyz.java".pathmap("%{.*,*}f") { |f| f.capitalize } - end - - def test_pattern_with_no_replacement_nor_block_substitutes_empty_string - assert_equal "bc.rb", "abc.rb".pathmap("%{a}f") - end - - def test_pattern_works_with_certain_valid_operators - assert_equal "dir/xbc.rb", "dir/abc.rb".pathmap("%{a,x}p") - assert_equal "d1r", "dir/abc.rb".pathmap("%{i,1}d") - assert_equal "xbc.rb", "dir/abc.rb".pathmap("%{a,x}f") - assert_equal ".Rb", "dir/abc.rb".pathmap("%{r,R}x") - assert_equal "xbc", "dir/abc.rb".pathmap("%{a,x}n") - end - - def test_multiple_patterns - assert_equal "this/is/b/directory/abc.rb", - "this/is/a/dir/abc.rb".pathmap("%{a,b;dir,\\0ectory}p") - end - - def test_partial_directory_selection_works_with_patterns - assert_equal "this/is/a/long", - "this/is/a/really/long/path/ok.rb".pathmap("%{/really/,/}5d") - end - - def test_pattern_with_invalid_operator - ex = assert_raises(ArgumentError) do - "abc.xyz".pathmap("%{src,bin}z") - end - assert_match(/unknown.*pathmap.*spec.*z/i, ex.message) - end - - def test_works_with_windows_separators - if File::ALT_SEPARATOR - assert_equal "abc", 'dir\abc.rb'.pathmap("%n") - assert_equal 'this\is\a\dir', - 'this\is\a\dir\abc.rb'.pathmap("%d") - end - end - - def test_complex_patterns - sep = "".pathmap("%s") - assert_equal( - "dir/abc.rb", - "dir/abc.rb".pathmap("%d/%n%x")) - assert_equal( - "./abc.rb", - "abc.rb".pathmap("%d/%n%x")) - assert_equal( - "Your file extension is '.rb'", - "dir/abc.rb".pathmap("Your file extension is '%x'")) - assert_equal( - "bin/org/onestepback/proj/A.class", - "src/org/onestepback/proj/A.java".pathmap("%{src,bin}d/%n.class")) - assert_equal( - "src_work/bin/org/onestepback/proj/A.class", - "src_work/src/org/onestepback/proj/A.java". - pathmap('%{\bsrc\b,bin}X.class')) - assert_equal( - ".depends.bak", - ".depends".pathmap("%X.bak")) - assert_equal( - "d#{sep}a/b/c#{sep}file.txt", - "a/b/c/d/file.txt".pathmap("%-1d%s%3d%s%f")) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_path_map_explode.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_path_map_explode.rb deleted file mode 100644 index a79235ee..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_path_map_explode.rb +++ /dev/null @@ -1,34 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakePathMapExplode < Rake::TestCase - def setup - super - - String.class_eval { public :pathmap_explode } - end - - def teardown - String.class_eval { protected :pathmap_explode } - - super - end - - def test_explode - assert_equal ['a'], 'a'.pathmap_explode - assert_equal ['a', 'b'], 'a/b'.pathmap_explode - assert_equal ['a', 'b', 'c'], 'a/b/c'.pathmap_explode - assert_equal ['/', 'a'], '/a'.pathmap_explode - assert_equal ['/', 'a', 'b'], '/a/b'.pathmap_explode - assert_equal ['/', 'a', 'b', 'c'], '/a/b/c'.pathmap_explode - - if File::ALT_SEPARATOR - assert_equal ['c:.', 'a'], 'c:a'.pathmap_explode - assert_equal ['c:.', 'a', 'b'], 'c:a/b'.pathmap_explode - assert_equal ['c:.', 'a', 'b', 'c'], 'c:a/b/c'.pathmap_explode - assert_equal ['c:/', 'a'], 'c:/a'.pathmap_explode - assert_equal ['c:/', 'a', 'b'], 'c:/a/b'.pathmap_explode - assert_equal ['c:/', 'a', 'b', 'c'], 'c:/a/b/c'.pathmap_explode - end - end -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_path_map_partial.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_path_map_partial.rb deleted file mode 100644 index 566e681b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_path_map_partial.rb +++ /dev/null @@ -1,18 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakePathMapPartial < Rake::TestCase - def test_pathmap_partial - @path = "1/2/file" - def @path.call(n) - pathmap_partial(n) - end - assert_equal("1", @path.call(1)) - assert_equal("1/2", @path.call(2)) - assert_equal("1/2", @path.call(3)) - assert_equal(".", @path.call(0)) - assert_equal("2", @path.call(-1)) - assert_equal("1/2", @path.call(-2)) - assert_equal("1/2", @path.call(-3)) - end -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb deleted file mode 100644 index 7da702d0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb +++ /dev/null @@ -1,15 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/ext/pathname' - -class TestRakePathnameExtensions < Rake::TestCase - def test_ext_works_on_pathnames - pathname = Pathname.new("abc.foo") - assert_equal Pathname.new("abc.bar"), pathname.ext("bar") - end - - def test_path_map_works_on_pathnames - pathname = Pathname.new("this/is/a/dir/abc.rb") - assert_equal Pathname.new("abc.rb"), pathname.pathmap("%f") - assert_equal Pathname.new("this/is/a/dir"), pathname.pathmap("%d") - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_pseudo_status.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_pseudo_status.rb deleted file mode 100644 index 51b3fef3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_pseudo_status.rb +++ /dev/null @@ -1,21 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakePseudoStatus < Rake::TestCase - def test_with_zero_exit_status - s = Rake::PseudoStatus.new - assert_equal 0, s.exitstatus - assert_equal 0, s.to_i - assert_equal 0, s >> 8 - refute s.stopped? - assert s.exited? - end - - def test_with_99_exit_status - s = Rake::PseudoStatus.new(99) - assert_equal 99, s.exitstatus - assert_equal 25344, s.to_i - assert_equal 99, s >> 8 - refute s.stopped? - assert s.exited? - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb deleted file mode 100644 index 0485c4c8..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb +++ /dev/null @@ -1,20 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeRakeTestLoader < Rake::TestCase - - def test_pattern - orig_loaded_features = $:.dup - FileUtils.touch 'foo.rb' - FileUtils.touch 'test_a.rb' - FileUtils.touch 'test_b.rb' - - ARGV.replace %w[foo.rb test_*.rb -v] - - load File.join(@rake_lib, 'rake/rake_test_loader.rb') - - assert_equal %w[-v], ARGV - ensure - $:.replace orig_loaded_features - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_reduce_compat.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_reduce_compat.rb deleted file mode 100644 index d2952665..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_reduce_compat.rb +++ /dev/null @@ -1,26 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'open3' - -class TestRakeReduceCompat < Rake::TestCase - include RubyRunner - - def invoke_normal(task_name) - rake task_name.to_s - @out - end - - def test_no_deprecated_dsl - rakefile %q{ - task :check_task do - Module.new { p defined?(task) } - end - - task :check_file do - Module.new { p defined?(file) } - end - } - - assert_equal "nil", invoke_normal(:check_task).chomp - assert_equal "nil", invoke_normal(:check_file).chomp - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_require.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_require.rb deleted file mode 100644 index d229edbc..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_require.rb +++ /dev/null @@ -1,40 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeRequire < Rake::TestCase - - def test_can_load_rake_library - rakefile_rakelib - app = Rake::Application.new - - assert app.instance_eval { - rake_require("test2", ['rakelib'], []) - } - end - - def test_wont_reload_rake_library - rakefile_rakelib - app = Rake::Application.new - - paths = ['rakelib'] - loaded_files = [] - app.rake_require("test2", paths, loaded_files) - - assert ! app.instance_eval { - rake_require("test2", paths, loaded_files) - } - end - - def test_throws_error_if_library_not_found - rakefile_rakelib - - app = Rake::Application.new - ex = assert_raises(LoadError) { - assert app.instance_eval { - rake_require("testx", ['rakelib'], []) - } - } - assert_match(/(can *not|can't)\s+find/i, ex.message) - assert_match(/testx/, ex.message) - end -end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_rules.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_rules.rb deleted file mode 100644 index ece75e5d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_rules.rb +++ /dev/null @@ -1,388 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' - -class TestRakeRules < Rake::TestCase - include Rake - - SRCFILE = "abc.c" - SRCFILE2 = "xyz.c" - FTNFILE = "abc.f" - OBJFILE = "abc.o" - FOOFILE = "foo" - DOTFOOFILE = ".foo" - - def setup - super - - Task.clear - @runs = [] - end - - def test_multiple_rules1 - create_file(FTNFILE) - delete_file(SRCFILE) - delete_file(OBJFILE) - rule(/\.o$/ => ['.c']) do @runs << :C end - rule(/\.o$/ => ['.f']) do @runs << :F end - t = Task[OBJFILE] - t.invoke - Task[OBJFILE].invoke - assert_equal [:F], @runs - end - - def test_multiple_rules2 - create_file(FTNFILE) - delete_file(SRCFILE) - delete_file(OBJFILE) - rule(/\.o$/ => ['.f']) do @runs << :F end - rule(/\.o$/ => ['.c']) do @runs << :C end - Task[OBJFILE].invoke - assert_equal [:F], @runs - end - - def test_create_with_source - create_file(SRCFILE) - rule(/\.o$/ => ['.c']) do |t| - @runs << t.name - assert_equal OBJFILE, t.name - assert_equal SRCFILE, t.source - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_single_dependent - create_file(SRCFILE) - rule(/\.o$/ => '.c') do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_rule_can_be_created_by_string - create_file(SRCFILE) - rule '.o' => ['.c'] do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_rule_prereqs_can_be_created_by_string - create_file(SRCFILE) - rule '.o' => '.c' do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_plain_strings_as_dependents_refer_to_files - create_file(SRCFILE) - rule '.o' => SRCFILE do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_file_names_beginning_with_dot_can_be_tricked_into_referring_to_file - verbose(false) do - create_file('.foo') - rule '.o' => "./.foo" do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - end - - def test_file_names_beginning_with_dot_can_be_wrapped_in_lambda - verbose(false) do - - create_file(".foo") - rule '.o' => lambda { ".foo" } do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - .foo"], @runs - end - end - - def test_file_names_containing_percent_can_be_wrapped_in_lambda - verbose(false) do - create_file("foo%x") - rule '.o' => lambda { "foo%x" } do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - foo%x"], @runs - end - end - - def test_non_extension_rule_name_refers_to_file - verbose(false) do - create_file("abc.c") - rule "abc" => '.c' do |t| - @runs << t.name - end - Task["abc"].invoke - assert_equal ["abc"], @runs - end - end - - def test_pathmap_automatically_applies_to_name - verbose(false) do - create_file("zzabc.c") - rule ".o" => 'zz%{x,a}n.c' do |t| - @runs << "#{t.name} - #{t.source}" - end - Task["xbc.o"].invoke - assert_equal ["xbc.o - zzabc.c"], @runs - end - end - - def test_plain_strings_are_just_filenames - verbose(false) do - create_file("plainname") - rule ".o" => 'plainname' do |t| - @runs << "#{t.name} - #{t.source}" - end - Task["xbc.o"].invoke - assert_equal ["xbc.o - plainname"], @runs - end - end - - def test_rule_runs_when_explicit_task_has_no_actions - create_file(SRCFILE) - create_file(SRCFILE2) - delete_file(OBJFILE) - rule '.o' => '.c' do |t| - @runs << t.source - end - file OBJFILE => [SRCFILE2] - Task[OBJFILE].invoke - assert_equal [SRCFILE], @runs - end - - def test_close_matches_on_name_do_not_trigger_rule - create_file("x.c") - rule '.o' => ['.c'] do |t| - @runs << t.name - end - assert_raises(RuntimeError) { Task['x.obj'].invoke } - assert_raises(RuntimeError) { Task['x.xyo'].invoke } - end - - def test_rule_rebuilds_obj_when_source_is_newer - create_timed_files(OBJFILE, SRCFILE) - rule(/\.o$/ => ['.c']) do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [:RULE], @runs - end - - def test_rule_with_two_sources_runs_if_both_sources_are_present - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [:RULE], @runs - end - - def test_rule_with_two_sources_but_one_missing_does_not_run - create_timed_files(OBJFILE, SRCFILE) - delete_file(SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [], @runs - end - - def test_rule_with_two_sources_builds_both_sources - task 'x.aa' - task 'x.bb' - rule '.a' => '.aa' do - @runs << "A" - end - rule '.b' => '.bb' do - @runs << "B" - end - rule ".c" => ['.a', '.b'] do - @runs << "C" - end - Task["x.c"].invoke - assert_equal ["A", "B", "C"], @runs.sort - end - - def test_second_rule_runs_when_first_rule_doesnt - create_timed_files(OBJFILE, SRCFILE) - delete_file(SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE1 - end - rule OBJFILE => [lambda { SRCFILE }] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE2], @runs - end - - def test_second_rule_doest_run_if_first_triggers - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE1 - end - rule OBJFILE => [lambda { SRCFILE }] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE1], @runs - end - - def test_second_rule_doest_run_if_first_triggers_with_reversed_rules - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda { SRCFILE }] do - @runs << :RULE1 - end - rule OBJFILE => [lambda { SRCFILE }, lambda { SRCFILE2 }] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE1], @runs - end - - def test_rule_with_proc_dependent_will_trigger - mkdir_p("src/jw") - create_file("src/jw/X.java") - rule %r(classes/.*\.class) => [ - proc { |fn| fn.pathmap("%{classes,src}d/%n.java") } - ] do |task| - assert_equal task.name, 'classes/jw/X.class' - assert_equal task.source, 'src/jw/X.java' - @runs << :RULE - end - Task['classes/jw/X.class'].invoke - assert_equal [:RULE], @runs - ensure - rm_r("src", :verbose=>false) rescue nil - end - - def test_proc_returning_lists_are_flattened_into_prereqs - ran = false - mkdir_p("flatten") - create_file("flatten/a.txt") - task 'flatten/b.data' do |t| - ran = true - touch t.name, :verbose => false - end - rule '.html' => - proc { |fn| - [ - fn.ext("txt"), - "flatten/b.data" - ] - } do |task| - end - Task['flatten/a.html'].invoke - assert ran, "Should have triggered flattened dependency" - ensure - rm_r("flatten", :verbose=>false) rescue nil - end - - def test_recursive_rules_will_work_as_long_as_they_terminate - actions = [] - create_file("abc.xml") - rule '.y' => '.xml' do actions << 'y' end - rule '.c' => '.y' do actions << 'c'end - rule '.o' => '.c' do actions << 'o'end - rule '.exe' => '.o' do actions << 'exe'end - Task["abc.exe"].invoke - assert_equal ['y', 'c', 'o', 'exe'], actions - end - - def test_recursive_rules_that_dont_terminate_will_overflow - create_file("a.a") - prev = 'a' - ('b'..'z').each do |letter| - rule ".#{letter}" => ".#{prev}" do |t| puts "#{t.name}" end - prev = letter - end - ex = assert_raises(Rake::RuleRecursionOverflowError) { - Task["a.z"].invoke - } - assert_match(/a\.z => a.y/, ex.message) - end - - def test_rules_with_bad_dependents_will_fail - rule "a" => [1] do |t| puts t.name end - assert_raises(RuntimeError) do Task['a'].invoke end - end - - def test_string_rule_with_args - delete_file(OBJFILE) - create_file(SRCFILE) - rule '.o', [:a] => SRCFILE do |t, args| - assert_equal 'arg', args.a - end - Task[OBJFILE].invoke('arg') - end - - def test_regex_rule_with_args - delete_file(OBJFILE) - create_file(SRCFILE) - rule(/.o$/, [:a] => SRCFILE) do |t, args| - assert_equal 'arg', args.a - end - Task[OBJFILE].invoke('arg') - end - - def test_string_rule_with_args_and_lambda_prereq - delete_file(OBJFILE) - create_file(SRCFILE) - rule '.o', [:a] => [lambda{SRCFILE}]do |t, args| - assert_equal 'arg', args.a - end - Task[OBJFILE].invoke('arg') - end - - def test_regex_rule_with_args_and_lambda_prereq - delete_file(OBJFILE) - create_file(SRCFILE) - rule(/.o$/, [:a] => [lambda{SRCFILE}]) do |t, args| - assert_equal 'arg', args.a - end - Task[OBJFILE].invoke('arg') - end - - def test_rule_with_method_prereq - create_file(".foo") - obj = Object.new - def obj.find_prereq - ".foo" - end - rule '.o' => obj.method(:find_prereq) do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - .foo"], @runs - end - - def test_rule_with_one_arg_method_prereq - create_file(SRCFILE) - obj = Object.new - def obj.find_prereq(task_name) - task_name.ext(".c") - end - rule '.o' => obj.method(:find_prereq) do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - abc.c"], @runs - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_scope.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_scope.rb deleted file mode 100644 index ef06618b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_scope.rb +++ /dev/null @@ -1,44 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeScope < Rake::TestCase - include Rake - - def test_path_against_empty_scope - scope = Scope.make - assert_equal scope, Scope::EMPTY - assert_equal scope.path, "" - end - - def test_path_against_one_element - scope = Scope.make(:one) - assert_equal "one", scope.path - end - - def test_path_against_two_elements - scope = Scope.make(:inner, :outer) - assert_equal "outer:inner", scope.path - end - - def test_path_with_task_name - scope = Scope.make(:inner, :outer) - assert_equal "outer:inner:task", scope.path_with_task_name("task") - end - - def test_path_with_task_name_against_empty_scope - scope = Scope.make - assert_equal "task", scope.path_with_task_name("task") - end - - def test_conj_against_two_elements - scope = Scope.make.conj("B").conj("A") - assert_equal Scope.make("A", "B"), scope - end - - def test_trim - scope = Scope.make("A", "B") - assert_equal scope, scope.trim(0) - assert_equal scope.tail, scope.trim(1) - assert_equal scope.tail.tail, scope.trim(2) - assert_equal scope.tail.tail, scope.trim(3) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task.rb deleted file mode 100644 index 52e935b2..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task.rb +++ /dev/null @@ -1,393 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' - -class TestRakeTask < Rake::TestCase - include Rake - - def setup - super - - Task.clear - Rake::TaskManager.record_task_metadata = true - end - - def teardown - Rake::TaskManager.record_task_metadata = false - Rake.application.thread_pool.join - - super - end - - def test_create - arg = nil - t = task(:name) { |task| arg = task; 1234 } - assert_equal "name", t.name - assert_equal [], t.prerequisites - assert t.needed? - t.execute(0) - assert_equal t, arg - assert_nil t.source - assert_equal [], t.sources - assert_equal 1, t.locations.size - assert_match(/#{Regexp.quote(__FILE__)}/, t.locations.first) - end - - def test_inspect - t = task(:foo => [:bar, :baz]) - assert_equal " [bar, baz]>", t.inspect - end - - def test_invoke - runlist = [] - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - task(:t2) { |t| runlist << t.name } - task(:t3) { |t| runlist << t.name } - assert_equal ["t2", "t3"], t1.prerequisites - t1.invoke - assert_equal ["t2", "t3", "t1"], runlist - end - - def test_invoke_with_circular_dependencies - runlist = [] - t1 = task(:t1 => [:t2]) { |t| runlist << t.name; 3321 } - t2 = task(:t2 => [:t1]) { |t| runlist << t.name } - assert_equal ["t2"], t1.prerequisites - assert_equal ["t1"], t2.prerequisites - ex = assert_raises RuntimeError do - t1.invoke - end - assert_match(/circular dependency/i, ex.message) - assert_match(/t1 => t2 => t1/, ex.message) - end - - def test_dry_run_prevents_actions - Rake.application.options.dryrun = true - runlist = [] - t1 = task(:t1) { |t| runlist << t.name; 3321 } - _, err = capture_io { t1.invoke } - assert_match(/execute .*t1/i, err) - assert_match(/dry run/i, err) - refute_match(/invoke/i, err) - assert_equal [], runlist - ensure - Rake.application.options.dryrun = false - end - - def test_tasks_can_be_traced - Rake.application.options.trace = true - t1 = task(:t1) - _, err = capture_io { - t1.invoke - } - assert_match(/invoke t1/i, err) - assert_match(/execute t1/i, err) - ensure - Rake.application.options.trace = false - end - - def test_no_double_invoke - runlist = [] - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - task(:t2 => [:t3]) { |t| runlist << t.name } - task(:t3) { |t| runlist << t.name } - t1.invoke - assert_equal ["t3", "t2", "t1"], runlist - end - - def test_can_double_invoke_with_reenable - runlist = [] - t1 = task(:t1) { |t| runlist << t.name } - t1.invoke - t1.reenable - t1.invoke - assert_equal ["t1", "t1"], runlist - end - - def test_clear - desc "a task" - t = task("t" => "a") { } - t.clear - assert t.prerequisites.empty?, "prerequisites should be empty" - assert t.actions.empty?, "actions should be empty" - assert_nil t.comment, "comments should be empty" - end - - def test_clear_prerequisites - t = task("t" => ["a", "b"]) - assert_equal ['a', 'b'], t.prerequisites - t.clear_prerequisites - assert_equal [], t.prerequisites - end - - def test_clear_actions - t = task("t") { } - t.clear_actions - assert t.actions.empty?, "actions should be empty" - end - - def test_clear_comments - desc "the original foo" - task :foo => [:x] do - # Dummy action - end - - task(:foo).clear_comments - - desc "a slightly different foo" - task :foo - - assert_equal "a slightly different foo", task(:foo).comment - assert_equal ["x"], task(:foo).prerequisites - assert_equal 1, task(:foo).actions.size - end - - def test_find - task :tfind - assert_equal "tfind", Task[:tfind].name - ex = assert_raises(RuntimeError) { Task[:leaves] } - assert_equal "Don't know how to build task 'leaves' (see --tasks)", ex.message - end - - def test_defined - assert ! Task.task_defined?(:a) - task :a - assert Task.task_defined?(:a) - end - - def test_multi_invocations - runs = [] - p = proc do |t| runs << t.name end - task({ :t1 => [:t2, :t3] }, &p) - task({ :t2 => [:t3] }, &p) - task(:t3, &p) - Task[:t1].invoke - assert_equal ["t1", "t2", "t3"], runs.sort - end - - def test_task_list - task :t2 - task :t1 => [:t2] - assert_equal ["t1", "t2"], Task.tasks.map { |t| t.name } - end - - def test_task_gives_name_on_to_s - task :abc - assert_equal "abc", Task[:abc].to_s - end - - def test_symbols_can_be_prerequisites - task :a => :b - assert_equal ["b"], Task[:a].prerequisites - end - - def test_strings_can_be_prerequisites - task :a => "b" - assert_equal ["b"], Task[:a].prerequisites - end - - def test_arrays_can_be_prerequisites - task :a => ["b", "c"] - assert_equal ["b", "c"], Task[:a].prerequisites - end - - def test_filelists_can_be_prerequisites - task :a => FileList.new.include("b", "c") - assert_equal ["b", "c"], Task[:a].prerequisites - end - - def test_prerequisite_tasks_returns_tasks_not_strings - a = task :a => ["b", "c"] - b = task :b - c = task :c - assert_equal [b, c], a.prerequisite_tasks - end - - def test_prerequisite_tasks_fails_if_prerequisites_are_undefined - a = task :a => ["b", "c"] - task :b - assert_raises(RuntimeError) do - a.prerequisite_tasks - end - end - - def test_prerequisite_tasks_honors_namespaces - a = b = nil - namespace "X" do - a = task :a => ["b", "c"] - b = task :b - end - c = task :c - - assert_equal [b, c], a.prerequisite_tasks - end - - def test_all_prerequisite_tasks_includes_all_prerequisites - a = task :a => "b" - b = task :b => ["c", "d"] - c = task :c => "e" - d = task :d - e = task :e - - assert_equal [b, c, d, e], a.all_prerequisite_tasks.sort_by { |t| t.name } - end - - def test_all_prerequisite_tasks_does_not_include_duplicates - a = task :a => ["b", "c"] - b = task :b => "c" - c = task :c - - assert_equal [b, c], a.all_prerequisite_tasks.sort_by { |t| t.name } - end - - def test_all_prerequisite_tasks_includes_self_on_cyclic_dependencies - a = task :a => "b" - b = task :b => "a" - - assert_equal [a, b], a.all_prerequisite_tasks.sort_by { |t| t.name } - end - - def test_timestamp_returns_now_if_all_prereqs_have_no_times - a = task :a => ["b", "c"] - task :b - task :c - - assert_in_delta Time.now, a.timestamp, 0.1, 'computer too slow?' - end - - def test_timestamp_returns_latest_prereq_timestamp - a = task :a => ["b", "c"] - b = task :b - c = task :c - - now = Time.now - def b.timestamp() Time.now + 10 end - def c.timestamp() Time.now + 5 end - - assert_in_delta now, a.timestamp, 0.1, 'computer too slow?' - end - - def test_always_multitask - mx = Mutex.new - result = [] - - t_a = task(:a) do |t| - sleep 0.2 - mx.synchronize { result << t.name } - end - - t_b = task(:b) do |t| - mx.synchronize { result << t.name } - end - - t_c = task(:c => [:a, :b]) do |t| - mx.synchronize { result << t.name } - end - - t_c.invoke - - # task should always run in order - assert_equal ['a', 'b', 'c'], result - - [t_a, t_b, t_c].each { |t| t.reenable } - result.clear - - Rake.application.options.always_multitask = true - t_c.invoke - - # with multitask, task 'b' should grab the mutex first - assert_equal ['b', 'a', 'c'], result - end - - def test_investigation_output - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - task(:t2) - task(:t3) - out = t1.investigation - assert_match(/class:\s*Rake::Task/, out) - assert_match(/needed:\s*true/, out) - assert_match(/pre-requisites:\s*--t[23]/, out) - end - - # NOTE: Rail-ties uses comment=. - def test_comment_setting - t = task(:t, :name, :rev) - t.comment = "A Comment" - assert_equal "A Comment", t.comment - end - - def test_comments_with_sentences - desc "Comment 1. Comment 2." - t = task(:t, :name, :rev) - assert_equal "Comment 1", t.comment - end - - def test_comments_with_tabbed_sentences - desc "Comment 1.\tComment 2." - t = task(:t, :name, :rev) - assert_equal "Comment 1", t.comment - end - - def test_comments_with_decimal_points - desc "Revision 1.2.3." - t = task(:t, :name, :rev) - assert_equal "Revision 1.2.3", t.comment - end - - def test_comments_do_not_set - t = task(:t, :name, :rev) - assert_equal nil, t.comment - end - - def test_comments_is_nil - t = task(:t, :name, :rev) - t.comment = nil - assert_equal nil, t.comment - end - - def test_extended_comments - desc %{ - This is a comment. - - And this is the extended comment. - name -- Name of task to execute. - rev -- Software revision to use. - } - t = task(:t, :name, :rev) - assert_equal "[name,rev]", t.arg_description - assert_equal "This is a comment", t.comment - assert_match(/^\s*name -- Name/, t.full_comment) - assert_match(/^\s*rev -- Software/, t.full_comment) - assert_match(/\A\s*This is a comment\.$/, t.full_comment) - end - - def test_multiple_comments - desc "line one" - t = task(:t) - desc "line two" - task(:t) - assert_equal "line one / line two", t.comment - end - - def test_duplicate_comments - desc "line one" - t = task(:t) - desc "line one" - task(:t) - assert_equal "line one", t.comment - end - - def test_interspersed_duplicate_comments - desc "line one" - t = task(:t) - desc "line two" - task(:t) - desc "line one" - task(:t) - assert_equal "line one / line two", t.comment - end - - def test_source_is_first_prerequisite - t = task :t => ["preqA", "preqB"] - assert_equal "preqA", t.source - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb deleted file mode 100644 index 3cb5d9cf..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb +++ /dev/null @@ -1,119 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTaskArgumentParsing < Rake::TestCase - def setup - super - - @app = Rake::Application.new - end - - def test_name_only - name, args = @app.parse_task_string("name") - assert_equal "name", name - assert_equal [], args - end - - def test_empty_args - name, args = @app.parse_task_string("name[]") - assert_equal "name", name - assert_equal [], args - end - - def test_one_argument - name, args = @app.parse_task_string("name[one]") - assert_equal "name", name - assert_equal ["one"], args - end - - def test_two_arguments - name, args = @app.parse_task_string("name[one,two]") - assert_equal "name", name - assert_equal ["one", "two"], args - end - - def test_can_handle_spaces_between_args - name, args = @app.parse_task_string("name[one, two,\tthree , \tfour]") - assert_equal "name", name - assert_equal ["one", "two", "three", "four"], args - end - - def test_keeps_embedded_spaces - name, args = @app.parse_task_string("name[a one ana, two]") - assert_equal "name", name - assert_equal ["a one ana", "two"], args - end - - def test_can_handle_commas_in_args - name, args = @app.parse_task_string("name[one, two, three_a\\, three_b, four]") - assert_equal "name", name - assert_equal ["one", "two", "three_a, three_b", "four"], args - end - - def test_treat_blank_arg_as_empty_string - name, args = @app.parse_task_string("name[one,]") - assert_equal "name", name - assert_equal ["one", ""], args - - name, args = @app.parse_task_string("name[one,,two]") - assert_equal "name", name - assert_equal ["one", "", "two"], args - end - - def test_terminal_width_using_env - app = Rake::Application.new - app.terminal_columns = 1234 - - assert_equal 1234, app.terminal_width - end - - def test_terminal_width_using_stty - def @app.unix?() true end - def @app.dynamic_width_stty() 1235 end - def @app.dynamic_width_tput() 0 end - - assert_equal 1235, @app.terminal_width - end - - def test_terminal_width_using_tput - def @app.unix?() true end - def @app.dynamic_width_stty() 0 end - def @app.dynamic_width_tput() 1236 end - - assert_equal 1236, @app.terminal_width - end - - def test_terminal_width_using_hardcoded_80 - def @app.unix?() false end - - assert_equal 80, @app.terminal_width - end - - def test_terminal_width_with_failure - def @app.unix?() raise end - - assert_equal 80, @app.terminal_width - end - - def test_no_rakeopt - ARGV << '--trace' - app = Rake::Application.new - app.init - assert !app.options.silent - end - - def test_rakeopt_with_blank_options - ARGV << '--trace' - app = Rake::Application.new - app.init - assert !app.options.silent - end - - def test_rakeopt_with_silent_options - ENV['RAKEOPT'] = '-s' - app = Rake::Application.new - - app.init - - assert app.options.silent - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_arguments.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_arguments.rb deleted file mode 100644 index 369ecf6e..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_arguments.rb +++ /dev/null @@ -1,127 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -###################################################################### -class TestRakeTaskArguments < Rake::TestCase - def teardown - ENV.delete('rev') - ENV.delete('VER') - - super - end - - def test_empty_arg_list_is_empty - ta = Rake::TaskArguments.new([], []) - assert_equal({}, ta.to_hash) - end - - def test_multiple_values_in_args - ta = Rake::TaskArguments.new([:a, :b, :c], [:one, :two, :three]) - assert_equal({:a => :one, :b => :two, :c => :three}, ta.to_hash) - end - - def test_has_key - ta = Rake::TaskArguments.new([:a], [:one]) - assert(ta.has_key?(:a)) - refute(ta.has_key?(:b)) - end - - def test_to_s - ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3]) - assert_equal ta.to_hash.inspect, ta.to_s - assert_equal ta.to_hash.inspect, ta.inspect - end - - def test_enumerable_behavior - ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3]) - assert_equal [10, 20, 30], ta.map { |k, v| v * 10 }.sort - end - - def test_named_args - ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2]) - assert_equal 1, ta.aa - assert_equal 1, ta[:aa] - assert_equal 1, ta["aa"] - assert_equal 2, ta.bb - assert_nil ta.cc - end - - def test_args_knows_its_names - ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2]) - assert_equal ["aa", "bb"], ta.names - end - - def test_extra_names_are_nil - ta = Rake::TaskArguments.new(["aa", "bb", "cc"], [1, 2]) - assert_nil ta.cc - end - - def test_args_do_not_reference_env_values - ta = Rake::TaskArguments.new(["aa"], [1]) - ENV['rev'] = "1.2" - ENV['VER'] = "2.3" - assert_nil ta.rev - assert_nil ta.ver - end - - def test_creating_new_argument_scopes - parent = Rake::TaskArguments.new(['p'], [1]) - child = parent.new_scope(['c', 'p']) - assert_equal({:p=>1}, child.to_hash) - assert_equal 1, child.p - assert_equal 1, child["p"] - assert_equal 1, child[:p] - assert_nil child.c - end - - def test_child_hides_parent_arg_names - parent = Rake::TaskArguments.new(['aa'], [1]) - child = Rake::TaskArguments.new(['aa'], [2], parent) - assert_equal 2, child.aa - end - - def test_default_arguments_values_can_be_merged - ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"]) - ta.with_defaults({ :aa => 'default_val' }) - assert_equal 'default_val', ta[:aa] - assert_equal 'original_val', ta[:bb] - end - - def test_default_arguments_that_dont_match_names_are_ignored - ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"]) - ta.with_defaults({ "cc" => "default_val" }) - assert_nil ta[:cc] - end - - def test_all_and_extra_arguments_without_named_arguments - app = Rake::Application.new - _, args = app.parse_task_string("task[1,two,more]") - ta = Rake::TaskArguments.new([], args) - assert_equal [], ta.names - assert_equal ['1', 'two', 'more'], ta.to_a - assert_equal ['1', 'two', 'more'], ta.extras - end - - def test_all_and_extra_arguments_with_named_arguments - app = Rake::Application.new - _, args = app.parse_task_string("task[1,two,more,still more]") - ta = Rake::TaskArguments.new([:first, :second], args) - assert_equal [:first, :second], ta.names - assert_equal "1", ta[:first] - assert_equal "two", ta[:second] - assert_equal ['1', 'two', 'more', 'still more'], ta.to_a - assert_equal ['more', 'still more'], ta.extras - end - - def test_extra_args_with_less_than_named_arguments - app = Rake::Application.new - _, args = app.parse_task_string("task[1,two]") - ta = Rake::TaskArguments.new([:first, :second, :third], args) - assert_equal [:first, :second, :third], ta.names - assert_equal "1", ta[:first] - assert_equal "two", ta[:second] - assert_equal nil, ta[:third] - assert_equal ['1', 'two'], ta.to_a - assert_equal [], ta.extras - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_lib.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_lib.rb deleted file mode 100644 index 9f3f7e9d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_lib.rb +++ /dev/null @@ -1,9 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/tasklib' - -class TestRakeTaskLib < Rake::TestCase - def test_paste - tl = Rake::TaskLib.new - assert_equal :ab, tl.paste(:a, :b) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_manager.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_manager.rb deleted file mode 100644 index 1bcb7a74..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_manager.rb +++ /dev/null @@ -1,178 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTaskManager < Rake::TestCase - - def setup - super - - @tm = Rake::TestCase::TaskManager.new - end - - def test_create_task_manager - refute_nil @tm - assert_equal [], @tm.tasks - end - - def test_define_task - t = @tm.define_task(Rake::Task, :t) - assert_equal "t", t.name - assert_equal @tm, t.application - end - - def test_index - e = assert_raises RuntimeError do - @tm['bad'] - end - - assert_equal "Don't know how to build task 'bad' (see --tasks)", e.message - end - - def test_name_lookup - t = @tm.define_task(Rake::Task, :t) - assert_equal t, @tm[:t] - end - - def test_namespace_task_create - @tm.in_namespace("x") do - t = @tm.define_task(Rake::Task, :t) - assert_equal "x:t", t.name - end - assert_equal ["x:t"], @tm.tasks.map { |t| t.name } - end - - def test_define_namespaced_task - t = @tm.define_task(Rake::Task, 'n:a:m:e:t') - assert_equal Rake::Scope.make("e", "m", "a", "n"), t.scope - assert_equal "n:a:m:e:t", t.name - assert_equal @tm, t.application - end - - def test_define_namespace_in_namespace - t = nil - @tm.in_namespace("n") do - t = @tm.define_task(Rake::Task, 'a:m:e:t') - end - assert_equal Rake::Scope.make("e", "m", "a", "n"), t.scope - assert_equal "n:a:m:e:t", t.name - assert_equal @tm, t.application - end - - def test_anonymous_namespace - anon_ns = @tm.in_namespace(nil) do - t = @tm.define_task(Rake::Task, :t) - assert_equal "_anon_1:t", t.name - end - task = anon_ns[:t] - assert_equal "_anon_1:t", task.name - end - - def test_create_filetask_in_namespace - @tm.in_namespace("x") do - t = @tm.define_task(Rake::FileTask, "fn") - assert_equal "fn", t.name - end - - assert_equal ["fn"], @tm.tasks.map { |t| t.name } - end - - def test_namespace_yields_same_namespace_as_returned - yielded_namespace = nil - returned_namespace = @tm.in_namespace("x") do |ns| - yielded_namespace = ns - end - assert_equal returned_namespace, yielded_namespace - end - - def test_name_lookup_with_implicit_file_tasks - FileUtils.touch 'README.rdoc' - - t = @tm["README.rdoc"] - - assert_equal "README.rdoc", t.name - assert Rake::FileTask === t - end - - def test_name_lookup_with_nonexistent_task - assert_raises(RuntimeError) { - @tm["DOES NOT EXIST"] - } - end - - def test_name_lookup_in_multiple_scopes - aa = nil - bb = nil - xx = @tm.define_task(Rake::Task, :xx) - top_z = @tm.define_task(Rake::Task, :z) - @tm.in_namespace("a") do - aa = @tm.define_task(Rake::Task, :aa) - mid_z = @tm.define_task(Rake::Task, :z) - ns_d = @tm.define_task(Rake::Task, "n:t") - @tm.in_namespace("b") do - bb = @tm.define_task(Rake::Task, :bb) - bot_z = @tm.define_task(Rake::Task, :z) - - assert_equal Rake::Scope.make("b", "a"), @tm.current_scope - - assert_equal bb, @tm["a:b:bb"] - assert_equal aa, @tm["a:aa"] - assert_equal xx, @tm["xx"] - assert_equal bot_z, @tm["z"] - assert_equal mid_z, @tm["^z"] - assert_equal top_z, @tm["^^z"] - assert_equal top_z, @tm["^^^z"] # Over the top - assert_equal top_z, @tm["rake:z"] - end - - assert_equal Rake::Scope.make("a"), @tm.current_scope - - assert_equal bb, @tm["a:b:bb"] - assert_equal aa, @tm["a:aa"] - assert_equal xx, @tm["xx"] - assert_equal bb, @tm["b:bb"] - assert_equal aa, @tm["aa"] - assert_equal mid_z, @tm["z"] - assert_equal top_z, @tm["^z"] - assert_equal top_z, @tm["^^z"] # Over the top - assert_equal top_z, @tm["rake:z"] - assert_equal ns_d, @tm["n:t"] - assert_equal ns_d, @tm["a:n:t"] - end - - assert_equal Rake::Scope.make, @tm.current_scope - - assert_equal Rake::Scope.make, xx.scope - assert_equal Rake::Scope.make('a'), aa.scope - assert_equal Rake::Scope.make('b', 'a'), bb.scope - end - - def test_lookup_with_explicit_scopes - t1, t2, t3, s = (0...4).map { nil } - t1 = @tm.define_task(Rake::Task, :t) - @tm.in_namespace("a") do - t2 = @tm.define_task(Rake::Task, :t) - s = @tm.define_task(Rake::Task, :s) - @tm.in_namespace("b") do - t3 = @tm.define_task(Rake::Task, :t) - end - end - assert_equal t1, @tm[:t, Rake::Scope.make] - assert_equal t2, @tm[:t, Rake::Scope.make("a")] - assert_equal t3, @tm[:t, Rake::Scope.make("b", "a")] - assert_equal s, @tm[:s, Rake::Scope.make("b", "a")] - assert_equal s, @tm[:s, Rake::Scope.make("a")] - end - - def test_correctly_scoped_prerequisites_are_invoked - values = [] - @tm = Rake::Application.new - @tm.define_task(Rake::Task, :z) do values << "top z" end - @tm.in_namespace("a") do - @tm.define_task(Rake::Task, :z) do values << "next z" end - @tm.define_task(Rake::Task, :x => :z) - end - - @tm["a:x"].invoke - assert_equal ["next z"], values - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb deleted file mode 100644 index 43fa2ac4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb +++ /dev/null @@ -1,19 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTaskManagerArgumentResolution < Rake::TestCase - - def test_good_arg_patterns - assert_equal [:t, [], []], task(:t) - assert_equal [:t, [], [:x]], task(:t => :x) - assert_equal [:t, [], [:x, :y]], task(:t => [:x, :y]) - - assert_equal [:t, [:a, :b], []], task(:t, [:a, :b]) - assert_equal [:t, [:a, :b], [:x]], task(:t, [:a, :b] => :x) - assert_equal [:t, [:a, :b], [:x, :y]], task(:t, [:a, :b] => [:x, :y]) - end - - def task(*args) - tm = Rake::TestCase::TaskManager.new - tm.resolve_args(args) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb deleted file mode 100644 index 8646fc04..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb +++ /dev/null @@ -1,172 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTaskWithArguments < Rake::TestCase - include Rake - - def setup - super - - Task.clear - Rake::TaskManager.record_task_metadata = true - end - - def teardown - Rake::TaskManager.record_task_metadata = false - Rake.application.thread_pool.join - - super - end - - def test_no_args_given - t = task :t - assert_equal [], t.arg_names - end - - def test_args_given - t = task :t, :a, :b - assert_equal [:a, :b], t.arg_names - end - - def test_name_and_needs - t = task(:t => [:pre]) - assert_equal "t", t.name - assert_equal [], t.arg_names - assert_equal ["pre"], t.prerequisites - end - - def test_name_args_and_prereqs - t = task(:t, [:x, :y] => [:pre]) - assert_equal "t", t.name - assert_equal [:x, :y], t.arg_names - assert_equal ["pre"], t.prerequisites - end - - def test_arg_list_is_empty_if_no_args_given - t = task(:t) { |tt, args| assert_equal({}, args.to_hash) } - t.invoke(1, 2, 3) - end - - def test_tasks_can_access_arguments_as_hash - t = task :t, :a, :b, :c do |tt, args| - assert_equal({:a => 1, :b => 2, :c => 3}, args.to_hash) - assert_equal 1, args[:a] - assert_equal 2, args[:b] - assert_equal 3, args[:c] - assert_equal 1, args.a - assert_equal 2, args.b - assert_equal 3, args.c - end - t.invoke(1, 2, 3) - end - - def test_actions_of_various_arity_are_ok_with_args - notes = [] - t = task(:t, :x) do - notes << :a - end - t.enhance do | | - notes << :b - end - t.enhance do |task| - notes << :c - assert_kind_of Task, task - end - t.enhance do |t2, args| - notes << :d - assert_equal t, t2 - assert_equal({:x => 1}, args.to_hash) - end - t.invoke(1) - assert_equal [:a, :b, :c, :d], notes - end - - def test_arguments_are_passed_to_block - t = task(:t, :a, :b) { |tt, args| - assert_equal({ :a => 1, :b => 2 }, args.to_hash) - } - t.invoke(1, 2) - end - - def test_extra_parameters_are_ignored - t = task(:t, :a) { |tt, args| - assert_equal 1, args.a - assert_nil args.b - } - t.invoke(1, 2) - end - - def test_arguments_are_passed_to_all_blocks - counter = 0 - t = task :t, :a - task :t do |tt, args| - assert_equal 1, args.a - counter += 1 - end - task :t do |tt, args| - assert_equal 1, args.a - counter += 1 - end - t.invoke(1) - assert_equal 2, counter - end - - def test_block_with_no_parameters_is_ok - t = task(:t) { } - t.invoke(1, 2) - end - - def test_name_with_args - desc "T" - t = task(:tt, :a, :b) - assert_equal "tt", t.name - assert_equal "T", t.comment - assert_equal "[a,b]", t.arg_description - assert_equal "tt[a,b]", t.name_with_args - assert_equal [:a, :b], t.arg_names - end - - def test_named_args_are_passed_to_prereqs - value = nil - task(:pre, :rev) { |t, args| value = args.rev } - t = task(:t, [:name, :rev] => [:pre]) - t.invoke("bill", "1.2") - assert_equal "1.2", value - end - - def test_args_not_passed_if_no_prereq_names_on_task - task(:pre) { |t, args| - assert_equal({}, args.to_hash) - assert_equal "bill", args.name - } - t = task(:t, [:name, :rev] => [:pre]) - t.invoke("bill", "1.2") - end - - def test_args_not_passed_if_no_prereq_names_on_multitask - task(:pre) { |t, args| - assert_equal({}, args.to_hash) - assert_equal "bill", args.name - } - t = multitask(:t, [:name, :rev] => [:pre]) - t.invoke("bill", "1.2") - end - - def test_args_not_passed_if_no_arg_names - task(:pre, :rev) { |t, args| - assert_equal({}, args.to_hash) - } - t = task(:t => [:pre]) - t.invoke("bill", "1.2") - end - - def test_values_at - t = task(:pre, [:a, :b, :c]) { |task, args| - a, b, c = args.values_at(:a, :b, :c) - assert_equal %w[1 2 3], [a, b, c] - } - - t.invoke(*%w[1 2 3]) - - # HACK no assertions - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_test_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_test_task.rb deleted file mode 100644 index 5c4be797..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_test_task.rb +++ /dev/null @@ -1,146 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/testtask' - -class TestRakeTestTask < Rake::TestCase - include Rake - - def test_initialize - tt = Rake::TestTask.new do |t| end - refute_nil tt - assert_equal :test, tt.name - assert_equal ['lib'], tt.libs - assert_equal 'test/test*.rb', tt.pattern - assert_equal false, tt.verbose - assert Task.task_defined?(:test) - end - - def test_initialize_override - tt = Rake::TestTask.new(:example) do |t| - t.description = "Run example tests" - t.libs = ['src', 'ext'] - t.pattern = 'test/tc_*.rb' - t.verbose = true - end - refute_nil tt - assert_equal "Run example tests", tt.description - assert_equal :example, tt.name - assert_equal ['src', 'ext'], tt.libs - assert_equal 'test/tc_*.rb', tt.pattern - assert_equal true, tt.verbose - assert Task.task_defined?(:example) - end - - def test_file_list_env_test - ENV['TEST'] = 'testfile.rb' - tt = Rake::TestTask.new do |t| - t.pattern = '*' - end - - assert_equal ["testfile.rb"], tt.file_list.to_a - ensure - ENV.delete 'TEST' - end - - def test_libs_equals - test_task = Rake::TestTask.new do |t| - t.libs << ["A", "B"] - end - - path = %w[lib A B].join File::PATH_SEPARATOR - - assert_equal "-I\"#{path}\"", test_task.ruby_opts_string - end - - def test_libs_equals_empty - test_task = Rake::TestTask.new do |t| - t.libs = [] - end - - assert_equal '', test_task.ruby_opts_string - end - - def test_pattern_equals - tt = Rake::TestTask.new do |t| - t.pattern = '*.rb' - end - assert_equal ['*.rb'], tt.file_list.to_a - end - - def test_pattern_equals_test_files_equals - tt = Rake::TestTask.new do |t| - t.test_files = FileList['a.rb', 'b.rb'] - t.pattern = '*.rb' - end - assert_equal ['a.rb', 'b.rb', '*.rb'], tt.file_list.to_a - end - - def test_run_code_direct - test_task = Rake::TestTask.new do |t| - t.loader = :direct - end - - assert_equal '-e "ARGV.each{|f| require f}"', test_task.run_code - end - - def test_run_code_rake - spec = Gem::Specification.new 'rake', 0 - spec.loaded_from = File.join Gem::Specification.dirs.last, 'rake-0.gemspec' - rake, Gem.loaded_specs['rake'] = Gem.loaded_specs['rake'], spec - - test_task = Rake::TestTask.new do |t| - t.loader = :rake - end - - assert_match(/\A-I".*?" ".*?"\Z/, test_task.run_code) - ensure - Gem.loaded_specs['rake'] = rake - end - - def test_run_code_rake_default_gem - skip 'this ruby does not have default gems' unless - Gem::Specification.method_defined? :default_specifications_dir - - default_spec = Gem::Specification.new 'rake', 0 - default_spec.loaded_from = File.join Gem::Specification.default_specifications_dir, 'rake-0.gemspec' - begin - rake, Gem.loaded_specs['rake'] = Gem.loaded_specs['rake'], default_spec - - test_task = Rake::TestTask.new do |t| - t.loader = :rake - end - - assert_match(/\A(-I".*?" *)* ".*?"\Z/, test_task.run_code) - ensure - Gem.loaded_specs['rake'] = rake - end - end - - def test_run_code_testrb_ruby_1_8_2 - test_task = Rake::TestTask.new do |t| - t.loader = :testrb - end - - def test_task.ruby_version() '1.8.2' end - - assert_match(/^-S testrb +".*"$/, test_task.run_code) - end - - def test_run_code_testrb_ruby_1_8_6 - test_task = Rake::TestTask.new do |t| - t.loader = :testrb - end - - def test_task.ruby_version() '1.8.6' end - - assert_match(/^-S testrb +$/, test_task.run_code) - end - - def test_test_files_equals - tt = Rake::TestTask.new do |t| - t.test_files = FileList['a.rb', 'b.rb'] - end - - assert_equal ["a.rb", 'b.rb'], tt.file_list.to_a - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_thread_pool.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_thread_pool.rb deleted file mode 100644 index 35a1fe9d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_thread_pool.rb +++ /dev/null @@ -1,145 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'rake/thread_pool' - -class TestRakeTestThreadPool < Rake::TestCase - include Rake - - def test_pool_executes_in_current_thread_for_zero_threads - pool = ThreadPool.new(0) - f = pool.future { Thread.current } - pool.join - assert_equal Thread.current, f.value - end - - def test_pool_executes_in_other_thread_for_pool_of_size_one - pool = ThreadPool.new(1) - f = pool.future { Thread.current } - pool.join - refute_equal Thread.current, f.value - end - - def test_pool_executes_in_two_other_threads_for_pool_of_size_two - pool = ThreadPool.new(2) - threads = 2.times.map { - pool.future { - sleep 0.1 - Thread.current - } - }.each { |f| - f.value - } - - refute_equal threads[0], threads[1] - refute_equal Thread.current, threads[0] - refute_equal Thread.current, threads[1] - ensure - pool.join - end - - def test_pool_creates_the_correct_number_of_threads - pool = ThreadPool.new(2) - threads = Set.new - t_mutex = Mutex.new - 10.times.each do - pool.future do - sleep 0.02 - t_mutex.synchronize { threads << Thread.current } - end - end - pool.join - assert_equal 2, threads.count - end - - def test_pool_future_does_not_duplicate_arguments - pool = ThreadPool.new(2) - obj = Object.new - captured = nil - pool.future(obj) { |var| captured = var } - pool.join - assert_equal obj, captured - end - - def test_pool_join_empties_queue - pool = ThreadPool.new(2) - repeat = 25 - repeat.times { - pool.future do - repeat.times { - pool.future do - repeat.times { - pool.future do end - } - end - } - end - } - - pool.join - assert_equal( - true, - pool.__send__(:__queue__).empty?, - "queue should be empty") - end - - CustomError = Class.new(StandardError) - - # test that throwing an exception way down in the blocks propagates - # to the top - def test_exceptions - pool = ThreadPool.new(10) - - deep_exception_block = lambda do |count| - raise CustomError if count < 1 - pool.future(count - 1, &deep_exception_block).value - end - - assert_raises(CustomError) do - pool.future(2, &deep_exception_block).value - end - ensure - pool.join - end - - def test_pool_prevents_deadlock - pool = ThreadPool.new(5) - - common_dependency_a = pool.future { sleep 0.2 } - futures_a = 10.times.map { - pool.future { - common_dependency_a.value - sleep(rand() * 0.01) - } - } - - common_dependency_b = pool.future { futures_a.each { |f| f.value } } - futures_b = 10.times.map { - pool.future { - common_dependency_b.value - sleep(rand() * 0.01) - } - } - - futures_b.each { |f| f.value } - pool.join - end - - def test_pool_reports_correct_results - pool = ThreadPool.new(7) - - a = 18 - b = 5 - c = 3 - - result = a.times.map do - pool.future do - b.times.map do - pool.future { sleep rand * 0.001; c } - end.reduce(0) { |m, f| m + f.value } - end - end.reduce(0) { |m, f| m + f.value } - - assert_equal a * b * c, result - pool.join - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_top_level_functions.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_top_level_functions.rb deleted file mode 100644 index fee702dc..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_top_level_functions.rb +++ /dev/null @@ -1,71 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeTopLevelFunctions < Rake::TestCase - - def setup - super - - @app = Object.new - - def @app.called - @called - end - - def @app.method_missing(*a, &b) - @called ||= [] - @called << [a, b] - nil - end - - Rake.application = @app - end - - def test_namespace - block = proc do end - - namespace("xyz", &block) - - expected = [ - [[:in_namespace, 'xyz'], block] - ] - - assert_equal expected, @app.called - end - - def test_import - import('x', 'y', 'z') - - expected = [ - [[:add_import, 'x'], nil], - [[:add_import, 'y'], nil], - [[:add_import, 'z'], nil], - ] - - assert_equal expected, @app.called - end - - def test_when_writing - out, = capture_io do - when_writing("NOTWRITING") do - puts "WRITING" - end - end - assert_equal "WRITING\n", out - end - - def test_when_not_writing - Rake::FileUtilsExt.nowrite_flag = true - _, err = capture_io do - when_writing("NOTWRITING") do - puts "WRITING" - end - end - assert_equal "DRYRUN: NOTWRITING\n", err - ensure - Rake::FileUtilsExt.nowrite_flag = false - end - - def test_missing_other_constant - assert_raises(NameError) do Object.const_missing(:Xyz) end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_win32.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_win32.rb deleted file mode 100644 index fc2746a0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_rake_win32.rb +++ /dev/null @@ -1,72 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TestRakeWin32 < Rake::TestCase - - Win32 = Rake::Win32 - - def test_win32_system_dir_uses_home_if_defined - ENV['HOME'] = 'C:\\HP' - - assert_equal "C:/HP/Rake", Win32.win32_system_dir - end - - def test_win32_system_dir_uses_homedrive_homepath_when_no_home_defined - ENV['HOME'] = nil - ENV['HOMEDRIVE'] = 'C:' - ENV['HOMEPATH'] = '\\HP' - - assert_equal "C:/HP/Rake", Win32.win32_system_dir - end - - def test_win32_system_dir_uses_appdata_when_no_home_or_home_combo - ENV['APPDATA'] = "C:\\Documents and Settings\\HP\\Application Data" - ENV['HOME'] = nil - ENV['HOMEDRIVE'] = nil - ENV['HOMEPATH'] = nil - - assert_equal "C:/Documents and Settings/HP/Application Data/Rake", - Win32.win32_system_dir - end - - def test_win32_system_dir_fallback_to_userprofile_otherwise - ENV['HOME'] = nil - ENV['HOMEDRIVE'] = nil - ENV['HOMEPATH'] = nil - ENV['APPDATA'] = nil - ENV['USERPROFILE'] = "C:\\Documents and Settings\\HP" - - assert_equal "C:/Documents and Settings/HP/Rake", Win32.win32_system_dir - end - - def test_win32_system_dir_nil_of_no_env_vars - ENV['APPDATA'] = nil - ENV['HOME'] = nil - ENV['HOMEDRIVE'] = nil - ENV['HOMEPATH'] = nil - ENV['RAKE_SYSTEM'] = nil - ENV['USERPROFILE'] = nil - - assert_raises(Rake::Win32::Win32HomeError) do - Win32.win32_system_dir - end - end - - def test_win32_backtrace_with_different_case - ex = nil - begin - raise 'test exception' - rescue => ex - end - - ex.set_backtrace ['abc', 'rakefile'] - - rake = Rake::Application.new - rake.options.trace = true - rake.instance_variable_set(:@rakefile, 'Rakefile') - - _, err = capture_io { rake.display_error_message(ex) } - - assert_match(/rakefile/, err) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_thread_history_display.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_thread_history_display.rb deleted file mode 100644 index bb5879cf..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_thread_history_display.rb +++ /dev/null @@ -1,101 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -require 'rake/thread_history_display' - -class TestThreadHistoryDisplay < Rake::TestCase - def setup - super - @time = 1_000_000 - @stats = [] - @display = Rake::ThreadHistoryDisplay.new(@stats) - end - - def test_banner - out, _ = capture_io do - @display.show - end - assert_match(/Job History/i, out) - end - - def test_item_queued - @stats << event(:item_queued, :item_id => 123) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +item_queued +item_id:1$/, out) - end - - def test_item_dequeued - @stats << event(:item_dequeued, :item_id => 123) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +item_dequeued +item_id:1$/, out) - end - - def test_multiple_items - @stats << event(:item_queued, :item_id => 123) - @stats << event(:item_queued, :item_id => 124) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +item_queued +item_id:1$/, out) - assert_match(/^ *1000001 +A +item_queued +item_id:2$/, out) - end - - def test_waiting - @stats << event(:waiting, :item_id => 123) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +waiting +item_id:1$/, out) - end - - def test_continue - @stats << event(:continue, :item_id => 123) - out, _ = capture_io do - @display.show - end - assert_match(/^ *1000000 +A +continue +item_id:1$/, out) - end - - def test_thread_deleted - @stats << event( - :thread_deleted, - :deleted_thread => 123_456, - :thread_count => 12) - out, _ = capture_io do - @display.show - end - assert_match( - /^ *1000000 +A +thread_deleted( +deleted_thread:B| +thread_count:12){2}$/, - out) - end - - def test_thread_created - @stats << event( - :thread_created, - :new_thread => 123_456, - :thread_count => 13) - out, _ = capture_io do - @display.show - end - assert_match( - /^ *1000000 +A +thread_created( +new_thread:B| +thread_count:13){2}$/, - out) - end - - private - - def event(type, data = {}) - result = { - :event => type, - :time => @time / 1_000_000.0, - :data => data, - :thread => Thread.current.object_id - } - @time += 1 - result - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_trace_output.rb b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_trace_output.rb deleted file mode 100644 index f9aead98..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/test/test_trace_output.rb +++ /dev/null @@ -1,52 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'stringio' - -class TestTraceOutput < Rake::TestCase - include Rake::TraceOutput - - class PrintSpy - attr_reader :result, :calls - - def initialize - @result = "" - @calls = 0 - end - - def print(string) - @result << string - @calls += 1 - end - end - - def test_trace_issues_single_io_for_args_with_empty_args - spy = PrintSpy.new - trace_on(spy) - assert_equal "\n", spy.result - assert_equal 1, spy.calls - end - - def test_trace_issues_single_io_for_args_multiple_strings - spy = PrintSpy.new - trace_on(spy, "HI\n", "LO") - assert_equal "HI\nLO\n", spy.result - assert_equal 1, spy.calls - end - - def test_trace_handles_nil_objects - spy = PrintSpy.new - trace_on(spy, "HI\n", nil, "LO") - assert_equal "HI\nLO\n", spy.result - assert_equal 1, spy.calls - end - - def test_trace_issues_single_io_for_args_multiple_strings_and_alternate_sep - old_sep = $\ - $\ = "\r" - spy = PrintSpy.new - trace_on(spy, "HI\r", "LO") - assert_equal "HI\rLO\r", spy.result - assert_equal 1, spy.calls - ensure - $\ = old_sep - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/specifications/rake-10.5.0.gemspec b/spec/sample_bundler/vendor/bundle/jruby/2.3.0/specifications/rake-10.5.0.gemspec deleted file mode 100644 index 46849a80..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/specifications/rake-10.5.0.gemspec +++ /dev/null @@ -1,43 +0,0 @@ -# -*- encoding: utf-8 -*- -# stub: rake 10.5.0 ruby lib - -Gem::Specification.new do |s| - s.name = "rake".freeze - s.version = "10.5.0" - - s.required_rubygems_version = Gem::Requirement.new(">= 1.3.2".freeze) if s.respond_to? :required_rubygems_version= - s.require_paths = ["lib".freeze] - s.authors = ["Eric Hodel".freeze, "Jim Weirich".freeze] - s.date = "2016-01-13" - s.description = "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are\nspecified in standard Ruby syntax.\n\nRake has the following features:\n\n* Rakefiles (rake's version of Makefiles) are completely defined in\n standard Ruby syntax. No XML files to edit. No quirky Makefile\n syntax to worry about (is that a tab or a space?)\n\n* Users can specify tasks with prerequisites.\n\n* Rake supports rule patterns to synthesize implicit tasks.\n\n* Flexible FileLists that act like arrays but know about manipulating\n file names and paths.\n\n* A library of prepackaged tasks to make building rakefiles easier. For example,\n tasks for building tarballs and publishing to FTP or SSH sites. (Formerly\n tasks for building RDoc and Gems were included in rake but they're now\n available in RDoc and RubyGems respectively.)\n\n* Supports parallel execution of tasks.".freeze - s.email = ["drbrain@segment7.net".freeze, "".freeze] - s.executables = ["rake".freeze] - s.extra_rdoc_files = ["CONTRIBUTING.rdoc".freeze, "History.rdoc".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "doc/command_line_usage.rdoc".freeze, "doc/glossary.rdoc".freeze, "doc/proto_rake.rdoc".freeze, "doc/rakefile.rdoc".freeze, "doc/rational.rdoc".freeze, "doc/release_notes/rake-0.4.14.rdoc".freeze, "doc/release_notes/rake-0.4.15.rdoc".freeze, "doc/release_notes/rake-0.5.0.rdoc".freeze, "doc/release_notes/rake-0.5.3.rdoc".freeze, "doc/release_notes/rake-0.5.4.rdoc".freeze, "doc/release_notes/rake-0.6.0.rdoc".freeze, "doc/release_notes/rake-0.7.0.rdoc".freeze, "doc/release_notes/rake-0.7.1.rdoc".freeze, "doc/release_notes/rake-0.7.2.rdoc".freeze, "doc/release_notes/rake-0.7.3.rdoc".freeze, "doc/release_notes/rake-0.8.0.rdoc".freeze, "doc/release_notes/rake-0.8.2.rdoc".freeze, "doc/release_notes/rake-0.8.3.rdoc".freeze, "doc/release_notes/rake-0.8.4.rdoc".freeze, "doc/release_notes/rake-0.8.5.rdoc".freeze, "doc/release_notes/rake-0.8.6.rdoc".freeze, "doc/release_notes/rake-0.8.7.rdoc".freeze, "doc/release_notes/rake-0.9.0.rdoc".freeze, "doc/release_notes/rake-0.9.1.rdoc".freeze, "doc/release_notes/rake-0.9.2.2.rdoc".freeze, "doc/release_notes/rake-0.9.2.rdoc".freeze, "doc/release_notes/rake-0.9.3.rdoc".freeze, "doc/release_notes/rake-0.9.4.rdoc".freeze, "doc/release_notes/rake-0.9.5.rdoc".freeze, "doc/release_notes/rake-0.9.6.rdoc".freeze, "doc/release_notes/rake-10.0.0.rdoc".freeze, "doc/release_notes/rake-10.0.1.rdoc".freeze, "doc/release_notes/rake-10.0.2.rdoc".freeze, "doc/release_notes/rake-10.0.3.rdoc".freeze, "doc/release_notes/rake-10.1.0.rdoc".freeze, "MIT-LICENSE".freeze] - s.files = ["CONTRIBUTING.rdoc".freeze, "History.rdoc".freeze, "MIT-LICENSE".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "bin/rake".freeze, "doc/command_line_usage.rdoc".freeze, "doc/glossary.rdoc".freeze, "doc/proto_rake.rdoc".freeze, "doc/rakefile.rdoc".freeze, "doc/rational.rdoc".freeze, "doc/release_notes/rake-0.4.14.rdoc".freeze, "doc/release_notes/rake-0.4.15.rdoc".freeze, "doc/release_notes/rake-0.5.0.rdoc".freeze, "doc/release_notes/rake-0.5.3.rdoc".freeze, "doc/release_notes/rake-0.5.4.rdoc".freeze, "doc/release_notes/rake-0.6.0.rdoc".freeze, "doc/release_notes/rake-0.7.0.rdoc".freeze, "doc/release_notes/rake-0.7.1.rdoc".freeze, "doc/release_notes/rake-0.7.2.rdoc".freeze, "doc/release_notes/rake-0.7.3.rdoc".freeze, "doc/release_notes/rake-0.8.0.rdoc".freeze, "doc/release_notes/rake-0.8.2.rdoc".freeze, "doc/release_notes/rake-0.8.3.rdoc".freeze, "doc/release_notes/rake-0.8.4.rdoc".freeze, "doc/release_notes/rake-0.8.5.rdoc".freeze, "doc/release_notes/rake-0.8.6.rdoc".freeze, "doc/release_notes/rake-0.8.7.rdoc".freeze, "doc/release_notes/rake-0.9.0.rdoc".freeze, "doc/release_notes/rake-0.9.1.rdoc".freeze, "doc/release_notes/rake-0.9.2.2.rdoc".freeze, "doc/release_notes/rake-0.9.2.rdoc".freeze, "doc/release_notes/rake-0.9.3.rdoc".freeze, "doc/release_notes/rake-0.9.4.rdoc".freeze, "doc/release_notes/rake-0.9.5.rdoc".freeze, "doc/release_notes/rake-0.9.6.rdoc".freeze, "doc/release_notes/rake-10.0.0.rdoc".freeze, "doc/release_notes/rake-10.0.1.rdoc".freeze, "doc/release_notes/rake-10.0.2.rdoc".freeze, "doc/release_notes/rake-10.0.3.rdoc".freeze, "doc/release_notes/rake-10.1.0.rdoc".freeze] - s.homepage = "https://github.com/ruby/rake".freeze - s.licenses = ["MIT".freeze] - s.rdoc_options = ["--main".freeze, "README.rdoc".freeze] - s.required_ruby_version = Gem::Requirement.new(">= 1.8.7".freeze) - s.rubygems_version = "2.6.4".freeze - s.summary = "Rake is a Make-like program implemented in Ruby".freeze - - s.installed_by_version = "2.6.4" if s.respond_to? :installed_by_version - - if s.respond_to? :specification_version then - s.specification_version = 4 - - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_development_dependency(%q.freeze, ["~> 5.8"]) - s.add_development_dependency(%q.freeze, ["~> 4.0"]) - s.add_development_dependency(%q.freeze, ["~> 3.14"]) - else - s.add_dependency(%q.freeze, ["~> 5.8"]) - s.add_dependency(%q.freeze, ["~> 4.0"]) - s.add_dependency(%q.freeze, ["~> 3.14"]) - end - else - s.add_dependency(%q.freeze, ["~> 5.8"]) - s.add_dependency(%q.freeze, ["~> 4.0"]) - s.add_dependency(%q.freeze, ["~> 3.14"]) - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/bin/rake b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/bin/rake similarity index 81% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/bin/rake rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/bin/rake index e5a537e5..bb5b395d 100755 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/bin/rake +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/bin/rake @@ -19,4 +19,9 @@ if ARGV.first end end +if Gem.respond_to?(:activate_bin_path) load Gem.activate_bin_path('rake', 'rake', version) +else +gem "rake", version +load Gem.bin_path("rake", "rake", version) +end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/cache/rake-12.3.3.gem b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/cache/rake-12.3.3.gem new file mode 100644 index 0000000000000000000000000000000000000000..e21bbafea0ac6227670301cc171d1a078b28f9f2 GIT binary patch literal 87040 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 NN5EhF!s$z%h})l20_>C&_6betcqd;`nlkZ(VKt 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 xx4`C=ugj)*i$_1Nb@9^O!{A}+>{j)MaZgKx= v1.2.0 which has a breaking change on formatters. + Pull request #262 by FUJI Goro. + +==== Enhancements: + +* Don't run task if it depends on already invoked but failed task. + Pull request #252 by Gonzalo Rodriguez. +* Make space trimming consistent for all task arguments. + Pull request #259 by Gonzalo Rodriguez. +* Removes duplicated inclusion of Rake::DSL in tests. + Pull request #254 by Gonzalo Rodriguez. +* Re-raise a LoadError that didn't come from require in the test loader. + Pull request #250 by Dylan Thacker-Smith. + +=== 12.3.0 + +==== Compatibility Changes + +* Bump `required_ruby_version` to Ruby 2.0.0. Rake has already + removed support for Ruby 1.9.x. + +==== Enhancements: + +* Support `test-bundled-gems` task on ruby core. + +=== 12.2.1 + +==== Bug fixes + +* Fixed to break Capistrano::Application on capistrano3. + +=== 12.2.0 + +==== Enhancements: + +* Make rake easier to use as a library + Pull request #211 by @drbrain +* Fix quadratic performance in FileTask#out_of_date? + Pull request #224 by @doudou +* Clarify output when printing nested exception traces + Pull request #232 by @urbanautomaton + +==== Bug fixes + +* Account for a file that match 2 or more patterns. + Pull request #231 by @styd + +=== 12.1.0 + +==== Enhancements: + +* Added did_you_mean feature for invalid rake task. + Pull request #221 by @xtina-starr +* Enabled to dependency chained by extensions. Pull request #39 by Petr Skocik. +* Make all of string literals to frozen objects on Ruby 2.4 or later. + +==== Bug fixes + +* Typo fixes in rakefile.rdoc. Pull request #180 by Yuta Kurotaki. +* Fix unexpected behavior of file task with dryrun option. + Pull request #183 by @aycabta. +* Make LoadError from running tests more obvious. Pull request #195 + by Eric Hodel. +* Fix unexpected TypeError with hash style option. Pull request #202 + by Kuniaki IGARASHI. + +=== 12.0.0 + +==== Compatibility Changes + +* Removed arguments on clear #157 by Jesse Bowes +* Removed `rake/contrib` packages. These are extracted to `rake-contrib` gem. +* Removed deprecated method named `last\_comment`. + +==== Enhancements: + +* Re-use trace option on `cleanup` task. #164 by Brian Henderson +* Actions adore keyword arguments #174 by Josh Cheek +* Rake::TaskArguments#key? alias of #has_key? #175 by Paul Annesley + +=== 11.3.0 / 2016-09-20 + +==== Enhancements: + +* Remove to reference `Fixnum` constant. Pull request #160 by nobu + +=== 11.2.2 / 2016-06-12 + +==== Bug fixes + +* Fix unexpected behavior with multiple dependencies on Rake::TestTask + +=== 11.2.1 / 2016-06-12 + +==== Bug fixes + +* Fix regression of dependencies handling on Rake::TestTask. Report #139 + +=== 11.2.0 / 2016-06-11 + +==== Bug fixes + +* Fix unexpected cut-out behavior on task description using triple dots + and exclamation. Report #106 from Stephan Kämper and Pull request #134 by Lee +* Fix empty argument assignment with `with_defaults` option. Pull request #135 + by bakunyo +* Ignore to use `hwprefs` on Darwin platform. Use sysctl now. Report #128 + +==== Enhancements + +* Spawn options for sh Pull equest #138 by Eric Hodel. +* Allow to specify dependencies(prerequisites) for Rake::TestTask + Pull request #117 by Tim Maslyuchenko +* Use Bundler task instead of hoe for gem release. +* Remove explicitly load to rubygems for Ruby 1.8. +* Unify to declare `Rake::VERSION`. +* Support xz format for PackageTask. + +=== 11.1.2 / 2016-03-28 + +==== Bug fixes + +* Remove `-W` option when Rake::TestTask#verbose enabled. It's misunderstanding + specification change with Rake 11. Partly revert #67 + +=== 11.1.1 / 2016-03-14 + +==== Bug fixes + +* Use `-W` instead of `--verbose` when Rake::TestTask#verbose enabled. + JRuby doesn't have `--verbose` option. + +=== 11.1.0 / 2016-03-11 + +==== Compatibility Changes + +* Revert to remove `last\_comment`. It will remove Rake 12. + +=== 11.0.1 / 2016-03-09 + +==== Bug fixes + +* Fixed packaging manifest. + +=== 11.0.0 / 2016-03-09 + +==== Bug fixes + +* Correctly handle bad encoding in exception messages. Pull request #113 + by Tomer Brisker +* Fix verbose option at TestTask. Pull request #67 by Mike Blumtritt + +==== Enhancements + +* Make FileList#exclude more analogous to FileList#include. +* Use IO.open instead of Open3.popen3 for CPU counter. +* Make Rake::Task#already_invoked publicly accessible. + Pull request #93 by Joe Rafaniello +* Lookup prerequisites with same name outside of scope instead of + matching self. Pull request #96 by Sandy Vanderbleek +* Make FileList#pathmap behave like String#pathmap. + Pull request #61 by Daniel Tamai +* Add fetch method to task arguments. + Pull request #12 by Chris Keathley +* Use ruby warnings by default. Pull request #97 by Harold Giménez + +==== Compatibility Changes + +* Removed to support Ruby 1.8.x +* Removed constant named `RAKEVERSION` +* Removed Rake::AltSystem +* Removed Rake::RubyForgePublisher +* Removed Rake::TaskManager#last\_comment. Use last\_description. +* Removed Rake::TaskLib#paste +* Removed Top-level SshDirPublisher, SshFreshDirPublisher, SshFilePublisher + and CompositePublisher from lib/rake/contrib/publisher.rb +* Removed "rake/runtest.rb" + +=== 10.5.0 / 2016-01-13 + +==== Enhancements + +* Removed monkey patching for Ruby 1.8. Pull request #46 by Pablo Herrero. +* Inheritance class of Rake::FileList returns always self class. + Pull request #74 by Thomas Scholz + +=== 10.4.2 / 2014-12-02 + +==== Bug fixes + +* Rake no longer edits ARGV. This allows you to re-exec rake from a rake + task. Pull requset #9 by Matt Palmer. +* Documented how Rake::DSL#desc handles sentences in task descriptions. + Issue #7 by Raza Sayed. +* Fixed test error on 1.9.3 with legacy RubyGems. Issue #8 by Matt Palmer. +* Deleted duplicated History entry. Pull request #10 by Yuji Yamamoto. + +=== 10.4.1 / 2014-12-01 + +==== Bug fixes + +* Reverted fix for #277 as it caused numerous issues for rake users. + rails/spring issue #366 by Gustavo Dutra. + +=== 10.4.0 / 2014-11-22 + +==== Enhancements + +* Upgraded to minitest 5. Pull request #292 by Teo Ljungberg. +* Added support for Pathname in rake tasks. Pull request #271 by Randy + Coulman. +* Rake now ignores falsy dependencies which allows for easier programmatic + creation of tasks. Pull request #273 by Manav. +* Rake no longer edits ARGV. This allows you to re-exec rake from a rake + task. Issue #277 by Matt Palmer. +* Etc.nprocessors is used for counting the number of CPUs. + +==== Bug fixes + +* Updated rake manpage. Issue #283 by Nathan Long, pull request #291 by + skittleys. +* Add Rake::LATE to allow rebuilding of files that depend on deleted files. + Bug #286, pull request #287 by David Grayson. +* Fix relinking of files when repackaging. Bug #276 by Muenze. +* Fixed some typos. Pull request #280 by Jed Northridge. +* Try counting CPUs via cpuinfo if host_os was not matched. Pull request + #282 by Edouard B. + +=== 10.3.2 / 2014-05-15 + +==== Bug fixes + +* Rake no longer infinitely loops when showing exception causes that refer to + each other. Bug #272 by Chris Bandy. +* Fixed documentation typos. Bug #275 by Jake Worth. + +=== 10.3.1 / 2014-04-17 + +==== Bug fixes + +* Really stop reporting an error when cleaning already-deleted files. Pull + request #269 by Randy Coulman +* Fixed infinite loop when cleaning already-deleted files on windows. + +=== 10.3 / 2014-04-15 + +==== Enhancements + +* Added --build-all option to rake which treats all file prerequisites as + out-of-date. Pull request #254 by Andrew Gilbert. +* Added Rake::NameSpace#scope. Issue #263 by Jon San Miguel. + +==== Bug fixes + +* Suppress org.jruby package files in rake error messages for JRuby users. + Issue #213 by Charles Nutter. +* Fixed typo, removed extra "h". Pull request #267 by Hsing-Hui Hsu. +* Rake no longer reports an error when cleaning already-deleted files. Pull + request #266 by Randy Coulman. +* Consume stderr while determining CPU count to avoid hang. Issue #268 by + Albert Sun. + +=== 10.2.2 / 2014-03-27 + +==== Bug fixes + +* Restored Ruby 1.8.7 compatibility + +=== 10.2.1 / 2014-03-25 + +==== Bug fixes + +* File tasks including a ':' are now top-level tasks again. Issue #262 by + Josh Holtrop. +* Use sysctl for CPU count for all BSDs. Pull request #261 by Joshua Stein. +* Fixed CPU detection for unknown platforms. + +=== 10.2.0 / 2014-03-24 + +==== Enhancements + +* Rake now requires Ruby 1.9 or newer. For me, this is a breaking change, but + it seems that Jim planned to release it with Rake 10.2. See also pull + request #247 by Philip Arndt. +* Rake now allows you to declare tasks under a namespace like: + + task 'a:b' do ... end + + Pull request #232 by Judson Lester. +* Task#source defaults to the first prerequisite in non-rule tasks. Pull + request #215 by Avdi Grimm. +* Rake now automatically rebuilds and reloads imported files. Pull request + #209 by Randy Coulman. +* The rake task arguments can contain escaped commas. Pull request #214 by + Filip Hrbek. +* Rake now prints the exception class on errors. Patch #251 by David Cornu. + +==== Bug fixes + +* Fixed typos. Pull request #256 by Valera Rozuvan, #250 via Jake Worth, #260 + by Zachary Scott. +* Fixed documentation for calling tasks with arguments. Pull request #235 by + John Varghese. +* Clarified `rake -f` usage message. Pull request #252 by Marco Pfatschbacher. +* Fixed a test failure on windows. Pull request #231 by Hiroshi Shirosaki. +* Fixed corrupted rake.1.gz. Pull request #225 by Michel Boaventura. +* Fixed bug in can\_detect\_signals? in test. Patch from #243 by Alexey + Borzenkov. + +=== 10.1.1 + +* Use http://github.com/jimweirich/rake instead of http://rake.rubyforge.org for + canonical project url. + +=== 10.1.0 + +==== Changes + +===== New Features + +* Add support for variable length task argument lists. If more actual + arguments are supplied than named arguments, then the extra + arguments values will be in args.extras. + +* Application name is not displayed in the help banner. (Previously + "rake" was hardcoded, now rake-based applications can display their + own names). + +===== Bug Fixes + +Bug fixes include: + +* Fix backtrace suppression issues. + +* Rules now explicit get task arguments passed to them. + +* Rename FileList#exclude? to FileList#exclude\_from\_list? to avoid + conflict with new Rails method. + +* Clean / Clobber tasks now report failure to remove files. + +* Plus heaps of internal code cleanup. + +==== Thanks + +As usual, it was input from users that drove a lot of these changes. +The following people contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Michael Nikitochkin (general code cleanup) +* Vipul A M (general code cleanup) +* Dennis Bell (variable length task argument lists) +* Jacob Swanner (rules arguments) +* Rafael Rosa Fu (documentation typo) +* Stuart Nelson (install.rb fixes) +* Lee Hambley (application name in help banner) + +-- Jim Weirich + +=== 10.0.3 + + "Jim, when will Rake reach version 1.0?" + +Over the past several years I've been asked that question at +conferences, panels and over twitter. Due to historical reasons (or +maybe just plain laziness) Rake has (incorrectly) been treating the +second digit of the version as the major release number. So in my head +Rake was already at version 9. + +Well, it's time to fix things. This next version of Rake drops old, +crufty, backwards compatibility hacks such as top level constants, DSL +methods defined in Object and numerous other features that are just no +longer desired. It's also time to drop the leading zero from the +version number as well and call this new version of rake what it +really is: Version 10. + +So, welcome to Rake 10.0! + +Rake 10 is actually feature identical to the latest version of Rake 9 +(that would be the version spelled 0.9.3), *except* that Rake 10 drops +all the sundry deprecated features that have accumulated over the years. + +If your Rakefile is up to date and current with all the new features +of Rake 10, you are ready to go. If your Rakefile still uses a few +deprecated feeatures, feel free to use Rake 9 (0.9.3) with the same +feature set. Just be aware that future features will be in Rake 10 +family line. + +==== Changes + +As mentioned above, there are no new features in Rake 10. However, +there are a number of features missing: + +* Classic namespaces are now gone. Rake is no longer able to reflect + the options settings in the global variables ($rakefile, $show\_tasks, + $show\_prereqs, $trace, $dryrun and $silent). The + --classic-namespace option is no longer supported. + +* Global constants are no longer supported. This includes + Task, FileTask, FileCreationTask and + RakeApp). The constant missing hook to warn about using + global rake constants has been removed. + +* The Rake DSL methods (task, file, directory, etc) are in their own + module (Rake::DSL). The stub versions of these methods (that printed + warnings) in Object have been removed. However, the DSL methods are + added to the top-level main object. Since main is + not in the inheritance tree, the presence of the DSL methods in main + should be low impact on other libraries. + + If you want to use the Rake DSL commands from your own code, just + include Rake::DSL into your own classes and modules. + +* The deprecated syntax for task arguments (the one using + :needs) has been removed. + +* The --reduce-compat flag has been removed (it's not needed + anymore). + +* The deprecated rake/sys.rb library has been removed. + +* The deprecated rake/rdoctask.rb library has been removed. + RDoc supplies its own rake task now. + +* The deprecated rake/gempackagetask.rb library has been + removed. Gem supplies its own package task now. + +There is one small behavioral change: + +* Non-file tasks now always report the current time as their time + stamp. This is different from the previous behavior where non-file + tasks reported current time only if there were no prerequisites, and + the max prerequisite timestamp otherwise. This lead to inconsistent + and surprising behavior when adding prerequisites to tasks that in + turn were prequisites to file tasks. The new behavior is more + consistent and predictable. + +==== Changes (from 0.9.3, 0.9.4, 0.9.5) + +Since Rake 10 includes the changes from the last version of Rake 9, +we'll repeat the changes for versions 0.9.3 through 0.9.5 here. + +===== New Features (in 0.9.3) + +* Multitask tasks now use a thread pool. Use -j to limit the number of + available threads. + +* Use -m to turn regular tasks into multitasks (use at your own risk). + +* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to + programatically add rake task libraries. + +* You can specific backtrace suppression patterns (see + --suppress-backtrace) + +* Directory tasks can now take prerequisites and actions + +* Use --backtrace to request a full backtrace without the task trace. + +* You can say "--backtrace=stdout" and "--trace=stdout" to route trace + output to standard output rather than standard error. + +* Optional 'phony' target (enable with 'require 'rake/phony'") for + special purpose builds. + +* Task#clear now clears task comments as well as actions and + prerequisites. Task#clear_comment will specifically target comments. + +* The --all option will force -T and -D to consider all the tasks, + with and without descriptions. + +===== Bug Fixes (in 0.9.3) + +* Semi-colons in windows rakefile paths now work. + +* Improved Control-C support when invoking multiple test suites. + +* egrep method now reads files in text mode (better support for + Windows) + +* Better deprecation line number reporting. + +* The -W option now works with all tasks, whether they have a + description or not. + +* File globs in rake should not be sorted alphabetically, independent + of file system and platform. + +* Numerous internal improvements. + +* Documentation typos and fixes. + +===== Bug Fixes (in 0.9.4) + +* Exit status with failing tests is not correctly set to non-zero. + +* Simplified syntax for phony task (for older versions of RDoc). + +* Stand alone FileList usage gets glob function (without loading in + extra dependencies) + +===== Bug Fixes (in 0.9.5) + +* --trace and --backtrace no longer swallow following task names. + +==== Thanks + +As usual, it was input from users that drove a lot of these changes. The +following people contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Aaron Patterson +* Dylan Smith +* Jo Liss +* Jonas Pfenniger +* Kazuki Tsujimoto +* Michael Bishop +* Michael Elufimov +* NAKAMURA Usaku +* Ryan Davis +* Sam Grönblom +* Sam Phippen +* Sergio Wong +* Tay Ray Chuan +* grosser +* quix + +Also, many thanks to Eric Hodel for assisting with getting this release +out the door. + +-- Jim Weirich + +=== 10.0.2 + +==== Changes + +===== Bug Fixes + +* --trace and --backtrace no longer swallow following task names. + +==== Thanks + +As usual, it was input from users that drove a lot of these changes. The +following people contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Aaron Patterson +* Dylan Smith +* Jo Liss +* Jonas Pfenniger +* Kazuki Tsujimoto +* Michael Bishop +* Michael Elufimov +* NAKAMURA Usaku +* Ryan Davis +* Sam Grönblom +* Sam Phippen +* Sergio Wong +* Tay Ray Chuan +* grosser +* quix + +Also, many thanks to Eric Hodel for assisting with getting this release +out the door. + +-- Jim Weirich + +=== 10.0.1 + +==== Changes + +===== Bug Fixes + +* Exit status with failing tests is not correctly set to non-zero. + +* Simplified syntax for phony task (for older versions of RDoc). + +* Stand alone FileList usage gets glob function (without loading in + extra dependencies) + +==== Thanks + +As usual, it was input from users that drove a lot of these changes. The +following people contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Aaron Patterson +* Dylan Smith +* Jo Liss +* Jonas Pfenniger +* Kazuki Tsujimoto +* Michael Bishop +* Michael Elufimov +* NAKAMURA Usaku +* Ryan Davis +* Sam Grönblom +* Sam Phippen +* Sergio Wong +* Tay Ray Chuan +* grosser +* quix + +Also, many thanks to Eric Hodel for assisting with getting this release +out the door. + +-- Jim Weirich + +=== 10.0.0 + + "Jim, when will Rake reach version 1.0?" + +Over the past several years I've been asked that question at +conferences, panels and over twitter. Due to historical reasons (or +maybe just plain laziness) Rake has (incorrectly) been treating the +second digit of the version as the major release number. So in my head +Rake was already at version 9. + +Well, it's time to fix things. This next version of Rake drops old, +crufty, backwards compatibility hacks such as top level constants, DSL +methods defined in Object and numerous other features that are just no +longer desired. It's also time to drop the leading zero from the +version number as well and call this new version of rake what it +really is: Version 10. + +So, welcome to Rake 10.0! + +Rake 10 is actually feature identical to the latest version of Rake 9 +(that would be the version spelled 0.9.3), *except* that Rake 10 drops +all the sundry deprecated features that have accumulated over the years. + +If your Rakefile is up to date and current with all the new features +of Rake 10, you are ready to go. If your Rakefile still uses a few +deprecated feeatures, feel free to use Rake 9 (0.9.3) with the same +feature set. Just be aware that future features will be in Rake 10 +family line. + +==== Changes in 10.0 + +As mentioned above, there are no new features in Rake 10. However, +there are a number of features missing: + +* Classic namespaces are now gone. Rake is no longer able to reflect + the options settings in the global variables ($rakefile, $show\_tasks, + $show\_prereqs, $trace, $dryrun and $silent). The + --classic-namespace option is no longer supported. + +* Global constants are no longer supported. This includes + Task, FileTask, FileCreationTask and + RakeApp). The constant missing hook to warn about using + global rake constants has been removed. + +* The Rake DSL methods (task, file, directory, etc) are in their own + module (Rake::DSL). The stub versions of these methods (that printed + warnings) in Object have been removed. However, the DSL methods are + added to the top-level main object. Since main is + not in the inheritance tree, the presence of the DSL methods in main + should be low impact on other libraries. + + If you want to use the Rake DSL commands from your own code, just + include Rake::DSL into your own classes and modules. + +* The deprecated syntax for task arguments (the one using + :needs) has been removed. + +* The --reduce-compat flag has been removed (it's not needed + anymore). + +* The deprecated rake/sys.rb library has been removed. + +* The deprecated rake/rdoctask.rb library has been removed. + RDoc supplies its own rake task now. + +* The deprecated rake/gempackagetask.rb library has been + removed. Gem supplies its own package task now. + +There is one small behavioral change: + +* Non-file tasks now always report the current time as their time + stamp. This is different from the previous behavior where non-file + tasks reported current time only if there were no prerequisites, and + the max prerequisite timestamp otherwise. This lead to inconsistent + and surprising behavior when adding prerequisites to tasks that in + turn were prequisites to file tasks. The new behavior is more + consistent and predictable. + +==== Changes (from 0.9.3) + +Since Rake 10 includes the changes from the last version of Rake 9, +we'll repeat the changes for version 0.9.3 here. + +===== New Features + +* Multitask tasks now use a thread pool. Use -j to limit the number of + available threads. + +* Use -m to turn regular tasks into multitasks (use at your own risk). + +* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to + programatically add rake task libraries. + +* You can specific backtrace suppression patterns (see + --suppress-backtrace) + +* Directory tasks can now take prerequisites and actions + +* Use --backtrace to request a full backtrace without the task trace. + +* You can say "--backtrace=stdout" and "--trace=stdout" to route trace + output to standard output rather than standard error. + +* Optional 'phony' target (enable with 'require 'rake/phony'") for + special purpose builds. + +* Task#clear now clears task comments as well as actions and + prerequisites. Task#clear_comment will specifically target comments. + +* The --all option will force -T and -D to consider all the tasks, + with and without descriptions. + +===== Bug Fixes + +* Semi-colons in windows rakefile paths now work. + +* Improved Control-C support when invoking multiple test suites. + +* egrep method now reads files in text mode (better support for + Windows) + +* Better deprecation line number reporting. + +* The -W option now works with all tasks, whether they have a + description or not. + +* File globs in rake should not be sorted alphabetically, independent + of file system and platform. + +* Numerous internal improvements. + +* Documentation typos and fixes. + + +==== Thanks + +As usual, it was input from users that drove a lot of these changes. The +following people contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Aaron Patterson +* Dylan Smith +* Jo Liss +* Jonas Pfenniger +* Kazuki Tsujimoto +* Michael Bishop +* Michael Elufimov +* NAKAMURA Usaku +* Ryan Davis +* Sam Grönblom +* Sam Phippen +* Sergio Wong +* Tay Ray Chuan +* grosser +* quix + +Also, many thanks to Eric Hodel for assisting with getting this release +out the door. + +-- Jim Weirich + +=== 0.9.6 + +Rake version 0.9.6 contains a number of fixes mainly for merging +Rake into the Ruby source tree and fixing tests. + +==== Changes + +===== Bug Fixes (0.9.6) + +* Better trace output when using a multi-threaded Rakefile. +* Arg parsing is now consistent for tasks and multitasks. +* Skip exit code test in versions of Ruby that don't support it well. + +Changes for better integration with the Ruby source tree: + +* Fix version literal for Ruby source tree build. +* Better loading of libraries for testing in Ruby build. +* Use the ruby version provided by Ruby's tests. + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Aaron Patterson +* Dylan Smith +* Jo Liss +* Jonas Pfenniger +* Kazuki Tsujimoto +* Michael Bishop +* Michael Elufimov +* NAKAMURA Usaku +* Ryan Davis +* Sam Grönblom +* Sam Phippen +* Sergio Wong +* Tay Ray Chuan +* grosser +* quix + +Also, many thanks to Eric Hodel for assisting with getting this release +out the door. + +-- Jim Weirich + +=== 0.9.5 + +Rake version 0.9.5 contains a number of bug fixes. + +==== Changes + +===== Bug Fixes (0.9.5) + +* --trace and --backtrace no longer swallow following task names. + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Aaron Patterson +* Dylan Smith +* Jo Liss +* Jonas Pfenniger +* Kazuki Tsujimoto +* Michael Bishop +* Michael Elufimov +* NAKAMURA Usaku +* Ryan Davis +* Sam Grönblom +* Sam Phippen +* Sergio Wong +* Tay Ray Chuan +* grosser +* quix + +Also, many thanks to Eric Hodel for assisting with getting this release +out the door. + +-- Jim Weirich + +=== 0.9.4 + +Rake version 0.9.4 contains a number of bug fixes. + +==== Changes + +===== Bug Fixes (0.9.4) + +* Exit status with failing tests is not correctly set to non-zero. + +* Simplified syntax for phony task (for older versions of RDoc). + +* Stand alone FileList usage gets glob function (without loading in + extra dependencies) + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Aaron Patterson +* Dylan Smith +* Jo Liss +* Jonas Pfenniger +* Kazuki Tsujimoto +* Michael Bishop +* Michael Elufimov +* NAKAMURA Usaku +* Ryan Davis +* Sam Grönblom +* Sam Phippen +* Sergio Wong +* Tay Ray Chuan +* grosser +* quix + +Also, many thanks to Eric Hodel for assisting with getting this release +out the door. + +-- Jim Weirich + +=== 0.9.3 + +Rake version 0.9.3 contains some new, backwards compatible features and +a number of bug fixes. + +==== Changes + +===== New Features + +* Multitask tasks now use a thread pool. Use -j to limit the number of + available threads. + +* Use -m to turn regular tasks into multitasks (use at your own risk). + +* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to + programatically add rake task libraries. + +* You can specific backtrace suppression patterns (see + --suppress-backtrace) + +* Directory tasks can now take prerequisites and actions + +* Use --backtrace to request a full backtrace without the task trace. + +* You can say "--backtrace=stdout" and "--trace=stdout" to route trace + output to standard output rather than standard error. + +* Optional 'phony' target (enable with 'require 'rake/phony'") for + special purpose builds. + +* Task#clear now clears task comments as well as actions and + prerequisites. Task#clear_comment will specifically target comments. + +* The --all option will force -T and -D to consider all the tasks, + with and without descriptions. + +===== Bug Fixes + +* Semi-colons in windows rakefile paths now work. + +* Improved Control-C support when invoking multiple test suites. + +* egrep method now reads files in text mode (better support for + Windows) + +* Better deprecation line number reporting. + +* The -W option now works with all tasks, whether they have a + description or not. + +* File globs in rake should not be sorted alphabetically, independent + of file system and platform. + +* Numerous internal improvements. + +* Documentation typos and fixes. + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Aaron Patterson +* Dylan Smith +* Jo Liss +* Jonas Pfenniger +* Kazuki Tsujimoto +* Michael Bishop +* Michael Elufimov +* NAKAMURA Usaku +* Ryan Davis +* Sam Grönblom +* Sam Phippen +* Sergio Wong +* Tay Ray Chuan +* grosser +* quix + +Also, many thanks to Eric Hodel for assisting with getting this release +out the door. + +-- Jim Weirich + +=== Rake 0.9.2.2 + +Rake version 0.9.2.2 is mainly bug fixes. + +==== Changes + +* The rake test loader now removes arguments it has processed. Issue #51 +* Rake::TaskArguments now responds to #values\_at +* RakeFileUtils.verbose_flag = nil silences output the same as 0.8.7 +* Rake tests are now directory-independent +* Rake tests are no longer require flexmock +* Commands constant is no longer polluting top level namespace. +* Show only the interesting portion of the backtrace by default (James M. Lawrence). +* Added --reduce-compat option to remove backward compatible DSL hacks (James M. Lawrence). + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* James M. Lawrence (quix) +* Roger Pack +* Cezary Baginski +* Sean Scot August Moon +* R.T. Lechow +* Alex Chaffee +* James Tucker +* Matthias Lüdtke +* Santiago Pastorino + +Also, bit thanks to Eric Hodel for assisting with getting this release +out the door (where "assisting" includes, but is not by any means +limited to, "pushing" me to get it done). + +-- Jim Weirich + +=== 0.9.2 + +Rake version 0.9.2 has a few small fixes. See below for details. + +==== Changes + +* Support for Ruby 1.8.6 was fixed. +* Global DSL warnings now honor --no-deprecate + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* James M. Lawrence (quix) +* Roger Pack +* Cezary Baginski +* Sean Scot August Moon +* R.T. Lechow +* Alex Chaffee +* James Tucker +* Matthias Lüdtke +* Santiago Pastorino + +Also, bit thanks to Eric Hodel for assisting with getting this release +out the door (where "assisting" includes, but is not by any means +limited to, "pushing" me to get it done). + +-- Jim Weirich + +=== 0.9.1 + +Rake version 0.9.1 has a number of bug fixes and enhancments (see +below for more details). Additionally, the internals have be slightly +restructured and improved. + +==== Changes + +Rake 0.9.1 adds back the global DSL methods, but with deprecation +messages. This allows Rake 0.9.1 to be used with older rakefiles with +warning messages. + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* James M. Lawrence (quix) +* Roger Pack +* Cezary Baginski +* Sean Scot August Moon +* R.T. Lechow +* Alex Chaffee +* James Tucker +* Matthias Lüdtke +* Santiago Pastorino + +Also, bit thanks to Eric Hodel for assisting with getting this release +out the door (where "assisting" includes, but is not by any means +limited to, "pushing" me to get it done). + +-- Jim Weirich + +=== 0.9.0 + +Rake version 0.9.0 has a number of bug fixes and enhancments (see +below for more details). Additionally, the internals have be slightly +restructured and improved. + +==== Changes + +===== New Features / Enhancements / Bug Fixes in Version 0.9.0 + +* Rake now warns when the deprecated :needs syntax used (and suggests + the proper syntax in the warning). + +* Moved Rake DSL commands to top level ruby object 'main'. Rake DSL + commands are no longer private methods in Object. (Suggested by + James M. Lawrence/quix) + +* Rake now uses case-insensitive comparisons to find the Rakefile on Windows. + Based on patch by Roger Pack. + +* Rake now requires (instead of loads) files in the test task. Patch by Cezary + Baginski. + +* Fixed typos. Patches by Sean Scot August Moon and R.T. Lechow. + +* Rake now prints the Rakefile directory only when it's different from the + current directory. Patch by Alex Chaffee. + +* Improved rakefile_location discovery on Windows. Patch by James Tucker. + +* Rake now recognizes "Windows Server" as a windows system. Patch by Matthias + Lüdtke + +* Rake::RDocTask is deprecated. Use RDoc::Task from RDoc 2.4.2+ (require + 'rdoc/task') + +* Rake::GemPackageTask is deprecated. Use Gem::PackageTask (require + 'rubygems/package\_task') + +* Rake now outputs various messages to $stderr instead of $stdout. + +* Rake no longer emits warnings for Config. Patch by Santiago Pastorino. + +* Removed Rake's DSL methods from the top level scope. If you need to + call 'task :xzy' in your code, include Rake::DSL into your class, or + put the code in a Rake::DSL.environment do ... end block. + +* Split rake.rb into individual files. + +* Support for the --where (-W) flag for showing where a task is defined. + +* Fixed quoting in test task. + (http://onestepback.org/redmine/issues/show/44, + http://www.pivotaltracker.com/story/show/1223138) + +* Fixed the silent option parsing problem. + (http://onestepback.org/redmine/issues/show/47) + +* Fixed :verbose=>false flag on sh and ruby commands. + +* Rake command line options may be given by default in a RAKEOPT + environment variable. + +* Errors in Rake will now display the task invocation chain in effect + at the time of the error. + +* Accepted change by warnickr to not expand test patterns in shell + (allowing more files in the test suite). + +* Fixed that file tasks did not perform prereq lookups in scope + (Redmine #57). + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* James M. Lawrence (quix) +* Roger Pack +* Cezary Baginski +* Sean Scot August Moon +* R.T. Lechow +* Alex Chaffee +* James Tucker +* Matthias Lüdtke +* Santiago Pastorino + +Also, bit thanks to Eric Hodel for assisting with getting this release +out the door (where "assisting" includes, but is not by any means +limited to, "pushing" me to get it done). + +-- Jim Weirich + + +=== 0.8.7 + +Rake version 0.8.5 introduced greatly improved support for executing +commands on Windows. The "sh" command now has the same semantics on +Windows that it has on Unix based platforms. + +Rake version 0.8.6 includes minor fixes the the RDoc generation. +Rake version 0.8.7 includes a minor fix for JRuby running on windows. + +==== Changes + +===== New Features / Enhancements in Version 0.8.5 + +* Improved implementation of the Rake system command for Windows. + (patch from James M. Lawrence/quix) + +* Support for Ruby 1.9's improved system command. (patch from James + M. Lawrence/quix) + +* Rake now includes the configured extension when invoking an + executable (Config::CONFIG['EXEEXT]) + +===== Bug Fixes in Version 0.8.5 + +* Environment variable keys are now correctly cased (it matters in + some implementations). + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Charles Nutter + +-- Jim Weirich + +=== 0.8.6 + +Rake version 0.8.5 introduced greatly improved support for executing +commands on Windows. The "sh" command now has the same semantics on +Windows that it has on Unix based platforms. + +Rake version 0.8.5 includes minor fixes the the RDoc generation. + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* James M. Lawrence/quix +* Luis Lavena + +-- Jim Weirich + +=== 0.8.5 + +Rake version 0.8.5 is a new release of Rake with greatly improved +support for executing commands on Windows. The "sh" command now has +the same semantics on Windows that it has on Unix based platforms. + +==== Changes + +===== New Features / Enhancements in Version 0.8.5 + +* Improved implementation of the Rake system command for Windows. + (patch from James M. Lawrence/quix) + +* Support for Ruby 1.9's improved system command. (patch from James + M. Lawrence/quix) + +* Rake now includes the configured extension when invoking an + executable (Config::CONFIG['EXEEXT]) + +===== Bug Fixes in Version 0.8.5 + +* Environment variable keys are now correctly cased (it matters in + some implementations). + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* James M. Lawrence/quix +* Luis Lavena + +-- Jim Weirich + +=== 0.8.4 + +Rake version 0.8.4 is a bug-fix release of rake. + +NOTE: The version of Rake that comes with Ruby 1.9 has diverged + slightly from the core Rake code base. Rake 0.8.4 will work + with Ruby 1.9, but is not a strict upgrade for the Rake that + comes with Ruby 1.9. A (near) future release of Rake will unify + those two codebases. + +==== Letter Writing Campaign + +Thanks to Aaron Patterson (@tenderlove) and Eric Hodel (@drbrain) for +their encouraging support in organizing a letter writing campaign to +lobby for the "Warning Free" release of rake 0.8.4. A special callout +goes to Jonathan D. Lord, Sr (Dr. Wingnut) whose postcard was the +first to actually reach me. (see +http://tenderlovemaking.com/2009/02/26/we-need-a-new-version-of-rake/ +for details) + +==== Changes + +===== New Features / Enhancements in Version 0.8.4 + +* Case is preserved on rakefile names. (patch from James + M. Lawrence/quix) + +* Improved Rakefile case insensitivity testing (patch from Luis + Lavena). + +* Windows system dir search order is now: HOME, HOMEDRIVE + HOMEPATH, + APPDATA, USERPROFILE (patch from Luis Lavena) + +* MingGW is now recognized as a windows platform. (patch from Luis + Lavena) + +===== Bug Fixes in Version 0.8.4 + +* Removed reference to manage_gem to fix the warning produced by the + gem package task. + +* Fixed stray ARGV option problem that was interfering with + Test::Unit::Runner. (patch from Pivotal Labs) + +===== Infrastructure Improvements in Version 0.8.4 + +* Numerous fixes to the windows test suite (patch from Luis Lavena). + +* Improved Rakefile case insensitivity testing (patch from Luis + Lavena). + +* Better support for windows paths in the test task (patch from Simon + Chiang/bahuvrihi) + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* James M. Lawrence/quix +* Luis Lavena +* Pivotal Labs +* Simon Chiang/bahuvrihi + +-- Jim Weirich + +=== 0.8.3 + +Rake version 0.8.3 is a bug-fix release of rake. + +==== Changes + +===== Bug Fixes in Version 0.8.3 + +* Enhanced the system directory detection in windows. We now check + HOMEDRIVE/HOMEPATH and USERPROFILE if APPDATA isn't found. (Patch + supplied by James Tucker). Rake no long aborts if it can't find the + directory. + +* Added fix to handle ruby installations in directories with spaces in + their name. + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Edwin Pratomo +* Gavin Stark +* Adam Q. Salter +* Adam Majer +* Emanuel Indermühle +* Ittay Dror +* Bheeshmar Redheendran (for spending an afternoon with me debugging + windows issues) + +-- Jim Weirich + + +=== 0.8.2 + +Rake version 0.8.2 is a new release of rake that includes a number of +new features and numerous bug fixes. + +==== Changes + +===== New Features in Version 0.8.2 + +* Switched from getoptlong to optparse (patches supplied by Edwin + Pratomo). + +* The -T option will now attempt to dynamically sense the size of the + terminal. The -T output will only self-truncate if the output is a + tty. However, if RAKE_COLUMNS is explicitly set, it will be honored + in any case. (Patch provided by Gavin Stark). + +* The following public methods have been added to rake task objects: + + * task.clear -- Clear both the prerequisites and actions of the + target rake task. + * task.clear_prerequisites -- Clear all the existing prerequisites + from the target rake task. + * task.clear_actions -- Clear all the existing actions from the + target rake task. + * task.reenable -- Re-enable a task, allowing its actions to be + executed again if the task is invoked. + +* Changed RDoc test task to have no default template. This makes it + easier for the tempate to pick up the template from the environment. + +* Default values for task arguments can easily be specified with the + :with_defaults method. (Idea for default argument merging supplied + by (Adam Q. Salter) + +===== Bug Fixes in Version 0.8.2 + +* Fixed bug in package task so that it will include the subdir + directory in the package for testing. (Bug found by Adam Majer) + +* Fixed filename dependency order bug in test\_inspect\_pending and + test\_to\_s\_pending. (Bug found by Adam Majer) + +* Fixed check for file utils options to make them immune to the + symbol/string differences. (Patch supplied by Edwin Pratomo) + +* Fixed bug with rules involving multiple source, where only the first + dependency of a rule has any effect (Patch supplied by Emanuel + Indermühle) + +* FileList#clone and FileList#dup have better sematics w.r.t. taint + and freeze. + +* Changed from using Mutex to Monitor. Evidently Mutex causes thread + join errors when Ruby is compiled with -disable-pthreads. (Patch + supplied by Ittay Dror) + +* Fixed bug in makefile parser that had problems with extra spaces in + file task names. (Patch supplied by Ittay Dror) + +==== Other changes in Version 0.8.2 + +* Added ENV var to rake's own Rakefile to prevent OS X from including + extended attribute junk in the rake package tar file. (Bug found by + Adam Majer) + +* Added a performance patch for reading large makefile dependency + files. (Patch supplied by Ittay Dror) + +==== Task Argument Examples + +Prior to version 0.8.0, rake was only able to handle command line +arguments of the form NAME=VALUE that were passed into Rake via the +ENV hash. Many folks had asked for some kind of simple command line +arguments, perhaps using "--" to separate regular task names from +argument values on the command line. The problem is that there was no +easy way to associate positional arguments on the command line with +different tasks. Suppose both tasks :a and :b expect a command line +argument: does the first value go with :a? What if :b is run first? +Should it then get the first command line argument. + +Rake 0.8.0 solves this problem by explicitly passing values directly +to the tasks that need them. For example, if I had a release task +that required a version number, I could say: + + rake release[0.8.2] + +And the string "0.8.2" will be passed to the :release task. Multiple +arguments can be passed by separating them with a comma, for example: + + rake name[john,doe] + +Just a few words of caution. The rake task name and its arguments +need to be a single command line argument to rake. This generally +means no spaces. If spaces are needed, then the entire rake + +argument string should be quoted. Something like this: + + rake "name[billy bob, smith]" + +(Quoting rules vary between operating systems and shells, so make sure +you consult the proper docs for your OS/shell). + +===== Tasks that Expect Parameters + +Parameters are only given to tasks that are setup to expect them. In +order to handle named parameters, the task declaration syntax for +tasks has been extended slightly. + +For example, a task that needs a first name and last name might be +declared as: + + task :name, :first_name, :last_name + +The first argument is still the name of the task (:name in this case). +The next to argumements are the names of the parameters expected by +:name (:first_name and :last_name in the example). + +To access the values of the parameters, the block defining the task +behaviour can now accept a second parameter: + + task :name, :first_name, :last_name do |t, args| + puts "First name is #{args.first_name}" + puts "Last name is #{args.last_name}" + end + +The first argument of the block "t" is always bound to the current +task object. The second argument "args" is an open-struct like object +that allows access to the task arguments. Extra command line +arguments to a task are ignored. Missing command line arguments are +given the nil value. + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Edwin Pratomo +* Gavin Stark +* Adam Q. Salter +* Adam Majer +* Emanuel Indermühle +* Ittay Dror +* Bheeshmar Redheendran (for spending an afternoon with me debugging + windows issues) + +-- Jim Weirich + +=== 0.8.0/0.8.1 + +Rake version 0.8.0 is a new release of rake that includes serveral new +features. + +==== Changes + +===== New Features in Version 0.8.0 + +* Tasks can now receive command line parameters. See the examples + below for more details. + +* Comments are limited to 80 columns on output, but full comments can + be seen by using the -D parameter. (feature suggested by Jamis + Buck). + +* Explicit exit(n) calls will now set the exit status to n. (patch + provided by Stephen Touset). + +* Rake is now compatible with Ruby 1.9. + +Version 0.8.1 is a minor update that includes additional Ruby 1.9 +compatibility fixes. + +==== Task Argument Examples + +Prior to version 0.8.0, rake was only able to handle command line +arguments of the form NAME=VALUE that were passed into Rake via the +ENV hash. Many folks had asked for some kind of simple command line +arguments, perhaps using "--" to separate regular task names from +argument values on the command line. The problem is that there was no +easy way to associate positional arguments on the command line with +different tasks. Suppose both tasks :a and :b expect a command line +argument: does the first value go with :a? What if :b is run first? +Should it then get the first command line argument. + +Rake 0.8.0 solves this problem by explicitly passing values directly +to the tasks that need them. For example, if I had a release task +that required a version number, I could say: + + rake release[0.8.0] + +And the string "0.8.0" will be passed to the :release task. Multiple +arguments can be passed by separating them with a comma, for example: + + rake name[john,doe] + +Just a few words of caution. The rake task name and its arguments +need to be a single command line argument to rake. This generally +means no spaces. If spaces are needed, then the entire rake + +argument string should be quoted. Something like this: + + rake "name[billy bob, smith]" + +(Quoting rules vary between operating systems and shells, so make sure +you consult the proper docs for your OS/shell). + +===== Tasks that Expect Parameters + +Parameters are only given to tasks that are setup to expect them. In +order to handle named parameters, the task declaration syntax for +tasks has been extended slightly. + +For example, a task that needs a first name and last name might be +declared as: + + task :name, :first_name, :last_name + +The first argument is still the name of the task (:name in this case). +The next to argumements are the names of the parameters expected by +:name (:first_name and :last_name in the example). + +To access the values of the parameters, the block defining the task +behaviour can now accept a second parameter: + + task :name, :first_name, :last_name do |t, args| + puts "First name is #{args.first_name}" + puts "Last name is #{args.last_name}" + end + +The first argument of the block "t" is always bound to the current +task object. The second argument "args" is an open-struct like object +that allows access to the task arguments. Extra command line +arguments to a task are ignored. Missing command line arguments are +given the nil value. + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Jamis Buck (for comment formatting suggestions) +* Stephen Touset (for exit status patch). + +-- Jim Weirich + + +=== 0.7.3 + +Rake version 0.7.3 is a minor release that includes some refactoring to better +support custom Rake applications. + +==== Changes + +===== New Features in Version 0.7.3 + +* Added the +init+ and +top_level+ methods to make the creation of custom Rake applications a bit easier. E.g. + + gem 'rake', ">= 0.7.3" + require 'rake' + + Rake.application.init('myrake') + + task :default do + something_interesting + end + + Rake.application.top_level + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +-- Jim Weirich + + +=== 0.7.2 + + +Version 0.7.2 supplies a bug fix and a few minor enhancements. In +particular, the new version fixes an incompatibility with the soon to +be released Ruby 1.8.6. We strongly recommend upgrading to Rake 0.7.2 +in order to be compatible with the new version of Ruby. + +==== Changes + +===== Bug Fixes in 0.7.2 + +There are quite a number of bug fixes in the new 0.7.2 version of +Rake: + +* Removed dependency on internal fu_xxx functions from FileUtils. + +* Error messages are now send to stderr rather than stdout (from + Payton Quackenbush). + +* Better error handling on invalid command line arguments (from Payton + Quackenbush). + +* Fixed some bugs where the application object was going to the global + appliation instead of using its own data. + +* Fixed the method name leak from FileUtils (bug found by Glenn + Vanderburg). + +* Added test for noop, bad_option and verbose flags to sh command. + +* Added a description to the gem task in GemPackageTask. + +* Fixed a bug when rules have multiple prerequisites (patch by Joel + VanderWerf) + +* Added the handful of RakeFileUtils to the private method as well. + +===== New Features in 0.7.2 + +The following new features are available in Rake version 0.7.2: + +* Added square and curly bracket patterns to FileList#include (Tilman + Sauerbeck). + +* FileLists can now pass a block to FileList#exclude to exclude files + based on calculated values. + +* Added plain filename support to rule dependents (suggested by Nobu + Nakada). + +* Added pathmap support to rule dependents. In other words, if a + pathmap format (beginning with a '%') is given as a Rake rule + dependent, then the name of the depend will be the name of the + target with the pathmap format applied. + +* Added a 'tasks' method to a namespace to get a list of tasks + associated with the namespace. + +* Added tar_command and zip_command options to the Package task. + +* The clean task will no longer delete 'core' if it is a directory. + +===== Internal Rake Improvements + +The following changes will are mainly internal improvements and +refactorings and have little effect on the end user. But they may be +of interest to the general public. + +* Added rcov task and updated unit testing for better code coverage. + +* Added a 'shame' task to the Rakefile. + +* Added rake_extension to handle detection of extension collisions. + +* Added a protected 'require "rubygems"' to test/test_application to + unbreak cruisecontrol.rb. + +* Removed rake\_dup. Now we just simply rescue a bad dup. + +* Refactored the FileList reject logic to remove duplication. + +* Removed if \_\_FILE\_\_ at the end of the rake.rb file. + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. +The following people either contributed patches, made suggestions or +made otherwise helpful comments. Thanks to ... + +* Payton Quackenbush -- For several error handling improvements. + +* Glenn Vanderburg -- For finding and fixing the method name leak from + FileUtils. + +* Joel VanderWerf -- for finding and fixing a bug in the handling of + multiple prerequisites. + +* Tilman Sauerbeck -- For some enhancing FileList to support more + advanced file globbing. + +* Nobu Nakada -- For suggesting plain file name support to rule dependents. + +-- Jim Weirich + +=== 0.7.1 + +Version 0.7.1 supplies a bug fix and a few minor enhancements. + +==== Changes + +===== Bug Fixes in 0.7.1 + +* Changes in the exception reported for the FileUtils.ln caused + safe_ln to fail with a NotImplementedError. Rake 0.7.1 will now + catch that error or any StandardError and properly fall back to + using +cp+. + +===== New Features in 0.7.1 + +* You can filter the results of the --task option by supplying an + optional regular expression. This allows the user to easily find a + particular task name in a long list of possible names. + +* Transforming procs in a rule may now return a list of prerequisites. + This allows more flexible rule formation. + +* FileList and String now support a +pathmap+ melthod that makes the + transforming paths a bit easier. See the API docs for +pathmap+ for + details. + +* The -f option without a value will disable the search for a + Rakefile. This allows the Rakefile to be defined entirely in a + library (and loaded with the -r option). The current working + directory is not changed when this is done. + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. +The following people either contributed patches, made suggestions or +made otherwise helpful comments. Thanks to ... + +* James Britt and Assaph Mehr for reporting and helping to debug the + safe_ln issue. + +-- Jim Weirich + + +=== 0.7.0 + +These changes for Rake have been brewing for a long time. Here they +are, I hope you enjoy them. + +==== Changes + +===== New Features + +* Name space support for task names (see below). +* Prerequisites can be executed in parallel (see below). +* Added safe_ln support for openAFS (via Ludvig Omholt). +* RDoc defaults to internal (in-process) invocation. The old behavior + is still available by setting the +external+ flag to true. +* Rakefiles are now loaded with the expanded path to prevent + accidental pollution from the Ruby load path. +* Task objects my now be used in prerequisite lists directly. +* Task objects (in addition to task names) may now be included in the + prerequisite list of a task. +* Internals cleanup and refactoring. + +===== Bug Fixes + +* Compatibility fixes for Ruby 1.8.4 FileUtils changes. + +===== Namespaces + +Tasks can now be nested inside their own namespaces. Tasks within one +namespace will not accidentally interfer with tasks named in a different +namespace. + +For example: + + namespace "main" do + task :build do + # Build the main program + end + end + + namespace "samples" do + task :build do + # Build the sample programs + end + end + + task :build_all => ["main:build", "samples:build"] + +Even though both tasks are named :build, they are separate tasks in +their own namespaces. The :build_all task (defined in the toplevel +namespace) references both build tasks in its prerequisites. + +You may invoke each of the individual build tasks with the following +commands: + + rake main:build + rake samples:build + +Or invoke both via the :build_all command: + + rake build_all + +Namespaces may be nested arbitrarily. Since the name of file tasks +correspond to the name of a file in the external file system, +FileTasks are not affected by the namespaces. + +See the Rakefile format documentation (in the Rake API documents) for +more information. + +===== Parallel Tasks + +Sometimes you have several tasks that can be executed in parallel. By +specifying these tasks as prerequisites to a +multitask+ task. + +In the following example the tasks copy\_src, copy\_doc and copy\_bin +will all execute in parallel in their own thread. + + multitask :copy_files => [:copy_src, :copy_doc, :copy_bin] do + puts "All Copies Complete" + end + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. +The following people either contributed patches, made suggestions or +made otherwise helpful comments. Thanks to ... + +* Doug Young (inspiration for the parallel task) +* David Heinemeier Hansson (for --trace message enhancement and for + pushing for namespace support). +* Ludvig Omholt (for the openAFS fix) + +-- Jim Weirich + +=== 0.6.1 + +* Rebuilt 0.6.0 gem without signing. + +=== 0.6.0 + +Its time for some long requested enhancements and lots of bug fixes +... And a whole new web page. + +==== New Web Page + +The primary documentation for rake has moved from the RubyForge based +wiki to its own Hieraki based web site. Constant spam on the wiki +made it a difficult to keep clean. The new site will be easier to +update and organize. + +Check out the new documentation at: http://docs.rubyrake.org + +We will be adding new documentation to the site as time goes on. + +In addition to the new docs page, make sure you check out Martin +Fowlers article on rake at http://martinfowler.com/articles/rake.html + +==== Changes + +===== New Features + +* Multiple prerequisites on Rake rules now allowed. However, keep the + following in mind: + + 1. All the prerequisites of a rule must be available before a rule + is triggered, where "enabled" means (a) an existing file, (b) a + defined rule, or (c) another rule which also must be + trigger-able. + 2. Rules are checked in order of definition, so it is important to + order your rules properly. If a file can be created by two + different rules, put the more specific rule first (otherwise the + more general rule will trigger first and the specific one will + never be triggered). + 3. The source method now returns the name of the first + prerequisite listed in the rule. sources returns the + names of all the rule prerequisites, ordered as they are defined + in the rule. If the task has other prerequisites not defined in + the rule (but defined in an explicit task definition), then they + will _not_ be included in the sources list. + +* FileLists may now use the egrep command. This popular enhancement + is now a core part of the FileList object. If you want to get a + list of all your to-dos, fixmes and TBD comments, add the following + to your Rakefile. + + desc "Look for TODO and FIXME tags in the code" + task :todo do + FileList['**/*.rb'].egrep /#.*(FIXME|TODO|TBD)/ + end + +* The investigation method was added to task object to dump + out some important values. This makes it a bit easier to debug Rake + tasks. + + For example, if you are having problems with a particular task, just + print it out: + + task :huh do + puts Rake::Task['huh'].investigation + end + +* The Rake::TestTask class now supports a "ruby\_opts" option to pass + arbitrary ruby options to a test subprocess. + +===== Some Incompatibilities + +* When using the ruby command to start a Ruby subprocess, the + Ruby interpreter that is currently running rake is used by default. + This makes it easier to use rake in an environment with multiple + ruby installation. (Previously, the first ruby command found in the + PATH was used). + + If you wish to chose a different Ruby interpreter, you can + explicitly choose the interpreter via the sh command. + +* The major rake classes (Task, FileTask, FileCreationTask, RakeApp) + have been moved out of the toplevel scope and are now accessible as + Rake::Task, Rake::FileTask, Rake::FileCreationTask and + Rake::Application. If your Rakefile + directly references any one of these tasks, you may: + + 1. Update your Rakefile to use the new classnames + 2. Use the --classic-namespace option on the rake command to get the + old behavior, + 3. Add require 'rake/classic_namespace' to the + Rakefile to get the old behavior. + + rake will print a rather annoying warning whenever a + deprecated class name is referenced without enabling classic + namespace. + +===== Bug Fixes + +* Several unit tests and functional tests were fixed to run better + under windows. + +* Directory tasks are now a specialized version of a File task. A + directory task will only be triggered if it doesn't exist. It will + not be triggered if it is out of date w.r.t. any of its + prerequisites. + +* Fixed a bug in the Rake::GemPackageTask class so that the gem now + properly contains the platform name. + +* Fixed a bug where a prerequisite on a file task would cause + an exception if the prerequisite did not exist. + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. +The following people either contributed patches, made suggestions or +made otherwise helpful comments. Thanks to ... + +* Greg Fast (better ruby_opt test options) +* Kelly Felkins (requested by better namespace support) +* Martin Fowler (suggested Task.investigation) +* Stuart Jansen (send initial patch for multiple prerequisites). +* Masao Mutch (better support for non-ruby Gem platforms) +* Philipp Neubeck (patch for file task exception fix) + +-- Jim Weirich + +=== 0.5.4 + +Time for some minor bug fixes and small enhancements + +==== Changes + +Here are the changes for version 0.5.4 ... + +* Added double quotes to the test runner. This allows the location of + the tests (and runner) to be in a directory path that contains + spaces (e.g. "C:/Program Files/ruby/bin"). +* Added .svn to default ignore list. Now subversion project metadata + is automatically ignored by Rake's FileList. +* Updated FileList#include to support nested arrays and filelists. + FileLists are flat lists of file names. Using a FileList in an + include will flatten out the nested file names. + +== Thanks + +As usual, it was input from users that drove a alot of these changes. +Thanks to ... + +* Tilman Sauerbeck for the nested FileList suggestion. +* Josh Knowles for pointing out the spaces in directory name problem. + +-- Jim Weirich + +=== 0.5.3 + +Although it has only been two weeks since the last release, we have +enough updates to the Rake program to make it time for another +release. + +==== Changes + +Here are the changes for version 0.5.3 ... + +* FileLists have been extensively changed so that they mimic the + behavior of real arrays even more closely. In particular, + operations on FileLists that return a new collection (e.g. collect, + reject) will now return a FileList rather than an array. In + addition, several places where FileLists were not properly expanded + before use have been fixed. +* A method (+ext+) to simplify the handling of file extensions was + added to String and to Array. +* The 'testrb' script in test/unit tends to silently swallow syntax + errors in test suites. Because of that, the default test loader is + now a rake-provided script. You can still use 'testrb' by setting + the loader flag in the test task to :testrb. (See the API documents + for TestTask for all the loader flag values). +* FileUtil methods (e.g. cp, mv, install) are now declared to be + private. This will cut down on the interference with user defined + methods of the same name. +* Fixed the verbose flag in the TestTask so that the test code is + controlled by the flag. Also shortened up some failure messages. + (Thanks to Tobias Luetke for the suggestion). +* Rules will now properly detect a task that can generate a source + file. Previously rules would only consider source files that were + already present. +* Added an +import+ command that allows Rake to dynamically import + dependendencies into a running Rake session. The +import+ command + can run tasks to update the dependency file before loading them. + Dependency files can be in rake or make format, allowing rake to + work with tools designed to generate dependencies for make. + +==== Thanks + +As usual, it was input from users that drove a alot of these changes. +Thanks to ... + +* Brian Gernhardt for the rules fix (especially for the patience to + explain the problem to me until I got what he was talking about). +* Stefan Lang for pointing out problems in the dark corners of the + FileList implementation. +* Alexey Verkhovsky pointing out the silently swallows syntax errors + in tests. +* Tobias Luetke for beautifying the test task output. +* Sam Roberts for some of the ideas behind dependency loading. + +-- Jim Weirich + + +=== 0.5.0 + +It has been a long time in coming, but we finally have a new version +of Rake available. + +==== Changes + +* Fixed documentation that was lacking the Rake module name (Tilman + Sauerbeck). +* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck). +* Recursive rules are now supported (Tilman Sauerbeck). +* Added warning option for the Test Task (requested by Eric Hodel). +* The jamis rdoc template is only used if it exists. +* Added fix for Ruby 1.8.2 test/unit and rails problem. +* Added contributed rake man file (Jani Monoses). +* Added Brian Candler's fix for problems in --trace and --dry-run + mode. + +==== Thanks + +Lots of people provided input to this release. Thanks to Tilman +Sauerbeck for numerous patches, documentation fixes and suggestions. +And for also pushing me to get this release out. Also, thanks to +Brian Candler for the finding and fixing --trace/dry-run fix. That +was an obscure bug. Also to Eric Hodel for some good suggestions. + +-- Jim Weirich + +=== 0.4.15 + +==== Changes + +Version 0.4.15 is a bug fix update for the Ruby 1.8.2 compatibility +changes. This release includes: + +* Fixed a bug that prevented the TESTOPTS flag from working with the + revised for 1.8.2 test task. +* Updated the docs on --trace to indicate that it also enables a full + backtrace on errors. +* Several fixes for new warnings generated. + +==== Mini-Roadmap + +I will continue to issue Rake updates in the 0.4.xx series as new +Ruby-1.8.2 issues become manifest. Once the codebase stabilizes, I +will release a 0.5.0 version incorporating all the changes. If you +are not using Ruby-1.8.2 and wish to avoid version churn, I recommend +staying with a release prior to Rake-0.4.14. + +=== 0.4.14 + +Version 0.4.14 is a compatibility fix to allow Rake's test task to +work under Ruby 1.8.2. A change in the Test::Unit autorun feature +prevented Rake from running any tests. This release fixes the +problem. + +Rake 0.4.14 is the recommended release for anyone using Ruby 1.8.2. + +=== 0.4.13 + +* Fixed the dry-run flag so it is operating again. +* Multiple arguments to sh and ruby commands will not be interpreted + by the shell (patch provided by Jonathan Paisley). + +=== 0.4.12 + +* Added --silent (-s) to suppress the (in directory) rake message. + +=== 0.4.11 + +* Changed the "don't know how to rake" message (finally) +* Changes references to a literal "Rakefile" to reference the global + variable $rakefile (which contains the actual name of the rakefile). + +=== 0.4.10 + +* Added block support to the "sh" command, allowing users to take + special actions on the result of the system call. E.g. + + sh "shell_command" do |ok, res| + puts "Program returned #{res.exitstatus}" if ! ok + end + +=== 0.4.9 + +* Switched to Jamis Buck's RDoc template. +* Removed autorequire from Rake's gem spec. This prevents the Rake + libraries from loading while using rails. + +=== 0.4.8 + +* Added support for .rb versions of Rakefile. +* Removed \\\n's from test task. +* Fixed Ruby 1.9 compatibility issue with FileList. + +=== 0.4.7 + +* Fixed problem in FileList that caused Ruby 1.9 to go into infinite + recursion. Since to_a was removed from Object, it does not need to + added back into the list of methods to rewrite in FileList. (Thanks + to Kent Sibilev for pointing this out). + +=== 0.4.6 +* Removed test version of ln in FileUtils that prevented safe_ln from + using ln. + +=== 0.4.5 +* Upgraded comments in TestTask. +* FileList to_s and inspect now automatically resolve pending changes. +* FileList#exclude properly returns the FileList. + +=== 0.4.4 +* Fixed initialization problem with @comment. +* Now using multi -r technique in TestTask. Switch Rakefile back to + using the built-in test task macros because the rake runtime is no + longer needed. +* Added 'TEST=filename' and 'TESTOPTS=options' to the Test Task + macros. +* Allow a +test_files+ attribute in test tasks. This allows more + flexibility in specifying test files. + +=== 0.4.3 +* Fixed Comment leakage. + +=== 0.4.2 +* Added safe_ln that falls back to a copy if a file link is not supported. +* Package builder now uses safe\_ln. + +=== 0.4.1 +* Task comments are now additive, combined with "/". +* Works with (soon to be released) rubygems 0.6.2 (or 0.7.0) + +=== 0.4.0 +* FileList now uses deferred loading. The file system is not searched + until the first call that needs the file names. +* VAR=VALUE options are now accepted on the command line and are + treated like environment variables. The values may be tested in a + Rakefile by referencing ENV['VAR']. +* File.mtime is now used (instead of File.new().mtime). + +=== 0.3.2.x + +* Removed some hidden dependencies on rubygems. Tests now will test + gems only if they are installed. +* Removed Sys from some example files. I believe that is that last + reference to Sys outside of the contrib area. +* Updated all copyright notices to include 2004. + +=== 0.3.2 + +* GEM Installation now works with the application stub. + +=== 0.3.1 + +* FileLists now automatically ignore CVS, .bak, ! +* GEM Installation now works. + +=== 0.3.0 + +Promoted 0.2.10. + +=== 0.2.10 +General + +* Added title to Rake's rdocs +* Contrib packages are no longer included in the documentation. + +RDoc Issues + +* Removed default for the '--main' option +* Fixed rendering of the rdoc options +* Fixed clean/clobber confusion with rerdoc +* 'title' attribute added + +Package Task Library Issues + +* Version (or explicit :noversion) is required. +* +package_file+ attribute is now writable + +FileList Issues + +* Dropped bang version of exclude. Now using ant-like include/exclude semantics. +* Enabled the "yield self" idiom in FileList#initialize. + +=== 0.2.9 + +This version contains numerous changes as the RubyConf.new(2003) +presentation was being prepared. The changes include: + +* The monolithic rubyapp task library is in the process of being + dropped in favor of lighter weight task libraries. + +=== 0.2.7 + +* Added "desc" for task descriptions. +* -T will now display tasks with descriptions. +* -P will display tasks and prerequisites. +* Dropped the Sys module in favor of the 1.8.x FileUtils module. Sys + is still supported in the contrib area. + +=== 0.2.6 + +* Moved to RubyForge + +=== 0.2.5 + +* Switched to standard ruby app builder. +* Added no_match option to file matcher. + +=== 0.2.4 + +* Fixed indir, which neglected to actually change directories. + +=== 0.2.3 + +* Added rake module for a help target +* Added 'for\_files' to Sys +* Added a $rakefile constant +* Added test for selecting proper rule with multiple targets. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/MIT-LICENSE b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/MIT-LICENSE similarity index 100% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/MIT-LICENSE rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/MIT-LICENSE diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/README.rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/README.rdoc similarity index 73% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/README.rdoc rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/README.rdoc index 2ae5f3f6..ab136b85 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/README.rdoc +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/README.rdoc @@ -2,8 +2,8 @@ home :: https://github.com/ruby/rake bugs :: https://github.com/ruby/rake/issues -docs :: http://docs.seattlerb.org/rake/ -build :: {travis-ci}[https://travis-ci.org/ruby/rake] +docs :: https://ruby.github.io/rake +build status :: {travis-ci}[https://travis-ci.org/ruby/rake] {appveyor}[https://ci.appveyor.com/project/ruby/rake] == Description @@ -24,9 +24,9 @@ Rake has the following features: file names and paths. * A library of prepackaged tasks to make building rakefiles easier. For example, - tasks for building tarballs and publishing to FTP or SSH sites. (Formerly - tasks for building RDoc and Gems were included in rake but they're now - available in RDoc and RubyGems respectively.) + tasks for building tarballs. (Formerly + tasks for building RDoc, Gems, and publishing to FTP were included in rake but they're now + available in RDoc, RubyGems, and rake-contrib respectively.) * Supports parallel execution of tasks. @@ -75,10 +75,10 @@ Type "rake --help" for all available options. === Rake Information -* {Rake command-line}[rdoc-ref:doc/command_line_usage.rdoc] -* {Writing Rakefiles}[rdoc-ref:doc/rakefile.rdoc] -* The original {Rake announcement}[rdoc-ref:doc/rational.rdoc] -* Rake {glossary}[rdoc-ref:doc/glossary.rdoc] +* {Rake command-line}[link:doc/command_line_usage.rdoc] +* {Writing Rakefiles}[link:doc/rakefile.rdoc] +* The original {Rake announcement}[link:doc/rational.rdoc] +* Rake {glossary}[link:doc/glossary.rdoc] === Presentations and Articles about Rake @@ -101,13 +101,14 @@ other projects with similar (and not so similar) goals. * http://directory.fsf.org/wiki/Bras -- Bras, one of earliest implementations of "make in a scripting language". * http://www.a-a-p.org -- Make in Python -* http://www.aromatic.com/tools/jam.txt -- JAM, Java Automated Make * http://ant.apache.org -- The Ant project * http://search.cpan.org/search?query=PerlBuildSystem -- The Perl Build System * http://www.rubydoc.info/gems/rant/0.5.7/frames -- Rant, another Ruby make tool. == Credits +[Jim Weirich] Who originally created Rake. + [Ryan Dlugosz] For the initial conversation that sparked Rake. [Nobuyoshi Nakada ] For the initial patch for rule support. @@ -116,6 +117,8 @@ other projects with similar (and not so similar) goals. [Eric Hodel] For aid in maintaining rake. +[Hiroshi SHIBATA] Maintainer of Rake 10.X and Rake 11.X + == License Rake is available under an MIT-style license. @@ -127,7 +130,7 @@ Rake is available under an MIT-style license. = Other stuff Author:: Jim Weirich -Requires:: Ruby 1.8.7 or later +Requires:: Ruby 2.0.0 or later License:: Copyright Jim Weirich. Released under an MIT-style license. See the MIT-LICENSE file included in the distribution. @@ -137,3 +140,17 @@ License:: Copyright Jim Weirich. This software is provided "as is" and without any express or implied warranties, including, without limitation, the implied warranties of merchantability and fitness for a particular purpose. + +== Historical + +Rake was originally created by Jim Weirich, who unfortunately passed away in +February 2014. This repository was originally hosted at +{github.com/jimweirich/rake}[https://github.com/jimweirich/rake/], however +with his passing, has been moved to {ruby/rake}[https://github.com/ruby/rake]. + +You can view Jim's last commit here: +https://github.com/jimweirich/rake/tree/336559f28f55bce418e2ebcc0a57548dcbac4025 + +You can {read more about Jim}[https://en.wikipedia.org/wiki/Jim_Weirich] at Wikipedia. + +Thank you for this great tool, Jim. We'll remember you. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/Rakefile b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/Rakefile new file mode 100644 index 00000000..e03dc6fe --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/Rakefile @@ -0,0 +1,41 @@ +# Rakefile for rake -*- ruby -*- + +# Copyright 2003, 2004, 2005 by Jim Weirich (jim@weirichhouse.org) +# All rights reserved. + +# This file may be distributed under an MIT style license. See +# MIT-LICENSE for details. + +lib = File.expand_path("../lib", __FILE__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) + +begin + require "bundler/gem_tasks" +rescue LoadError +end + +require "rake/testtask" +Rake::TestTask.new(:test) do |t| + t.libs << "test" + t.verbose = true + t.test_files = FileList["test/**/test_*.rb"] +end + +require "rdoc/task" +RDoc::Task.new do |doc| + doc.main = "README.rdoc" + doc.title = "Rake -- Ruby Make" + doc.rdoc_files = FileList.new %w[lib MIT-LICENSE doc/**/*.rdoc *.rdoc] + doc.rdoc_dir = "html" +end + +task ghpages: :rdoc do + %x[git checkout gh-pages] + require "fileutils" + FileUtils.rm_rf "/tmp/html" + FileUtils.mv "html", "/tmp" + FileUtils.rm_rf "*" + FileUtils.cp_r Dir.glob("/tmp/html/*"), "." +end + +task default: :test diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/azure-pipelines.yml b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/azure-pipelines.yml new file mode 100644 index 00000000..19cce3ee --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/azure-pipelines.yml @@ -0,0 +1,11 @@ +jobs: +- job: macOS + pool: + vmImage: 'macos-10.13' + steps: + - script: | + gem install bundler + bundle install --retry=3 --jobs=4 + displayName: 'bundle install' + - script: ruby -Ilib exe/rake + displayName: 'ruby -Ilib exe/rake' diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/bundle b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/bundle new file mode 100755 index 00000000..524dfd3f --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/bundle @@ -0,0 +1,105 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'bundle' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "rubygems" + +m = Module.new do + module_function + + def invoked_as_script? + File.expand_path($0) == File.expand_path(__FILE__) + end + + def env_var_version + ENV["BUNDLER_VERSION"] + end + + def cli_arg_version + return unless invoked_as_script? # don't want to hijack other binstubs + return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update` + bundler_version = nil + update_index = nil + ARGV.each_with_index do |a, i| + if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN + bundler_version = a + end + next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/ + bundler_version = $1 || ">= 0.a" + update_index = i + end + bundler_version + end + + def gemfile + gemfile = ENV["BUNDLE_GEMFILE"] + return gemfile if gemfile && !gemfile.empty? + + File.expand_path("../../Gemfile", __FILE__) + end + + def lockfile + lockfile = + case File.basename(gemfile) + when "gems.rb" then gemfile.sub(/\.rb$/, gemfile) + else "#{gemfile}.lock" + end + File.expand_path(lockfile) + end + + def lockfile_version + return unless File.file?(lockfile) + lockfile_contents = File.read(lockfile) + return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/ + Regexp.last_match(1) + end + + def bundler_version + @bundler_version ||= begin + env_var_version || cli_arg_version || + lockfile_version || "#{Gem::Requirement.default}.a" + end + end + + def load_bundler! + ENV["BUNDLE_GEMFILE"] ||= gemfile + + # must dup string for RG < 1.8 compatibility + activate_bundler(bundler_version.dup) + end + + def activate_bundler(bundler_version) + if Gem::Version.correct?(bundler_version) && Gem::Version.new(bundler_version).release < Gem::Version.new("2.0") + bundler_version = "< 2" + end + gem_error = activation_error_handling do + gem "bundler", bundler_version + end + return if gem_error.nil? + require_error = activation_error_handling do + require "bundler/version" + end + return if require_error.nil? && Gem::Requirement.new(bundler_version).satisfied_by?(Gem::Version.new(Bundler::VERSION)) + warn "Activating bundler (#{bundler_version}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_version}'`" + exit 42 + end + + def activation_error_handling + yield + nil + rescue StandardError, LoadError => e + e + end +end + +m.load_bundler! + +if m.invoked_as_script? + load Gem.bin_path("bundler", "bundle") +end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/console b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/console new file mode 100755 index 00000000..b8342352 --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/console @@ -0,0 +1,7 @@ +#!/usr/bin/env ruby + +require "bundler/setup" +require "rake" + +require "irb" +IRB.start diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rake b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rake new file mode 100755 index 00000000..9275675e --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rake @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'rake' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("rake", "rake") diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rdoc new file mode 100755 index 00000000..a952e798 --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rdoc @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'rdoc' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("rdoc", "rdoc") diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rubocop b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rubocop new file mode 100755 index 00000000..d0c48829 --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rubocop @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'rubocop' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("rubocop", "rubocop") diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/setup b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/setup new file mode 100755 index 00000000..cf4ad25e --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/setup @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -euo pipefail +IFS=$'\n\t' +set -vx + +bundle install diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/bin/rake b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/exe/rake similarity index 93% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/bin/rake rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/exe/rake index 4e0bbb7b..a00975f3 100755 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/bin/rake +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/exe/rake @@ -22,12 +22,6 @@ # IN THE SOFTWARE. #++ -begin - require 'rubygems' - gem 'rake' -rescue LoadError -end - -require 'rake' +require "rake" Rake.application.run diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake.rb similarity index 54% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake.rb index e1f559f8..0dfd0531 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true #-- # Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com) # @@ -20,54 +21,45 @@ # IN THE SOFTWARE. #++ -module Rake - VERSION = '10.5.0' -end +module Rake; end -require 'rake/version' +require "rake/version" -# :stopdoc: -# TODO: Remove in Rake 11 -RAKEVERSION = Rake::VERSION -# :startdoc: - -require 'rbconfig' -require 'fileutils' -require 'singleton' -require 'monitor' -require 'optparse' -require 'ostruct' +require "rbconfig" +require "fileutils" +require "singleton" +require "monitor" +require "optparse" +require "ostruct" -require 'rake/ext/module' -require 'rake/ext/string' -require 'rake/ext/time' +require "rake/ext/string" -require 'rake/win32' +require "rake/win32" -require 'rake/linked_list' -require 'rake/cpu_counter' -require 'rake/scope' -require 'rake/task_argument_error' -require 'rake/rule_recursion_overflow_error' -require 'rake/rake_module' -require 'rake/trace_output' -require 'rake/pseudo_status' -require 'rake/task_arguments' -require 'rake/invocation_chain' -require 'rake/task' -require 'rake/file_task' -require 'rake/file_creation_task' -require 'rake/multi_task' -require 'rake/dsl_definition' -require 'rake/file_utils_ext' -require 'rake/file_list' -require 'rake/default_loader' -require 'rake/early_time' -require 'rake/late_time' -require 'rake/name_space' -require 'rake/task_manager' -require 'rake/application' -require 'rake/backtrace' +require "rake/linked_list" +require "rake/cpu_counter" +require "rake/scope" +require "rake/task_argument_error" +require "rake/rule_recursion_overflow_error" +require "rake/rake_module" +require "rake/trace_output" +require "rake/pseudo_status" +require "rake/task_arguments" +require "rake/invocation_chain" +require "rake/task" +require "rake/file_task" +require "rake/file_creation_task" +require "rake/multi_task" +require "rake/dsl_definition" +require "rake/file_utils_ext" +require "rake/file_list" +require "rake/default_loader" +require "rake/early_time" +require "rake/late_time" +require "rake/name_space" +require "rake/task_manager" +require "rake/application" +require "rake/backtrace" $trace = false diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/application.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/application.rb similarity index 81% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/application.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/application.rb index 115ca890..9ac9b213 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/application.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/application.rb @@ -1,12 +1,12 @@ -require 'shellwords' -require 'optparse' +# frozen_string_literal: true +require "optparse" -require 'rake/task_manager' -require 'rake/file_list' -require 'rake/thread_pool' -require 'rake/thread_history_display' -require 'rake/trace_output' -require 'rake/win32' +require "rake/task_manager" +require "rake/file_list" +require "rake/thread_pool" +require "rake/thread_history_display" +require "rake/trace_output" +require "rake/win32" module Rake @@ -35,17 +35,20 @@ class Application # List of the top level task names (task names from the command line). attr_reader :top_level_tasks + # Override the detected TTY output state (mostly for testing) + attr_writer :tty_output + DEFAULT_RAKEFILES = [ - 'rakefile', - 'Rakefile', - 'rakefile.rb', - 'Rakefile.rb' + "rakefile", + "Rakefile", + "rakefile.rb", + "Rakefile.rb" ].freeze # Initialize a Rake::Application object. def initialize super - @name = 'rake' + @name = "rake" @rakefiles = DEFAULT_RAKEFILES.dup @rakefile = nil @pending_imports = [] @@ -54,11 +57,13 @@ def initialize @default_loader = Rake::DefaultLoader.new @original_dir = Dir.pwd @top_level_tasks = [] - add_loader('rb', DefaultLoader.new) - add_loader('rf', DefaultLoader.new) - add_loader('rake', DefaultLoader.new) + add_loader("rb", DefaultLoader.new) + add_loader("rf", DefaultLoader.new) + add_loader("rake", DefaultLoader.new) @tty_output = STDOUT.tty? - @terminal_columns = ENV['RAKE_COLUMNS'].to_i + @terminal_columns = ENV["RAKE_COLUMNS"].to_i + + set_default_options end # Run the Rake application. The run method performs the following @@ -71,19 +76,24 @@ def initialize # If you wish to build a custom rake command, you should call # +init+ on your application. Then define any tasks. Finally, # call +top_level+ to run your top level tasks. - def run + def run(argv = ARGV) standard_exception_handling do - init + init "rake", argv load_rakefile top_level end end # Initialize the command line parameters and app name. - def init(app_name='rake') + def init(app_name="rake", argv = ARGV) standard_exception_handling do @name = app_name - args = handle_options + begin + args = handle_options argv + rescue ArgumentError + # Backward compatibility for capistrano + args = handle_options + end collect_command_line_tasks(args) end end @@ -162,7 +172,7 @@ def parse_task_string(string) # :nodoc: args = [] begin - /((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args + /\s*((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args remaining_args = $2 args << $1.gsub(/\\(.)/, '\1') @@ -202,13 +212,22 @@ def display_error_message(ex) # :nodoc: end def display_exception_details(ex) # :nodoc: - seen = Thread.current[:rake_display_exception_details_seen] ||= [] - return if seen.include? ex - seen << ex + display_exception_details_seen << ex display_exception_message_details(ex) display_exception_backtrace(ex) - display_exception_details(ex.cause) if has_cause?(ex) + display_cause_details(ex.cause) if has_cause?(ex) + end + + def display_cause_details(ex) # :nodoc: + return if display_exception_details_seen.include? ex + + trace "\nCaused by:" + display_exception_details(ex) + end + + def display_exception_details_seen # :nodoc: + Thread.current[:rake_display_exception_details_seen] ||= [] end def has_cause?(ex) # :nodoc: @@ -257,7 +276,7 @@ def have_rakefile # :nodoc: if File.exist?(fn) others = FileList.glob(fn, File::FNM_CASEFOLD) return others.size == 1 ? others.first : fn - elsif fn == '' + elsif fn == "" return fn end end @@ -269,11 +288,6 @@ def tty_output? # :nodoc: @tty_output end - # Override the detected TTY output state (mostly for testing) - def tty_output=(tty_output_state) # :nodoc: - @tty_output = tty_output_state - end - # We will truncate output if we are outputting to a TTY or if we've been # given an explicit column width to honor def truncate_output? # :nodoc: @@ -345,7 +359,7 @@ def dynamic_width_tput # :nodoc: end def unix? # :nodoc: - RbConfig::CONFIG['host_os'] =~ + RbConfig::CONFIG["host_os"] =~ /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i end @@ -378,7 +392,7 @@ def trace(*strings) # :nodoc: def sort_options(options) # :nodoc: options.sort_by { |opt| - opt.select { |o| o =~ /^-/ }.map { |o| o.downcase }.sort.reverse + opt.select { |o| o.is_a?(String) && o =~ /^-/ }.map(&:downcase).sort.reverse } end private :sort_options @@ -388,38 +402,38 @@ def sort_options(options) # :nodoc: def standard_rake_options # :nodoc: sort_options( [ - ['--all', '-A', + ["--all", "-A", "Show all tasks, even uncommented ones (in combination with -T or -D)", lambda { |value| options.show_all_tasks = value } ], - ['--backtrace=[OUT]', + ["--backtrace=[OUT]", "Enable full backtrace. OUT can be stderr (default) or stdout.", lambda { |value| options.backtrace = true - select_trace_output(options, 'backtrace', value) + select_trace_output(options, "backtrace", value) } ], - ['--build-all', '-B', + ["--build-all", "-B", "Build all prerequisites, including those which are up-to-date.", lambda { |value| options.build_all = true } ], - ['--comments', + ["--comments", "Show commented tasks only", lambda { |value| options.show_all_tasks = !value } ], - ['--describe', '-D [PATTERN]', + ["--describe", "-D [PATTERN]", "Describe the tasks (matching optional PATTERN), then exit.", lambda { |value| select_tasks_to_show(options, :describe, value) } ], - ['--dry-run', '-n', + ["--dry-run", "-n", "Do a dry run without executing actions.", lambda { |value| Rake.verbose(true) @@ -428,31 +442,31 @@ def standard_rake_options # :nodoc: options.trace = true } ], - ['--execute', '-e CODE', + ["--execute", "-e CODE", "Execute some Ruby code and exit.", lambda { |value| eval(value) exit } ], - ['--execute-print', '-p CODE', + ["--execute-print", "-p CODE", "Execute some Ruby code, print the result, then exit.", lambda { |value| puts eval(value) exit } ], - ['--execute-continue', '-E CODE', + ["--execute-continue", "-E CODE", "Execute some Ruby code, " + "then continue with normal task processing.", lambda { |value| eval(value) } ], - ['--jobs', '-j [NUMBER]', + ["--jobs", "-j [NUMBER]", "Specifies the maximum number of tasks to execute in parallel. " + "(default is number of CPU cores + 4)", lambda { |value| - if value.nil? || value == '' - value = FIXNUM_MAX + if value.nil? || value == "" + value = Float::INFINITY elsif value =~ /^\d+$/ value = value.to_i else @@ -462,7 +476,7 @@ def standard_rake_options # :nodoc: options.thread_pool_size = value - 1 } ], - ['--job-stats [LEVEL]', + ["--job-stats [LEVEL]", "Display job statistics. " + "LEVEL=history displays a complete job list", lambda { |value| @@ -473,42 +487,42 @@ def standard_rake_options # :nodoc: end } ], - ['--libdir', '-I LIBDIR', + ["--libdir", "-I LIBDIR", "Include LIBDIR in the search path for required modules.", lambda { |value| $:.push(value) } ], - ['--multitask', '-m', + ["--multitask", "-m", "Treat all tasks as multitasks.", lambda { |value| options.always_multitask = true } ], - ['--no-search', '--nosearch', - '-N', "Do not search parent directories for the Rakefile.", + ["--no-search", "--nosearch", + "-N", "Do not search parent directories for the Rakefile.", lambda { |value| options.nosearch = true } ], - ['--prereqs', '-P', + ["--prereqs", "-P", "Display the tasks and dependencies, then exit.", lambda { |value| options.show_prereqs = true } ], - ['--quiet', '-q', + ["--quiet", "-q", "Do not log messages to standard output.", lambda { |value| Rake.verbose(false) } ], - ['--rakefile', '-f [FILENAME]', + ["--rakefile", "-f [FILENAME]", "Use FILENAME as the rakefile to search for.", lambda { |value| - value ||= '' + value ||= "" @rakefiles.clear @rakefiles << value } ], - ['--rakelibdir', '--rakelib', '-R RAKELIBDIR', + ["--rakelibdir", "--rakelib", "-R RAKELIBDIR", "Auto-import any .rake files in RAKELIBDIR. " + "(default is 'rakelib')", lambda { |value| options.rakelib = value.split(File::PATH_SEPARATOR) } ], - ['--require', '-r MODULE', + ["--require", "-r MODULE", "Require MODULE before executing rakefile.", lambda { |value| begin @@ -522,11 +536,11 @@ def standard_rake_options # :nodoc: end } ], - ['--rules', + ["--rules", "Trace the rules resolution.", lambda { |value| options.trace_rules = true } ], - ['--silent', '-s', + ["--silent", "-s", "Like --quiet, but also suppresses the " + "'in directory' announcement.", lambda { |value| @@ -534,59 +548,60 @@ def standard_rake_options # :nodoc: options.silent = true } ], - ['--suppress-backtrace PATTERN', + ["--suppress-backtrace PATTERN", "Suppress backtrace lines matching regexp PATTERN. " + "Ignored if --trace is on.", lambda { |value| options.suppress_backtrace_pattern = Regexp.new(value) } ], - ['--system', '-g', + ["--system", "-g", "Using system wide (global) rakefiles " + "(usually '~/.rake/*.rake').", lambda { |value| options.load_system = true } ], - ['--no-system', '--nosystem', '-G', + ["--no-system", "--nosystem", "-G", "Use standard project Rakefile search paths, " + "ignore system wide rakefiles.", lambda { |value| options.ignore_system = true } ], - ['--tasks', '-T [PATTERN]', + ["--tasks", "-T [PATTERN]", "Display the tasks (matching optional PATTERN) " + - "with descriptions, then exit.", + "with descriptions, then exit. " + + "-AT combination displays all of tasks contained no description.", lambda { |value| select_tasks_to_show(options, :tasks, value) } ], - ['--trace=[OUT]', '-t', + ["--trace=[OUT]", "-t", "Turn on invoke/execute tracing, enable full backtrace. " + "OUT can be stderr (default) or stdout.", lambda { |value| options.trace = true options.backtrace = true - select_trace_output(options, 'trace', value) + select_trace_output(options, "trace", value) Rake.verbose(true) } ], - ['--verbose', '-v', + ["--verbose", "-v", "Log message to standard output.", lambda { |value| Rake.verbose(true) } ], - ['--version', '-V', + ["--version", "-V", "Display the program version.", lambda { |value| - puts "rake, version #{RAKEVERSION}" + puts "rake, version #{Rake::VERSION}" exit } ], - ['--where', '-W [PATTERN]', + ["--where", "-W [PATTERN]", "Describe the tasks (matching optional PATTERN), then exit.", lambda { |value| select_tasks_to_show(options, :lines, value) options.show_all_tasks = true } ], - ['--no-deprecation-warnings', '-X', + ["--no-deprecation-warnings", "-X", "Disable the deprecation warnings.", lambda { |value| options.ignore_deprecate = true @@ -597,7 +612,7 @@ def standard_rake_options # :nodoc: def select_tasks_to_show(options, show_tasks, value) # :nodoc: options.show_tasks = show_tasks - options.show_task_pattern = Regexp.new(value || '') + options.show_task_pattern = Regexp.new(value || "") Rake::TaskManager.record_task_metadata = true end private :select_tasks_to_show @@ -605,9 +620,9 @@ def select_tasks_to_show(options, show_tasks, value) # :nodoc: def select_trace_output(options, trace_option, value) # :nodoc: value = value.strip unless value.nil? case value - when 'stdout' + when "stdout" options.trace_output = $stdout - when 'stderr', nil + when "stderr", nil options.trace_output = $stderr else fail CommandLineOptionError, @@ -619,9 +634,8 @@ def select_trace_output(options, trace_option, value) # :nodoc: # Read and handle the command line options. Returns the command line # arguments that we didn't understand, which should (in theory) be just # task names and env vars. - def handle_options # :nodoc: - options.rakelib = ['rakelib'] - options.trace_output = $stderr + def handle_options(argv) # :nodoc: + set_default_options OptionParser.new do |opts| opts.banner = "#{Rake.application.name} [-f rakefile] {options} targets..." @@ -634,8 +648,8 @@ def handle_options # :nodoc: end standard_rake_options.each { |args| opts.on(*args) } - opts.environment('RAKEOPT') - end.parse(ARGV) + opts.environment("RAKEOPT") + end.parse(argv) end # Similar to the regular Ruby +require+ command, but will check @@ -673,7 +687,7 @@ def print_rakefile_directory(location) # :nodoc: def raw_load_rakefile # :nodoc: rakefile, location = find_rakefile_location - if (! options.ignore_system) && + if (!options.ignore_system) && (options.load_system || rakefile.nil?) && system_dir && File.directory?(system_dir) print_rakefile_directory(location) @@ -687,7 +701,7 @@ def raw_load_rakefile # :nodoc: Dir.chdir(location) print_rakefile_directory(location) Rake.load_rakefile(File.expand_path(@rakefile)) if - @rakefile && @rakefile != '' + @rakefile && @rakefile != "" options.rakelib.each do |rlib| glob("#{rlib}/*.rake") do |name| add_import name @@ -698,7 +712,7 @@ def raw_load_rakefile # :nodoc: end def glob(path, &block) # :nodoc: - FileList.glob(path.gsub("\\", '/')).each(&block) + FileList.glob(path.tr("\\", "/")).each(&block) end private :glob @@ -706,8 +720,8 @@ def glob(path, &block) # :nodoc: def system_dir # :nodoc: @system_dir ||= begin - if ENV['RAKE_SYSTEM'] - ENV['RAKE_SYSTEM'] + if ENV["RAKE_SYSTEM"] + ENV["RAKE_SYSTEM"] else standard_system_dir end @@ -721,7 +735,7 @@ def standard_system_dir #:nodoc: end else def standard_system_dir #:nodoc: - File.join(File.expand_path('~'), '.rake') + File.join(File.expand_path("~"), ".rake") end end private :standard_system_dir @@ -780,11 +794,31 @@ def rakefile_location(backtrace=caller) # :nodoc: re = /^#{@rakefile}$/ re = /#{re.source}/i if windows? - backtrace.find { |str| str =~ re } || '' + backtrace.find { |str| str =~ re } || "" + end + + def set_default_options # :nodoc: + options.always_multitask = false + options.backtrace = false + options.build_all = false + options.dryrun = false + options.ignore_deprecate = false + options.ignore_system = false + options.job_stats = false + options.load_system = false + options.nosearch = false + options.rakelib = %w[rakelib] + options.show_all_tasks = false + options.show_prereqs = false + options.show_task_pattern = nil + options.show_tasks = nil + options.silent = false + options.suppress_backtrace_pattern = nil + options.thread_pool_size = Rake.suggested_thread_count + options.trace = false + options.trace_output = $stderr + options.trace_rules = false end - private - FIXNUM_MAX = (2**(0.size * 8 - 2) - 1) # :nodoc: - end end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/backtrace.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/backtrace.rb similarity index 85% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/backtrace.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/backtrace.rb index dc187734..31ff0545 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/backtrace.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/backtrace.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake module Backtrace # :nodoc: all SYS_KEYS = RbConfig::CONFIG.keys.grep(/(?:[a-z]prefix|libdir)\z/) @@ -5,12 +6,12 @@ module Backtrace # :nodoc: all [ File.join(File.dirname(__FILE__), "..") ] SUPPRESSED_PATHS = SYS_PATHS. - map { |s| s.gsub("\\", "/") }. + map { |s| s.tr("\\", "/") }. map { |f| File.expand_path(f) }. reject { |s| s.nil? || s =~ /^ *$/ } SUPPRESSED_PATHS_RE = SUPPRESSED_PATHS.map { |f| Regexp.quote(f) }.join("|") SUPPRESSED_PATHS_RE << "|^org\\/jruby\\/\\w+\\.java" if - Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == 'jruby' + Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == "jruby" SUPPRESS_PATTERN = %r!(\A(#{SUPPRESSED_PATHS_RE})|bin/rake:\d+)!i diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/clean.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/clean.rb similarity index 90% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/clean.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/clean.rb index 514f9f9c..5af44015 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/clean.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/clean.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true # The 'rake/clean' file defines two file lists (CLEAN and CLOBBER) and # two rake tasks (:clean and :clobber). # @@ -11,7 +12,7 @@ # The intent of this task is to return a project to its # pristine, just unpacked state. -require 'rake' +require "rake" # :stopdoc: @@ -29,6 +30,7 @@ def cleanup_files(file_names) def cleanup(file_name, opts={}) begin + opts = { verbose: Rake.application.options.trace }.merge(opts) rm_r file_name, opts rescue StandardError => ex puts "Failed to remove #{file_name}: #{ex}" unless file_already_gone?(file_name) @@ -60,7 +62,7 @@ def cant_be_deleted?(path_name) CLEAN = ::Rake::FileList["**/*~", "**/*.bak", "**/core"] CLEAN.clear_exclude.exclude { |fn| - fn.pathmap("%f").downcase == 'core' && File.directory?(fn) + fn.pathmap("%f").downcase == "core" && File.directory?(fn) } desc "Remove any temporary products." @@ -71,6 +73,6 @@ def cant_be_deleted?(path_name) CLOBBER = ::Rake::FileList.new desc "Remove any generated files." -task :clobber => [:clean] do +task clobber: [:clean] do Rake::Cleaner.cleanup_files(CLOBBER) end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/cloneable.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/cloneable.rb similarity index 93% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/cloneable.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/cloneable.rb index d53645f2..eddb77e2 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/cloneable.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/cloneable.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake ## # Mixin for creating easily cloned objects. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/cpu_counter.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb similarity index 71% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/cpu_counter.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb index f29778ed..564a6285 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/cpu_counter.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake # Based on a script at: @@ -14,7 +15,7 @@ def count_with_default(default=4) end begin - require 'etc' + require "etc" rescue LoadError else if Etc.respond_to?(:nprocessors) @@ -30,31 +31,22 @@ def count Rake::CpuCounter.class_eval <<-'end;', __FILE__, __LINE__+1 require 'rbconfig' - # TODO: replace with IO.popen using array-style arguments in Rake 11 - require 'open3' - def count - if defined?(Java::Java) + if RUBY_PLATFORM == 'java' count_via_java_runtime else case RbConfig::CONFIG['host_os'] - when /darwin9/ - count_via_hwprefs_cpu_count - when /darwin/ - count_via_hwprefs_thread_count || count_via_sysctl when /linux/ count_via_cpuinfo - when /bsd/ + when /darwin|bsd/ count_via_sysctl when /mswin|mingw/ count_via_win32 else # Try everything count_via_win32 || - count_via_sysctl || - count_via_hwprefs_thread_count || - count_via_hwprefs_cpu_count || - count_via_cpuinfo + count_via_sysctl || + count_via_cpuinfo end end end @@ -80,14 +72,6 @@ def count_via_cpuinfo nil end - def count_via_hwprefs_thread_count - run 'hwprefs', 'thread_count' - end - - def count_via_hwprefs_cpu_count - run 'hwprefs', 'cpu_count' - end - def count_via_sysctl run 'sysctl', '-n', 'hw.ncpu' end @@ -95,10 +79,8 @@ def count_via_sysctl def run(command, *args) cmd = resolve_command(command) if cmd - Open3.popen3 cmd, *args do |inn, out, err,| - inn.close - err.read - out.read.to_i + IO.popen [cmd, *args] do |io| + io.read.to_i end else nil @@ -117,8 +99,8 @@ def look_for_command(dir, command) end def in_path_command(command) - Open3.popen3 'which', command do |_, out,| - out.eof? ? nil : command + IO.popen ['which', command] do |io| + io.eof? ? nil : command end end end; diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/default_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/default_loader.rb similarity index 88% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/default_loader.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/default_loader.rb index 6154408f..d3b4650d 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/default_loader.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/default_loader.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake # Default Rakefile loader used by +import+. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/dsl_definition.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb similarity index 94% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/dsl_definition.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb index 4c57c1eb..c8046402 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/dsl_definition.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb @@ -1,5 +1,6 @@ +# frozen_string_literal: true # Rake DSL functions. -require 'rake/file_utils_ext' +require "rake/file_utils_ext" module Rake @@ -25,10 +26,9 @@ module DSL private # :call-seq: - # task task_name - # task task_name: dependencies - # task task_name, arguments => dependencies - # task task_name, argument[, argument ...], :needs: dependencies + # task(task_name) + # task(task_name: dependencies) + # task(task_name, arguments => dependencies) # # Declare a basic task. The +task_name+ is always the first argument. If # the task name contains a ":" it is defined in that namespace. @@ -56,12 +56,6 @@ module DSL # # $ rake package[1.2.3] # - # Alternate definition: - # - # task :package, :version, needs: :test do |t, args| - # # ... - # end - # def task(*args, &block) # :doc: Rake::Task.define_task(*args, &block) end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/early_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/early_time.rb similarity index 91% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/early_time.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/early_time.rb index abcb1872..80cc6bfa 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/early_time.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/early_time.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake # EarlyTime is a fake timestamp that occurs _before_ any other time value. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/core.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/core.rb similarity index 95% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/core.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/core.rb index 7575df15..226f2125 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/ext/core.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/core.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true class Module # Check for an existing method in the current class before extending. If # the method already exists, then a warning is printed and the extension is diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/string.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/string.rb similarity index 88% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/string.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/string.rb index f212223e..c70236ae 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/ext/string.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/string.rb @@ -1,4 +1,5 @@ -require 'rake/ext/core' +# frozen_string_literal: true +require "rake/ext/core" class String @@ -10,9 +11,9 @@ class String # +ext+ is a user added method for the String class. # # This String extension comes from Rake - def ext(newext='') - return self.dup if ['.', '..'].include? self - if newext != '' + def ext(newext="") + return self.dup if [".", ".."].include? self + if newext != "" newext = "." + newext unless newext =~ /^\./ end self.chomp(File.extname(self)) << newext @@ -26,8 +27,8 @@ def ext(newext='') def pathmap_explode head, tail = File.split(self) return [self] if head == self - return [tail] if head == '.' || tail == '/' - return [head, tail] if head == '/' + return [tail] if head == "." || tail == "/" + return [head, tail] if head == "/" return head.pathmap_explode + [tail] end protected :pathmap_explode @@ -57,15 +58,15 @@ def pathmap_partial(n) # This String extension comes from Rake def pathmap_replace(patterns, &block) result = self - patterns.split(';').each do |pair| - pattern, replacement = pair.split(',') + patterns.split(";").each do |pair| + pattern, replacement = pair.split(",") pattern = Regexp.new(pattern) - if replacement == '*' && block_given? + if replacement == "*" && block_given? result = result.sub(pattern, &block) elsif replacement result = result.sub(pattern, replacement) else - result = result.sub(pattern, '') + result = result.sub(pattern, "") end end result @@ -136,32 +137,32 @@ def pathmap_replace(patterns, &block) # This String extension comes from Rake def pathmap(spec=nil, &block) return self if spec.nil? - result = '' + result = "".dup spec.scan(/%\{[^}]*\}-?\d*[sdpfnxX%]|%-?\d+d|%.|[^%]+/) do |frag| case frag - when '%f' + when "%f" result << File.basename(self) - when '%n' + when "%n" result << File.basename(self).ext - when '%d' + when "%d" result << File.dirname(self) - when '%x' + when "%x" result << File.extname(self) - when '%X' + when "%X" result << self.ext - when '%p' + when "%p" result << self - when '%s' + when "%s" result << (File::ALT_SEPARATOR || File::SEPARATOR) - when '%-' + when "%-" # do nothing - when '%%' + when "%%" result << "%" when /%(-?\d+)d/ result << pathmap_partial($1.to_i) when /^%\{([^}]*)\}(\d*[dpfnxX])/ patterns, operator = $1, $2 - result << pathmap('%' + operator).pathmap_replace(patterns, &block) + result << pathmap("%" + operator).pathmap_replace(patterns, &block) when /^%/ fail ArgumentError, "Unknown pathmap specifier #{frag} in '#{spec}'" else diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_creation_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb similarity index 84% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_creation_task.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb index c87e2192..5a4c6849 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_creation_task.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb @@ -1,5 +1,6 @@ -require 'rake/file_task' -require 'rake/early_time' +# frozen_string_literal: true +require "rake/file_task" +require "rake/early_time" module Rake @@ -11,7 +12,7 @@ module Rake class FileCreationTask < FileTask # Is this file task needed? Yes if it doesn't exist. def needed? - ! File.exist?(name) + !File.exist?(name) end # Time stamp for file creation task. This time stamp is earlier diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_list.rb similarity index 89% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_list.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_list.rb index 93b8b537..22c339f2 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_list.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_list.rb @@ -1,7 +1,7 @@ -require 'rake/cloneable' -require 'rake/file_utils_ext' -require 'rake/pathmap' - +# frozen_string_literal: true +require "rake/cloneable" +require "rake/file_utils_ext" +require "rake/ext/string" module Rake @@ -41,8 +41,7 @@ class FileList # List of array methods (that are not in +Object+) that need to be # delegated. - ARRAY_METHODS = (Array.instance_methods - Object.instance_methods). - map { |n| n.to_s } + ARRAY_METHODS = (Array.instance_methods - Object.instance_methods).map(&:to_s) # List of additional methods that must be delegated. MUST_DEFINE = %w[inspect <=>] @@ -59,8 +58,7 @@ class FileList + - & | ] - DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE). - map { |s| s.to_s }.sort.uniq + DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE).map(&:to_s).sort.uniq # Now do the delegation. DELEGATING_METHODS.each do |sym| @@ -85,6 +83,8 @@ def #{sym}(*args, &block) end end + GLOB_PATTERN = %r{[*?\[\{]} + # Create a file list from the globbable patterns given. If you wish to # perform multiple includes or excludes at object build time, use the # "yield self" pattern. @@ -149,7 +149,11 @@ def include(*filenames) # def exclude(*patterns, &block) patterns.each do |pat| - @exclude_patterns << Rake.from_pathname(pat) + if pat.respond_to? :to_ary + exclude(*pat.to_ary) + else + @exclude_patterns << Rake.from_pathname(pat) + end end @exclude_procs << block if block_given? resolve_exclude unless @pending @@ -190,7 +194,7 @@ def *(other) result = @items * other case result when Array - FileList.new.import(result) + self.class.new.import(result) else result end @@ -215,7 +219,7 @@ def resolve def resolve_add(fn) # :nodoc: case fn - when %r{[*?\[\{]} + when GLOB_PATTERN add_matching(fn) else self << fn @@ -236,7 +240,7 @@ def resolve_exclude # :nodoc: # FileList['a.c', 'b.c'].sub(/\.c$/, '.o') => ['a.o', 'b.o'] # def sub(pat, rep) - inject(FileList.new) { |res, fn| res << fn.sub(pat, rep) } + inject(self.class.new) { |res, fn| res << fn.sub(pat, rep) } end # Return a new FileList with the results of running +gsub+ against each @@ -247,7 +251,7 @@ def sub(pat, rep) # => ['lib\\test\\file', 'x\\y'] # def gsub(pat, rep) - inject(FileList.new) { |res, fn| res << fn.gsub(pat, rep) } + inject(self.class.new) { |res, fn| res << fn.gsub(pat, rep) } end # Same as +sub+ except that the original file list is modified. @@ -265,8 +269,8 @@ def gsub!(pat, rep) # Apply the pathmap spec to each of the included file names, returning a # new file list with the modified paths. (See String#pathmap for # details.) - def pathmap(spec=nil) - collect { |fn| fn.pathmap(spec) } + def pathmap(spec=nil, &block) + collect { |fn| fn.pathmap(spec, &block) } end # Return a new FileList with String#ext method applied to @@ -277,7 +281,7 @@ def pathmap(spec=nil) # array.collect { |item| item.ext(newext) } # # +ext+ is a user added method for the Array class. - def ext(newext='') + def ext(newext="") collect { |fn| fn.ext(newext) } end @@ -290,7 +294,7 @@ def egrep(pattern, *options) matched = 0 each do |fn| begin - open(fn, "r", *options) do |inf| + File.open(fn, "r", *options) do |inf| count = 0 inf.each do |line| count += 1 @@ -314,14 +318,14 @@ def egrep(pattern, *options) # Return a new file list that only contains file names from the current # file list that exist on the file system. def existing - select { |fn| File.exist?(fn) } + select { |fn| File.exist?(fn) }.uniq end # Modify the current file list so that it contains only file name that # exist on the file system. def existing! resolve - @items = @items.select { |fn| File.exist?(fn) } + @items = @items.select { |fn| File.exist?(fn) }.uniq self end @@ -331,20 +335,20 @@ def partition(&block) # :nodoc: resolve result = @items.partition(&block) [ - FileList.new.import(result[0]), - FileList.new.import(result[1]), + self.class.new.import(result[0]), + self.class.new.import(result[1]), ] end # Convert a FileList to a string by joining all elements with a space. def to_s resolve - self.join(' ') + self.join(" ") end # Add matching glob patterns. def add_matching(pattern) - FileList.glob(pattern).each do |fn| + self.class.glob(pattern).each do |fn| self << fn unless excluded_from_list?(fn) end end @@ -362,8 +366,11 @@ def excluded_from_list?(fn) case pat when Regexp fn =~ pat - when /[*?]/ - File.fnmatch?(pat, fn, File::FNM_PATHNAME) + when GLOB_PATTERN + flags = File::FNM_PATHNAME + # Ruby <= 1.9.3 does not support File::FNM_EXTGLOB + flags |= File::FNM_EXTGLOB if defined? File::FNM_EXTGLOB + File.fnmatch?(pat, fn, flags) else fn == pat end @@ -378,7 +385,7 @@ def excluded_from_list?(fn) /~$/ ] DEFAULT_IGNORE_PROCS = [ - proc { |fn| fn =~ /(^|[\/\\])core$/ && ! File.directory?(fn) } + proc { |fn| fn =~ /(^|[\/\\])core$/ && !File.directory?(fn) } ] def import(array) # :nodoc: @@ -410,7 +417,7 @@ class << self # Yield each file or directory component. def each_dir_parent(dir) # :nodoc: old_length = nil - while dir != '.' && dir.length != old_length + while dir != "." && dir.length != old_length yield(dir) old_length = dir.length dir = File.dirname(dir) diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_task.rb similarity index 70% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_task.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_task.rb index 4c9b0407..db790e39 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/file_task.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_task.rb @@ -1,5 +1,6 @@ -require 'rake/task.rb' -require 'rake/early_time' +# frozen_string_literal: true +require "rake/task" +require "rake/early_time" module Rake @@ -13,7 +14,7 @@ class FileTask < Task # Is this file task needed? Yes if it doesn't exist, or if its time stamp # is out of date. def needed? - ! File.exist?(name) || out_of_date?(timestamp) || @application.options.build_all + !File.exist?(name) || out_of_date?(timestamp) || @application.options.build_all end # Time stamp for file task. @@ -29,7 +30,14 @@ def timestamp # Are there any prerequisites with a later time than the given time stamp? def out_of_date?(stamp) - @prerequisites.any? { |n| application[n, @scope].timestamp > stamp } + all_prerequisite_tasks.any? { |prereq| + prereq_task = application[prereq, @scope] + if prereq_task.instance_of?(Rake::FileTask) + prereq_task.timestamp > stamp || @application.options.build_all + else + prereq_task.timestamp > stamp + end + } end # ---------------------------------------------------------------- diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_utils.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils.rb similarity index 77% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_utils.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils.rb index 27f4e2e1..dc434c8d 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/file_utils.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils.rb @@ -1,19 +1,17 @@ -require 'rbconfig' -require 'fileutils' +# frozen_string_literal: true +require "rbconfig" +require "fileutils" #-- # This a FileUtils extension that defines several additional commands to be # added to the FileUtils utility functions. module FileUtils # Path to the currently running Ruby program - RUBY = ENV['RUBY'] || File.join( - RbConfig::CONFIG['bindir'], - RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT']). + RUBY = ENV["RUBY"] || File.join( + RbConfig::CONFIG["bindir"], + RbConfig::CONFIG["ruby_install_name"] + RbConfig::CONFIG["EXEEXT"]). sub(/.*\s.*/m, '"\&"') - OPT_TABLE['sh'] = %w(noop verbose) - OPT_TABLE['ruby'] = %w(noop verbose) - # Run the system command +cmd+. If multiple arguments are given the command # is run directly (without the shell, same semantics as Kernel::exec and # Kernel::system). @@ -37,7 +35,7 @@ module FileUtils # # # check exit status after command runs # sh %{grep pattern file} do |ok, res| - # if ! ok + # if !ok # puts "pattern not found (status = #{res.exitstatus})" # end # end @@ -45,13 +43,15 @@ module FileUtils def sh(*cmd, &block) options = (Hash === cmd.last) ? cmd.pop : {} shell_runner = block_given? ? block : create_shell_runner(cmd) + set_verbose_option(options) - options[:noop] ||= Rake::FileUtilsExt.nowrite_flag - Rake.rake_check_options options, :noop, :verbose - Rake.rake_output_message cmd.join(" ") if options[:verbose] + verbose = options.delete :verbose + noop = options.delete(:noop) || Rake::FileUtilsExt.nowrite_flag + + Rake.rake_output_message sh_show_command cmd if verbose - unless options[:noop] - res = rake_system(*cmd) + unless noop + res = (Hash === cmd.last) ? system(*cmd) : system(*cmd, options) status = $? status = Rake::PseudoStatus.new(1) if !res && status.nil? shell_runner.call(res, status) @@ -59,8 +59,9 @@ def sh(*cmd, &block) end def create_shell_runner(cmd) # :nodoc: - show_command = cmd.join(" ") + show_command = sh_show_command cmd show_command = show_command[0, 42] + "..." unless $trace + lambda do |ok, status| ok or fail "Command failed with status (#{status.exitstatus}): " + @@ -69,6 +70,19 @@ def create_shell_runner(cmd) # :nodoc: end private :create_shell_runner + def sh_show_command(cmd) # :nodoc: + cmd = cmd.dup + + if Hash === cmd.first + env = cmd.first + env = env.map { |name, value| "#{name}=#{value}" }.join " " + cmd[0] = env + end + + cmd.join " " + end + private :sh_show_command + def set_verbose_option(options) # :nodoc: unless options.key? :verbose options[:verbose] = @@ -78,11 +92,6 @@ def set_verbose_option(options) # :nodoc: end private :set_verbose_option - def rake_system(*cmd) # :nodoc: - Rake::AltSystem.system(*cmd) - end - private :rake_system - # Run a Ruby interpreter with the given arguments. # # Example: @@ -102,7 +111,7 @@ def ruby(*args, &block) # Attempt to do a normal file link, but fall back to a copy if the link # fails. def safe_ln(*args) - if ! LN_SUPPORTED[0] + if !LN_SUPPORTED[0] cp(*args) else begin @@ -121,8 +130,8 @@ def safe_ln(*args) # def split_all(path) head, tail = File.split(path) - return [tail] if head == '.' || tail == '/' - return [head, tail] if head == '/' + return [tail] if head == "." || tail == "/" + return [head, tail] if head == "/" return split_all(head) + [tail] end end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_utils_ext.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb similarity index 95% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_utils_ext.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb index 309159ae..bf558b74 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/file_utils_ext.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb @@ -1,4 +1,5 @@ -require 'rake/file_utils' +# frozen_string_literal: true +require "rake/file_utils" module Rake # @@ -22,10 +23,10 @@ class << self opts = FileUtils.options_of name default_options = [] if opts.include?("verbose") - default_options << ':verbose => FileUtilsExt.verbose_flag' + default_options << ":verbose => FileUtilsExt.verbose_flag" end if opts.include?("noop") - default_options << ':noop => FileUtilsExt.nowrite_flag' + default_options << ":noop => FileUtilsExt.nowrite_flag" end next if default_options.empty? diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/invocation_chain.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb similarity index 97% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/invocation_chain.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb index 54062895..44a99549 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/invocation_chain.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake # InvocationChain tracks the chain of task invocations to detect diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/invocation_exception_mixin.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb similarity index 93% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/invocation_exception_mixin.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb index 84ff3353..b0d307a4 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/invocation_exception_mixin.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake module InvocationExceptionMixin # Return the invocation chain (list of Rake tasks) that were in diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/late_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/late_time.rb similarity index 83% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/late_time.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/late_time.rb index d959a782..8fe02494 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/late_time.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/late_time.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake # LateTime is a fake timestamp that occurs _after_ any other time value. class LateTime @@ -9,7 +10,7 @@ def <=>(other) end def to_s - '' + "" end end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/linked_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/linked_list.rb similarity index 71% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/linked_list.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/linked_list.rb index b5ab7978..11fa46f0 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/linked_list.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/linked_list.rb @@ -1,17 +1,12 @@ +# frozen_string_literal: true module Rake # Polylithic linked list structure used to implement several data # structures in Rake. class LinkedList include Enumerable - attr_reader :head, :tail - def initialize(head, tail=EMPTY) - @head = head - @tail = tail - end - # Polymorphically add a new element to the head of a list. The # type of head node will be the same list type as the tail. def conj(item) @@ -19,6 +14,9 @@ def conj(item) end # Is the list empty? + # .make guards against a list being empty making any instantiated LinkedList + # object not empty by default + # You should consider overriding this method if you implement your own .make method def empty? false end @@ -26,7 +24,7 @@ def empty? # Lists are structurally equivalent. def ==(other) current = self - while ! current.empty? && ! other.empty? + while !current.empty? && !other.empty? return false if current.head != other.head current = current.tail other = other.tail @@ -36,20 +34,20 @@ def ==(other) # Convert to string: LL(item, item...) def to_s - items = map { |item| item.to_s }.join(", ") + items = map(&:to_s).join(", ") "LL(#{items})" end # Same as +to_s+, but with inspected items. def inspect - items = map { |item| item.inspect }.join(", ") + items = map(&:inspect).join(", ") "LL(#{items})" end # For each item in the list. def each current = self - while ! current.empty? + while !current.empty? yield(current.head) current = current.tail end @@ -59,11 +57,16 @@ def each # Make a list out of the given arguments. This method is # polymorphic def self.make(*args) - result = empty - args.reverse_each do |item| - result = cons(item, result) + # return an EmptyLinkedList if there are no arguments + return empty if !args || args.empty? + + # build a LinkedList by starting at the tail and iterating + # through each argument + # inject takes an EmptyLinkedList to start + args.reverse.inject(empty) do |list, item| + list = cons(item, list) + list # return the newly created list for each item in the block end - result end # Cons a new head onto the tail list. @@ -76,6 +79,13 @@ def self.empty self::EMPTY end + protected + + def initialize(head, tail=EMPTY) + @head = head + @tail = tail + end + # Represent an empty list, using the Null Object Pattern. # # When inheriting from the LinkedList class, you should implement @@ -99,5 +109,4 @@ def self.cons(head, tail) EMPTY = EmptyLinkedList.new end - end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/loaders/makefile.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb similarity index 86% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/loaders/makefile.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb index 2c4b2632..46f4beaa 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/loaders/makefile.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake # Makefile loader to be used with the import file loader. Use this to @@ -24,7 +25,7 @@ def load(fn) # :nodoc: lines = File.read fn lines.gsub!(/\\ /, SPACE_MARK) lines.gsub!(/#[^\n]*\n/m, "") - lines.gsub!(/\\\n/, ' ') + lines.gsub!(/\\\n/, " ") lines.each_line do |line| process_line(line) end @@ -34,7 +35,7 @@ def load(fn) # :nodoc: # Process one logical line of makefile data. def process_line(line) # :nodoc: - file_tasks, args = line.split(':', 2) + file_tasks, args = line.split(":", 2) return if args.nil? dependents = args.split.map { |d| respace(d) } file_tasks.scan(/\S+/) do |file_task| @@ -44,10 +45,10 @@ def process_line(line) # :nodoc: end def respace(str) # :nodoc: - str.tr SPACE_MARK, ' ' + str.tr SPACE_MARK, " " end end # Install the handler - Rake.application.add_loader('mf', MakefileLoader.new) + Rake.application.add_loader("mf", MakefileLoader.new) end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/multi_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/multi_task.rb similarity index 91% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/multi_task.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/multi_task.rb index 5418a7a7..3ae363cb 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/multi_task.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/multi_task.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake # Same as a regular task, but the immediate prerequisites are done in @@ -5,9 +6,9 @@ module Rake # class MultiTask < Task private + def invoke_prerequisites(task_args, invocation_chain) # :nodoc: invoke_prerequisites_concurrently(task_args, invocation_chain) end end - end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/name_space.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/name_space.rb similarity index 95% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/name_space.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/name_space.rb index 58f911e4..32f8139f 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/name_space.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/name_space.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true ## # The NameSpace class will lookup task names in the scope defined by a # +namespace+ command. @@ -35,4 +36,3 @@ def tasks end end - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/packagetask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/packagetask.rb similarity index 84% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/packagetask.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/packagetask.rb index 249ee72b..72fef4d5 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/packagetask.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/packagetask.rb @@ -1,8 +1,9 @@ +# frozen_string_literal: true # Define a package task library to aid in the definition of # redistributable package files. -require 'rake' -require 'rake/tasklib' +require "rake" +require "rake/tasklib" module Rake @@ -63,6 +64,9 @@ class PackageTask < TaskLib # is false). attr_accessor :need_tar_bz2 + # True if a xz'd tar file (tar.xz) should be produced (default is false) + attr_accessor :need_tar_xz + # True if a zip file should be produced (default is false) attr_accessor :need_zip @@ -90,13 +94,14 @@ def init(name, version) @name = name @version = version @package_files = Rake::FileList.new - @package_dir = 'pkg' + @package_dir = "pkg" @need_tar = false @need_tar_gz = false @need_tar_bz2 = false + @need_tar_xz = false @need_zip = false - @tar_command = 'tar' - @zip_command = 'zip' + @tar_command = "tar" + @zip_command = "zip" end # Create the tasks defined by this task library. @@ -108,38 +113,35 @@ def define task :package desc "Force a rebuild of the package files" - task :repackage => [:clobber_package, :package] + task repackage: [:clobber_package, :package] desc "Remove package products" task :clobber_package do rm_r package_dir rescue nil end - task :clobber => [:clobber_package] + task clobber: [:clobber_package] [ [need_tar, tgz_file, "z"], [need_tar_gz, tar_gz_file, "z"], - [need_tar_bz2, tar_bz2_file, "j"] - ].each do |(need, file, flag)| + [need_tar_bz2, tar_bz2_file, "j"], + [need_tar_xz, tar_xz_file, "J"] + ].each do |need, file, flag| if need - task :package => ["#{package_dir}/#{file}"] + task package: ["#{package_dir}/#{file}"] file "#{package_dir}/#{file}" => [package_dir_path] + package_files do - chdir(package_dir) do - sh @tar_command, "#{flag}cvf", file, package_name - end + chdir(package_dir) { sh @tar_command, "#{flag}cvf", file, package_name } end end end if need_zip - task :package => ["#{package_dir}/#{zip_file}"] + task package: ["#{package_dir}/#{zip_file}"] file "#{package_dir}/#{zip_file}" => [package_dir_path] + package_files do - chdir(package_dir) do - sh @zip_command, "-r", zip_file, package_name - end + chdir(package_dir) { sh @zip_command, "-r", zip_file, package_name } end end @@ -189,6 +191,12 @@ def tar_bz2_file "#{package_name}.tar.bz2" end + # The package name with .tar.xz added + + def tar_xz_file + "#{package_name}.tar.xz" + end + # The package name with .zip added def zip_file diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/phony.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/phony.rb similarity index 88% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/phony.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/phony.rb index 29633ae0..8caa5de1 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/phony.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/phony.rb @@ -1,10 +1,11 @@ +# frozen_string_literal: true # Defines a :phony task that you can use as a dependency. This allows # file-based tasks to use non-file-based tasks as prerequisites # without forcing them to rebuild. # # See FileTask#out_of_date? and Task#timestamp for more info. -require 'rake' +require "rake" task :phony diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/private_reader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/private_reader.rb similarity index 92% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/private_reader.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/private_reader.rb index 16209785..2815ce64 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/private_reader.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/private_reader.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake # Include PrivateReader to use +private_reader+. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/promise.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/promise.rb similarity index 75% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/promise.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/promise.rb index 31c45634..f45af4f3 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/promise.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/promise.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake # A Promise object represents a promise to do work (a chore) in the @@ -27,11 +28,11 @@ def initialize(args, &block) # synchronously. We will wait. def value unless complete? - stat :sleeping_on, :item_id => object_id + stat :sleeping_on, item_id: object_id @mutex.synchronize do - stat :has_lock_on, :item_id => object_id + stat :has_lock_on, item_id: object_id chore - stat :releasing_lock_on, :item_id => object_id + stat :releasing_lock_on, item_id: object_id end end error? ? raise(@error) : @result @@ -39,14 +40,14 @@ def value # If no one else is working this promise, go ahead and do the chore. def work - stat :attempting_lock_on, :item_id => object_id + stat :attempting_lock_on, item_id: object_id if @mutex.try_lock - stat :has_lock_on, :item_id => object_id + stat :has_lock_on, item_id: object_id chore - stat :releasing_lock_on, :item_id => object_id + stat :releasing_lock_on, item_id: object_id @mutex.unlock else - stat :bailed_on, :item_id => object_id + stat :bailed_on, item_id: object_id end end @@ -55,27 +56,27 @@ def work # Perform the chore promised def chore if complete? - stat :found_completed, :item_id => object_id + stat :found_completed, item_id: object_id return end - stat :will_execute, :item_id => object_id + stat :will_execute, item_id: object_id begin @result = @block.call(*@args) rescue Exception => e @error = e end - stat :did_execute, :item_id => object_id + stat :did_execute, item_id: object_id discard end # Do we have a result for the promise def result? - ! @result.equal?(NOT_SET) + !@result.equal?(NOT_SET) end # Did the promise throw an error def error? - ! @error.equal?(NOT_SET) + !@error.equal?(NOT_SET) end # Are we done with the promise diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/pseudo_status.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb similarity index 92% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/pseudo_status.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb index 16e1903b..8b3c9894 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/pseudo_status.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake ## diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_module.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_module.rb new file mode 100644 index 00000000..03c29562 --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_module.rb @@ -0,0 +1,67 @@ +# frozen_string_literal: true +require "rake/application" + +module Rake + + class << self + # Current Rake Application + def application + @application ||= Rake::Application.new + end + + # Set the current Rake application object. + def application=(app) + @application = app + end + + def suggested_thread_count # :nodoc: + @cpu_count ||= Rake::CpuCounter.count + @cpu_count + 4 + end + + # Return the original directory where the Rake application was started. + def original_dir + application.original_dir + end + + # Load a rakefile. + def load_rakefile(path) + load(path) + end + + # Add files to the rakelib list + def add_rakelib(*files) + application.options.rakelib ||= [] + application.options.rakelib.concat(files) + end + + # Make +block_application+ the default rake application inside a block so + # you can load rakefiles into a different application. + # + # This is useful when you want to run rake tasks inside a library without + # running rake in a sub-shell. + # + # Example: + # + # Dir.chdir 'other/directory' + # + # other_rake = Rake.with_application do |rake| + # rake.load_rakefile + # end + # + # puts other_rake.tasks + + def with_application(block_application = Rake::Application.new) + orig_application = Rake.application + + Rake.application = block_application + + yield block_application + + block_application + ensure + Rake.application = orig_application + end + end + +end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb new file mode 100644 index 00000000..f0f7772b --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true +require "rake" + +# Load the test files from the command line. +argv = ARGV.select do |argument| + begin + case argument + when /^-/ then + argument + when /\*/ then + FileList[argument].to_a.each do |file| + require File.expand_path file + end + + false + else + require File.expand_path argument + + false + end + rescue LoadError => e + raise unless e.path + abort "\nFile does not exist: #{e.path}\n\n" + end +end + +ARGV.replace argv diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rule_recursion_overflow_error.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb similarity index 76% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rule_recursion_overflow_error.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb index da4318da..a51e7748 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/rule_recursion_overflow_error.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb @@ -1,4 +1,4 @@ - +# frozen_string_literal: true module Rake # Error indicating a recursion overflow error in task selection. @@ -13,7 +13,7 @@ def add_target(target) end def message - super + ": [" + @targets.reverse.join(' => ') + "]" + super + ": [" + @targets.reverse.join(" => ") + "]" end end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/scope.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/scope.rb similarity index 88% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/scope.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/scope.rb index dbefcea4..fc1eb6c3 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/scope.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/scope.rb @@ -1,9 +1,10 @@ +# frozen_string_literal: true module Rake class Scope < LinkedList # :nodoc: all # Path for the scope. def path - map { |item| item.to_s }.reverse.join(":") + map(&:to_s).reverse.join(":") end # Path for the scope + the named path. @@ -15,7 +16,7 @@ def path_with_task_name(task_name) # this trim beyond the toplevel scope. def trim(n) result = self - while n > 0 && ! result.empty? + while n > 0 && !result.empty? result = result.tail n -= 1 end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task.rb similarity index 81% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task.rb index 9bcf7255..10c563c9 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task.rb @@ -1,4 +1,5 @@ -require 'rake/invocation_exception_mixin' +# frozen_string_literal: true +require "rake/invocation_exception_mixin" module Rake @@ -14,6 +15,7 @@ module Rake class Task # List of prerequisites for a task. attr_reader :prerequisites + alias prereqs prerequisites # List of actions attached to a task. attr_reader :actions @@ -29,6 +31,10 @@ class Task # location option set). attr_reader :locations + # Has this task already been invoked? Already invoked tasks + # will be skipped unless you reenable them. + attr_reader :already_invoked + # Return task name def to_s name @@ -54,7 +60,11 @@ def prerequisite_tasks end def lookup_prerequisite(prerequisite_name) # :nodoc: - application[prerequisite_name, @scope] + scoped_prerequisite_task = application[prerequisite_name, @scope] + if scoped_prerequisite_task == self + unscoped_prerequisite_task = application[prerequisite_name] + end + unscoped_prerequisite_task || scoped_prerequisite_task end private :lookup_prerequisite @@ -94,6 +104,7 @@ def initialize(task_name, app) @scope = app.current_scope @arg_names = nil @locations = [] + @invocation_exception = nil end # Enhance a task with prerequisites or actions. Returns self. @@ -133,11 +144,12 @@ def reenable @already_invoked = false end - # Clear the existing prerequisites and actions of a rake task. + # Clear the existing prerequisites, actions, comments, and arguments of a rake task. def clear clear_prerequisites clear_actions clear_comments + clear_args self end @@ -159,6 +171,12 @@ def clear_comments self end + # Clear the existing arguments on a rake task. + def clear_args + @arg_names = nil + self + end + # Invoke the task if it is needed. Prerequisites are invoked first. def invoke(*args) task_args = TaskArguments.new(arg_names, args) @@ -167,20 +185,39 @@ def invoke(*args) # Same as invoke, but explicitly pass a call chain to detect # circular dependencies. - def invoke_with_call_chain(task_args, invocation_chain) # :nodoc: - new_chain = InvocationChain.append(self, invocation_chain) + # + # If multiple tasks depend on this + # one in parallel, they will all fail if the first execution of + # this task fails. + def invoke_with_call_chain(task_args, invocation_chain) + new_chain = Rake::InvocationChain.append(self, invocation_chain) @lock.synchronize do - if application.options.trace - application.trace "** Invoke #{name} #{format_trace_flags}" + begin + if application.options.trace + application.trace "** Invoke #{name} #{format_trace_flags}" + end + + if @already_invoked + if @invocation_exception + if application.options.trace + application.trace "** Previous invocation of #{name} failed #{format_trace_flags}" + end + raise @invocation_exception + else + return + end + end + + @already_invoked = true + + invoke_prerequisites(task_args, new_chain) + execute(task_args) if needed? + rescue Exception => ex + add_chain_to(ex, new_chain) + @invocation_exception = ex + raise ex end - return if @already_invoked - @already_invoked = true - invoke_prerequisites(task_args, new_chain) - execute(task_args) if needed? end - rescue Exception => ex - add_chain_to(ex, new_chain) - raise ex end protected :invoke_with_call_chain @@ -211,7 +248,8 @@ def invoke_prerequisites_concurrently(task_args, invocation_chain)# :nodoc: r.invoke_with_call_chain(prereq_args, invocation_chain) end end - futures.each { |f| f.value } + # Iterate in reverse to improve performance related to thread waiting and switching + futures.reverse_each(&:value) end # Format the trace flags for display. @@ -232,14 +270,7 @@ def execute(args=nil) end application.trace "** Execute #{name}" if application.options.trace application.enhance_with_matching_rule(name) if @actions.empty? - @actions.each do |act| - case act.arity - when 1 - act.call(self) - else - act.call(self, args) - end - end + @actions.each { |act| act.call(self, args) } end # Is this task needed? @@ -258,7 +289,7 @@ def timestamp def add_description(description) return unless description comment = description.strip - add_comment(comment) if comment && ! comment.empty? + add_comment(comment) if comment && !comment.empty? end def comment=(comment) # :nodoc: @@ -296,23 +327,23 @@ def transform_comments(separator, &block) private :transform_comments # Get the first sentence in a string. The sentence is terminated - # by the first period or the end of the line. Decimal points do - # not count as periods. + # by the first period, exclamation mark, or the end of the line. + # Decimal points do not count as periods. def first_sentence(string) - string.split(/\.[ \t]|\.$|\n/).first + string.split(/(?<=\w)(\.|!)[ \t]|(\.$|!)|\n/).first end private :first_sentence # Set the names of the arguments for this task. +args+ should be # an array of symbols, one for each argument name. def set_arg_names(args) - @arg_names = args.map { |a| a.to_sym } + @arg_names = args.map(&:to_sym) end # Return a string describing the internal state of a task. Useful for # debugging. def investigation - result = "------------------------------\n" + result = "------------------------------\n".dup result << "Investigating #{name}\n" result << "class: #{self.class}\n" result << "task needed: #{needed?}\n" @@ -323,7 +354,7 @@ def investigation prereqs.each do |p| result << "--#{p.name} (#{p.timestamp})\n" end - latest_prereq = prerequisite_tasks.map { |pre| pre.timestamp }.max + latest_prereq = prerequisite_tasks.map(&:timestamp).max result << "latest-prerequisite time: #{latest_prereq}\n" result << "................................\n\n" return result @@ -374,7 +405,6 @@ def create_rule(*args, &block) # this kind of task. Generic tasks will accept the scope as # part of the name. def scope_name(scope, task_name) -# (scope + [task_name]).join(':') scope.path_with_task_name(task_name) end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task_argument_error.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb similarity index 79% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task_argument_error.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb index 3e1dda64..ef20076c 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/task_argument_error.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake # Error indicating an ill-formed task declaration. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task_arguments.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_arguments.rb similarity index 84% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task_arguments.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_arguments.rb index fc0d6572..0d3001af 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/task_arguments.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_arguments.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake ## @@ -17,7 +18,8 @@ def initialize(names, values, parent=nil) @hash = {} @values = values names.each_with_index { |name, i| - @hash[name.to_sym] = values[i] unless values[i].nil? + next if values[i].nil? || values[i] == "" + @hash[name.to_sym] = values[i] } end @@ -67,21 +69,30 @@ def method_missing(sym, *args) # Returns a Hash of arguments and their values def to_hash - @hash + @hash.dup end def to_s # :nodoc: - @hash.inspect + inspect end def inspect # :nodoc: - to_s + inspection = @hash.map do |k,v| + "#{k.to_s}: #{v.to_s}" + end.join(", ") + + "#<#{self.class} #{inspection}>" end # Returns true if +key+ is one of the arguments def has_key?(key) @hash.has_key?(key) end + alias key? has_key? + + def fetch(*args, &block) + @hash.fetch(*args, &block) + end protected diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task_manager.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_manager.rb similarity index 83% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task_manager.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_manager.rb index cbb9f5ee..1991088f 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.4.2/lib/rake/task_manager.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_manager.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake # The TaskManager module is a mixin for managing tasks. @@ -5,10 +6,6 @@ module TaskManager # Track the last comment made in the Rakefile. attr_accessor :last_description - # TODO: Remove in Rake 11 - - alias :last_comment :last_description # :nodoc: Backwards compatibility - def initialize # :nodoc: super @tasks = Hash.new @@ -19,7 +16,7 @@ def initialize # :nodoc: def create_rule(*args, &block) # :nodoc: pattern, args, deps = resolve_args(args) - pattern = Regexp.new(Regexp.quote(pattern) + '$') if String === pattern + pattern = Regexp.new(Regexp.quote(pattern) + "$") if String === pattern @rules << [pattern, args, deps, block] end @@ -28,7 +25,7 @@ def define_task(task_class, *args, &block) # :nodoc: original_scope = @scope if String === task_name and - not task_class.ancestors.include? Rake::FileTask then + not task_class.ancestors.include? Rake::FileTask task_name, *definition_scope = *(task_name.split(":").reverse) @scope = Scope.make(*(definition_scope + @scope.to_a)) end @@ -59,7 +56,26 @@ def [](task_name, scopes=nil) self.lookup(task_name, scopes) or enhance_with_matching_rule(task_name) or synthesize_file_task(task_name) or - fail "Don't know how to build task '#{task_name}'" + fail generate_message_for_undefined_task(task_name) + end + + def generate_message_for_undefined_task(task_name) + message = "Don't know how to build task '#{task_name}' "\ + "(See the list of available tasks with `#{Rake.application.name} --tasks`)" + message + generate_did_you_mean_suggestions(task_name) + end + + def generate_did_you_mean_suggestions(task_name) + return "" unless defined?(::DidYouMean::SpellChecker) + + suggestions = ::DidYouMean::SpellChecker.new(dictionary: @tasks.keys).correct(task_name.to_s) + if ::DidYouMean.respond_to?(:formatter)# did_you_mean v1.2.0 or later + ::DidYouMean.formatter.message_for(suggestions) + elsif defined?(::DidYouMean::Formatter) # before did_you_mean v1.2.0 + ::DidYouMean::Formatter.new(suggestions).to_s + else + "" + end end def synthesize_file_task(task_name) # :nodoc: @@ -130,8 +146,8 @@ def enhance_with_matching_rule(task_name, level=0) fail Rake::RuleRecursionOverflowError, "Rule Recursion Too Deep" if level >= 16 @rules.each do |pattern, args, extensions, block| - if pattern.match(task_name) - task = attempt_rule(task_name, args, extensions, block, level) + if pattern && pattern.match(task_name) + task = attempt_rule(task_name, pattern, args, extensions, block, level) return task if task end end @@ -171,10 +187,10 @@ def lookup(task_name, initial_scope=nil) task_name = task_name.to_s if task_name =~ /^rake:/ scopes = Scope.make - task_name = task_name.sub(/^rake:/, '') + task_name = task_name.sub(/^rake:/, "") elsif task_name =~ /^(\^+)/ scopes = initial_scope.trim($1.size) - task_name = task_name.sub(/^(\^+)/, '') + task_name = task_name.sub(/^(\^+)/, "") else scopes = initial_scope end @@ -245,8 +261,8 @@ def trace_rule(level, message) # :nodoc: end # Attempt to create a rule given the list of prerequisites. - def attempt_rule(task_name, args, extensions, block, level) - sources = make_sources(task_name, extensions) + def attempt_rule(task_name, task_pattern, args, extensions, block, level) + sources = make_sources(task_name, task_pattern, extensions) prereqs = sources.map { |source| trace_rule level, "Attempting Rule #{task_name} => #{source}" if File.exist?(source) || Rake::Task.task_defined?(source) @@ -260,14 +276,14 @@ def attempt_rule(task_name, args, extensions, block, level) return nil end } - task = FileTask.define_task(task_name, {args => prereqs}, &block) + task = FileTask.define_task(task_name, { args => prereqs }, &block) task.sources = prereqs task end # Make a list of sources from the list of file name extensions / # translation procs. - def make_sources(task_name, extensions) + def make_sources(task_name, task_pattern, extensions) result = extensions.map { |ext| case ext when /%/ @@ -275,7 +291,8 @@ def make_sources(task_name, extensions) when %r{/} ext when /^\./ - task_name.ext(ext) + source = task_name.sub(task_pattern, ext) + source == ext ? task_name.ext(ext) : source when String ext when Proc, Method @@ -291,9 +308,6 @@ def make_sources(task_name, extensions) result.flatten end - - private - # Return the current description, clearing it in the process. def get_description(task) desc = @last_description diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/tasklib.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/tasklib.rb new file mode 100644 index 00000000..5354b4f9 --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/tasklib.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true +require "rake" + +module Rake + + # Base class for Task Libraries. + class TaskLib + include Cloneable + include Rake::DSL + end + +end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/testtask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/testtask.rb similarity index 79% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/testtask.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/testtask.rb index 5cae95c5..53762756 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/testtask.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/testtask.rb @@ -1,5 +1,6 @@ -require 'rake' -require 'rake/tasklib' +# frozen_string_literal: true +require "rake" +require "rake/tasklib" module Rake @@ -50,6 +51,7 @@ class TestTask < TaskLib # Request that the tests be run with the warning flag set. # E.g. warning=true implies "ruby -w" used to run the tests. + # (default is true) attr_accessor :warning # Glob pattern to match test files. (default is 'test/test*.rb') @@ -69,6 +71,9 @@ class TestTask < TaskLib # Description of the test task. (default is 'Run tests') attr_accessor :description + # Task prerequisites. + attr_accessor :deps + # Explicitly define the list of test files to be included in a # test. +list+ is expected to be an array of file names (a # FileList is acceptable). If both +pattern+ and +test_files+ are @@ -85,20 +90,27 @@ def initialize(name=:test) @options = nil @test_files = nil @verbose = false - @warning = false + @warning = true @loader = :rake @ruby_opts = [] @description = "Run tests" + (@name == :test ? "" : " for #{@name}") + @deps = [] + if @name.is_a?(Hash) + @deps = @name.values.first + @name = @name.keys.first + end yield self if block_given? - @pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil? + @pattern = "test/test*.rb" if @pattern.nil? && @test_files.nil? define end # Create the tasks defined by this task lib. def define desc @description - task @name do + task @name => Array(deps) do FileUtilsExt.verbose(@verbose) do + puts "Use TESTOPTS=\"--verbose\" to pass --verbose" \ + ", etc. to runners." if ARGV.include? "--verbose" args = "#{ruby_opts_string} #{run_code} " + "#{file_list_string} #{option_list}" @@ -106,8 +118,16 @@ def define if !ok && status.respond_to?(:signaled?) && status.signaled? raise SignalException.new(status.termsig) elsif !ok - fail "Command failed with status (#{status.exitstatus}): " + - "[ruby #{args}]" + status = "Command failed with status (#{status.exitstatus})" + details = ": [ruby #{args}]" + message = + if Rake.application.options.trace or @verbose + status + details + else + status + end + + fail message end end end @@ -116,10 +136,10 @@ def define end def option_list # :nodoc: - (ENV['TESTOPTS'] || - ENV['TESTOPT'] || - ENV['TEST_OPTS'] || - ENV['TEST_OPT'] || + (ENV["TESTOPTS"] || + ENV["TESTOPT"] || + ENV["TEST_OPTS"] || + ENV["TEST_OPT"] || @options || "") end @@ -136,29 +156,20 @@ def lib_path # :nodoc: end def file_list_string # :nodoc: - file_list.map { |fn| "\"#{fn}\"" }.join(' ') + file_list.map { |fn| "\"#{fn}\"" }.join(" ") end def file_list # :nodoc: - if ENV['TEST'] - FileList[ENV['TEST']] + if ENV["TEST"] + FileList[ENV["TEST"]] else result = [] result += @test_files.to_a if @test_files - result << @pattern if @pattern + result += FileList[@pattern].to_a if @pattern result end end - def fix # :nodoc: - case ruby_version - when '1.8.2' - "\"#{find_file 'rake/ruby182_test_unit_fix'}\"" - else - nil - end || '' - end - def ruby_version # :nodoc: RUBY_VERSION end @@ -168,14 +179,14 @@ def run_code # :nodoc: when :direct "-e \"ARGV.each{|f| require f}\"" when :testrb - "-S testrb #{fix}" + "-S testrb" when :rake "#{rake_include_arg} \"#{rake_loader}\"" end end def rake_loader # :nodoc: - find_file('rake/rake_test_loader') or + find_file("rake/rake_test_loader") or fail "unable to find rake test loader" end @@ -188,7 +199,7 @@ def find_file(fn) # :nodoc: end def rake_include_arg # :nodoc: - spec = Gem.loaded_specs['rake'] + spec = Gem.loaded_specs["rake"] if spec.respond_to?(:default_gem?) && spec.default_gem? "" else @@ -197,7 +208,7 @@ def rake_include_arg # :nodoc: end def rake_lib_dir # :nodoc: - find_dir('rake') or + find_dir("rake") or fail "unable to find rake lib" end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/thread_history_display.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb similarity index 89% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/thread_history_display.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb index c2af9ece..412ea37b 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/thread_history_display.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb @@ -1,4 +1,5 @@ -require 'rake/private_reader' +# frozen_string_literal: true +require "rake/private_reader" module Rake @@ -9,8 +10,8 @@ class ThreadHistoryDisplay # :nodoc: all def initialize(stats) @stats = stats - @items = { :_seq_ => 1 } - @threads = { :_seq_ => "A" } + @items = { _seq_: 1 } + @threads = { _seq_: "A" } end def show diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/thread_pool.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_pool.rb similarity index 85% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/thread_pool.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_pool.rb index d2ac6e7a..b01a5efe 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/thread_pool.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_pool.rb @@ -1,7 +1,7 @@ -require 'thread' -require 'set' +# frozen_string_literal: true +require "set" -require 'rake/promise' +require "rake/promise" module Rake @@ -35,7 +35,7 @@ def future(*args, &block) promise.recorder = lambda { |*stats| stat(*stats) } @queue.enq promise - stat :queued, :item_id => promise.object_id + stat :queued, item_id: promise.object_id start_thread promise end @@ -57,8 +57,7 @@ def join $stderr.puts e.backtrace.join("\n") @threads.each do |t| $stderr.print "Thread #{t} status = #{t.status}\n" - # 1.8 doesn't support Thread#backtrace - $stderr.puts t.backtrace.join("\n") if t.respond_to? :backtrace + $stderr.puts t.backtrace.join("\n") end raise e end @@ -84,8 +83,8 @@ def history # :nodoc: # Return a hash of always collected statistics for the thread pool. def statistics # :nodoc: { - :total_threads_in_play => @total_threads_in_play, - :max_active_threads => @max_active_threads, + total_threads_in_play: @total_threads_in_play, + max_active_threads: @max_active_threads, } end @@ -101,11 +100,11 @@ def process_queue_item #:nodoc: # is now gone. For this reason we pass true to Queue#deq # because we will sleep indefinitely if it is empty. promise = @queue.deq(true) - stat :dequeued, :item_id => promise.object_id + stat :dequeued, item_id: promise.object_id promise.work return true - rescue ThreadError # this means the queue is empty + rescue ThreadError # this means the queue is empty false end @@ -127,7 +126,7 @@ def start_thread # :nodoc: ensure @threads_mon.synchronize do @threads.delete Thread.current - stat :ended, :thread_count => @threads.count + stat :ended, thread_count: @threads.count @join_cond.broadcast if @threads.empty? end end @@ -136,8 +135,8 @@ def start_thread # :nodoc: @threads << t stat( :spawned, - :new_thread => t.object_id, - :thread_count => @threads.count) + new_thread: t.object_id, + thread_count: @threads.count) @total_threads_in_play = @threads.count if @threads.count > @total_threads_in_play end @@ -146,10 +145,10 @@ def start_thread # :nodoc: def stat(event, data=nil) # :nodoc: return if @history_start_time.nil? info = { - :event => event, - :data => data, - :time => Time.now, - :thread => Thread.current.object_id, + event: event, + data: data, + time: Time.now, + thread: Thread.current.object_id, } @history_mon.synchronize { @history << info } end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/trace_output.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/trace_output.rb similarity index 87% rename from spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/trace_output.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/trace_output.rb index 396096d4..d713a092 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.2.0/gems/rake-10.5.0/lib/rake/trace_output.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/trace_output.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true module Rake module TraceOutput # :nodoc: all @@ -13,7 +14,7 @@ def trace_on(out, *strings) else output = strings.map { |s| next if s.nil? - s =~ /#{sep}$/ ? s : s + sep + s.end_with?(sep) ? s : s + sep }.join end out.print(output) diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/version.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/version.rb new file mode 100644 index 00000000..6014e932 --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/version.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true +module Rake + VERSION = "12.3.3" + + module Version # :nodoc: all + MAJOR, MINOR, BUILD, *OTHER = Rake::VERSION.split "." + + NUMBERS = [MAJOR, MINOR, BUILD, *OTHER] + end +end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/win32.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/win32.rb similarity index 67% rename from spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/win32.rb rename to spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/win32.rb index 6b4873da..6e620318 100644 --- a/spec/sample_bundler/vendor/bundle/jruby/2.3.0/gems/rake-10.5.0/lib/rake/win32.rb +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/win32.rb @@ -1,7 +1,7 @@ +# frozen_string_literal: true +require "rbconfig" module Rake - require 'rake/alt_system' - # Win 32 interface methods for Rake. Windows specific functionality # will be placed here to collect that knowledge in one spot. module Win32 # :nodoc: all @@ -14,12 +14,7 @@ class Win32HomeError < RuntimeError class << self # True if running on a windows system. def windows? - AltSystem::WINDOWS - end - - # Run a command line on windows. - def rake_system(*cmd) - AltSystem.system(*cmd) + RbConfig::CONFIG["host_os"] =~ %r!(msdos|mswin|djgpp|mingw|[Ww]indows)! end # The standard directory containing system wide rake files on @@ -33,22 +28,22 @@ def rake_system(*cmd) # # If the above are not defined, the return nil. def win32_system_dir #:nodoc: - win32_shared_path = ENV['HOME'] - if win32_shared_path.nil? && ENV['HOMEDRIVE'] && ENV['HOMEPATH'] - win32_shared_path = ENV['HOMEDRIVE'] + ENV['HOMEPATH'] + win32_shared_path = ENV["HOME"] + if win32_shared_path.nil? && ENV["HOMEDRIVE"] && ENV["HOMEPATH"] + win32_shared_path = ENV["HOMEDRIVE"] + ENV["HOMEPATH"] end - win32_shared_path ||= ENV['APPDATA'] - win32_shared_path ||= ENV['USERPROFILE'] + win32_shared_path ||= ENV["APPDATA"] + win32_shared_path ||= ENV["USERPROFILE"] raise Win32HomeError, "Unable to determine home path environment variable." if win32_shared_path.nil? or win32_shared_path.empty? - normalize(File.join(win32_shared_path, 'Rake')) + normalize(File.join(win32_shared_path, "Rake")) end # Normalize a win32 path so that the slashes are all forward slashes. def normalize(path) - path.gsub(/\\/, '/') + path.gsub(/\\/, "/") end end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/rake.gemspec b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/rake.gemspec new file mode 100644 index 00000000..66c567ca --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/rake.gemspec @@ -0,0 +1,42 @@ +# frozen_string_literal: true +$LOAD_PATH.unshift File.expand_path('../lib', __FILE__) +require 'rake/version' + +Gem::Specification.new do |s| + s.name = "rake".freeze + s.version = Rake::VERSION + s.authors = ["Hiroshi SHIBATA".freeze, "Eric Hodel".freeze, "Jim Weirich".freeze] + s.email = ["hsbt@ruby-lang.org".freeze, "drbrain@segment7.net".freeze, "".freeze] + + s.summary = "Rake is a Make-like program implemented in Ruby".freeze + s.description = <<-DESCRIPTION +Rake is a Make-like program implemented in Ruby. Tasks and dependencies are +specified in standard Ruby syntax. +Rake has the following features: + * Rakefiles (rake's version of Makefiles) are completely defined in standard Ruby syntax. + No XML files to edit. No quirky Makefile syntax to worry about (is that a tab or a space?) + * Users can specify tasks with prerequisites. + * Rake supports rule patterns to synthesize implicit tasks. + * Flexible FileLists that act like arrays but know about manipulating file names and paths. + * Supports parallel execution of tasks. + DESCRIPTION + s.homepage = "https://github.com/ruby/rake".freeze + s.licenses = ["MIT".freeze] + + s.files = %x[git ls-files -z].split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } - + %w[.rubocop.yml .gitignore .travis.yml appveyor.yml] + s.bindir = "exe" + s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) } + s.require_paths = ["lib".freeze] + + s.required_ruby_version = Gem::Requirement.new(">= 2.0.0".freeze) + s.rubygems_version = "2.6.1".freeze + s.required_rubygems_version = Gem::Requirement.new(">= 1.3.2".freeze) + s.rdoc_options = ["--main".freeze, "README.rdoc".freeze] + + s.add_development_dependency(%q.freeze) + s.add_development_dependency(%q.freeze) + s.add_development_dependency(%q.freeze) + s.add_development_dependency(%q.freeze) + s.add_development_dependency(%q.freeze) +end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/specifications/rake-12.3.3.gemspec b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/specifications/rake-12.3.3.gemspec new file mode 100644 index 00000000..30d8f389 --- /dev/null +++ b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/specifications/rake-12.3.3.gemspec @@ -0,0 +1,49 @@ +# -*- encoding: utf-8 -*- +# stub: rake 12.3.3 ruby lib + +Gem::Specification.new do |s| + s.name = "rake".freeze + s.version = "12.3.3" + + s.required_rubygems_version = Gem::Requirement.new(">= 1.3.2".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Hiroshi SHIBATA".freeze, "Eric Hodel".freeze, "Jim Weirich".freeze] + s.bindir = "exe".freeze + s.date = "2019-07-22" + s.description = "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are\nspecified in standard Ruby syntax.\nRake has the following features:\n * Rakefiles (rake's version of Makefiles) are completely defined in standard Ruby syntax.\n No XML files to edit. No quirky Makefile syntax to worry about (is that a tab or a space?)\n * Users can specify tasks with prerequisites.\n * Rake supports rule patterns to synthesize implicit tasks.\n * Flexible FileLists that act like arrays but know about manipulating file names and paths.\n * Supports parallel execution of tasks.\n".freeze + s.email = ["hsbt@ruby-lang.org".freeze, "drbrain@segment7.net".freeze, "".freeze] + s.executables = ["rake".freeze] + s.files = ["exe/rake".freeze] + s.homepage = "https://github.com/ruby/rake".freeze + s.licenses = ["MIT".freeze] + s.rdoc_options = ["--main".freeze, "README.rdoc".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 2.0.0".freeze) + s.rubygems_version = "2.7.11".freeze + s.summary = "Rake is a Make-like program implemented in Ruby".freeze + + s.installed_by_version = "2.7.11" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + else + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + end + else + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + end +end diff --git a/spec/sample_war/webserver.properties b/spec/sample_war/webserver.properties new file mode 100644 index 00000000..19102815 --- /dev/null +++ b/spec/sample_war/webserver.properties @@ -0,0 +1 @@ +foo \ No newline at end of file