win32-api 1.6.0-universal-mingw32 → 1.6.1.beta1-universal-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGES +4 -0
- data/Gemfile.lock +5 -5
- data/Rakefile +45 -19
- data/appveyor.yml +12 -0
- data/appveyor/build.cmd +3 -0
- data/lib/win32/api.rb +8 -0
- data/lib/win32/ruby21_32/win32/api.so +0 -0
- data/lib/win32/ruby21_64/win32/api.so +0 -0
- data/lib/win32/ruby22_32/win32/api.so +0 -0
- data/lib/win32/ruby22_64/win32/api.so +0 -0
- data/lib/win32/ruby23_32/win32/api.so +0 -0
- data/lib/win32/ruby23_64/win32/api.so +0 -0
- data/lib/win32/ruby24_32/win32/api.so +0 -0
- data/lib/win32/ruby24_64/win32/api.so +0 -0
- data/lib/win32/ruby2_32/win32/api.so +0 -0
- data/lib/win32/ruby2_64/win32/api.so +0 -0
- data/win32-api.gemspec +1 -1
- metadata +8 -341
- data/vendor/bundle/ruby/2.2.0/bin/devkit +0 -23
- data/vendor/bundle/ruby/2.2.0/bin/devkit.bat +0 -6
- data/vendor/bundle/ruby/2.2.0/bin/rake +0 -23
- data/vendor/bundle/ruby/2.2.0/bin/rake.bat +0 -6
- data/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/CHANGELOG +0 -55
- data/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/LICENSE +0 -339
- data/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/README.md +0 -73
- data/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/Rakefile +0 -8
- data/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/colorize.gemspec +0 -35
- data/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/lib/colorize.rb +0 -12
- data/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/lib/colorize/class_methods.rb +0 -116
- data/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/lib/colorize/instance_methods.rb +0 -135
- data/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/test/test_colorize.rb +0 -161
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/Gemfile +0 -4
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/LICENSE.txt +0 -22
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/README.md +0 -34
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/Rakefile +0 -1
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/Rspec-example-matchers.txt +0 -184
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/bin/devkit +0 -87
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/devkit.gemspec +0 -27
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/lib/devkit.rb +0 -18
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/lib/devkit/core.rb +0 -53
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/lib/devkit/identity.rb +0 -78
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/lib/devkit/ssh_identity.rb +0 -53
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/lib/devkit/version.rb +0 -3
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/spec/devkit/core_spec.rb +0 -46
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/spec/devkit/identity_spec.rb +0 -1
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/spec/devkit/ssh_identity_spec.rb +0 -1
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/spec/devkit_spec.rb +0 -5
- data/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/spec/spec_helper.rb +0 -8
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/AUTHORS +0 -3
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/COPYING +0 -339
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/Changelog.md +0 -415
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/Gemfile +0 -9
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/INSTALL +0 -59
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/LICENSE +0 -7
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/README.rdoc +0 -74
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/Rakefile +0 -30
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/TODO +0 -6
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/ansi_colors.rb +0 -38
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/asking_for_arrays.rb +0 -18
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/basic_usage.rb +0 -75
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/color_scheme.rb +0 -32
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/get_character.rb +0 -12
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/limit.rb +0 -12
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/menus.rb +0 -65
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/overwrite.rb +0 -19
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/page_and_wrap.rb +0 -322
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/password.rb +0 -7
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/repeat_entry.rb +0 -21
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/trapping_eof.rb +0 -22
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/using_readline.rb +0 -17
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/highline.gemspec +0 -37
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline.rb +0 -1048
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/color_scheme.rb +0 -134
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/compatibility.rb +0 -16
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/import.rb +0 -41
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/menu.rb +0 -381
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/question.rb +0 -480
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/simulate.rb +0 -48
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/style.rb +0 -192
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/version.rb +0 -4
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/setup.rb +0 -1360
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/site/highline.css +0 -65
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/site/images/logo.png +0 -0
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/site/index.html +0 -58
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/string_methods.rb +0 -32
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_color_scheme.rb +0 -96
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_highline.rb +0 -1402
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_import.rb +0 -52
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_menu.rb +0 -439
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_simulator.rb +0 -23
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_string_highline.rb +0 -38
- data/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_style.rb +0 -578
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/BSDL +0 -22
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/COPYING +0 -57
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/Gemfile +0 -9
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/LEGAL +0 -4
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/README.rdoc +0 -19
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/Rakefile +0 -16
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/benchmarks/bm_yhpg.rb +0 -59
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/benchmarks/helper.rb +0 -8
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/lib/power_assert.rb +0 -338
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/lib/power_assert/enable_tracepoint_events.rb +0 -82
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/lib/power_assert/version.rb +0 -3
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/power_assert.gemspec +0 -23
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/test/helper.rb +0 -10
- data/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/test/test_power_assert.rb +0 -512
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/CONTRIBUTING.rdoc +0 -38
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/History.rdoc +0 -719
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/MIT-LICENSE +0 -21
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/Manifest.txt +0 -154
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/README.rdoc +0 -157
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/Rakefile +0 -82
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/bin/rake +0 -33
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/command_line_usage.rdoc +0 -158
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/example/Rakefile1 +0 -38
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/example/Rakefile2 +0 -35
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/example/a.c +0 -6
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/example/b.c +0 -6
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/example/main.c +0 -11
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/glossary.rdoc +0 -42
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/jamis.rb +0 -591
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/proto_rake.rdoc +0 -127
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/rake.1 +0 -141
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/rakefile.rdoc +0 -624
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/rational.rdoc +0 -151
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.4.14.rdoc +0 -23
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.4.15.rdoc +0 -35
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.5.0.rdoc +0 -53
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.5.3.rdoc +0 -78
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.5.4.rdoc +0 -46
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.6.0.rdoc +0 -141
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.7.0.rdoc +0 -119
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.7.1.rdoc +0 -59
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.7.2.rdoc +0 -121
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.7.3.rdoc +0 -47
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.0.rdoc +0 -114
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.2.rdoc +0 -165
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.3.rdoc +0 -112
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.4.rdoc +0 -147
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.5.rdoc +0 -53
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.6.rdoc +0 -37
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.7.rdoc +0 -55
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.0.rdoc +0 -112
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.1.rdoc +0 -52
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.2.2.rdoc +0 -55
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.2.rdoc +0 -49
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.3.rdoc +0 -102
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.4.rdoc +0 -60
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.5.rdoc +0 -55
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.6.rdoc +0 -64
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-10.0.0.rdoc +0 -178
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-10.0.1.rdoc +0 -58
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-10.0.2.rdoc +0 -53
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-10.0.3.rdoc +0 -191
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-10.1.0.rdoc +0 -61
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake.rb +0 -73
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/application.rb +0 -787
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/backtrace.rb +0 -23
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/clean.rb +0 -76
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/cloneable.rb +0 -16
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/contrib/compositepublisher.rb +0 -21
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/contrib/ftptools.rb +0 -137
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/contrib/sshpublisher.rb +0 -60
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/cpu_counter.rb +0 -120
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/default_loader.rb +0 -14
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/dsl_definition.rb +0 -194
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/early_time.rb +0 -21
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/file_creation_task.rb +0 -24
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/file_list.rb +0 -436
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/file_task.rb +0 -46
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/file_utils.rb +0 -123
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/invocation_chain.rb +0 -56
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/invocation_exception_mixin.rb +0 -16
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/late_time.rb +0 -17
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/linked_list.rb +0 -111
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/loaders/makefile.rb +0 -53
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/multi_task.rb +0 -13
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/name_space.rb +0 -38
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/packagetask.rb +0 -199
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/phony.rb +0 -15
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/private_reader.rb +0 -20
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/promise.rb +0 -99
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/pseudo_status.rb +0 -29
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/rake_module.rb +0 -38
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/rake_test_loader.rb +0 -22
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/rule_recursion_overflow_error.rb +0 -20
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/scope.rb +0 -42
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/task.rb +0 -391
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/task_argument_error.rb +0 -7
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/task_arguments.rb +0 -102
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/task_manager.rb +0 -316
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/tasklib.rb +0 -11
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/testtask.rb +0 -204
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/thread_history_display.rb +0 -48
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/thread_pool.rb +0 -163
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/trace_output.rb +0 -22
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/version.rb +0 -7
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/win32.rb +0 -50
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/rakelib/test_times.rake +0 -25
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/file_creation.rb +0 -34
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/helper.rb +0 -134
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/support/rakefile_definitions.rb +0 -476
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/support/ruby_runner.rb +0 -34
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_private_reader.rb +0 -42
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake.rb +0 -40
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_application.rb +0 -659
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_application_options.rb +0 -468
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_backtrace.rb +0 -119
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_clean.rb +0 -61
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_cpu_counter.rb +0 -68
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_definitions.rb +0 -84
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_directory_task.rb +0 -76
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_dsl.rb +0 -40
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_early_time.rb +0 -31
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_file_creation_task.rb +0 -56
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_file_list.rb +0 -687
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_file_list_path_map.rb +0 -15
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_file_task.rb +0 -197
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_file_utils.rb +0 -318
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_ftp_file.rb +0 -74
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_functional.rb +0 -484
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_invocation_chain.rb +0 -64
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_late_time.rb +0 -18
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_linked_list.rb +0 -84
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_makefile_loader.rb +0 -46
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_multi_task.rb +0 -64
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_name_space.rb +0 -57
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_package_task.rb +0 -79
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_path_map.rb +0 -168
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_path_map_explode.rb +0 -34
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_path_map_partial.rb +0 -18
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_pseudo_status.rb +0 -21
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_rake_test_loader.rb +0 -20
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_reduce_compat.rb +0 -26
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_require.rb +0 -40
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_rules.rb +0 -388
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_scope.rb +0 -44
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_task.rb +0 -430
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_task_argument_parsing.rb +0 -119
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_task_arguments.rb +0 -134
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_task_manager.rb +0 -178
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_task_manager_argument_resolution.rb +0 -19
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_task_with_arguments.rb +0 -172
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_test_task.rb +0 -130
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_thread_pool.rb +0 -145
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_top_level_functions.rb +0 -71
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_win32.rb +0 -72
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_thread_history_display.rb +0 -101
- data/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_trace_output.rb +0 -52
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/COPYING +0 -64
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/GPL +0 -339
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/LGPL +0 -502
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/PSFL +0 -271
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/README.md +0 -101
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/Rakefile +0 -71
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test-unit.rb +0 -34
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit.rb +0 -505
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/assertion-failed-error.rb +0 -25
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/assertions.rb +0 -2218
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/attribute-matcher.rb +0 -26
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/attribute.rb +0 -158
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/auto-runner-loader.rb +0 -17
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/autorunner.rb +0 -536
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/code-snippet-fetcher.rb +0 -58
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/collector.rb +0 -73
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/collector/descendant.rb +0 -19
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/collector/dir.rb +0 -108
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/collector/load.rb +0 -202
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/collector/objectspace.rb +0 -34
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/collector/xml.rb +0 -249
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/color-scheme.rb +0 -198
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/color.rb +0 -134
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/data.rb +0 -262
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/diff.rb +0 -746
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/error.rb +0 -158
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/exception-handler.rb +0 -82
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/failure.rb +0 -169
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/fault-location-detector.rb +0 -100
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/fixture.rb +0 -295
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/notification.rb +0 -136
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/omission.rb +0 -195
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/pending.rb +0 -154
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/priority.rb +0 -192
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/runner/console.rb +0 -59
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/runner/emacs.rb +0 -8
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/runner/xml.rb +0 -15
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/test-suite-creator.rb +0 -89
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/testcase.rb +0 -811
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/testresult.rb +0 -132
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/testsuite.rb +0 -175
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/console/outputlevel.rb +0 -15
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/console/testrunner.rb +0 -693
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/emacs/testrunner.rb +0 -49
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/testrunner.rb +0 -53
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/testrunnermediator.rb +0 -114
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/testrunnerutilities.rb +0 -41
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/xml/testrunner.rb +0 -224
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/util/backtracefilter.rb +0 -59
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/util/method-owner-finder.rb +0 -28
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/util/observable.rb +0 -90
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/util/output.rb +0 -31
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/util/procwrapper.rb +0 -48
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/version.rb +0 -5
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/sample/adder.rb +0 -13
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/sample/subtracter.rb +0 -12
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/sample/test_adder.rb +0 -20
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/sample/test_subtracter.rb +0 -20
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/sample/test_user.rb +0 -23
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/collector/test-descendant.rb +0 -178
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/collector/test-load.rb +0 -442
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/collector/test_dir.rb +0 -406
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/collector/test_objectspace.rb +0 -100
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/header-label.csv +0 -3
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/header-label.tsv +0 -3
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/header.csv +0 -3
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/header.tsv +0 -3
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/no-header.csv +0 -2
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/no-header.tsv +0 -2
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/plus.csv +0 -3
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/run-test.rb +0 -22
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-assertions.rb +0 -2160
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-attribute-matcher.rb +0 -38
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-attribute.rb +0 -123
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-code-snippet.rb +0 -37
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-color-scheme.rb +0 -82
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-color.rb +0 -47
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-data.rb +0 -303
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-diff.rb +0 -518
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-emacs-runner.rb +0 -60
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-error.rb +0 -26
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-failure.rb +0 -33
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-fault-location-detector.rb +0 -163
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-fixture.rb +0 -713
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-notification.rb +0 -33
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-omission.rb +0 -81
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-pending.rb +0 -70
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-priority.rb +0 -173
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-test-case.rb +0 -1171
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-test-result.rb +0 -113
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-test-suite-creator.rb +0 -97
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-test-suite.rb +0 -150
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/testunit-test-util.rb +0 -31
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/ui/test_testrunmediator.rb +0 -20
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/util/test-method-owner-finder.rb +0 -38
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/util/test-output.rb +0 -11
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/util/test_backtracefilter.rb +0 -52
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/util/test_observable.rb +0 -102
- data/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/util/test_procwrapper.rb +0 -36
- data/vendor/bundle/ruby/2.2.0/specifications/colorize-0.7.7.gemspec +0 -38
- data/vendor/bundle/ruby/2.2.0/specifications/devkit-0.1.0.gemspec +0 -46
- data/vendor/bundle/ruby/2.2.0/specifications/highline-1.7.8.gemspec +0 -37
- data/vendor/bundle/ruby/2.2.0/specifications/power_assert-0.3.0.gemspec +0 -41
- data/vendor/bundle/ruby/2.2.0/specifications/rake-11.1.2.gemspec +0 -43
- data/vendor/bundle/ruby/2.2.0/specifications/test-unit-3.1.9.gemspec +0 -47
@@ -1,65 +0,0 @@
|
|
1
|
-
body {
|
2
|
-
margin: 0;
|
3
|
-
padding: 0;
|
4
|
-
text-align: center;
|
5
|
-
background: #abc;
|
6
|
-
font: 13px Trebuchet MS, Lucida Sans Unicode, Arial, sans-serif;
|
7
|
-
}
|
8
|
-
|
9
|
-
#container {
|
10
|
-
margin: 0 auto;
|
11
|
-
margin-top: 10px;
|
12
|
-
position: relative;
|
13
|
-
width: 785px;
|
14
|
-
background: #fff repeat;
|
15
|
-
padding-top: 20px;
|
16
|
-
}
|
17
|
-
|
18
|
-
#container #header {
|
19
|
-
padding-top: 20px;
|
20
|
-
height: 141px;
|
21
|
-
width: 785px;
|
22
|
-
background: url(images/logo.png) center no-repeat;
|
23
|
-
}
|
24
|
-
|
25
|
-
#container #content {
|
26
|
-
text-align: left;
|
27
|
-
margin-left: 230px;
|
28
|
-
width: 500px;
|
29
|
-
}
|
30
|
-
|
31
|
-
#container #sidebar {
|
32
|
-
text-align: left;
|
33
|
-
position: absolute;
|
34
|
-
top: 181px;
|
35
|
-
left: 0;
|
36
|
-
width: 170px;
|
37
|
-
margin-right: 25px;
|
38
|
-
}
|
39
|
-
|
40
|
-
#container #footer {
|
41
|
-
font: 9px Arial;
|
42
|
-
padding: 4px;
|
43
|
-
border-top: 1px solid;
|
44
|
-
color: #aaa;
|
45
|
-
}
|
46
|
-
|
47
|
-
ul {
|
48
|
-
list-style: none;
|
49
|
-
}
|
50
|
-
|
51
|
-
li {
|
52
|
-
border-bottom: 1px solid #e8e8e8;
|
53
|
-
padding-top: 10px;
|
54
|
-
}
|
55
|
-
|
56
|
-
a {
|
57
|
-
text-decoration: none;
|
58
|
-
color: #15528a;
|
59
|
-
}
|
60
|
-
|
61
|
-
pre {
|
62
|
-
padding: 5px;
|
63
|
-
padding-left: 20px;
|
64
|
-
font: 11px Courier;
|
65
|
-
}
|
Binary file
|
@@ -1,58 +0,0 @@
|
|
1
|
-
<html>
|
2
|
-
<head>
|
3
|
-
<title> HighLine </title>
|
4
|
-
<style type="text/css"> @import url(highline.css); </style>
|
5
|
-
</head>
|
6
|
-
<body>
|
7
|
-
<div id="container">
|
8
|
-
<div id="header"></div>
|
9
|
-
<div id="content">
|
10
|
-
<h2>HighLine is about…</h2>
|
11
|
-
|
12
|
-
|
13
|
-
<h3>Saving time.</h3>
|
14
|
-
|
15
|
-
|
16
|
-
<p>Command line interfaces are meant to be easy. So why shouldn’t building
|
17
|
-
them be easy, too? HighLine provides a solid toolset to help you get
|
18
|
-
the job done cleanly so you can focus on the real task at hand,
|
19
|
-
<em>your task.</em></p>
|
20
|
-
|
21
|
-
|
22
|
-
<h3>Clean and intuitive design.</h3>
|
23
|
-
|
24
|
-
|
25
|
-
<p>Want to get a taste for how HighLine is used? Take a look at this simple
|
26
|
-
example, which asks a user for a zip code, automatically does validation,
|
27
|
-
and returns the result:</p>
|
28
|
-
|
29
|
-
|
30
|
-
<pre><code>zip = ask("Zip? ") { |q| q.validate = /\A\d{5}(?:-?\d{4})?\Z/ }</code></pre>
|
31
|
-
|
32
|
-
|
33
|
-
<h3>Hassle-free Installation.</h3>
|
34
|
-
|
35
|
-
|
36
|
-
<p>Installation is easy via RubyGems. Simply enter the command:</p>
|
37
|
-
|
38
|
-
|
39
|
-
<pre><code>sudo gem install highline</code></pre>
|
40
|
-
|
41
|
-
|
42
|
-
<p>and you’ll be on your way! Of course, manual installation is an option,
|
43
|
-
too.</p>
|
44
|
-
</div>
|
45
|
-
<div id="sidebar">
|
46
|
-
<ul>
|
47
|
-
<li><a href="http://rubyforge.org/projects/highline">Project Page</a></li>
|
48
|
-
<li><a href="http://highline.rubyforge.org/doc">Documentation</a></li>
|
49
|
-
<li><a href="https://github.com/JEG2/highline">Source</a></li>
|
50
|
-
<li><a href="mailto:james@grayproductions.net">Contact</a></li>
|
51
|
-
</ul>
|
52
|
-
</div>
|
53
|
-
<div id="footer">
|
54
|
-
Created by James Edward Gray II and Gregory Brown
|
55
|
-
</div>
|
56
|
-
</div>
|
57
|
-
</body>
|
58
|
-
</html>
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# string_methods.rb
|
2
|
-
#
|
3
|
-
# Created by Richard LeBer 2011-06-27
|
4
|
-
#
|
5
|
-
# This is Free Software. See LICENSE and COPYING for details.
|
6
|
-
#
|
7
|
-
# String class convenience methods
|
8
|
-
|
9
|
-
module StringMethods
|
10
|
-
def test_color
|
11
|
-
assert_equal("\e[34mstring\e[0m", @string.color(:blue))
|
12
|
-
assert_equal("\e[1m\e[47mstring\e[0m", @string.color(:bold,:on_white))
|
13
|
-
assert_equal("\e[45mstring\e[0m", @string.on(:magenta))
|
14
|
-
assert_equal("\e[36mstring\e[0m", @string.cyan)
|
15
|
-
assert_equal("\e[41m\e[5mstring\e[0m\e[0m", @string.blink.on_red)
|
16
|
-
assert_equal("\e[38;5;137mstring\e[0m", @string.color(:rgb_906030))
|
17
|
-
assert_equal("\e[38;5;101mstring\e[0m", @string.rgb('606030'))
|
18
|
-
assert_equal("\e[38;5;107mstring\e[0m", @string.rgb('60','90','30'))
|
19
|
-
assert_equal("\e[38;5;107mstring\e[0m", @string.rgb(96,144,48))
|
20
|
-
assert_equal("\e[38;5;173mstring\e[0m", @string.rgb_c06030)
|
21
|
-
assert_equal("\e[48;5;137mstring\e[0m", @string.color(:on_rgb_906030))
|
22
|
-
assert_equal("\e[48;5;101mstring\e[0m", @string.on_rgb('606030'))
|
23
|
-
assert_equal("\e[48;5;107mstring\e[0m", @string.on_rgb('60','90','30'))
|
24
|
-
assert_equal("\e[48;5;107mstring\e[0m", @string.on_rgb(96,144,48))
|
25
|
-
assert_equal("\e[48;5;173mstring\e[0m", @string.on_rgb_c06030)
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_uncolor
|
29
|
-
colored_string = HighLine::String("\e[38;5;137mstring\e[0m")
|
30
|
-
assert_equal "string", colored_string.uncolor
|
31
|
-
end
|
32
|
-
end
|
@@ -1,96 +0,0 @@
|
|
1
|
-
# tc_color_scheme.rb
|
2
|
-
#
|
3
|
-
# Created by Jeremy Hinegardner on 2007-01-24.
|
4
|
-
# Copyright 2007 Jeremy Hinegardner. All rights reserved.
|
5
|
-
#
|
6
|
-
# This is Free Software. See LICENSE and COPYING for details.
|
7
|
-
|
8
|
-
require "test/unit"
|
9
|
-
|
10
|
-
require "highline"
|
11
|
-
require "stringio"
|
12
|
-
|
13
|
-
class TestColorScheme < Test::Unit::TestCase
|
14
|
-
def setup
|
15
|
-
@input = StringIO.new
|
16
|
-
@output = StringIO.new
|
17
|
-
@terminal = HighLine.new(@input, @output)
|
18
|
-
|
19
|
-
@old_color_scheme = HighLine.color_scheme
|
20
|
-
end
|
21
|
-
|
22
|
-
def teardown
|
23
|
-
HighLine.color_scheme = @old_color_scheme
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_using_color_scheme
|
27
|
-
assert_equal(false,HighLine.using_color_scheme?)
|
28
|
-
|
29
|
-
HighLine.color_scheme = HighLine::ColorScheme.new
|
30
|
-
assert_equal(true,HighLine.using_color_scheme?)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_scheme
|
34
|
-
HighLine.color_scheme = HighLine::SampleColorScheme.new
|
35
|
-
|
36
|
-
@terminal.say("This should be <%= color('warning yellow', :warning) %>.")
|
37
|
-
assert_equal("This should be \e[1m\e[33mwarning yellow\e[0m.\n",@output.string)
|
38
|
-
@output.rewind
|
39
|
-
|
40
|
-
@terminal.say("This should be <%= color('warning yellow', 'warning') %>.")
|
41
|
-
assert_equal("This should be \e[1m\e[33mwarning yellow\e[0m.\n",@output.string)
|
42
|
-
@output.rewind
|
43
|
-
|
44
|
-
@terminal.say("This should be <%= color('warning yellow', 'WarNing') %>.")
|
45
|
-
assert_equal("This should be \e[1m\e[33mwarning yellow\e[0m.\n",@output.string)
|
46
|
-
@output.rewind
|
47
|
-
|
48
|
-
# Check that keys are available, and as expected
|
49
|
-
assert_equal ["critical", "error", "warning", "notice", "info", "debug", "row_even", "row_odd"].sort,
|
50
|
-
HighLine.color_scheme.keys.sort
|
51
|
-
|
52
|
-
# Color scheme doesn't care if we use symbols or strings, and is case-insensitive
|
53
|
-
warning1 = HighLine.color_scheme[:warning]
|
54
|
-
warning2 = HighLine.color_scheme["warning"]
|
55
|
-
warning3 = HighLine.color_scheme[:wArning]
|
56
|
-
warning4 = HighLine.color_scheme["warniNg"]
|
57
|
-
assert_instance_of HighLine::Style, warning1
|
58
|
-
assert_instance_of HighLine::Style, warning2
|
59
|
-
assert_instance_of HighLine::Style, warning3
|
60
|
-
assert_instance_of HighLine::Style, warning4
|
61
|
-
assert_equal warning1, warning2
|
62
|
-
assert_equal warning1, warning3
|
63
|
-
assert_equal warning1, warning4
|
64
|
-
|
65
|
-
# Nonexistent keys return nil
|
66
|
-
assert_nil HighLine.color_scheme[:nonexistent]
|
67
|
-
|
68
|
-
# Same as above, for definitions
|
69
|
-
defn1 = HighLine.color_scheme.definition(:warning)
|
70
|
-
defn2 = HighLine.color_scheme.definition("warning")
|
71
|
-
defn3 = HighLine.color_scheme.definition(:wArning)
|
72
|
-
defn4 = HighLine.color_scheme.definition("warniNg")
|
73
|
-
assert_instance_of Array, defn1
|
74
|
-
assert_instance_of Array, defn2
|
75
|
-
assert_instance_of Array, defn3
|
76
|
-
assert_instance_of Array, defn4
|
77
|
-
assert_equal [:bold, :yellow], defn1
|
78
|
-
assert_equal [:bold, :yellow], defn2
|
79
|
-
assert_equal [:bold, :yellow], defn3
|
80
|
-
assert_equal [:bold, :yellow], defn4
|
81
|
-
assert_nil HighLine.color_scheme.definition(:nonexistent)
|
82
|
-
|
83
|
-
color_scheme_hash = HighLine.color_scheme.to_hash
|
84
|
-
assert_instance_of Hash, color_scheme_hash
|
85
|
-
assert_equal ["critical", "error", "warning", "notice", "info", "debug", "row_even", "row_odd"].sort,
|
86
|
-
color_scheme_hash.keys.sort
|
87
|
-
assert_instance_of Array, HighLine.color_scheme.definition(:warning)
|
88
|
-
assert_equal [:bold, :yellow], HighLine.color_scheme.definition(:warning)
|
89
|
-
|
90
|
-
# turn it back off, should raise an exception
|
91
|
-
HighLine.color_scheme = @old_color_scheme
|
92
|
-
assert_raises(NameError) {
|
93
|
-
@terminal.say("This should be <%= color('nothing at all', :error) %>.")
|
94
|
-
}
|
95
|
-
end
|
96
|
-
end
|
@@ -1,1402 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# tc_highline.rb
|
3
|
-
#
|
4
|
-
# Created by James Edward Gray II on 2005-04-26.
|
5
|
-
# Copyright 2005 Gray Productions. All rights reserved.
|
6
|
-
#
|
7
|
-
# This is Free Software. See LICENSE and COPYING for details.
|
8
|
-
|
9
|
-
require "test/unit"
|
10
|
-
|
11
|
-
require "highline"
|
12
|
-
require "stringio"
|
13
|
-
require "readline"
|
14
|
-
require "tempfile"
|
15
|
-
|
16
|
-
if HighLine::CHARACTER_MODE == "Win32API"
|
17
|
-
class HighLine
|
18
|
-
# Override Windows' character reading so it's not tied to STDIN.
|
19
|
-
def get_character( input = STDIN )
|
20
|
-
input.getc
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
class TestHighLine < Test::Unit::TestCase
|
26
|
-
def setup
|
27
|
-
@input = StringIO.new
|
28
|
-
@output = StringIO.new
|
29
|
-
@terminal = HighLine.new(@input, @output)
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_agree
|
33
|
-
@input << "y\nyes\nYES\nHell no!\nNo\n"
|
34
|
-
@input.rewind
|
35
|
-
|
36
|
-
assert_equal(true, @terminal.agree("Yes or no? "))
|
37
|
-
assert_equal(true, @terminal.agree("Yes or no? "))
|
38
|
-
assert_equal(true, @terminal.agree("Yes or no? "))
|
39
|
-
assert_equal(false, @terminal.agree("Yes or no? "))
|
40
|
-
|
41
|
-
@input.truncate(@input.rewind)
|
42
|
-
@input << "yellow"
|
43
|
-
@input.rewind
|
44
|
-
|
45
|
-
assert_equal(true, @terminal.agree("Yes or no? ", :getc))
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_agree_with_block
|
49
|
-
@input << "\n\n"
|
50
|
-
@input.rewind
|
51
|
-
|
52
|
-
assert_equal(true, @terminal.agree("Yes or no? ") { |q| q.default = "y" })
|
53
|
-
assert_equal(false, @terminal.agree("Yes or no? ") { |q| q.default = "n" })
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_ask
|
57
|
-
name = "James Edward Gray II"
|
58
|
-
@input << name << "\n"
|
59
|
-
@input.rewind
|
60
|
-
|
61
|
-
assert_equal(name, @terminal.ask("What is your name? "))
|
62
|
-
|
63
|
-
assert_raise(EOFError) { @terminal.ask("Any input left? ") }
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_ask_string
|
67
|
-
name = "James Edward Gray II"
|
68
|
-
@input << name << "\n"
|
69
|
-
@input.rewind
|
70
|
-
|
71
|
-
assert_equal(name, @terminal.ask("What is your name? ", String))
|
72
|
-
|
73
|
-
assert_raise(EOFError) { @terminal.ask("Any input left? ", String) }
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_indent
|
77
|
-
text = "Testing...\n"
|
78
|
-
@terminal.indent_level=1
|
79
|
-
@terminal.say(text)
|
80
|
-
assert_equal(' '*3+text, @output.string)
|
81
|
-
|
82
|
-
@output.truncate(@output.rewind)
|
83
|
-
@terminal.indent_level=3
|
84
|
-
@terminal.say(text)
|
85
|
-
assert_equal(' '*9+text, @output.string)
|
86
|
-
|
87
|
-
@output.truncate(@output.rewind)
|
88
|
-
@terminal.indent_level=0
|
89
|
-
@terminal.indent_size=5
|
90
|
-
@terminal.indent(2, text)
|
91
|
-
assert_equal(' '*10+text, @output.string)
|
92
|
-
|
93
|
-
@output.truncate(@output.rewind)
|
94
|
-
@terminal.indent_size=4
|
95
|
-
@terminal.indent {
|
96
|
-
@terminal.say(text)
|
97
|
-
}
|
98
|
-
assert_equal(' '*4+text, @output.string)
|
99
|
-
|
100
|
-
@output.truncate(@output.rewind)
|
101
|
-
@terminal.indent_size=2
|
102
|
-
@terminal.indent(3) { |t|
|
103
|
-
t.say(text)
|
104
|
-
}
|
105
|
-
assert_equal(' '*6+text, @output.string)
|
106
|
-
|
107
|
-
@output.truncate(@output.rewind)
|
108
|
-
@terminal.indent { |t|
|
109
|
-
t.indent {
|
110
|
-
t.indent {
|
111
|
-
t.indent { |tt|
|
112
|
-
tt.say(text)
|
113
|
-
}
|
114
|
-
}
|
115
|
-
}
|
116
|
-
}
|
117
|
-
assert_equal(' '*8+text, @output.string)
|
118
|
-
|
119
|
-
text = "Multi\nLine\nIndentation\n"
|
120
|
-
indent = ' '*4
|
121
|
-
@terminal.indent_level=2
|
122
|
-
@output.truncate(@output.rewind)
|
123
|
-
@terminal.say(text)
|
124
|
-
assert_equal("#{indent}Multi\n#{indent}Line\n#{indent}Indentation\n", @output.string)
|
125
|
-
|
126
|
-
@output.truncate(@output.rewind)
|
127
|
-
@terminal.multi_indent = false
|
128
|
-
@terminal.say(text)
|
129
|
-
assert_equal("#{indent}Multi\nLine\nIndentation\n", @output.string)
|
130
|
-
|
131
|
-
@output.truncate(@output.rewind)
|
132
|
-
@terminal.indent(0, text, true)
|
133
|
-
assert_equal("#{indent}Multi\n#{indent}Line\n#{indent}Indentation\n", @output.string)
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_newline
|
137
|
-
@terminal.newline
|
138
|
-
@terminal.newline
|
139
|
-
assert_equal("\n\n", @output.string)
|
140
|
-
end
|
141
|
-
|
142
|
-
def test_bug_fixes
|
143
|
-
# auto-complete bug
|
144
|
-
@input << "ruby\nRuby\n"
|
145
|
-
@input.rewind
|
146
|
-
|
147
|
-
languages = [:Perl, :Python, :Ruby]
|
148
|
-
answer = @terminal.ask( "What is your favorite programming language? ",
|
149
|
-
languages )
|
150
|
-
assert_equal(languages.last, answer)
|
151
|
-
|
152
|
-
@input.truncate(@input.rewind)
|
153
|
-
@input << "ruby\n"
|
154
|
-
@input.rewind
|
155
|
-
|
156
|
-
answer = @terminal.ask( "What is your favorite programming language? ",
|
157
|
-
languages ) do |q|
|
158
|
-
q.case = :capitalize
|
159
|
-
end
|
160
|
-
assert_equal(languages.last, answer)
|
161
|
-
|
162
|
-
# poor auto-complete error message
|
163
|
-
@input.truncate(@input.rewind)
|
164
|
-
@input << "lisp\nruby\n"
|
165
|
-
@input.rewind
|
166
|
-
@output.truncate(@output.rewind)
|
167
|
-
|
168
|
-
answer = @terminal.ask( "What is your favorite programming language? ",
|
169
|
-
languages ) do |q|
|
170
|
-
q.case = :capitalize
|
171
|
-
end
|
172
|
-
assert_equal(languages.last, answer)
|
173
|
-
assert_equal( "What is your favorite programming language? " +
|
174
|
-
"You must choose one of [Perl, Python, Ruby].\n" +
|
175
|
-
"? ", @output.string )
|
176
|
-
end
|
177
|
-
|
178
|
-
def test_case_changes
|
179
|
-
@input << "jeg2\n"
|
180
|
-
@input.rewind
|
181
|
-
|
182
|
-
answer = @terminal.ask("Enter your initials ") do |q|
|
183
|
-
q.case = :up
|
184
|
-
end
|
185
|
-
assert_equal("JEG2", answer)
|
186
|
-
|
187
|
-
@input.truncate(@input.rewind)
|
188
|
-
@input << "cRaZY\n"
|
189
|
-
@input.rewind
|
190
|
-
|
191
|
-
answer = @terminal.ask("Enter a search string: ") do |q|
|
192
|
-
q.case = :down
|
193
|
-
end
|
194
|
-
assert_equal("crazy", answer)
|
195
|
-
end
|
196
|
-
|
197
|
-
def test_character_echo
|
198
|
-
@input << "password\r"
|
199
|
-
@input.rewind
|
200
|
-
|
201
|
-
answer = @terminal.ask("Please enter your password: ") do |q|
|
202
|
-
q.echo = "*"
|
203
|
-
end
|
204
|
-
assert_equal("password", answer)
|
205
|
-
assert_equal("Please enter your password: ********\n", @output.string)
|
206
|
-
|
207
|
-
@input.truncate(@input.rewind)
|
208
|
-
@input << "2"
|
209
|
-
@input.rewind
|
210
|
-
@output.truncate(@output.rewind)
|
211
|
-
|
212
|
-
answer = @terminal.ask( "Select an option (1, 2 or 3): ",
|
213
|
-
Integer ) do |q|
|
214
|
-
q.echo = "*"
|
215
|
-
q.character = true
|
216
|
-
end
|
217
|
-
assert_equal(2, answer)
|
218
|
-
assert_equal("Select an option (1, 2 or 3): *\n", @output.string)
|
219
|
-
end
|
220
|
-
|
221
|
-
def test_backspace_does_not_enter_prompt
|
222
|
-
@input << "\b\b"
|
223
|
-
@input.rewind
|
224
|
-
answer = @terminal.ask("Please enter your password: ") do |q|
|
225
|
-
q.echo = "*"
|
226
|
-
end
|
227
|
-
assert_equal("", answer)
|
228
|
-
assert_equal("Please enter your password: \n", @output.string)
|
229
|
-
end
|
230
|
-
|
231
|
-
def test_after_some_chars_backspace_does_not_enter_prompt_when_ascii
|
232
|
-
@input << "apple\b\b\b\b\b\b\b\b\b\b"
|
233
|
-
@input.rewind
|
234
|
-
answer = @terminal.ask("Please enter your password: ") do |q|
|
235
|
-
q.echo = "*"
|
236
|
-
end
|
237
|
-
assert_equal("", answer)
|
238
|
-
assert_equal("apple".size, @output.string.count("\b"))
|
239
|
-
end
|
240
|
-
|
241
|
-
def test_after_some_chars_backspace_does_not_enter_prompt_when_utf8
|
242
|
-
@input << "maçã\b\b\b\b\b\b\b\b"
|
243
|
-
@input.rewind
|
244
|
-
answer = @terminal.ask("Please enter your password: ") do |q|
|
245
|
-
q.echo = "*"
|
246
|
-
end
|
247
|
-
assert_equal("", answer)
|
248
|
-
assert_equal("maçã".size, @output.string.count("\b"))
|
249
|
-
end
|
250
|
-
|
251
|
-
def test_readline_mode
|
252
|
-
# Rubinius seems to be ignoring Readline input
|
253
|
-
# and output assignments. This ruins testing.
|
254
|
-
# but it doesn't mean readline is not working
|
255
|
-
# properly on rubinius.
|
256
|
-
|
257
|
-
return if RUBY_ENGINE == "rbx"
|
258
|
-
|
259
|
-
# Creating Tempfiles here because Readline.input
|
260
|
-
# and Readline.output only accepts a File object
|
261
|
-
# as argument (not any duck type as StringIO)
|
262
|
-
|
263
|
-
temp_stdin = Tempfile.new "temp_stdin"
|
264
|
-
temp_stdout = Tempfile.new "temp_stdout"
|
265
|
-
|
266
|
-
Readline.input = @input = File.open(temp_stdin.path, 'w+')
|
267
|
-
Readline.output = @output = File.open(temp_stdout.path, 'w+')
|
268
|
-
|
269
|
-
@terminal = HighLine.new(@input, @output)
|
270
|
-
|
271
|
-
@input << "any input\n"
|
272
|
-
@input.rewind
|
273
|
-
|
274
|
-
answer = @terminal.ask("Prompt: ") do |q|
|
275
|
-
q.readline = true
|
276
|
-
end
|
277
|
-
|
278
|
-
@output.rewind
|
279
|
-
output = @output.read
|
280
|
-
|
281
|
-
assert_equal "any input", answer
|
282
|
-
assert_match "Prompt: any input\n", output
|
283
|
-
|
284
|
-
@input.close
|
285
|
-
@output.close
|
286
|
-
Readline.input = STDIN
|
287
|
-
Readline.output = STDOUT
|
288
|
-
end
|
289
|
-
|
290
|
-
def test_readline_mode_with_limit_set
|
291
|
-
temp_stdin = Tempfile.new "temp_stdin"
|
292
|
-
temp_stdout = Tempfile.new "temp_stdout"
|
293
|
-
|
294
|
-
Readline.input = @input = File.open(temp_stdin.path, 'w+')
|
295
|
-
Readline.output = @output = File.open(temp_stdout.path, 'w+')
|
296
|
-
|
297
|
-
@terminal = HighLine.new(@input, @output)
|
298
|
-
|
299
|
-
@input << "any input\n"
|
300
|
-
@input.rewind
|
301
|
-
|
302
|
-
answer = @terminal.ask("Prompt: ") do |q|
|
303
|
-
q.limit = 50
|
304
|
-
q.readline = true
|
305
|
-
end
|
306
|
-
|
307
|
-
@output.rewind
|
308
|
-
output = @output.read
|
309
|
-
|
310
|
-
assert_equal "any input", answer
|
311
|
-
assert_equal "Prompt: any input\n", output
|
312
|
-
|
313
|
-
@input.close
|
314
|
-
@output.close
|
315
|
-
Readline.input = STDIN
|
316
|
-
Readline.output = STDOUT
|
317
|
-
end
|
318
|
-
|
319
|
-
def test_readline_on_non_echo_question_has_prompt
|
320
|
-
@input << "you can't see me"
|
321
|
-
@input.rewind
|
322
|
-
answer = @terminal.ask("Please enter some hidden text: ") do |q|
|
323
|
-
q.readline = true
|
324
|
-
q.echo = "*"
|
325
|
-
end
|
326
|
-
assert_equal("you can't see me", answer)
|
327
|
-
assert_equal("Please enter some hidden text: ****************\n", @output.string)
|
328
|
-
end
|
329
|
-
|
330
|
-
def test_character_reading
|
331
|
-
# WARNING: This method does NOT cover Unix and Windows savvy testing!
|
332
|
-
@input << "12345"
|
333
|
-
@input.rewind
|
334
|
-
|
335
|
-
answer = @terminal.ask("Enter a single digit: ", Integer) do |q|
|
336
|
-
q.character = :getc
|
337
|
-
end
|
338
|
-
assert_equal(1, answer)
|
339
|
-
end
|
340
|
-
|
341
|
-
def test_frozen_statement
|
342
|
-
@terminal.say('This is a frozen statement'.freeze)
|
343
|
-
assert_equal("This is a frozen statement\n", @output.string)
|
344
|
-
end
|
345
|
-
|
346
|
-
def test_color
|
347
|
-
@terminal.say("This should be <%= BLUE %>blue<%= CLEAR %>!")
|
348
|
-
assert_equal("This should be \e[34mblue\e[0m!\n", @output.string)
|
349
|
-
|
350
|
-
@output.truncate(@output.rewind)
|
351
|
-
|
352
|
-
@terminal.say( "This should be " +
|
353
|
-
"<%= BOLD + ON_WHITE %>bold on white<%= CLEAR %>!" )
|
354
|
-
assert_equal( "This should be \e[1m\e[47mbold on white\e[0m!\n",
|
355
|
-
@output.string )
|
356
|
-
|
357
|
-
@output.truncate(@output.rewind)
|
358
|
-
|
359
|
-
@terminal.say("This should be <%= color('cyan', CYAN) %>!")
|
360
|
-
assert_equal("This should be \e[36mcyan\e[0m!\n", @output.string)
|
361
|
-
|
362
|
-
@output.truncate(@output.rewind)
|
363
|
-
|
364
|
-
@terminal.say( "This should be " +
|
365
|
-
"<%= color('blinking on red', :blink, :on_red) %>!" )
|
366
|
-
assert_equal( "This should be \e[5m\e[41mblinking on red\e[0m!\n",
|
367
|
-
@output.string )
|
368
|
-
|
369
|
-
@output.truncate(@output.rewind)
|
370
|
-
|
371
|
-
@terminal.say("This should be <%= NONE %>none<%= CLEAR %>!")
|
372
|
-
assert_equal("This should be \e[38mnone\e[0m!\n", @output.string)
|
373
|
-
|
374
|
-
@output.truncate(@output.rewind)
|
375
|
-
|
376
|
-
@terminal.say("This should be <%= RGB_906030 %>rgb_906030<%= CLEAR %>!")
|
377
|
-
assert_equal("This should be \e[38;5;137mrgb_906030\e[0m!\n", @output.string)
|
378
|
-
|
379
|
-
@output.truncate(@output.rewind)
|
380
|
-
|
381
|
-
@terminal.say("This should be <%= ON_RGB_C06030 %>on_rgb_c06030<%= CLEAR %>!")
|
382
|
-
assert_equal("This should be \e[48;5;173mon_rgb_c06030\e[0m!\n", @output.string)
|
383
|
-
|
384
|
-
@output.truncate(@output.rewind)
|
385
|
-
|
386
|
-
# Does class method work, too?
|
387
|
-
@terminal.say("This should be <%= HighLine.color('reverse underlined magenta', :reverse, :underline, :magenta) %>!")
|
388
|
-
assert_equal( "This should be \e[7m\e[4m\e[35mreverse underlined magenta\e[0m!\n",
|
389
|
-
@output.string )
|
390
|
-
|
391
|
-
@output.truncate(@output.rewind)
|
392
|
-
|
393
|
-
# turn off color
|
394
|
-
old_setting = HighLine.use_color?
|
395
|
-
assert_nothing_raised(Exception) { HighLine.use_color = false }
|
396
|
-
@terminal.say("This should be <%= color('cyan', CYAN) %>!")
|
397
|
-
assert_equal("This should be cyan!\n", @output.string)
|
398
|
-
HighLine.use_color = old_setting
|
399
|
-
end
|
400
|
-
|
401
|
-
def test_uncolor
|
402
|
-
# instance method
|
403
|
-
assert_equal( "This should be reverse underlined magenta!\n",
|
404
|
-
@terminal.uncolor("This should be \e[7m\e[4m\e[35mreverse underlined magenta\e[0m!\n")
|
405
|
-
)
|
406
|
-
|
407
|
-
@output.truncate(@output.rewind)
|
408
|
-
|
409
|
-
# class method
|
410
|
-
assert_equal( "This should be reverse underlined magenta!\n",
|
411
|
-
HighLine.uncolor("This should be \e[7m\e[4m\e[35mreverse underlined magenta\e[0m!\n")
|
412
|
-
)
|
413
|
-
|
414
|
-
@output.truncate(@output.rewind)
|
415
|
-
|
416
|
-
# RGB color
|
417
|
-
assert_equal( "This should be rgb_906030!\n",
|
418
|
-
@terminal.uncolor("This should be \e[38;5;137mrgb_906030\e[0m!\n")
|
419
|
-
)
|
420
|
-
end
|
421
|
-
|
422
|
-
def test_grey_is_the_same_of_gray
|
423
|
-
@terminal.say("<%= GRAY %>")
|
424
|
-
gray_code = @output.string.dup
|
425
|
-
@output.truncate(@output.rewind)
|
426
|
-
|
427
|
-
@terminal.say("<%= GREY %>")
|
428
|
-
grey_code = @output.string.dup
|
429
|
-
@output.truncate(@output.rewind)
|
430
|
-
|
431
|
-
assert_equal gray_code, grey_code
|
432
|
-
end
|
433
|
-
|
434
|
-
def test_light_is_the_same_as_bright
|
435
|
-
@terminal.say("<%= BRIGHT_BLUE %>")
|
436
|
-
bright_blue_code = @output.string.dup
|
437
|
-
@output.truncate(@output.rewind)
|
438
|
-
|
439
|
-
@terminal.say("<%= LIGHT_BLUE %>")
|
440
|
-
light_blue_code = @output.string.dup
|
441
|
-
@output.truncate(@output.rewind)
|
442
|
-
|
443
|
-
assert_equal bright_blue_code, light_blue_code
|
444
|
-
end
|
445
|
-
|
446
|
-
def test_confirm
|
447
|
-
@input << "junk.txt\nno\nsave.txt\ny\n"
|
448
|
-
@input.rewind
|
449
|
-
|
450
|
-
answer = @terminal.ask("Enter a filename: ") do |q|
|
451
|
-
q.confirm = "Are you sure you want to overwrite <%= @answer %>? "
|
452
|
-
q.responses[:ask_on_error] = :question
|
453
|
-
end
|
454
|
-
assert_equal("save.txt", answer)
|
455
|
-
assert_equal( "Enter a filename: " +
|
456
|
-
"Are you sure you want to overwrite junk.txt? " +
|
457
|
-
"Enter a filename: " +
|
458
|
-
"Are you sure you want to overwrite save.txt? ",
|
459
|
-
@output.string )
|
460
|
-
|
461
|
-
@input.truncate(@input.rewind)
|
462
|
-
@input << "junk.txt\nyes\nsave.txt\nn\n"
|
463
|
-
@input.rewind
|
464
|
-
@output.truncate(@output.rewind)
|
465
|
-
|
466
|
-
answer = @terminal.ask("Enter a filename: ") do |q|
|
467
|
-
q.confirm = "Are you sure you want to overwrite <%= @answer %>? "
|
468
|
-
end
|
469
|
-
assert_equal("junk.txt", answer)
|
470
|
-
assert_equal( "Enter a filename: " +
|
471
|
-
"Are you sure you want to overwrite junk.txt? ",
|
472
|
-
@output.string )
|
473
|
-
end
|
474
|
-
|
475
|
-
def test_defaults
|
476
|
-
@input << "\nNo Comment\n"
|
477
|
-
@input.rewind
|
478
|
-
|
479
|
-
answer = @terminal.ask("Are you sexually active? ") do |q|
|
480
|
-
q.validate = /\Ay(?:es)?|no?|no comment\Z/i
|
481
|
-
end
|
482
|
-
assert_equal("No Comment", answer)
|
483
|
-
|
484
|
-
@input.truncate(@input.rewind)
|
485
|
-
@input << "\nYes\n"
|
486
|
-
@input.rewind
|
487
|
-
@output.truncate(@output.rewind)
|
488
|
-
|
489
|
-
answer = @terminal.ask("Are you sexually active? ") do |q|
|
490
|
-
q.default = "No Comment"
|
491
|
-
q.validate = /\Ay(?:es)?|no?|no comment\Z/i
|
492
|
-
end
|
493
|
-
assert_equal("No Comment", answer)
|
494
|
-
assert_equal( "Are you sexually active? |No Comment| ",
|
495
|
-
@output.string )
|
496
|
-
end
|
497
|
-
|
498
|
-
def test_default_with_String
|
499
|
-
@input << "\n"
|
500
|
-
@input.rewind
|
501
|
-
|
502
|
-
answer = @terminal.ask("Question: ") do |q|
|
503
|
-
q.default = "string"
|
504
|
-
end
|
505
|
-
|
506
|
-
assert_equal "string", answer
|
507
|
-
assert_equal "Question: |string| ", @output.string
|
508
|
-
end
|
509
|
-
|
510
|
-
def test_default_with_Symbol
|
511
|
-
# With a Symbol, it should show up the String version
|
512
|
-
# at prompt, but return the Symbol as answer
|
513
|
-
|
514
|
-
@input << "\n"
|
515
|
-
@input.rewind
|
516
|
-
|
517
|
-
answer = @terminal.ask("Question: ") do |q|
|
518
|
-
q.default = :string
|
519
|
-
end
|
520
|
-
|
521
|
-
assert_equal :string, answer
|
522
|
-
assert_equal "Question: |string| ", @output.string
|
523
|
-
end
|
524
|
-
|
525
|
-
def test_default_with_non_String_objects
|
526
|
-
# With a non-string object, it should not show
|
527
|
-
# any 'default' at prompt line. And should
|
528
|
-
# return the "default" object, without conversion.
|
529
|
-
|
530
|
-
@input << "\n"
|
531
|
-
@input.rewind
|
532
|
-
|
533
|
-
default_non_string_object = Object.new
|
534
|
-
|
535
|
-
answer = @terminal.ask("Question: ") do |q|
|
536
|
-
q.default = default_non_string_object
|
537
|
-
end
|
538
|
-
|
539
|
-
assert_equal default_non_string_object, answer
|
540
|
-
assert_equal "Question: ", @output.string
|
541
|
-
end
|
542
|
-
|
543
|
-
def test_string_preservation
|
544
|
-
@input << "Maybe\nYes\n"
|
545
|
-
@input.rewind
|
546
|
-
|
547
|
-
my_string = "Is that your final answer? "
|
548
|
-
|
549
|
-
@terminal.ask(my_string) { |q| q.default = "Possibly" }
|
550
|
-
@terminal.ask(my_string) { |q| q.default = "Maybe" }
|
551
|
-
|
552
|
-
assert_equal("Is that your final answer? ", my_string)
|
553
|
-
end
|
554
|
-
|
555
|
-
def test_empty
|
556
|
-
@input << "\n"
|
557
|
-
@input.rewind
|
558
|
-
|
559
|
-
answer = @terminal.ask("") do |q|
|
560
|
-
q.default = "yes"
|
561
|
-
q.validate = /\Ay(?:es)?|no?\Z/i
|
562
|
-
end
|
563
|
-
assert_equal("yes", answer)
|
564
|
-
end
|
565
|
-
|
566
|
-
def test_erb
|
567
|
-
@terminal.say( "The integers from 1 to 10 are:\n" +
|
568
|
-
"% (1...10).each do |n|\n" +
|
569
|
-
"\t<%= n %>,\n" +
|
570
|
-
"% end\n" +
|
571
|
-
"\tand 10" )
|
572
|
-
assert_equal( "The integers from 1 to 10 are:\n" +
|
573
|
-
"\t1,\n\t2,\n\t3,\n\t4,\n\t5,\n" +
|
574
|
-
"\t6,\n\t7,\n\t8,\n\t9,\n\tand 10\n",
|
575
|
-
@output.string )
|
576
|
-
end
|
577
|
-
|
578
|
-
def test_files
|
579
|
-
@input << "#{File.basename(__FILE__)[0, 5]}\n"
|
580
|
-
@input.rewind
|
581
|
-
|
582
|
-
assert_equal "tc_hi\n",@input.read
|
583
|
-
@input.rewind
|
584
|
-
|
585
|
-
file = @terminal.ask("Select a file: ", File) do |q|
|
586
|
-
q.directory = File.expand_path(File.dirname(__FILE__))
|
587
|
-
q.glob = "*.rb"
|
588
|
-
end
|
589
|
-
assert_instance_of(File, file)
|
590
|
-
assert_equal("# encoding: utf-8\n", file.gets)
|
591
|
-
file.close
|
592
|
-
|
593
|
-
@input.rewind
|
594
|
-
|
595
|
-
pathname = @terminal.ask("Select a file: ", Pathname) do |q|
|
596
|
-
q.directory = File.expand_path(File.dirname(__FILE__))
|
597
|
-
q.glob = "*.rb"
|
598
|
-
end
|
599
|
-
assert_instance_of(Pathname, pathname)
|
600
|
-
assert_equal(File.size(__FILE__), pathname.size)
|
601
|
-
end
|
602
|
-
|
603
|
-
def test_gather
|
604
|
-
@input << "James\nDana\nStorm\nGypsy\n\n"
|
605
|
-
@input.rewind
|
606
|
-
|
607
|
-
answers = @terminal.ask("Enter four names:") do |q|
|
608
|
-
q.gather = 4
|
609
|
-
end
|
610
|
-
assert_equal(%w{James Dana Storm Gypsy}, answers)
|
611
|
-
assert_equal("\n", @input.gets)
|
612
|
-
assert_equal("Enter four names:\n", @output.string)
|
613
|
-
|
614
|
-
@input.rewind
|
615
|
-
|
616
|
-
answers = @terminal.ask("Enter four names:") do |q|
|
617
|
-
q.gather = ""
|
618
|
-
end
|
619
|
-
assert_equal(%w{James Dana Storm Gypsy}, answers)
|
620
|
-
|
621
|
-
@input.rewind
|
622
|
-
|
623
|
-
answers = @terminal.ask("Enter four names:") do |q|
|
624
|
-
q.gather = /^\s*$/
|
625
|
-
end
|
626
|
-
assert_equal(%w{James Dana Storm Gypsy}, answers)
|
627
|
-
|
628
|
-
@input.truncate(@input.rewind)
|
629
|
-
@input << "29\n49\n30\n"
|
630
|
-
@input.rewind
|
631
|
-
@output.truncate(@output.rewind)
|
632
|
-
|
633
|
-
answers = @terminal.ask("<%= @key %>: ", Integer) do |q|
|
634
|
-
q.gather = { "Age" => 0, "Wife's Age" => 0, "Father's Age" => 0}
|
635
|
-
end
|
636
|
-
assert_equal( { "Age" => 29, "Wife's Age" => 30, "Father's Age" => 49},
|
637
|
-
answers )
|
638
|
-
assert_equal("Age: Father's Age: Wife's Age: ", @output.string)
|
639
|
-
end
|
640
|
-
|
641
|
-
def test_typing_verification
|
642
|
-
@input << "all work and no play makes jack a dull boy\n" * 3
|
643
|
-
@input.rewind
|
644
|
-
|
645
|
-
answer = @terminal.ask("How's work? ") do |q|
|
646
|
-
q.gather = 3
|
647
|
-
q.verify_match = true
|
648
|
-
end
|
649
|
-
assert_equal("all work and no play makes jack a dull boy", answer)
|
650
|
-
|
651
|
-
@input.truncate(@input.rewind)
|
652
|
-
@input << "all play and no work makes jack a mere toy\n"
|
653
|
-
@input << "all work and no play makes jack a dull boy\n" * 5
|
654
|
-
@input.rewind
|
655
|
-
@output.truncate(@output.rewind)
|
656
|
-
|
657
|
-
answer = @terminal.ask("How are things going? ") do |q|
|
658
|
-
q.gather = 3
|
659
|
-
q.verify_match = true
|
660
|
-
q.responses[:mismatch] = 'Typing mismatch!'
|
661
|
-
q.responses[:ask_on_error] = ''
|
662
|
-
end
|
663
|
-
assert_equal("all work and no play makes jack a dull boy", answer)
|
664
|
-
|
665
|
-
# now try using a hash for gather
|
666
|
-
|
667
|
-
@input.truncate(@input.rewind)
|
668
|
-
@input << "Password\nPassword\n"
|
669
|
-
@input.rewind
|
670
|
-
@output.truncate(@output.rewind)
|
671
|
-
|
672
|
-
answer = @terminal.ask("<%= @key %>: ") do |q|
|
673
|
-
q.verify_match = true
|
674
|
-
q.gather = {"Enter a password" => '', "Please type it again" => ''}
|
675
|
-
end
|
676
|
-
assert_equal("Password", answer)
|
677
|
-
|
678
|
-
@input.truncate(@input.rewind)
|
679
|
-
@input << "Password\nMistake\nPassword\nPassword\n"
|
680
|
-
@input.rewind
|
681
|
-
@output.truncate(@output.rewind)
|
682
|
-
|
683
|
-
answer = @terminal.ask("<%= @key %>: ") do |q|
|
684
|
-
q.verify_match = true
|
685
|
-
q.responses[:mismatch] = 'Typing mismatch!'
|
686
|
-
q.responses[:ask_on_error] = ''
|
687
|
-
q.gather = {"Enter a password" => '', "Please type it again" => ''}
|
688
|
-
end
|
689
|
-
|
690
|
-
assert_equal("Password", answer)
|
691
|
-
assert_equal( "Enter a password: " +
|
692
|
-
"Please type it again: " +
|
693
|
-
"Typing mismatch!\n" +
|
694
|
-
"Enter a password: " +
|
695
|
-
"Please type it again: ", @output.string )
|
696
|
-
end
|
697
|
-
|
698
|
-
def test_lists
|
699
|
-
digits = %w{Zero One Two Three Four Five Six Seven Eight Nine}
|
700
|
-
erb_digits = digits.dup
|
701
|
-
erb_digits[erb_digits.index("Five")] = "<%= color('Five', :blue) %%>"
|
702
|
-
|
703
|
-
@terminal.say("<%= list(#{digits.inspect}) %>")
|
704
|
-
assert_equal(digits.map { |d| "#{d}\n" }.join, @output.string)
|
705
|
-
|
706
|
-
@output.truncate(@output.rewind)
|
707
|
-
|
708
|
-
@terminal.say("<%= list(#{digits.inspect}, :inline) %>")
|
709
|
-
assert_equal( digits[0..-2].join(", ") + " or #{digits.last}\n",
|
710
|
-
@output.string )
|
711
|
-
|
712
|
-
@output.truncate(@output.rewind)
|
713
|
-
|
714
|
-
@terminal.say("<%= list(#{digits.inspect}, :inline, ' and ') %>")
|
715
|
-
assert_equal( digits[0..-2].join(", ") + " and #{digits.last}\n",
|
716
|
-
@output.string )
|
717
|
-
|
718
|
-
@output.truncate(@output.rewind)
|
719
|
-
|
720
|
-
@terminal.say("<%= list(#{digits.inspect}, :columns_down, 3) %>")
|
721
|
-
assert_equal( "Zero Four Eight\n" +
|
722
|
-
"One Five Nine \n" +
|
723
|
-
"Two Six \n" +
|
724
|
-
"Three Seven\n",
|
725
|
-
@output.string )
|
726
|
-
|
727
|
-
@output.truncate(@output.rewind)
|
728
|
-
|
729
|
-
@terminal.say("<%= list(#{erb_digits.inspect}, :columns_down, 3) %>")
|
730
|
-
assert_equal( "Zero Four Eight\n" +
|
731
|
-
"One \e[34mFive\e[0m Nine \n" +
|
732
|
-
"Two Six \n" +
|
733
|
-
"Three Seven\n",
|
734
|
-
@output.string )
|
735
|
-
|
736
|
-
colums_of_twenty = ["12345678901234567890"] * 5
|
737
|
-
|
738
|
-
@output.truncate(@output.rewind)
|
739
|
-
|
740
|
-
@terminal.say("<%= list(#{colums_of_twenty.inspect}, :columns_down) %>")
|
741
|
-
assert_equal( "12345678901234567890 12345678901234567890 " +
|
742
|
-
"12345678901234567890\n" +
|
743
|
-
"12345678901234567890 12345678901234567890\n",
|
744
|
-
@output.string )
|
745
|
-
|
746
|
-
@output.truncate(@output.rewind)
|
747
|
-
|
748
|
-
@terminal.say("<%= list(#{digits.inspect}, :columns_across, 3) %>")
|
749
|
-
assert_equal( "Zero One Two \n" +
|
750
|
-
"Three Four Five \n" +
|
751
|
-
"Six Seven Eight\n" +
|
752
|
-
"Nine \n",
|
753
|
-
@output.string )
|
754
|
-
|
755
|
-
colums_of_twenty.pop
|
756
|
-
|
757
|
-
@output.truncate(@output.rewind)
|
758
|
-
|
759
|
-
@terminal.say("<%= list( #{colums_of_twenty.inspect}, :columns_across ) %>")
|
760
|
-
assert_equal( "12345678901234567890 12345678901234567890 " +
|
761
|
-
"12345678901234567890\n" +
|
762
|
-
"12345678901234567890\n",
|
763
|
-
@output.string )
|
764
|
-
|
765
|
-
@output.truncate(@output.rewind)
|
766
|
-
|
767
|
-
wide = %w[0123456789 a b c d e f g h i j k l m n o p q r s t u v w x y z]
|
768
|
-
|
769
|
-
@terminal.say("<%= list( #{wide.inspect}, :uneven_columns_across ) %>")
|
770
|
-
assert_equal( "0123456789 a b c d e f g h i j k l m n o " +
|
771
|
-
"p q r s t u v w\n" +
|
772
|
-
"x y z\n",
|
773
|
-
@output.string )
|
774
|
-
|
775
|
-
@output.truncate(@output.rewind)
|
776
|
-
|
777
|
-
@terminal.say("<%= list( #{wide.inspect}, :uneven_columns_across, 10 ) %>")
|
778
|
-
assert_equal( "0123456789 a b c d e f g h i\n" +
|
779
|
-
"j k l m n o p q r s\n" +
|
780
|
-
"t u v w x y z\n",
|
781
|
-
@output.string )
|
782
|
-
|
783
|
-
@output.truncate(@output.rewind)
|
784
|
-
|
785
|
-
@terminal.say("<%= list( #{wide.inspect}, :uneven_columns_down ) %>")
|
786
|
-
assert_equal( "0123456789 b d f h j l n p r t v x z\n" +
|
787
|
-
"a c e g i k m o q s u w y\n",
|
788
|
-
@output.string )
|
789
|
-
|
790
|
-
@output.truncate(@output.rewind)
|
791
|
-
|
792
|
-
@terminal.say("<%= list( #{wide.inspect}, :uneven_columns_down, 10 ) %>")
|
793
|
-
assert_equal( "0123456789 c f i l o r u x\n" +
|
794
|
-
"a d g j m p s v y\n" +
|
795
|
-
"b e h k n q t w z\n",
|
796
|
-
@output.string )
|
797
|
-
end
|
798
|
-
|
799
|
-
def test_lists_with_zero_items
|
800
|
-
modes = [nil, :rows, :inline, :columns_across, :columns_down]
|
801
|
-
modes.each do |mode|
|
802
|
-
result = @terminal.list([], mode)
|
803
|
-
assert_equal("", result)
|
804
|
-
end
|
805
|
-
end
|
806
|
-
|
807
|
-
def test_lists_with_nil_items
|
808
|
-
modes = [nil]
|
809
|
-
modes.each do |mode|
|
810
|
-
result = @terminal.list([nil], mode)
|
811
|
-
assert_equal("\n", result)
|
812
|
-
end
|
813
|
-
end
|
814
|
-
|
815
|
-
def test_lists_with_one_item
|
816
|
-
items = ['Zero']
|
817
|
-
modes = { nil => "Zero\n",
|
818
|
-
:rows => "Zero\n",
|
819
|
-
:inline => "Zero",
|
820
|
-
:columns_across => "Zero\n",
|
821
|
-
:columns_down => "Zero\n" }
|
822
|
-
|
823
|
-
modes.each do |mode, expected|
|
824
|
-
result = @terminal.list(items, mode)
|
825
|
-
assert_equal(expected, result)
|
826
|
-
end
|
827
|
-
end
|
828
|
-
|
829
|
-
def test_lists_with_two_items
|
830
|
-
items = ['Zero', 'One']
|
831
|
-
modes = { nil => "Zero\nOne\n",
|
832
|
-
:rows => "Zero\nOne\n",
|
833
|
-
:inline => "Zero or One",
|
834
|
-
:columns_across => "Zero One \n",
|
835
|
-
:columns_down => "Zero One \n" }
|
836
|
-
|
837
|
-
modes.each do |mode, expected|
|
838
|
-
result = @terminal.list(items, mode)
|
839
|
-
assert_equal(expected, result)
|
840
|
-
end
|
841
|
-
end
|
842
|
-
|
843
|
-
def test_lists_with_three_items
|
844
|
-
items = ['Zero', 'One', 'Two']
|
845
|
-
modes = { nil => "Zero\nOne\nTwo\n",
|
846
|
-
:rows => "Zero\nOne\nTwo\n",
|
847
|
-
:inline => "Zero, One or Two",
|
848
|
-
:columns_across => "Zero One Two \n",
|
849
|
-
:columns_down => "Zero One Two \n" }
|
850
|
-
|
851
|
-
modes.each do |mode, expected|
|
852
|
-
result = @terminal.list(items, mode)
|
853
|
-
assert_equal(expected, result)
|
854
|
-
end
|
855
|
-
end
|
856
|
-
|
857
|
-
def test_mode
|
858
|
-
assert(%w[Win32API termios ncurses stty jline].include?(HighLine::CHARACTER_MODE),
|
859
|
-
"#{HighLine::CHARACTER_MODE} not in list")
|
860
|
-
end
|
861
|
-
|
862
|
-
class NameClass
|
863
|
-
def self.parse( string )
|
864
|
-
if string =~ /^\s*(\w+),\s*(\w+)\s+(\w+)\s*$/
|
865
|
-
self.new($2, $3, $1)
|
866
|
-
else
|
867
|
-
raise ArgumentError, "Invalid name format."
|
868
|
-
end
|
869
|
-
end
|
870
|
-
|
871
|
-
def initialize(first, middle, last)
|
872
|
-
@first, @middle, @last = first, middle, last
|
873
|
-
end
|
874
|
-
|
875
|
-
attr_reader :first, :middle, :last
|
876
|
-
end
|
877
|
-
|
878
|
-
def test_my_class_conversion
|
879
|
-
@input << "Gray, James Edward\n"
|
880
|
-
@input.rewind
|
881
|
-
|
882
|
-
answer = @terminal.ask("Your name? ", NameClass) do |q|
|
883
|
-
q.validate = lambda do |name|
|
884
|
-
names = name.split(/,\s*/)
|
885
|
-
return false unless names.size == 2
|
886
|
-
return false if names.first =~ /\s/
|
887
|
-
names.last.split.size == 2
|
888
|
-
end
|
889
|
-
end
|
890
|
-
assert_instance_of(NameClass, answer)
|
891
|
-
assert_equal("Gray", answer.last)
|
892
|
-
assert_equal("James", answer.first)
|
893
|
-
assert_equal("Edward", answer.middle)
|
894
|
-
end
|
895
|
-
|
896
|
-
def test_no_echo
|
897
|
-
@input << "password\r"
|
898
|
-
@input.rewind
|
899
|
-
|
900
|
-
answer = @terminal.ask("Please enter your password: ") do |q|
|
901
|
-
q.echo = false
|
902
|
-
end
|
903
|
-
assert_equal("password", answer)
|
904
|
-
assert_equal("Please enter your password: \n", @output.string)
|
905
|
-
|
906
|
-
@input.rewind
|
907
|
-
@output.truncate(@output.rewind)
|
908
|
-
|
909
|
-
answer = @terminal.ask("Pick a letter or number: ") do |q|
|
910
|
-
q.character = true
|
911
|
-
q.echo = false
|
912
|
-
end
|
913
|
-
assert_equal("p", answer)
|
914
|
-
assert_equal("a", @input.getc.chr)
|
915
|
-
assert_equal("Pick a letter or number: \n", @output.string)
|
916
|
-
end
|
917
|
-
|
918
|
-
def test_correct_string_encoding_when_echo_false
|
919
|
-
@input << "ação\r" # An UTF-8 portuguese word for 'action'
|
920
|
-
@input.rewind
|
921
|
-
|
922
|
-
answer = @terminal.ask("Please enter your password: ") do |q|
|
923
|
-
q.echo = false
|
924
|
-
end
|
925
|
-
|
926
|
-
assert_equal "ação", answer
|
927
|
-
assert_equal Encoding::default_external, answer.encoding
|
928
|
-
end
|
929
|
-
|
930
|
-
def test_backspace_with_ascii_when_echo_false
|
931
|
-
@input << "password\b\r"
|
932
|
-
@input.rewind
|
933
|
-
|
934
|
-
answer = @terminal.ask("Please enter your password: ") do |q|
|
935
|
-
q.echo = false
|
936
|
-
end
|
937
|
-
|
938
|
-
assert_not_equal("password", answer)
|
939
|
-
assert_equal("passwor", answer)
|
940
|
-
end
|
941
|
-
|
942
|
-
def test_backspace_with_utf8_when_echo_false
|
943
|
-
@input << "maçã\b\r"
|
944
|
-
@input.rewind
|
945
|
-
|
946
|
-
answer = @terminal.ask("Please enter your password: ") do |q|
|
947
|
-
q.echo = false
|
948
|
-
end
|
949
|
-
|
950
|
-
assert_not_equal("maçã", answer)
|
951
|
-
assert_equal("maç", answer)
|
952
|
-
end
|
953
|
-
|
954
|
-
def test_echoing_with_utf8_when_echo_is_star
|
955
|
-
@input << "maçã\r"
|
956
|
-
@input.rewind
|
957
|
-
|
958
|
-
answer = @terminal.ask("Type: ") do |q|
|
959
|
-
q.echo = "*"
|
960
|
-
end
|
961
|
-
|
962
|
-
assert_equal("Type: ****\n", @output.string)
|
963
|
-
assert_equal("maçã", answer)
|
964
|
-
end
|
965
|
-
|
966
|
-
def test_paging
|
967
|
-
@terminal.page_at = 22
|
968
|
-
|
969
|
-
@input << "\n\n"
|
970
|
-
@input.rewind
|
971
|
-
|
972
|
-
@terminal.say((1..50).map { |n| "This is line #{n}.\n"}.join)
|
973
|
-
assert_equal( (1..22).map { |n| "This is line #{n}.\n"}.join +
|
974
|
-
"\n-- press enter/return to continue or q to stop -- \n\n" +
|
975
|
-
(23..44).map { |n| "This is line #{n}.\n"}.join +
|
976
|
-
"\n-- press enter/return to continue or q to stop -- \n\n" +
|
977
|
-
(45..50).map { |n| "This is line #{n}.\n"}.join,
|
978
|
-
@output.string )
|
979
|
-
end
|
980
|
-
|
981
|
-
def test_statement_lines_count_equal_to_page_at_shouldnt_paginate
|
982
|
-
@terminal.page_at = 6
|
983
|
-
|
984
|
-
@input << "\n"
|
985
|
-
@input.rewind
|
986
|
-
|
987
|
-
list = "a\nb\nc\nd\ne\nf\n"
|
988
|
-
|
989
|
-
@terminal.say(list)
|
990
|
-
assert_equal(list, @output.string)
|
991
|
-
end
|
992
|
-
|
993
|
-
def test_statement_with_one_line_bigger_than_page_at_should_paginate
|
994
|
-
@terminal.page_at = 6
|
995
|
-
|
996
|
-
@input << "\n"
|
997
|
-
@input.rewind
|
998
|
-
|
999
|
-
list = "a\nb\nc\nd\ne\nf\ng\n"
|
1000
|
-
|
1001
|
-
paginated =
|
1002
|
-
"a\nb\nc\nd\ne\nf\n" \
|
1003
|
-
"\n-- press enter/return to continue or q to stop -- \n\n" \
|
1004
|
-
"g\n"
|
1005
|
-
|
1006
|
-
@terminal.say(list)
|
1007
|
-
assert_equal(paginated, @output.string)
|
1008
|
-
end
|
1009
|
-
|
1010
|
-
def test_quiting_paging_shouldnt_raise
|
1011
|
-
# See https://github.com/JEG2/highline/issues/168
|
1012
|
-
|
1013
|
-
@terminal.page_at = 6
|
1014
|
-
|
1015
|
-
@input << "q"
|
1016
|
-
@input.rewind
|
1017
|
-
|
1018
|
-
list = "a\nb\nc\nd\ne\nf\n"
|
1019
|
-
|
1020
|
-
assert_nothing_raised { @terminal.say(list) }
|
1021
|
-
end
|
1022
|
-
|
1023
|
-
def test_range_requirements
|
1024
|
-
@input << "112\n-541\n28\n"
|
1025
|
-
@input.rewind
|
1026
|
-
|
1027
|
-
answer = @terminal.ask("Tell me your age.", Integer) do |q|
|
1028
|
-
q.in = 0..105
|
1029
|
-
end
|
1030
|
-
assert_equal(28, answer)
|
1031
|
-
assert_equal( "Tell me your age.\n" +
|
1032
|
-
"Your answer isn't within the expected range " +
|
1033
|
-
"(included in 0..105).\n" +
|
1034
|
-
"? " +
|
1035
|
-
"Your answer isn't within the expected range " +
|
1036
|
-
"(included in 0..105).\n" +
|
1037
|
-
"? ", @output.string )
|
1038
|
-
|
1039
|
-
@input.truncate(@input.rewind)
|
1040
|
-
@input << "1\n-541\n28\n"
|
1041
|
-
@input.rewind
|
1042
|
-
@output.truncate(@output.rewind)
|
1043
|
-
|
1044
|
-
answer = @terminal.ask("Tell me your age.", Integer) do |q|
|
1045
|
-
q.above = 3
|
1046
|
-
end
|
1047
|
-
assert_equal(28, answer)
|
1048
|
-
assert_equal( "Tell me your age.\n" +
|
1049
|
-
"Your answer isn't within the expected range " +
|
1050
|
-
"(above 3).\n" +
|
1051
|
-
"? " +
|
1052
|
-
"Your answer isn't within the expected range " +
|
1053
|
-
"(above 3).\n" +
|
1054
|
-
"? ", @output.string )
|
1055
|
-
|
1056
|
-
@input.truncate(@input.rewind)
|
1057
|
-
@input << "1\n28\n-541\n"
|
1058
|
-
@input.rewind
|
1059
|
-
@output.truncate(@output.rewind)
|
1060
|
-
|
1061
|
-
answer = @terminal.ask("Lowest numer you can think of?", Integer) do |q|
|
1062
|
-
q.below = 0
|
1063
|
-
end
|
1064
|
-
assert_equal(-541, answer)
|
1065
|
-
assert_equal( "Lowest numer you can think of?\n" +
|
1066
|
-
"Your answer isn't within the expected range " +
|
1067
|
-
"(below 0).\n" +
|
1068
|
-
"? " +
|
1069
|
-
"Your answer isn't within the expected range " +
|
1070
|
-
"(below 0).\n" +
|
1071
|
-
"? ", @output.string )
|
1072
|
-
|
1073
|
-
@input.truncate(@input.rewind)
|
1074
|
-
@input << "1\n-541\n6\n"
|
1075
|
-
@input.rewind
|
1076
|
-
@output.truncate(@output.rewind)
|
1077
|
-
|
1078
|
-
answer = @terminal.ask("Enter a low even number: ", Integer) do |q|
|
1079
|
-
q.above = 0
|
1080
|
-
q.below = 10
|
1081
|
-
q.in = [2, 4, 6, 8]
|
1082
|
-
end
|
1083
|
-
assert_equal(6, answer)
|
1084
|
-
assert_equal( "Enter a low even number: " +
|
1085
|
-
"Your answer isn't within the expected range " +
|
1086
|
-
"(above 0, below 10, and included in [2, 4, 6, 8]).\n" +
|
1087
|
-
"? " +
|
1088
|
-
"Your answer isn't within the expected range " +
|
1089
|
-
"(above 0, below 10, and included in [2, 4, 6, 8]).\n" +
|
1090
|
-
"? ", @output.string )
|
1091
|
-
end
|
1092
|
-
|
1093
|
-
def test_reask
|
1094
|
-
number = 61676
|
1095
|
-
@input << "Junk!\n" << number << "\n"
|
1096
|
-
@input.rewind
|
1097
|
-
|
1098
|
-
answer = @terminal.ask("Favorite number? ", Integer)
|
1099
|
-
assert_kind_of(Integer, number)
|
1100
|
-
assert_instance_of(Fixnum, number)
|
1101
|
-
assert_equal(number, answer)
|
1102
|
-
assert_equal( "Favorite number? " +
|
1103
|
-
"You must enter a valid Integer.\n" +
|
1104
|
-
"? ", @output.string )
|
1105
|
-
|
1106
|
-
@input.rewind
|
1107
|
-
@output.truncate(@output.rewind)
|
1108
|
-
|
1109
|
-
answer = @terminal.ask("Favorite number? ", Integer) do |q|
|
1110
|
-
q.responses[:ask_on_error] = :question
|
1111
|
-
q.responses[:invalid_type] = "Not a valid number!"
|
1112
|
-
end
|
1113
|
-
assert_kind_of(Integer, number)
|
1114
|
-
assert_instance_of(Fixnum, number)
|
1115
|
-
assert_equal(number, answer)
|
1116
|
-
assert_equal( "Favorite number? " +
|
1117
|
-
"Not a valid number!\n" +
|
1118
|
-
"Favorite number? ", @output.string )
|
1119
|
-
|
1120
|
-
@input.truncate(@input.rewind)
|
1121
|
-
@input << "gen\ngene\n"
|
1122
|
-
@input.rewind
|
1123
|
-
@output.truncate(@output.rewind)
|
1124
|
-
|
1125
|
-
answer = @terminal.ask("Select a mode: ", [:generate, :gentle])
|
1126
|
-
assert_instance_of(Symbol, answer)
|
1127
|
-
assert_equal(:generate, answer)
|
1128
|
-
assert_equal( "Select a mode: " +
|
1129
|
-
"Ambiguous choice. " +
|
1130
|
-
"Please choose one of [generate, gentle].\n" +
|
1131
|
-
"? ", @output.string )
|
1132
|
-
end
|
1133
|
-
|
1134
|
-
def test_response_embedding
|
1135
|
-
@input << "112\n-541\n28\n"
|
1136
|
-
@input.rewind
|
1137
|
-
|
1138
|
-
answer = @terminal.ask("Tell me your age.", Integer) do |q|
|
1139
|
-
q.in = 0..105
|
1140
|
-
q.responses[:not_in_range] = "Need a <%= @question.answer_type %>" +
|
1141
|
-
" <%= @question.expected_range %>."
|
1142
|
-
end
|
1143
|
-
assert_equal(28, answer)
|
1144
|
-
assert_equal( "Tell me your age.\n" +
|
1145
|
-
"Need a Integer included in 0..105.\n" +
|
1146
|
-
"? " +
|
1147
|
-
"Need a Integer included in 0..105.\n" +
|
1148
|
-
"? ", @output.string )
|
1149
|
-
end
|
1150
|
-
|
1151
|
-
def test_say
|
1152
|
-
@terminal.say("This will have a newline.")
|
1153
|
-
assert_equal("This will have a newline.\n", @output.string)
|
1154
|
-
|
1155
|
-
@output.truncate(@output.rewind)
|
1156
|
-
|
1157
|
-
@terminal.say("This will also have one newline.\n")
|
1158
|
-
assert_equal("This will also have one newline.\n", @output.string)
|
1159
|
-
|
1160
|
-
@output.truncate(@output.rewind)
|
1161
|
-
|
1162
|
-
@terminal.say("This will not have a newline. ")
|
1163
|
-
assert_equal("This will not have a newline. ", @output.string)
|
1164
|
-
|
1165
|
-
@output.truncate(@output.rewind)
|
1166
|
-
|
1167
|
-
@terminal.say("This will not\n end with a newline. ")
|
1168
|
-
assert_equal("This will not\n end with a newline. ", @output.string)
|
1169
|
-
|
1170
|
-
@output.truncate(@output.rewind)
|
1171
|
-
|
1172
|
-
@terminal.say("This will \nend with a newline.")
|
1173
|
-
assert_equal("This will \nend with a newline.\n", @output.string)
|
1174
|
-
|
1175
|
-
@output.truncate(@output.rewind)
|
1176
|
-
|
1177
|
-
colorized = @terminal.color("This will not have a newline. ", :green)
|
1178
|
-
@terminal.say(colorized)
|
1179
|
-
assert_equal("\e[32mThis will not have a newline. \e[0m", @output.string)
|
1180
|
-
|
1181
|
-
@output.truncate(@output.rewind)
|
1182
|
-
|
1183
|
-
colorized = @terminal.color("This will have a newline.", :green)
|
1184
|
-
@terminal.say(colorized)
|
1185
|
-
assert_equal("\e[32mThis will have a newline.\e[0m\n", @output.string)
|
1186
|
-
|
1187
|
-
@output.truncate(@output.rewind)
|
1188
|
-
|
1189
|
-
assert_nothing_raised { @terminal.say(nil) }
|
1190
|
-
assert_equal("", @output.string)
|
1191
|
-
end
|
1192
|
-
|
1193
|
-
def test_say_handles_non_string_argument
|
1194
|
-
integer = 10
|
1195
|
-
hash = { :a => 20 }
|
1196
|
-
|
1197
|
-
assert_nothing_raised { @terminal.say(integer) }
|
1198
|
-
assert_equal String(integer), @output.string.chomp
|
1199
|
-
|
1200
|
-
@output.truncate(@output.rewind)
|
1201
|
-
|
1202
|
-
assert_nothing_raised { @terminal.say(hash) }
|
1203
|
-
assert_equal String(hash), @output.string.chomp
|
1204
|
-
end
|
1205
|
-
|
1206
|
-
def test_terminal_size
|
1207
|
-
assert_instance_of(Fixnum, @terminal.terminal_size[0])
|
1208
|
-
assert_instance_of(Fixnum, @terminal.terminal_size[1])
|
1209
|
-
end
|
1210
|
-
|
1211
|
-
def test_type_conversion
|
1212
|
-
number = 61676
|
1213
|
-
@input << number << "\n"
|
1214
|
-
@input.rewind
|
1215
|
-
|
1216
|
-
answer = @terminal.ask("Favorite number? ", Integer)
|
1217
|
-
assert_kind_of(Integer, answer)
|
1218
|
-
assert_instance_of(Fixnum, answer)
|
1219
|
-
assert_equal(number, answer)
|
1220
|
-
|
1221
|
-
@input.truncate(@input.rewind)
|
1222
|
-
number = 1_000_000_000_000_000_000_000_000_000_000
|
1223
|
-
@input << number << "\n"
|
1224
|
-
@input.rewind
|
1225
|
-
|
1226
|
-
answer = @terminal.ask("Favorite number? ", Integer)
|
1227
|
-
assert_kind_of(Integer, answer)
|
1228
|
-
assert_instance_of(Bignum, answer)
|
1229
|
-
assert_equal(number, answer)
|
1230
|
-
|
1231
|
-
@input.truncate(@input.rewind)
|
1232
|
-
number = 10.5002
|
1233
|
-
@input << number << "\n"
|
1234
|
-
@input.rewind
|
1235
|
-
|
1236
|
-
answer = @terminal.ask( "Favorite number? ",
|
1237
|
-
lambda { |n| n.to_f.abs.round } )
|
1238
|
-
assert_kind_of(Integer, answer)
|
1239
|
-
assert_instance_of(Fixnum, answer)
|
1240
|
-
assert_equal(11, answer)
|
1241
|
-
|
1242
|
-
@input.truncate(@input.rewind)
|
1243
|
-
animal = :dog
|
1244
|
-
@input << animal << "\n"
|
1245
|
-
@input.rewind
|
1246
|
-
|
1247
|
-
answer = @terminal.ask("Favorite animal? ", Symbol)
|
1248
|
-
assert_instance_of(Symbol, answer)
|
1249
|
-
assert_equal(animal, answer)
|
1250
|
-
|
1251
|
-
@input.truncate(@input.rewind)
|
1252
|
-
@input << "16th June 1976\n"
|
1253
|
-
@input.rewind
|
1254
|
-
|
1255
|
-
answer = @terminal.ask("Enter your birthday.", Date)
|
1256
|
-
assert_instance_of(Date, answer)
|
1257
|
-
assert_equal(16, answer.day)
|
1258
|
-
assert_equal(6, answer.month)
|
1259
|
-
assert_equal(1976, answer.year)
|
1260
|
-
|
1261
|
-
@input.truncate(@input.rewind)
|
1262
|
-
pattern = "^yes|no$"
|
1263
|
-
@input << pattern << "\n"
|
1264
|
-
@input.rewind
|
1265
|
-
|
1266
|
-
answer = @terminal.ask("Give me a pattern to match with: ", Regexp)
|
1267
|
-
assert_instance_of(Regexp, answer)
|
1268
|
-
assert_equal(/#{pattern}/, answer)
|
1269
|
-
|
1270
|
-
@input.truncate(@input.rewind)
|
1271
|
-
@input << "gen\n"
|
1272
|
-
@input.rewind
|
1273
|
-
|
1274
|
-
answer = @terminal.ask("Select a mode: ", [:generate, :run])
|
1275
|
-
assert_instance_of(Symbol, answer)
|
1276
|
-
assert_equal(:generate, answer)
|
1277
|
-
end
|
1278
|
-
|
1279
|
-
def test_validation
|
1280
|
-
@input << "system 'rm -rf /'\n105\n0b101_001\n"
|
1281
|
-
@input.rewind
|
1282
|
-
|
1283
|
-
answer = @terminal.ask("Enter a binary number: ") do |q|
|
1284
|
-
q.validate = /\A(?:0b)?[01_]+\Z/
|
1285
|
-
end
|
1286
|
-
assert_equal("0b101_001", answer)
|
1287
|
-
assert_equal( "Enter a binary number: " +
|
1288
|
-
"Your answer isn't valid " +
|
1289
|
-
"(must match /\\A(?:0b)?[01_]+\\Z/).\n" +
|
1290
|
-
"? " +
|
1291
|
-
"Your answer isn't valid " +
|
1292
|
-
"(must match /\\A(?:0b)?[01_]+\\Z/).\n" +
|
1293
|
-
"? ", @output.string )
|
1294
|
-
|
1295
|
-
@input.truncate(@input.rewind)
|
1296
|
-
@input << "Gray II, James Edward\n" +
|
1297
|
-
"Gray, Dana Ann Leslie\n" +
|
1298
|
-
"Gray, James Edward\n"
|
1299
|
-
@input.rewind
|
1300
|
-
|
1301
|
-
answer = @terminal.ask("Your name? ") do |q|
|
1302
|
-
q.validate = lambda do |name|
|
1303
|
-
names = name.split(/,\s*/)
|
1304
|
-
return false unless names.size == 2
|
1305
|
-
return false if names.first =~ /\s/
|
1306
|
-
names.last.split.size == 2
|
1307
|
-
end
|
1308
|
-
end
|
1309
|
-
assert_equal("Gray, James Edward", answer)
|
1310
|
-
end
|
1311
|
-
|
1312
|
-
def test_whitespace
|
1313
|
-
@input << " A lot\tof \t space\t \there! \n"
|
1314
|
-
@input.rewind
|
1315
|
-
|
1316
|
-
answer = @terminal.ask("Enter a whitespace filled string: ") do |q|
|
1317
|
-
q.whitespace = :chomp
|
1318
|
-
end
|
1319
|
-
assert_equal(" A lot\tof \t space\t \there! ", answer)
|
1320
|
-
|
1321
|
-
@input.rewind
|
1322
|
-
|
1323
|
-
answer = @terminal.ask("Enter a whitespace filled string: ")
|
1324
|
-
assert_equal("A lot\tof \t space\t \there!", answer)
|
1325
|
-
|
1326
|
-
@input.rewind
|
1327
|
-
|
1328
|
-
answer = @terminal.ask("Enter a whitespace filled string: ") do |q|
|
1329
|
-
q.whitespace = :strip_and_collapse
|
1330
|
-
end
|
1331
|
-
assert_equal("A lot of space here!", answer)
|
1332
|
-
|
1333
|
-
@input.rewind
|
1334
|
-
|
1335
|
-
answer = @terminal.ask("Enter a whitespace filled string: ") do |q|
|
1336
|
-
q.whitespace = :remove
|
1337
|
-
end
|
1338
|
-
assert_equal("Alotofspacehere!", answer)
|
1339
|
-
|
1340
|
-
@input.rewind
|
1341
|
-
|
1342
|
-
answer = @terminal.ask("Enter a whitespace filled string: ") do |q|
|
1343
|
-
q.whitespace = :none
|
1344
|
-
end
|
1345
|
-
assert_equal(" A lot\tof \t space\t \there! \n", answer)
|
1346
|
-
end
|
1347
|
-
|
1348
|
-
def test_wrap
|
1349
|
-
@terminal.wrap_at = 80
|
1350
|
-
|
1351
|
-
@terminal.say("This is a very short line.")
|
1352
|
-
assert_equal("This is a very short line.\n", @output.string)
|
1353
|
-
|
1354
|
-
@output.truncate(@output.rewind)
|
1355
|
-
|
1356
|
-
@terminal.say( "This is a long flowing paragraph meant to span " +
|
1357
|
-
"several lines. This text should definitely be " +
|
1358
|
-
"wrapped at the set limit, in the result. Your code " +
|
1359
|
-
"does well with things like this.\n\n" +
|
1360
|
-
" * This is a simple embedded list.\n" +
|
1361
|
-
" * You're code should not mess with this...\n" +
|
1362
|
-
" * Because it's already formatted correctly and " +
|
1363
|
-
"does not\n" +
|
1364
|
-
" exceed the limit!" )
|
1365
|
-
assert_equal( "This is a long flowing paragraph meant to span " +
|
1366
|
-
"several lines. This text should\n" +
|
1367
|
-
"definitely be wrapped at the set limit, in the " +
|
1368
|
-
"result. Your code does well with\n" +
|
1369
|
-
"things like this.\n\n" +
|
1370
|
-
" * This is a simple embedded list.\n" +
|
1371
|
-
" * You're code should not mess with this...\n" +
|
1372
|
-
" * Because it's already formatted correctly and does " +
|
1373
|
-
"not\n" +
|
1374
|
-
" exceed the limit!\n", @output.string )
|
1375
|
-
|
1376
|
-
@output.truncate(@output.rewind)
|
1377
|
-
|
1378
|
-
@terminal.say("-=" * 50)
|
1379
|
-
assert_equal(("-=" * 40 + "\n") + ("-=" * 10 + "\n"), @output.string)
|
1380
|
-
end
|
1381
|
-
|
1382
|
-
def test_track_eof
|
1383
|
-
assert_raise(EOFError) { @terminal.ask("Any input left? ") }
|
1384
|
-
|
1385
|
-
# turn EOF tracking
|
1386
|
-
old_setting = HighLine.track_eof?
|
1387
|
-
assert_nothing_raised(Exception) { HighLine.track_eof = false }
|
1388
|
-
begin
|
1389
|
-
@terminal.ask("And now? ") # this will still blow up, nothing available
|
1390
|
-
rescue
|
1391
|
-
assert_not_equal(EOFError, $!.class) # but HighLine's safe guards are off
|
1392
|
-
end
|
1393
|
-
HighLine.track_eof = old_setting
|
1394
|
-
end
|
1395
|
-
|
1396
|
-
def test_version
|
1397
|
-
assert_not_nil(HighLine::VERSION)
|
1398
|
-
assert_instance_of(String, HighLine::VERSION)
|
1399
|
-
assert(HighLine::VERSION.frozen?)
|
1400
|
-
assert_match(/\A\d+\.\d+\.\d+\Z/, HighLine::VERSION)
|
1401
|
-
end
|
1402
|
-
end
|