diff --git a/Gemfile b/Gemfile index b92f100e..d695524b 100644 --- a/Gemfile +++ b/Gemfile @@ -25,7 +25,8 @@ gem 'activesupport', '~> 3.2.13' gem 'jekyll_test_plugin' gem 'jekyll_test_plugin_malicious' gem 'liquid-c', '~> 0.0.3' -gem 'minitest' if RUBY_PLATFORM =~ /cygwin/ +gem 'minitest' +gem 'minitest-reporters' gem 'test-unit' if RUBY_PLATFORM =~ /cygwin/ || RUBY_VERSION.start_with?("2.2") if ENV['BENCHMARK'] diff --git a/features/step_definitions/jekyll_steps.rb b/features/step_definitions/jekyll_steps.rb index 176629f6..5e0509e1 100644 --- a/features/step_definitions/jekyll_steps.rb +++ b/features/step_definitions/jekyll_steps.rb @@ -27,7 +27,7 @@ After do Dir.chdir(File.dirname(TEST_DIR)) end -World(Test::Unit::Assertions) +World(Minitest::Assertions) Given /^I have a blank site in "(.*)"$/ do |path| FileUtils.mkdir_p(path) unless File.exist?(path) @@ -191,7 +191,7 @@ Then /^I should see exactly "(.*)" in "(.*)"$/ do |text, file| end Then /^I should not see "(.*)" in "(.*)"$/ do |text, file| - assert_no_match Regexp.new(text, Regexp::MULTILINE), file_contents(file) + refute_match Regexp.new(text, Regexp::MULTILINE), file_contents(file) end Then /^I should see escaped "(.*)" in "(.*)"$/ do |text, file| diff --git a/features/support/env.rb b/features/support/env.rb index e995ba9b..8f33ff63 100644 --- a/features/support/env.rb +++ b/features/support/env.rb @@ -1,7 +1,7 @@ require 'fileutils' require 'posix-spawn' require 'rr' -require 'test/unit' +require 'minitest/assertions' require 'time' JEKYLL_SOURCE_DIR = File.dirname(File.dirname(File.dirname(__FILE__))) diff --git a/lib/jekyll/cleaner.rb b/lib/jekyll/cleaner.rb index 0295fb92..a8b269f4 100644 --- a/lib/jekyll/cleaner.rb +++ b/lib/jekyll/cleaner.rb @@ -1,103 +1,101 @@ require 'set' module Jekyll - class Site - # Handles the cleanup of a site's destination before it is built. - class Cleaner - attr_reader :site + # Handles the cleanup of a site's destination before it is built. + class Cleaner + attr_reader :site - def initialize(site) - @site = site + def initialize(site) + @site = site + end + + # Cleans up the site's destination directory + def cleanup! + FileUtils.rm_rf(obsolete_files) + FileUtils.rm_rf(metadata_file) if @site.full_rebuild? + end + + private + + # Private: The list of files and directories to be deleted during cleanup process + # + # Returns an Array of the file and directory paths + def obsolete_files + (existing_files - new_files - new_dirs + replaced_files).to_a + end + + # Private: The metadata file storing dependency tree and build history + # + # Returns an Array with the metdata file as the only item + def metadata_file + [site.regenerator.metadata_file] + end + + # Private: The list of existing files, apart from those included in keep_files and hidden files. + # + # Returns a Set with the file paths + def existing_files + files = Set.new + Dir.glob(site.in_dest_dir("**", "*"), File::FNM_DOTMATCH) do |file| + files << file unless file =~ /\/\.{1,2}$/ || file =~ keep_file_regex || keep_dirs.include?(file) end + files + end - # Cleans up the site's destination directory - def cleanup! - FileUtils.rm_rf(obsolete_files) - FileUtils.rm_rf(metadata_file) if @site.full_rebuild? + # Private: The list of files to be created when site is built. + # + # Returns a Set with the file paths + def new_files + files = Set.new + site.each_site_file { |item| files << item.destination(site.dest) } + files + end + + # Private: The list of directories to be created when site is built. + # These are the parent directories of the files in #new_files. + # + # Returns a Set with the directory paths + def new_dirs + new_files.map { |file| parent_dirs(file) }.flatten.to_set + end + + # Private: The list of parent directories of a given file + # + # Returns an Array with the directory paths + def parent_dirs(file) + parent_dir = File.dirname(file) + if parent_dir == site.dest + [] + else + [parent_dir] + parent_dirs(parent_dir) end + end - private + # Private: The list of existing files that will be replaced by a directory during build + # + # Returns a Set with the file paths + def replaced_files + new_dirs.select { |dir| File.file?(dir) }.to_set + end - # Private: The list of files and directories to be deleted during cleanup process - # - # Returns an Array of the file and directory paths - def obsolete_files - (existing_files - new_files - new_dirs + replaced_files).to_a - end + # Private: The list of directories that need to be kept because they are parent directories + # of files specified in keep_files + # + # Returns a Set with the directory paths + def keep_dirs + site.keep_files.map { |file| parent_dirs(site.in_dest_dir(file)) }.flatten.to_set + end - # Private: The metadata file storing dependency tree and build history - # - # Returns an Array with the metdata file as the only item - def metadata_file - [site.regenerator.metadata_file] - end - - # Private: The list of existing files, apart from those included in keep_files and hidden files. - # - # Returns a Set with the file paths - def existing_files - files = Set.new - Dir.glob(site.in_dest_dir("**", "*"), File::FNM_DOTMATCH) do |file| - files << file unless file =~ /\/\.{1,2}$/ || file =~ keep_file_regex || keep_dirs.include?(file) - end - files - end - - # Private: The list of files to be created when site is built. - # - # Returns a Set with the file paths - def new_files - files = Set.new - site.each_site_file { |item| files << item.destination(site.dest) } - files - end - - # Private: The list of directories to be created when site is built. - # These are the parent directories of the files in #new_files. - # - # Returns a Set with the directory paths - def new_dirs - new_files.map { |file| parent_dirs(file) }.flatten.to_set - end - - # Private: The list of parent directories of a given file - # - # Returns an Array with the directory paths - def parent_dirs(file) - parent_dir = File.dirname(file) - if parent_dir == site.dest - [] - else - [parent_dir] + parent_dirs(parent_dir) - end - end - - # Private: The list of existing files that will be replaced by a directory during build - # - # Returns a Set with the file paths - def replaced_files - new_dirs.select { |dir| File.file?(dir) }.to_set - end - - # Private: The list of directories that need to be kept because they are parent directories - # of files specified in keep_files - # - # Returns a Set with the directory paths - def keep_dirs - site.keep_files.map { |file| parent_dirs(site.in_dest_dir(file)) }.flatten.to_set - end - - # Private: Creates a regular expression from the config's keep_files array - # - # Examples - # ['.git','.svn'] creates the following regex: /\/(\.git|\/.svn)/ - # - # Returns the regular expression - def keep_file_regex - or_list = site.keep_files.join("|") - pattern = "\/(#{or_list.gsub(".", "\.")})" - Regexp.new pattern - end + # Private: Creates a regular expression from the config's keep_files array + # + # Examples + # ['.git','.svn'] creates the following regex: /\/(\.git|\/.svn)/ + # + # Returns the regular expression + def keep_file_regex + or_list = site.keep_files.join("|") + pattern = "\/(#{or_list.gsub(".", "\.")})" + Regexp.new pattern end end end diff --git a/script/test b/script/test index 87df1f60..38ae46b6 100755 --- a/script/test +++ b/script/test @@ -8,6 +8,10 @@ if [ ! -d tmp ]; then mkdir tmp fi +if [ -d test/dest ]; then + rm -r test/dest +fi + if [ -z "$1" ]; then TEST_FILES=$(ruby -e "puts Dir.glob('test/test_*.rb')") else diff --git a/test/helper.rb b/test/helper.rb index ea30a855..257b2db9 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -6,8 +6,9 @@ SimpleCov.start('gem') do end require 'rubygems' -require 'test/unit' require 'ostruct' +require 'minitest/autorun' +require 'minitest/reporters' require 'jekyll' @@ -23,9 +24,10 @@ include Jekyll # Send STDERR into the void to suppress program output messages STDERR.reopen(test(?e, '/dev/null') ? '/dev/null' : 'NUL:') -class Test::Unit::TestCase - include RR::Adapters::TestUnit +# Report with color. +Minitest::Reporters.use! [Minitest::Reporters::DefaultReporter.new(:color => true)] +class JekyllUnitTest < Minitest::Test def fixture_site(overrides = {}) Jekyll::Site.new(site_configuration(overrides)) end @@ -35,7 +37,10 @@ class Test::Unit::TestCase end def site_configuration(overrides = {}) - full_overrides = build_configs(overrides, build_configs({"destination" => dest_dir})) + full_overrides = build_configs(overrides, build_configs({ + "destination" => dest_dir, + "full_rebuild" => true + })) build_configs({ "source" => source_dir }, full_overrides) diff --git a/test/suite.rb b/test/suite.rb deleted file mode 100644 index 81b61719..00000000 --- a/test/suite.rb +++ /dev/null @@ -1,11 +0,0 @@ -require 'rubygems' -gem 'test-unit' -require 'test/unit' - -# for some reason these tests fail when run via TextMate -# but succeed when run on the command line. - -tests = Dir[File.expand_path("#{File.dirname(__FILE__)}/test_*.rb")] -tests.each do |file| - require file -end diff --git a/test/test_cleaner.rb b/test/test_cleaner.rb index 74e59507..819dbf5c 100644 --- a/test/test_cleaner.rb +++ b/test/test_cleaner.rb @@ -1,6 +1,6 @@ require 'helper' -class TestCleaner < Test::Unit::TestCase +class TestCleaner < JekyllUnitTest context "directory in keep_files" do setup do clear_dest @@ -12,7 +12,7 @@ class TestCleaner < Test::Unit::TestCase @site = fixture_site @site.keep_files = ['to_keep/child_dir'] - @cleaner = Site::Cleaner.new(@site) + @cleaner = Cleaner.new(@site) @cleaner.cleanup! end @@ -47,7 +47,7 @@ class TestCleaner < Test::Unit::TestCase @site = fixture_site @site.process - @cleaner = Site::Cleaner.new(@site) + @cleaner = Cleaner.new(@site) @cleaner.cleanup! end diff --git a/test/test_coffeescript.rb b/test/test_coffeescript.rb index 49b838a1..68e19a52 100644 --- a/test/test_coffeescript.rb +++ b/test/test_coffeescript.rb @@ -1,6 +1,6 @@ require 'helper' -class TestCoffeeScript < Test::Unit::TestCase +class TestCoffeeScript < JekyllUnitTest context "converting CoffeeScript" do setup do External.require_with_graceful_fail('jekyll-coffeescript') @@ -19,16 +19,16 @@ class TestCoffeeScript < Test::Unit::TestCase return square(x) * x; }; cubes = (function() { - var _i, _len, _results; - _results = []; - for (_i = 0, _len = list.length; _i < _len; _i++) { - num = list[_i]; - _results.push(math.cube(num)); + var i, len, results; + results = []; + for (i = 0, len = list.length; i < len; i++) { + num = list[i]; + results.push(math.cube(num)); } - return _results; + return results; })(); - if (typeof elvis !== \"undefined\" && elvis !== null) { - return alert(\"I knew it!\"); + if (typeof elvis !== "undefined" && elvis !== null) { + return alert("I knew it!"); } }); diff --git a/test/test_collections.rb b/test/test_collections.rb index a119de5f..3cae5c30 100644 --- a/test/test_collections.rb +++ b/test/test_collections.rb @@ -1,6 +1,6 @@ require 'helper' -class TestCollections < Test::Unit::TestCase +class TestCollections < JekyllUnitTest context "an evil collection" do setup do @collection = Jekyll::Collection.new(fixture_site, "../../etc/password") @@ -114,7 +114,7 @@ class TestCollections < Test::Unit::TestCase should "create a Hash on Site with the label mapped to the instance of the Collection" do assert @site.collections.is_a?(Hash) - assert_not_nil @site.collections["methods"] + refute_nil @site.collections["methods"] assert @site.collections["methods"].is_a? Jekyll::Collection end @@ -122,7 +122,7 @@ class TestCollections < Test::Unit::TestCase assert @site.collections["methods"].docs.is_a? Array @site.collections["methods"].docs.each do |doc| assert doc.is_a? Jekyll::Document - assert_include %w[ + assert_includes %w[ _methods/configuration.md _methods/sanitized_path.md _methods/site/generate.md @@ -135,16 +135,16 @@ class TestCollections < Test::Unit::TestCase end should "not include files which start with an underscore in the base collection directory" do - assert_not_include @collection.filtered_entries, "_do_not_read_me.md" + refute_includes @collection.filtered_entries, "_do_not_read_me.md" end should "not include files which start with an underscore in a subdirectory" do - assert_not_include @collection.filtered_entries, "site/_dont_include_me_either.md" + refute_includes @collection.filtered_entries, "site/_dont_include_me_either.md" end should "not include the underscored files in the list of docs" do - assert_not_include @collection.docs.map(&:relative_path), "_methods/_do_not_read_me.md" - assert_not_include @collection.docs.map(&:relative_path), "_methods/site/_dont_include_me_either.md" + refute_includes @collection.docs.map(&:relative_path), "_methods/_do_not_read_me.md" + refute_includes @collection.docs.map(&:relative_path), "_methods/site/_dont_include_me_either.md" end end @@ -178,12 +178,12 @@ class TestCollections < Test::Unit::TestCase end should "not allow symlinks" do - assert_not_include @collection.filtered_entries, "um_hi.md" - assert_not_include @collection.filtered_entries, "/um_hi.md" + refute_includes @collection.filtered_entries, "um_hi.md" + refute_includes @collection.filtered_entries, "/um_hi.md" end should "not include the symlinked file in the list of docs" do - assert_not_include @collection.docs.map(&:relative_path), "_methods/um_hi.md" + refute_includes @collection.docs.map(&:relative_path), "_methods/um_hi.md" end end @@ -198,7 +198,7 @@ class TestCollections < Test::Unit::TestCase end should "exist" do - assert_not_nil @collection + refute_nil @collection end should "contain one document" do diff --git a/test/test_command.rb b/test/test_command.rb index 10ecccc4..fb9e247b 100644 --- a/test/test_command.rb +++ b/test/test_command.rb @@ -1,6 +1,6 @@ require 'helper' -class TestCommand < Test::Unit::TestCase +class TestCommand < JekyllUnitTest context "when calling .add_build_options" do should "add common options" do cmd = Object.new @@ -13,8 +13,8 @@ class TestCommand < Test::Unit::TestCase should "exit with non-zero error code" do site = Object.new stub(site).process { raise Jekyll::Errors::FatalException } - error = assert_raise(SystemExit) { Command.process_site(site) } - assert_not_equal 0, error.status + error = assert_raises(SystemExit) { Command.process_site(site) } + refute_equal 0, error.status end end end diff --git a/test/test_configuration.rb b/test/test_configuration.rb index fffbc2db..7e14a418 100644 --- a/test/test_configuration.rb +++ b/test/test_configuration.rb @@ -1,6 +1,6 @@ require 'helper' -class TestConfiguration < Test::Unit::TestCase +class TestConfiguration < JekyllUnitTest context "#stringify_keys" do setup do @mixed_keys = Configuration[{ diff --git a/test/test_convertible.rb b/test/test_convertible.rb index 6482ad90..09c69737 100644 --- a/test/test_convertible.rb +++ b/test/test_convertible.rb @@ -1,7 +1,7 @@ require 'helper' require 'ostruct' -class TestConvertible < Test::Unit::TestCase +class TestConvertible < JekyllUnitTest context "yaml front-matter" do setup do @convertible = OpenStruct.new( @@ -37,7 +37,7 @@ class TestConvertible < Test::Unit::TestCase out = capture_stderr do @convertible.read_yaml(@base, 'exploit_front_matter.erb') end - assert_no_match /undefined class\/module DoesNotExist/, out + refute_match /undefined class\/module DoesNotExist/, out end should "not parse if there is encoding error in file" do diff --git a/test/test_document.rb b/test/test_document.rb index aa4e2fa9..654532da 100644 --- a/test/test_document.rb +++ b/test/test_document.rb @@ -1,6 +1,6 @@ require 'helper' -class TestDocument < Test::Unit::TestCase +class TestDocument < JekyllUnitTest context "a document in a collection" do setup do @@ -283,7 +283,7 @@ class TestDocument < Test::Unit::TestCase context "without output overrides" do should "be output according to collection defaults" do - assert_not_nil @files.find { |doc| doc.relative_path == "_slides/example-slide-4.html" } + refute_nil @files.find { |doc| doc.relative_path == "_slides/example-slide-4.html" } end end diff --git a/test/test_draft.rb b/test/test_draft.rb index 5843665b..7312c8c9 100644 --- a/test/test_draft.rb +++ b/test/test_draft.rb @@ -1,6 +1,6 @@ require 'helper' -class TestDraft < Test::Unit::TestCase +class TestDraft < JekyllUnitTest def setup_draft(file) Draft.new(@site, source_dir, '', file) end diff --git a/test/test_entry_filter.rb b/test/test_entry_filter.rb index 5c5711cb..e3a7e8c0 100644 --- a/test/test_entry_filter.rb +++ b/test/test_entry_filter.rb @@ -1,6 +1,6 @@ require 'helper' -class TestEntryFilter < Test::Unit::TestCase +class TestEntryFilter < JekyllUnitTest context "Filtering entries" do setup do @site = Site.new(site_configuration) @@ -71,8 +71,8 @@ class TestEntryFilter < Test::Unit::TestCase site = Site.new(site_configuration) site.read_directories("symlink-test") - assert_not_equal [], site.pages - assert_not_equal [], site.static_files + refute_equal [], site.pages + refute_equal [], site.static_files end end diff --git a/test/test_excerpt.rb b/test/test_excerpt.rb index c9a0fdc7..ac477176 100644 --- a/test/test_excerpt.rb +++ b/test/test_excerpt.rb @@ -1,6 +1,6 @@ require 'helper' -class TestExcerpt < Test::Unit::TestCase +class TestExcerpt < JekyllUnitTest def setup_post(file) Post.new(@site, source_dir, '', file) end diff --git a/test/test_filters.rb b/test/test_filters.rb index cb44b65b..eec08564 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -2,7 +2,7 @@ require 'helper' -class TestFilters < Test::Unit::TestCase +class TestFilters < JekyllUnitTest class JekyllFilter include Jekyll::Filters attr_accessor :site, :context diff --git a/test/test_front_matter_defaults.rb b/test/test_front_matter_defaults.rb index 2c793095..0c7f5bf4 100644 --- a/test/test_front_matter_defaults.rb +++ b/test/test_front_matter_defaults.rb @@ -1,6 +1,6 @@ require 'helper' -class TestFrontMatterDefaults < Test::Unit::TestCase +class TestFrontMatterDefaults < JekyllUnitTest context "A site with full front matter defaults" do setup do diff --git a/test/test_generated_site.rb b/test/test_generated_site.rb index d3fbc887..fee492bc 100644 --- a/test/test_generated_site.rb +++ b/test/test_generated_site.rb @@ -1,6 +1,6 @@ require 'helper' -class TestGeneratedSite < Test::Unit::TestCase +class TestGeneratedSite < JekyllUnitTest context "generated sites" do setup do clear_dest @@ -73,7 +73,7 @@ OUTPUT end should "ensure limit posts is 0 or more" do - assert_raise ArgumentError do + assert_raises ArgumentError do clear_dest stub(Jekyll).configuration do Jekyll::Configuration::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'limit_posts' => -1}) @@ -84,14 +84,12 @@ OUTPUT end should "acceptable limit post is 0" do - assert_nothing_raised ArgumentError do - clear_dest - stub(Jekyll).configuration do - Jekyll::Configuration::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'limit_posts' => 0}) - end - - @site = Site.new(Jekyll.configuration) + clear_dest + stub(Jekyll).configuration do + Jekyll::Configuration::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'limit_posts' => 0}) end + + assert Site.new(Jekyll.configuration), "Couldn't create a site with the given limit_posts." end end end diff --git a/test/test_kramdown.rb b/test/test_kramdown.rb index 3998e9d3..7101baaa 100644 --- a/test/test_kramdown.rb +++ b/test/test_kramdown.rb @@ -2,7 +2,7 @@ require 'helper' -class TestKramdown < Test::Unit::TestCase +class TestKramdown < JekyllUnitTest context "kramdown" do setup do @config = { diff --git a/test/test_layout_reader.rb b/test/test_layout_reader.rb index ff979c2b..fc2f1fc3 100644 --- a/test/test_layout_reader.rb +++ b/test/test_layout_reader.rb @@ -1,6 +1,6 @@ require 'helper' -class TestLayoutReader < Test::Unit::TestCase +class TestLayoutReader < JekyllUnitTest context "reading layouts" do setup do stub(Jekyll).configuration do diff --git a/test/test_liquid_extensions.rb b/test/test_liquid_extensions.rb index 2395a8de..0ab95e94 100644 --- a/test/test_liquid_extensions.rb +++ b/test/test_liquid_extensions.rb @@ -1,6 +1,6 @@ require 'helper' -class TestLiquidExtensions < Test::Unit::TestCase +class TestLiquidExtensions < JekyllUnitTest context "looking up a variable in a Liquid context" do class SayHi < Liquid::Tag diff --git a/test/test_log_adapter.rb b/test/test_log_adapter.rb index 71272569..99b243bc 100644 --- a/test/test_log_adapter.rb +++ b/test/test_log_adapter.rb @@ -1,6 +1,6 @@ require 'helper' -class TestLogAdapter < Test::Unit::TestCase +class TestLogAdapter < JekyllUnitTest class LoggerDouble attr_accessor :level @@ -58,7 +58,7 @@ class TestLogAdapter < Test::Unit::TestCase should "call #error and abort" do logger = Jekyll::LogAdapter.new(LoggerDouble.new) stub(logger).error('topic', 'log message') { true } - assert_raise(SystemExit) { logger.abort_with('topic', 'log message') } + assert_raises(SystemExit) { logger.abort_with('topic', 'log message') } end end diff --git a/test/test_new_command.rb b/test/test_new_command.rb index 544a10c4..2e0fd45c 100644 --- a/test/test_new_command.rb +++ b/test/test_new_command.rb @@ -1,7 +1,7 @@ require 'helper' require 'jekyll/commands/new' -class TestNewCommand < Test::Unit::TestCase +class TestNewCommand < JekyllUnitTest def dir_contents(path) Dir["#{path}/**/*"].each do |file| file.gsub! path, '' @@ -79,9 +79,8 @@ class TestNewCommand < Test::Unit::TestCase should 'force created folder' do capture_stdout { Jekyll::Commands::New.process(@args) } - assert_nothing_raised(SystemExit) do - capture_stdout {Jekyll::Commands::New.process(@args, '--force') } - end + output = capture_stdout { Jekyll::Commands::New.process(@args, '--force') } + assert_match /New jekyll site installed in/, output end end @@ -108,7 +107,7 @@ class TestNewCommand < Test::Unit::TestCase end should 'raise an ArgumentError' do - exception = assert_raise ArgumentError do + exception = assert_raises ArgumentError do Jekyll::Commands::New.process(@empty_args) end assert_equal 'You must specify a path.', exception.message diff --git a/test/test_page.rb b/test/test_page.rb index 20ed3198..1c8dc215 100644 --- a/test/test_page.rb +++ b/test/test_page.rb @@ -1,6 +1,6 @@ require 'helper' -class TestPage < Test::Unit::TestCase +class TestPage < JekyllUnitTest def setup_page(*args) dir, file = args dir, file = ['', dir] if file.nil? diff --git a/test/test_path_sanitization.rb b/test/test_path_sanitization.rb index fa10e876..2a3182e3 100644 --- a/test/test_path_sanitization.rb +++ b/test/test_path_sanitization.rb @@ -1,6 +1,6 @@ require 'helper' -class TestPathSanitization < Test::Unit::TestCase +class TestPathSanitization < JekyllUnitTest context "on Windows with absolute source" do setup do @source = "C:/Users/xmr/Desktop/mpc-hc.org" diff --git a/test/test_plugin_manager.rb b/test/test_plugin_manager.rb index 0d12a254..9cdb45d8 100644 --- a/test/test_plugin_manager.rb +++ b/test/test_plugin_manager.rb @@ -1,6 +1,6 @@ require 'helper' -class TestPluginManager < Test::Unit::TestCase +class TestPluginManager < JekyllUnitTest def with_no_gemfile FileUtils.mv "Gemfile", "Gemfile.old" yield diff --git a/test/test_post.rb b/test/test_post.rb index 63684241..ef5b4a46 100644 --- a/test/test_post.rb +++ b/test/test_post.rb @@ -2,7 +2,7 @@ require 'helper' -class TestPost < Test::Unit::TestCase +class TestPost < JekyllUnitTest def setup_post(file) Post.new(@site, source_dir, '', file) end @@ -103,7 +103,7 @@ class TestPost < Test::Unit::TestCase end should "raise a good error on invalid post date" do - assert_raise Jekyll::Errors::FatalException do + assert_raises Jekyll::Errors::FatalException do @post.process("2009-27-03-foo-bar.textile") end end diff --git a/test/test_rdiscount.rb b/test/test_rdiscount.rb index da9401cf..ea1756d7 100644 --- a/test/test_rdiscount.rb +++ b/test/test_rdiscount.rb @@ -1,6 +1,6 @@ require 'helper' -class TestRdiscount < Test::Unit::TestCase +class TestRdiscount < JekyllUnitTest context "rdiscount" do setup do diff --git a/test/test_redcarpet.rb b/test/test_redcarpet.rb index ebf3b187..909df7bf 100644 --- a/test/test_redcarpet.rb +++ b/test/test_redcarpet.rb @@ -1,6 +1,6 @@ require 'helper' -class TestRedcarpet < Test::Unit::TestCase +class TestRedcarpet < JekyllUnitTest context "redcarpet" do setup do @config = { diff --git a/test/test_regenerator.rb b/test/test_regenerator.rb index 63ac3bd0..15819487 100644 --- a/test/test_regenerator.rb +++ b/test/test_regenerator.rb @@ -1,6 +1,6 @@ require 'helper' -class TestRegenerator < Test::Unit::TestCase +class TestRegenerator < JekyllUnitTest context "The site regenerator" do setup do FileUtils.rm_rf(source_dir(".jekyll-metadata")) @@ -10,7 +10,8 @@ class TestRegenerator < Test::Unit::TestCase "methods" => { "output" => true } - } + }, + "full_rebuild" => false }) @site.read @@ -162,7 +163,7 @@ class TestRegenerator < Test::Unit::TestCase @regenerator.write_metadata @regenerator = Regenerator.new(@site) - assert_not_same File.mtime(@path), @regenerator.metadata[@path]["mtime"] + refute_same File.mtime(@path), @regenerator.metadata[@path]["mtime"] assert @regenerator.modified?(@path) end diff --git a/test/test_related_posts.rb b/test/test_related_posts.rb index 054ef9ae..645f2bfb 100644 --- a/test/test_related_posts.rb +++ b/test/test_related_posts.rb @@ -1,6 +1,6 @@ require 'helper' -class TestRelatedPosts < Test::Unit::TestCase +class TestRelatedPosts < JekyllUnitTest context "building related posts without lsi" do setup do stub(Jekyll).configuration do diff --git a/test/test_sass.rb b/test/test_sass.rb index 50d174ba..153c339a 100644 --- a/test/test_sass.rb +++ b/test/test_sass.rb @@ -1,6 +1,6 @@ require 'helper' -class TestSass < Test::Unit::TestCase +class TestSass < JekyllUnitTest context "importing partials" do setup do @site = Jekyll::Site.new(Jekyll.configuration({ diff --git a/test/test_site.rb b/test/test_site.rb index 409392fd..c460d873 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -1,6 +1,6 @@ require 'helper' -class TestSite < Test::Unit::TestCase +class TestSite < JekyllUnitTest context "configuring sites" do should "have an array for plugins by default" do site = Site.new(Jekyll::Configuration::DEFAULTS) @@ -71,7 +71,7 @@ class TestSite < Test::Unit::TestCase @site = Site.new(site_configuration) @site.read @site.generate - assert_not_equal 0, @site.pages.size + refute_equal 0, @site.pages.size assert_equal 'hi', @site.file_read_opts[:secret_message] end @@ -118,7 +118,7 @@ class TestSite < Test::Unit::TestCase sleep 1 @site.process mtime3 = File.stat(dest).mtime.to_i - assert_not_equal mtime2, mtime3 # must be regenerated! + refute_equal mtime2, mtime3 # must be regenerated! sleep 1 @site.process @@ -228,13 +228,13 @@ class TestSite < Test::Unit::TestCase context 'error handling' do should "raise if destination is included in source" do - assert_raise Jekyll::Errors::FatalException do + assert_raises Jekyll::Errors::FatalException do site = Site.new(site_configuration('destination' => source_dir)) end end should "raise if destination is source" do - assert_raise Jekyll::Errors::FatalException do + assert_raises Jekyll::Errors::FatalException do site = Site.new(site_configuration('destination' => File.join(source_dir, ".."))) end end @@ -309,9 +309,7 @@ class TestSite < Test::Unit::TestCase custom_processor = "CustomMarkdown" s = Site.new(site_configuration('markdown' => custom_processor)) - assert_nothing_raised do - s.process - end + assert !!s.process # Do some cleanup, we don't like straggling stuff's. Jekyll::Converters::Markdown.send(:remove_const, :CustomMarkdown) @@ -332,7 +330,7 @@ class TestSite < Test::Unit::TestCase bad_processor = "Custom::Markdown" s = Site.new(site_configuration('markdown' => bad_processor, 'full_rebuild' => true)) - assert_raise Jekyll::Errors::FatalException do + assert_raises Jekyll::Errors::FatalException do s.process end @@ -344,15 +342,13 @@ class TestSite < Test::Unit::TestCase context 'with an invalid markdown processor in the configuration' do should 'not throw an error at initialization time' do bad_processor = 'not a processor name' - assert_nothing_raised do - Site.new(site_configuration('markdown' => bad_processor)) - end + assert Site.new(site_configuration('markdown' => bad_processor)) end should 'throw FatalException at process time' do bad_processor = 'not a processor name' s = Site.new(site_configuration('markdown' => bad_processor, 'full_rebuild' => true)) - assert_raise Jekyll::Errors::FatalException do + assert_raises Jekyll::Errors::FatalException do s.process end end diff --git a/test/test_tags.rb b/test/test_tags.rb index 931c3830..4db4ab85 100644 --- a/test/test_tags.rb +++ b/test/test_tags.rb @@ -2,7 +2,7 @@ require 'helper' -class TestTags < Test::Unit::TestCase +class TestTags < JekyllUnitTest def create_post(content, override = {}, converter_class = Jekyll::Converters::Markdown) stub(Jekyll).configuration do @@ -56,7 +56,7 @@ CONTENT assert_match r, "x.y" assert_match r, "coffee-script" - assert_no_match r, "blah^" + refute_match r, "blah^" assert_match r, "ruby key=val" assert_match r, "ruby a=b c=d" @@ -143,7 +143,7 @@ CONTENT end should "not cause a markdown error" do - assert_no_match /markdown\-html\-error/, @result + refute_match /markdown\-html\-error/, @result end should "render markdown with pygments" do @@ -410,7 +410,7 @@ CONTENT end should "not cause an error" do - assert_no_match /markdown\-html\-error/, @result + refute_match /markdown\-html\-error/, @result end should "have the url to the \"complex\" post from 2008-11-21" do @@ -434,7 +434,7 @@ CONTENT end should "not cause an error" do - assert_no_match /markdown\-html\-error/, @result + refute_match /markdown\-html\-error/, @result end should "have the url to the \"complex\" post from 2008-11-21" do @@ -458,7 +458,7 @@ title: Invalid post name linking {% post_url abc2008-11-21-complex %} CONTENT - assert_raise ArgumentError do + assert_raises ArgumentError do create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) end end @@ -470,7 +470,7 @@ CONTENT should "not allow symlink includes" do File.open("tmp/pages-test", 'w') { |file| file.write("SYMLINK TEST") } - assert_raise IOError do + assert_raises IOError do content = < 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true, 'safe' => true }) end - assert_no_match /SYMLINK TEST/, @result + refute_match /SYMLINK TEST/, @result end should "not expose the existence of symlinked files" do - ex = assert_raise IOError do + ex = assert_raises IOError do content = < 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) end @@ -543,7 +543,7 @@ title: Invalid parameter syntax {% include params.html params="value %} CONTENT - assert_raise ArgumentError, 'Did not raise exception on invalid "include" syntax' do + assert_raises ArgumentError, 'Did not raise exception on invalid "include" syntax' do create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) end end @@ -636,7 +636,7 @@ CONTENT end should "raise error relative to source directory" do - exception = assert_raise IOError do + exception = assert_raises IOError do create_post(@content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) end assert_equal 'Included file \'_includes/missing.html\' not found', exception.message @@ -730,7 +730,7 @@ CONTENT end should "raise error relative to source directory" do - exception = assert_raise IOError do + exception = assert_raises IOError do create_post(@content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) end assert_equal 'Included file \'./missing.html\' not found', exception.message @@ -749,7 +749,7 @@ CONTENT end should "raise error relative to source directory" do - exception = assert_raise ArgumentError do + exception = assert_raises ArgumentError do create_post(@content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) end assert_equal "Invalid syntax for include tag. File contains invalid characters or sequences:\n\n ../README.markdown\n\nValid syntax:\n\n {% include_relative file.ext param='value' param2='value' %}\n\n", exception.message @@ -761,7 +761,7 @@ CONTENT should "not allow symlink includes" do File.open("tmp/pages-test", 'w') { |file| file.write("SYMLINK TEST") } - assert_raise IOError do + assert_raises IOError do content = < 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true, 'safe' => true }) end - assert_no_match /SYMLINK TEST/, @result + refute_match /SYMLINK TEST/, @result end should "not expose the existence of symlinked files" do - ex = assert_raise IOError do + ex = assert_raises IOError do content = <