Module: Hoe::Test

Defined in:
lib/hoe/test.rb

Overview

Test plugin for hoe.

Tasks Provided:

audit

Run ZenTest against the package.

default

Run the default task(s).

multi

Run the test suite using multiruby.

test

Run the test suite.

test_deps

Show which test files fail when run alone.

Constant Summary collapse

SUPPORTED_TEST_FRAMEWORKS =

Configuration for the supported test frameworks for test task.

{
  :minitest => "minitest/autorun",
  :none     => nil,
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#multiruby_skipObject

Optional: Array of incompatible versions for multiruby filtering. Used as a regex.

Can be defined both in .hoerc and in your hoe spec. Both will be used.


30
31
32
# File 'lib/hoe/test.rb', line 30

def multiruby_skip
  @multiruby_skip
end

#test_preludeObject

Optional: Additional ruby to run before the test framework is loaded.


40
41
42
# File 'lib/hoe/test.rb', line 40

def test_prelude
  @test_prelude
end

#test_taskObject

The test task created for this plugin.


45
46
47
# File 'lib/hoe/test.rb', line 45

def test_task
  @test_task
end

#testlibObject

Optional: What test library to require [default: :minitest]


35
36
37
# File 'lib/hoe/test.rb', line 35

def testlib
  @testlib
end

Instance Method Details

#define_test_tasksObject

Define tasks for plugin.

[View source]

60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/hoe/test.rb', line 60

def define_test_tasks
  default_tasks = []

  task :test

  if File.directory? "test" then
    case testlib
    when :minitest then
      require "minitest/test_task" # in minitest 5.16+

      test_prelude = self.test_prelude
      self.test_task = Minitest::TestTask.create :test do |t|
        t.test_prelude = test_prelude
        t.libs.prepend Hoe.include_dirs.uniq
      end
    when :none then
      # do nothing
    else
      warn "Unsupported? Moving to Minitest::TestTask. Let me know if you use this!"
    end

    desc "Run the test suite using multiruby."
    task :multi do
      skip = with_config do |config, _|
        config["multiruby_skip"] + self.multiruby_skip
      end

      ENV["EXCLUDED_VERSIONS"] = skip.join(":")
      system "multiruby -S rake"
    end

    default_tasks << :test
  end

  desc "Run the default task(s)."
  task :default => default_tasks

  desc "Run ZenTest against the package."
  task :audit do
    libs = %w[lib test ext].join(File::PATH_SEPARATOR)
    sh "zentest -I=#{libs} #{spec.files.grep(/^(lib|test)/).join(" ")}"
  end
end

#initialize_testObject

Initialize variables for plugin.

[View source]

50
51
52
53
54
55
# File 'lib/hoe/test.rb', line 50

def initialize_test
  self.multiruby_skip ||= []
  self.testlib        ||= :minitest
  self.test_prelude   ||= nil
  self.test_task        = nil
end