hirohig_palindrome 0.1.0
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 +7 -0
- data/.DS_Store +0 -0
- data/.gitignore +8 -0
- data/.travis.yml +6 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +30 -0
- data/README.md +36 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/hirohig_palindrome.gemspec +33 -0
- data/lib/hirohig_palindrome/version.rb +3 -0
- data/lib/hirohig_palindrome.rb +17 -0
- data/vendor/.DS_Store +0 -0
- data/vendor/bundle/.DS_Store +0 -0
- data/vendor/bundle/ruby/.DS_Store +0 -0
- data/vendor/bundle/ruby/2.6.0/.DS_Store +0 -0
- data/vendor/bundle/ruby/2.6.0/bin/rake +27 -0
- data/vendor/bundle/ruby/2.6.0/cache/ansi-1.5.0.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/cache/builder-3.2.4.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/cache/minitest-5.14.0.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/cache/minitest-reporters-1.2.0.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/cache/rake-12.3.3.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/cache/ruby-progressbar-1.10.1.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/.DS_Store +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/.index +77 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/.yardopts +8 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/DEMO.md +451 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/HISTORY.md +217 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/LICENSE.txt +23 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/NOTICE.md +170 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/README.md +91 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/01_ansicode.md +65 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/02_core.md +11 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/03_logger.md +30 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/04_progressbar.md +62 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/05_mixin.md +37 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/06_string.md +56 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/07_columns.md +89 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/08_table.md +28 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/09_diff.md +47 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/10_bbcode.md +24 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/11_terminal.md +8 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/applique/ae.rb +1 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/applique/output.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/bbcode.rb +334 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/chain.rb +50 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/chart.rb +100 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/code.rb +349 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/columns.rb +197 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/constants.rb +25 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/core.rb +30 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/diff.rb +215 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/hexdump.rb +122 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/logger.rb +211 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/mixin.rb +121 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/progressbar.rb +292 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/string.rb +254 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/table.rb +179 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal/curses.rb +26 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal/stty.rb +62 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal/termios.rb +68 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal/win32.rb +107 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal.rb +44 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/version.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi.rb +22 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi.yml +77 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/case_ansicode.rb +43 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/case_bbcode.rb +35 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/case_mixin.rb +35 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/case_progressbar.rb +21 -0
- data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/test_helper.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/CHANGES +119 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/MIT-LICENSE +20 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/README.md +258 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/Rakefile +194 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/builder.blurb +27 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/builder.gemspec +45 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/doc/jamis.rb +592 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/doc/releases/builder-1.2.4.rdoc +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/doc/releases/builder-2.0.0.rdoc +46 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/doc/releases/builder-2.1.1.rdoc +58 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/blankslate.rb +138 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/blankslate.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/version.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/xchar.rb +198 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/xmlbase.rb +200 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/xmlevents.rb +64 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/xmlmarkup.rb +345 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/rakelib/publish.rake +21 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/rakelib/tags.rake +63 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/rakelib/testing.rake +8 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/helper.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/performance.rb +42 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/preload.rb +40 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_blankslate.rb +208 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_eventbuilder.rb +151 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_markupbuilder.rb +617 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_method_caching.rb +63 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_namecollision.rb +40 -0
- data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_xchar.rb +85 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/.autotest +34 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/History.rdoc +1380 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/Manifest.txt +27 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/README.rdoc +764 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/Rakefile +72 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/design_rationale.rb +52 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/hoe/minitest.rb +32 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/assertions.rb +807 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/autorun.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/benchmark.rb +455 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/expectations.rb +303 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/hell.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/mock.rb +240 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/parallel.rb +70 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/pride.rb +4 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/pride_plugin.rb +142 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/spec.rb +342 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/test.rb +220 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/unit.rb +45 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest.rb +1053 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/metametameta.rb +117 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_assertions.rb +1567 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_benchmark.rb +137 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_mock.rb +872 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_reporter.rb +299 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_spec.rb +1041 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_test.rb +1080 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/.gitignore +27 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/.ruby-gemset +1 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/.travis.yml +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/.yardopts +6 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/CHANGELOG.md +40 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/Gemfile +2 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/LICENSE +20 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/README.md +115 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/Rakefile +60 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/assets/default-reporter.png +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/assets/mean_time_reporter.png +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/assets/progress-reporter.png +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/assets/spec-reporter.png +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/extensible_backtrace_filter.rb +67 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/minitest_reporter_plugin.rb +75 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/old_activesupport_fix.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/relative_position.rb +26 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/ansi.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/base_reporter.rb +117 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/default_reporter.rb +228 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/html_reporter.rb +221 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/junit_reporter.rb +157 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/mean_time_reporter.rb +392 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/progress_reporter.rb +96 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/ruby_mate_reporter.rb +54 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/rubymine_reporter.rb +117 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/spec_reporter.rb +61 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/version.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters.rb +89 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/templates/index.html.erb +83 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/minitest-reporters.gemspec +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/junit_filename_bug_example_test.rb +21 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/mean_time_test.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/progress_detailed_skip_test.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/progress_test.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/sample_test.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/spec_test.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/gallery/bad_test.rb +25 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/gallery/good_test.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/integration/reporters/junit_reporter_test.rb +12 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/integration/reporters/mean_time_reporter_test.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/integration/reporters/progress_reporter_test.rb +34 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/test_helper.rb +22 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/extensible_backtrace_filter_test.rb +42 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/mean_time_reporter_unit_test.rb +152 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/minitest_reporter_plugin_test.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/reporters_test.rb +52 -0
- data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/spec_reporter_test.rb +41 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/CONTRIBUTING.rdoc +43 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/Gemfile +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/History.rdoc +2344 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/README.rdoc +156 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/Rakefile +41 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/azure-pipelines.yml +11 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/bundle +105 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/console +7 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/rake +29 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/rdoc +29 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/rubocop +29 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/setup +6 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/command_line_usage.rdoc +158 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/Rakefile1 +38 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/Rakefile2 +35 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/a.c +6 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/b.c +6 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/main.c +11 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/glossary.rdoc +42 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/jamis.rb +592 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/proto_rake.rdoc +127 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/rake.1 +156 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/rakefile.rdoc +622 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/rational.rdoc +151 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/exe/rake +27 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/application.rb +824 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/backtrace.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/clean.rb +78 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/cloneable.rb +17 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb +107 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/default_loader.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb +195 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/early_time.rb +22 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/ext/core.rb +26 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/ext/string.rb +176 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb +25 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_list.rb +435 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_task.rb +54 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_utils.rb +137 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb +145 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb +57 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb +17 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/late_time.rb +18 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/linked_list.rb +112 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb +54 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/multi_task.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/packagetask.rb +207 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/phony.rb +16 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/private_reader.rb +21 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/promise.rb +100 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb +30 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/rake_module.rb +67 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb +27 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/scope.rb +43 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task.rb +413 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task_arguments.rb +109 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task_manager.rb +324 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/tasklib.rb +12 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/testtask.rb +224 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb +49 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/thread_pool.rb +163 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/trace_output.rb +23 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/version.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/win32.rb +51 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake.rb +71 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/rake.gemspec +42 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/LICENSE.txt +19 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/README.md +38 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/Rakefile +2 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/base.rb +183 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/calculators/length.rb +100 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/calculators/running_average.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/bar.rb +102 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/percentage.rb +29 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/rate.rb +43 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/time.rb +107 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/title.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/errors/invalid_progress_error.rb +4 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format/formatter.rb +27 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format/molecule.rb +60 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format/string.rb +36 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/output.rb +68 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/outputs/non_tty.rb +47 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/outputs/null.rb +33 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/outputs/tty.rb +32 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/progress.rb +118 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/refinements/enumerator.rb +23 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/refinements.rb +1 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/throttle.rb +25 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/time.rb +32 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/timer.rb +72 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/version.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar.rb +22 -0
- data/vendor/bundle/ruby/2.6.0/specifications/ansi-1.5.0.gemspec +49 -0
- data/vendor/bundle/ruby/2.6.0/specifications/builder-3.2.4.gemspec +23 -0
- data/vendor/bundle/ruby/2.6.0/specifications/minitest-5.14.0.gemspec +41 -0
- data/vendor/bundle/ruby/2.6.0/specifications/minitest-reporters-1.2.0.gemspec +48 -0
- data/vendor/bundle/ruby/2.6.0/specifications/rake-12.3.3.gemspec +49 -0
- data/vendor/bundle/ruby/2.6.0/specifications/ruby-progressbar-1.10.1.gemspec +46 -0
- metadata +326 -0
@@ -0,0 +1,142 @@
|
|
1
|
+
require "minitest"
|
2
|
+
|
3
|
+
module Minitest
|
4
|
+
def self.plugin_pride_options opts, _options # :nodoc:
|
5
|
+
opts.on "-p", "--pride", "Pride. Show your testing pride!" do
|
6
|
+
PrideIO.pride!
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.plugin_pride_init options # :nodoc:
|
11
|
+
if PrideIO.pride? then
|
12
|
+
klass = ENV["TERM"] =~ /^xterm|-256color$/ ? PrideLOL : PrideIO
|
13
|
+
io = klass.new options[:io]
|
14
|
+
|
15
|
+
self.reporter.reporters.grep(Minitest::Reporter).each do |rep|
|
16
|
+
rep.io = io if rep.io.tty?
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
##
|
22
|
+
# Show your testing pride!
|
23
|
+
|
24
|
+
class PrideIO
|
25
|
+
##
|
26
|
+
# Activate the pride plugin. Called from both -p option and minitest/pride
|
27
|
+
|
28
|
+
def self.pride!
|
29
|
+
@pride = true
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# Are we showing our testing pride?
|
34
|
+
|
35
|
+
def self.pride?
|
36
|
+
@pride ||= false
|
37
|
+
end
|
38
|
+
|
39
|
+
# Start an escape sequence
|
40
|
+
ESC = "\e["
|
41
|
+
|
42
|
+
# End the escape sequence
|
43
|
+
NND = "#{ESC}0m"
|
44
|
+
|
45
|
+
# The IO we're going to pipe through.
|
46
|
+
attr_reader :io
|
47
|
+
|
48
|
+
def initialize io # :nodoc:
|
49
|
+
@io = io
|
50
|
+
# stolen from /System/Library/Perl/5.10.0/Term/ANSIColor.pm
|
51
|
+
# also reference http://en.wikipedia.org/wiki/ANSI_escape_code
|
52
|
+
@colors ||= (31..36).to_a
|
53
|
+
@size = @colors.size
|
54
|
+
@index = 0
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Wrap print to colorize the output.
|
59
|
+
|
60
|
+
def print o
|
61
|
+
case o
|
62
|
+
when "." then
|
63
|
+
io.print pride o
|
64
|
+
when "E", "F" then
|
65
|
+
io.print "#{ESC}41m#{ESC}37m#{o}#{NND}"
|
66
|
+
when "S" then
|
67
|
+
io.print pride o
|
68
|
+
else
|
69
|
+
io.print o
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def puts *o # :nodoc:
|
74
|
+
o.map! { |s|
|
75
|
+
s.to_s.sub(/Finished/) {
|
76
|
+
@index = 0
|
77
|
+
"Fabulous run".split(//).map { |c|
|
78
|
+
pride(c)
|
79
|
+
}.join
|
80
|
+
}
|
81
|
+
}
|
82
|
+
|
83
|
+
io.puts(*o)
|
84
|
+
end
|
85
|
+
|
86
|
+
##
|
87
|
+
# Color a string.
|
88
|
+
|
89
|
+
def pride string
|
90
|
+
string = "*" if string == "."
|
91
|
+
c = @colors[@index % @size]
|
92
|
+
@index += 1
|
93
|
+
"#{ESC}#{c}m#{string}#{NND}"
|
94
|
+
end
|
95
|
+
|
96
|
+
def method_missing msg, *args # :nodoc:
|
97
|
+
io.send(msg, *args)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
##
|
102
|
+
# If you thought the PrideIO was colorful...
|
103
|
+
#
|
104
|
+
# (Inspired by lolcat, but with clean math)
|
105
|
+
|
106
|
+
class PrideLOL < PrideIO
|
107
|
+
PI_3 = Math::PI / 3 # :nodoc:
|
108
|
+
|
109
|
+
def initialize io # :nodoc:
|
110
|
+
# walk red, green, and blue around a circle separated by equal thirds.
|
111
|
+
#
|
112
|
+
# To visualize, type this into wolfram-alpha:
|
113
|
+
#
|
114
|
+
# plot (3*sin(x)+3), (3*sin(x+2*pi/3)+3), (3*sin(x+4*pi/3)+3)
|
115
|
+
|
116
|
+
# 6 has wide pretty gradients. 3 == lolcat, about half the width
|
117
|
+
@colors = (0...(6 * 7)).map { |n|
|
118
|
+
n *= 1.0 / 6
|
119
|
+
r = (3 * Math.sin(n ) + 3).to_i
|
120
|
+
g = (3 * Math.sin(n + 2 * PI_3) + 3).to_i
|
121
|
+
b = (3 * Math.sin(n + 4 * PI_3) + 3).to_i
|
122
|
+
|
123
|
+
# Then we take rgb and encode them in a single number using base 6.
|
124
|
+
# For some mysterious reason, we add 16... to clear the bottom 4 bits?
|
125
|
+
# Yes... they're ugly.
|
126
|
+
|
127
|
+
36 * r + 6 * g + b + 16
|
128
|
+
}
|
129
|
+
|
130
|
+
super
|
131
|
+
end
|
132
|
+
|
133
|
+
##
|
134
|
+
# Make the string even more colorful. Damnit.
|
135
|
+
|
136
|
+
def pride string
|
137
|
+
c = @colors[@index % @size]
|
138
|
+
@index += 1
|
139
|
+
"#{ESC}38;5;#{c}m#{string}#{NND}"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
@@ -0,0 +1,342 @@
|
|
1
|
+
require "minitest/test"
|
2
|
+
|
3
|
+
class Module # :nodoc:
|
4
|
+
def infect_an_assertion meth, new_name, dont_flip = false # :nodoc:
|
5
|
+
block = dont_flip == :block
|
6
|
+
dont_flip = false if block
|
7
|
+
|
8
|
+
# warn "%-22p -> %p %p" % [meth, new_name, dont_flip]
|
9
|
+
self.class_eval <<-EOM, __FILE__, __LINE__ + 1
|
10
|
+
def #{new_name} *args
|
11
|
+
where = Minitest.filter_backtrace(caller).first
|
12
|
+
where = where.split(/:in /, 2).first # clean up noise
|
13
|
+
warn "DEPRECATED: global use of #{new_name} from #\{where}. Use _(obj).#{new_name} instead. This will fail in Minitest 6."
|
14
|
+
Minitest::Expectation.new(self, Minitest::Spec.current).#{new_name}(*args)
|
15
|
+
end
|
16
|
+
EOM
|
17
|
+
|
18
|
+
Minitest::Expectation.class_eval <<-EOM, __FILE__, __LINE__ + 1
|
19
|
+
def #{new_name} *args
|
20
|
+
raise "Calling ##{new_name} outside of test." unless ctx
|
21
|
+
case
|
22
|
+
when #{!!dont_flip} then
|
23
|
+
ctx.#{meth}(target, *args)
|
24
|
+
when #{block} && Proc === target then
|
25
|
+
ctx.#{meth}(*args, &target)
|
26
|
+
else
|
27
|
+
ctx.#{meth}(args.first, target, *args[1..-1])
|
28
|
+
end
|
29
|
+
end
|
30
|
+
EOM
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
Minitest::Expectation = Struct.new :target, :ctx # :nodoc:
|
35
|
+
|
36
|
+
##
|
37
|
+
# Kernel extensions for minitest
|
38
|
+
|
39
|
+
module Kernel
|
40
|
+
##
|
41
|
+
# Describe a series of expectations for a given target +desc+.
|
42
|
+
#
|
43
|
+
# Defines a test class subclassing from either Minitest::Spec or
|
44
|
+
# from the surrounding describe's class. The surrounding class may
|
45
|
+
# subclass Minitest::Spec manually in order to easily share code:
|
46
|
+
#
|
47
|
+
# class MySpec < Minitest::Spec
|
48
|
+
# # ... shared code ...
|
49
|
+
# end
|
50
|
+
#
|
51
|
+
# class TestStuff < MySpec
|
52
|
+
# it "does stuff" do
|
53
|
+
# # shared code available here
|
54
|
+
# end
|
55
|
+
# describe "inner stuff" do
|
56
|
+
# it "still does stuff" do
|
57
|
+
# # ...and here
|
58
|
+
# end
|
59
|
+
# end
|
60
|
+
# end
|
61
|
+
#
|
62
|
+
# For more information on getting started with writing specs, see:
|
63
|
+
#
|
64
|
+
# http://www.rubyinside.com/a-minitestspec-tutorial-elegant-spec-style-testing-that-comes-with-ruby-5354.html
|
65
|
+
#
|
66
|
+
# For some suggestions on how to improve your specs, try:
|
67
|
+
#
|
68
|
+
# http://betterspecs.org
|
69
|
+
#
|
70
|
+
# but do note that several items there are debatable or specific to
|
71
|
+
# rspec.
|
72
|
+
#
|
73
|
+
# For more information about expectations, see Minitest::Expectations.
|
74
|
+
|
75
|
+
def describe desc, *additional_desc, &block # :doc:
|
76
|
+
stack = Minitest::Spec.describe_stack
|
77
|
+
name = [stack.last, desc, *additional_desc].compact.join("::")
|
78
|
+
sclas = stack.last || if Class === self && kind_of?(Minitest::Spec::DSL) then
|
79
|
+
self
|
80
|
+
else
|
81
|
+
Minitest::Spec.spec_type desc, *additional_desc
|
82
|
+
end
|
83
|
+
|
84
|
+
cls = sclas.create name, desc
|
85
|
+
|
86
|
+
stack.push cls
|
87
|
+
cls.class_eval(&block)
|
88
|
+
stack.pop
|
89
|
+
cls
|
90
|
+
end
|
91
|
+
private :describe
|
92
|
+
end
|
93
|
+
|
94
|
+
##
|
95
|
+
# Minitest::Spec -- The faster, better, less-magical spec framework!
|
96
|
+
#
|
97
|
+
# For a list of expectations, see Minitest::Expectations.
|
98
|
+
|
99
|
+
class Minitest::Spec < Minitest::Test
|
100
|
+
|
101
|
+
def self.current # :nodoc:
|
102
|
+
Thread.current[:current_spec]
|
103
|
+
end
|
104
|
+
|
105
|
+
def initialize name # :nodoc:
|
106
|
+
super
|
107
|
+
Thread.current[:current_spec] = self
|
108
|
+
end
|
109
|
+
|
110
|
+
##
|
111
|
+
# Oh look! A Minitest::Spec::DSL module! Eat your heart out DHH.
|
112
|
+
|
113
|
+
module DSL
|
114
|
+
##
|
115
|
+
# Contains pairs of matchers and Spec classes to be used to
|
116
|
+
# calculate the superclass of a top-level describe. This allows for
|
117
|
+
# automatically customizable spec types.
|
118
|
+
#
|
119
|
+
# See: register_spec_type and spec_type
|
120
|
+
|
121
|
+
TYPES = [[//, Minitest::Spec]]
|
122
|
+
|
123
|
+
##
|
124
|
+
# Register a new type of spec that matches the spec's description.
|
125
|
+
# This method can take either a Regexp and a spec class or a spec
|
126
|
+
# class and a block that takes the description and returns true if
|
127
|
+
# it matches.
|
128
|
+
#
|
129
|
+
# Eg:
|
130
|
+
#
|
131
|
+
# register_spec_type(/Controller$/, Minitest::Spec::Rails)
|
132
|
+
#
|
133
|
+
# or:
|
134
|
+
#
|
135
|
+
# register_spec_type(Minitest::Spec::RailsModel) do |desc|
|
136
|
+
# desc.superclass == ActiveRecord::Base
|
137
|
+
# end
|
138
|
+
|
139
|
+
def register_spec_type *args, &block
|
140
|
+
if block then
|
141
|
+
matcher, klass = block, args.first
|
142
|
+
else
|
143
|
+
matcher, klass = *args
|
144
|
+
end
|
145
|
+
TYPES.unshift [matcher, klass]
|
146
|
+
end
|
147
|
+
|
148
|
+
##
|
149
|
+
# Figure out the spec class to use based on a spec's description. Eg:
|
150
|
+
#
|
151
|
+
# spec_type("BlahController") # => Minitest::Spec::Rails
|
152
|
+
|
153
|
+
def spec_type desc, *additional
|
154
|
+
TYPES.find { |matcher, _klass|
|
155
|
+
if matcher.respond_to? :call then
|
156
|
+
matcher.call desc, *additional
|
157
|
+
else
|
158
|
+
matcher === desc.to_s
|
159
|
+
end
|
160
|
+
}.last
|
161
|
+
end
|
162
|
+
|
163
|
+
def describe_stack # :nodoc:
|
164
|
+
Thread.current[:describe_stack] ||= []
|
165
|
+
end
|
166
|
+
|
167
|
+
def children # :nodoc:
|
168
|
+
@children ||= []
|
169
|
+
end
|
170
|
+
|
171
|
+
def nuke_test_methods! # :nodoc:
|
172
|
+
self.public_instance_methods.grep(/^test_/).each do |name|
|
173
|
+
self.send :undef_method, name
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
##
|
178
|
+
# Define a 'before' action. Inherits the way normal methods should.
|
179
|
+
#
|
180
|
+
# NOTE: +type+ is ignored and is only there to make porting easier.
|
181
|
+
#
|
182
|
+
# Equivalent to Minitest::Test#setup.
|
183
|
+
|
184
|
+
def before _type = nil, &block
|
185
|
+
define_method :setup do
|
186
|
+
super()
|
187
|
+
self.instance_eval(&block)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
##
|
192
|
+
# Define an 'after' action. Inherits the way normal methods should.
|
193
|
+
#
|
194
|
+
# NOTE: +type+ is ignored and is only there to make porting easier.
|
195
|
+
#
|
196
|
+
# Equivalent to Minitest::Test#teardown.
|
197
|
+
|
198
|
+
def after _type = nil, &block
|
199
|
+
define_method :teardown do
|
200
|
+
self.instance_eval(&block)
|
201
|
+
super()
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
##
|
206
|
+
# Define an expectation with name +desc+. Name gets morphed to a
|
207
|
+
# proper test method name. For some freakish reason, people who
|
208
|
+
# write specs don't like class inheritance, so this goes way out of
|
209
|
+
# its way to make sure that expectations aren't inherited.
|
210
|
+
#
|
211
|
+
# This is also aliased to #specify and doesn't require a +desc+ arg.
|
212
|
+
#
|
213
|
+
# Hint: If you _do_ want inheritance, use minitest/test. You can mix
|
214
|
+
# and match between assertions and expectations as much as you want.
|
215
|
+
|
216
|
+
def it desc = "anonymous", &block
|
217
|
+
block ||= proc { skip "(no tests defined)" }
|
218
|
+
|
219
|
+
@specs ||= 0
|
220
|
+
@specs += 1
|
221
|
+
|
222
|
+
name = "test_%04d_%s" % [ @specs, desc ]
|
223
|
+
|
224
|
+
undef_klasses = self.children.reject { |c| c.public_method_defined? name }
|
225
|
+
|
226
|
+
define_method name, &block
|
227
|
+
|
228
|
+
undef_klasses.each do |undef_klass|
|
229
|
+
undef_klass.send :undef_method, name
|
230
|
+
end
|
231
|
+
|
232
|
+
name
|
233
|
+
end
|
234
|
+
|
235
|
+
##
|
236
|
+
# Essentially, define an accessor for +name+ with +block+.
|
237
|
+
#
|
238
|
+
# Why use let instead of def? I honestly don't know.
|
239
|
+
|
240
|
+
def let name, &block
|
241
|
+
name = name.to_s
|
242
|
+
pre, post = "let '#{name}' cannot ", ". Please use another name."
|
243
|
+
methods = Minitest::Spec.instance_methods.map(&:to_s) - %w[subject]
|
244
|
+
raise ArgumentError, "#{pre}begin with 'test'#{post}" if
|
245
|
+
name =~ /\Atest/
|
246
|
+
raise ArgumentError, "#{pre}override a method in Minitest::Spec#{post}" if
|
247
|
+
methods.include? name
|
248
|
+
|
249
|
+
define_method name do
|
250
|
+
@_memoized ||= {}
|
251
|
+
@_memoized.fetch(name) { |k| @_memoized[k] = instance_eval(&block) }
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
##
|
256
|
+
# Another lazy man's accessor generator. Made even more lazy by
|
257
|
+
# setting the name for you to +subject+.
|
258
|
+
|
259
|
+
def subject &block
|
260
|
+
let :subject, &block
|
261
|
+
end
|
262
|
+
|
263
|
+
def create name, desc # :nodoc:
|
264
|
+
cls = Class.new(self) do
|
265
|
+
@name = name
|
266
|
+
@desc = desc
|
267
|
+
|
268
|
+
nuke_test_methods!
|
269
|
+
end
|
270
|
+
|
271
|
+
children << cls
|
272
|
+
|
273
|
+
cls
|
274
|
+
end
|
275
|
+
|
276
|
+
def name # :nodoc:
|
277
|
+
defined?(@name) ? @name : super
|
278
|
+
end
|
279
|
+
|
280
|
+
def to_s # :nodoc:
|
281
|
+
name # Can't alias due to 1.8.7, not sure why
|
282
|
+
end
|
283
|
+
|
284
|
+
attr_reader :desc # :nodoc:
|
285
|
+
alias :specify :it
|
286
|
+
|
287
|
+
##
|
288
|
+
# Rdoc... why are you so dumb?
|
289
|
+
|
290
|
+
module InstanceMethods
|
291
|
+
##
|
292
|
+
# Takes a value or a block and returns a value monad that has
|
293
|
+
# all of Expectations methods available to it.
|
294
|
+
#
|
295
|
+
# _(1 + 1).must_equal 2
|
296
|
+
#
|
297
|
+
# And for blocks:
|
298
|
+
#
|
299
|
+
# _ { 1 + "1" }.must_raise TypeError
|
300
|
+
#
|
301
|
+
# This method of expectation-based testing is preferable to
|
302
|
+
# straight-expectation methods (on Object) because it stores its
|
303
|
+
# test context, bypassing our hacky use of thread-local variables.
|
304
|
+
#
|
305
|
+
# NOTE: At some point, the methods on Object will be deprecated
|
306
|
+
# and then removed.
|
307
|
+
#
|
308
|
+
# It is also aliased to #value and #expect for your aesthetic
|
309
|
+
# pleasure:
|
310
|
+
#
|
311
|
+
# _(1 + 1).must_equal 2
|
312
|
+
# value(1 + 1).must_equal 2
|
313
|
+
# expect(1 + 1).must_equal 2
|
314
|
+
|
315
|
+
def _ value = nil, &block
|
316
|
+
Minitest::Expectation.new block || value, self
|
317
|
+
end
|
318
|
+
|
319
|
+
alias value _
|
320
|
+
alias expect _
|
321
|
+
|
322
|
+
def before_setup # :nodoc:
|
323
|
+
super
|
324
|
+
Thread.current[:current_spec] = self
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
def self.extended obj # :nodoc:
|
329
|
+
obj.send :include, InstanceMethods
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
extend DSL
|
334
|
+
|
335
|
+
TYPES = DSL::TYPES # :nodoc:
|
336
|
+
end
|
337
|
+
|
338
|
+
require "minitest/expectations"
|
339
|
+
|
340
|
+
class Object # :nodoc:
|
341
|
+
include Minitest::Expectations unless ENV["MT_NO_EXPECTATIONS"]
|
342
|
+
end
|
@@ -0,0 +1,220 @@
|
|
1
|
+
require "minitest" unless defined? Minitest::Runnable
|
2
|
+
|
3
|
+
module Minitest
|
4
|
+
##
|
5
|
+
# Subclass Test to create your own tests. Typically you'll want a
|
6
|
+
# Test subclass per implementation class.
|
7
|
+
#
|
8
|
+
# See Minitest::Assertions
|
9
|
+
|
10
|
+
class Test < Runnable
|
11
|
+
require "minitest/assertions"
|
12
|
+
include Minitest::Assertions
|
13
|
+
include Minitest::Reportable
|
14
|
+
|
15
|
+
def class_name # :nodoc:
|
16
|
+
self.class.name # for Minitest::Reportable
|
17
|
+
end
|
18
|
+
|
19
|
+
PASSTHROUGH_EXCEPTIONS = [NoMemoryError, SignalException, SystemExit] # :nodoc:
|
20
|
+
|
21
|
+
# :stopdoc:
|
22
|
+
class << self; attr_accessor :io_lock; end
|
23
|
+
self.io_lock = Mutex.new
|
24
|
+
# :startdoc:
|
25
|
+
|
26
|
+
##
|
27
|
+
# Call this at the top of your tests when you absolutely
|
28
|
+
# positively need to have ordered tests. In doing so, you're
|
29
|
+
# admitting that you suck and your tests are weak.
|
30
|
+
|
31
|
+
def self.i_suck_and_my_tests_are_order_dependent!
|
32
|
+
class << self
|
33
|
+
undef_method :test_order if method_defined? :test_order
|
34
|
+
define_method :test_order do :alpha end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
##
|
39
|
+
# Make diffs for this Test use #pretty_inspect so that diff
|
40
|
+
# in assert_equal can have more details. NOTE: this is much slower
|
41
|
+
# than the regular inspect but much more usable for complex
|
42
|
+
# objects.
|
43
|
+
|
44
|
+
def self.make_my_diffs_pretty!
|
45
|
+
require "pp"
|
46
|
+
|
47
|
+
define_method :mu_pp, &:pretty_inspect
|
48
|
+
end
|
49
|
+
|
50
|
+
##
|
51
|
+
# Call this at the top of your tests when you want to run your
|
52
|
+
# tests in parallel. In doing so, you're admitting that you rule
|
53
|
+
# and your tests are awesome.
|
54
|
+
|
55
|
+
def self.parallelize_me!
|
56
|
+
include Minitest::Parallel::Test
|
57
|
+
extend Minitest::Parallel::Test::ClassMethods
|
58
|
+
end
|
59
|
+
|
60
|
+
##
|
61
|
+
# Returns all instance methods starting with "test_". Based on
|
62
|
+
# #test_order, the methods are either sorted, randomized
|
63
|
+
# (default), or run in parallel.
|
64
|
+
|
65
|
+
def self.runnable_methods
|
66
|
+
methods = methods_matching(/^test_/)
|
67
|
+
|
68
|
+
case self.test_order
|
69
|
+
when :random, :parallel then
|
70
|
+
max = methods.size
|
71
|
+
methods.sort.sort_by { rand max }
|
72
|
+
when :alpha, :sorted then
|
73
|
+
methods.sort
|
74
|
+
else
|
75
|
+
raise "Unknown test_order: #{self.test_order.inspect}"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
##
|
80
|
+
# Defines the order to run tests (:random by default). Override
|
81
|
+
# this or use a convenience method to change it for your tests.
|
82
|
+
|
83
|
+
def self.test_order
|
84
|
+
:random
|
85
|
+
end
|
86
|
+
|
87
|
+
TEARDOWN_METHODS = %w[ before_teardown teardown after_teardown ] # :nodoc:
|
88
|
+
|
89
|
+
##
|
90
|
+
# Runs a single test with setup/teardown hooks.
|
91
|
+
|
92
|
+
def run
|
93
|
+
with_info_handler do
|
94
|
+
time_it do
|
95
|
+
capture_exceptions do
|
96
|
+
before_setup; setup; after_setup
|
97
|
+
|
98
|
+
self.send self.name
|
99
|
+
end
|
100
|
+
|
101
|
+
TEARDOWN_METHODS.each do |hook|
|
102
|
+
capture_exceptions do
|
103
|
+
self.send hook
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
Result.from self # per contract
|
110
|
+
end
|
111
|
+
|
112
|
+
##
|
113
|
+
# Provides before/after hooks for setup and teardown. These are
|
114
|
+
# meant for library writers, NOT for regular test authors. See
|
115
|
+
# #before_setup for an example.
|
116
|
+
|
117
|
+
module LifecycleHooks
|
118
|
+
|
119
|
+
##
|
120
|
+
# Runs before every test, before setup. This hook is meant for
|
121
|
+
# libraries to extend minitest. It is not meant to be used by
|
122
|
+
# test developers.
|
123
|
+
#
|
124
|
+
# As a simplistic example:
|
125
|
+
#
|
126
|
+
# module MyMinitestPlugin
|
127
|
+
# def before_setup
|
128
|
+
# super
|
129
|
+
# # ... stuff to do before setup is run
|
130
|
+
# end
|
131
|
+
#
|
132
|
+
# def after_setup
|
133
|
+
# # ... stuff to do after setup is run
|
134
|
+
# super
|
135
|
+
# end
|
136
|
+
#
|
137
|
+
# def before_teardown
|
138
|
+
# super
|
139
|
+
# # ... stuff to do before teardown is run
|
140
|
+
# end
|
141
|
+
#
|
142
|
+
# def after_teardown
|
143
|
+
# # ... stuff to do after teardown is run
|
144
|
+
# super
|
145
|
+
# end
|
146
|
+
# end
|
147
|
+
#
|
148
|
+
# class MiniTest::Test
|
149
|
+
# include MyMinitestPlugin
|
150
|
+
# end
|
151
|
+
|
152
|
+
def before_setup; end
|
153
|
+
|
154
|
+
##
|
155
|
+
# Runs before every test. Use this to set up before each test
|
156
|
+
# run.
|
157
|
+
|
158
|
+
def setup; end
|
159
|
+
|
160
|
+
##
|
161
|
+
# Runs before every test, after setup. This hook is meant for
|
162
|
+
# libraries to extend minitest. It is not meant to be used by
|
163
|
+
# test developers.
|
164
|
+
#
|
165
|
+
# See #before_setup for an example.
|
166
|
+
|
167
|
+
def after_setup; end
|
168
|
+
|
169
|
+
##
|
170
|
+
# Runs after every test, before teardown. This hook is meant for
|
171
|
+
# libraries to extend minitest. It is not meant to be used by
|
172
|
+
# test developers.
|
173
|
+
#
|
174
|
+
# See #before_setup for an example.
|
175
|
+
|
176
|
+
def before_teardown; end
|
177
|
+
|
178
|
+
##
|
179
|
+
# Runs after every test. Use this to clean up after each test
|
180
|
+
# run.
|
181
|
+
|
182
|
+
def teardown; end
|
183
|
+
|
184
|
+
##
|
185
|
+
# Runs after every test, after teardown. This hook is meant for
|
186
|
+
# libraries to extend minitest. It is not meant to be used by
|
187
|
+
# test developers.
|
188
|
+
#
|
189
|
+
# See #before_setup for an example.
|
190
|
+
|
191
|
+
def after_teardown; end
|
192
|
+
end # LifecycleHooks
|
193
|
+
|
194
|
+
def capture_exceptions # :nodoc:
|
195
|
+
yield
|
196
|
+
rescue *PASSTHROUGH_EXCEPTIONS
|
197
|
+
raise
|
198
|
+
rescue Assertion => e
|
199
|
+
self.failures << e
|
200
|
+
rescue Exception => e
|
201
|
+
self.failures << UnexpectedError.new(e)
|
202
|
+
end
|
203
|
+
|
204
|
+
def with_info_handler &block # :nodoc:
|
205
|
+
t0 = Minitest.clock_time
|
206
|
+
|
207
|
+
handler = lambda do
|
208
|
+
warn "\nCurrent: %s#%s %.2fs" % [self.class, self.name, Minitest.clock_time - t0]
|
209
|
+
end
|
210
|
+
|
211
|
+
self.class.on_signal ::Minitest.info_signal, handler, &block
|
212
|
+
end
|
213
|
+
|
214
|
+
include LifecycleHooks
|
215
|
+
include Guard
|
216
|
+
extend Guard
|
217
|
+
end # Test
|
218
|
+
end
|
219
|
+
|
220
|
+
require "minitest/unit" unless defined?(MiniTest) # compatibility layer only
|