module Minispec

public module. to be used for inclusions by end users.

Attributes

assertions[RW]
specs[RW]
tests[RW]

Public Class Methods

included(base) click to toggle source
# File lib/minispec.rb, line 134
def included base
  base.extend(MiniSpec::ClassAPI)
  base.send(:include, MiniSpec::InstanceAPI)

  # inserting global shared resources defined inside Minispec module
  MiniSpec::IMPORTABLES.each do |importable|
    base.send('import_%s' % importable, self)
  end

  specs.push(base) unless specs.include?(base)
end
run(opts = {}) click to toggle source
# File lib/minispec.rb, line 146
def run opts = {}
  files = opts[:files] || opts[:file]
  files ||= File.basename($0) == 'minispec' && $*.any? && $*
  files ||= Dir[File.join(Dir.pwd, opts[:pattern] || MiniSpec::DEFAULT_PATTERN)]
  files = [files] unless files.is_a?(Array)

  $:.include?(Dir.pwd) || $:.unshift(Dir.pwd)
  lib = File.join(Dir.pwd, 'lib')
  !$:.include?(lib) && File.directory?(lib) && $:.unshift(lib)

  pwd = /\A#{Regexp.escape(Dir.pwd)}\//.freeze
  files.each do |f|
    path = File.expand_path(File.dirname(f), Dir.pwd).sub(pwd, '')
    path = File.join(Dir.pwd, path.split('/').first)
    $:.include?(path) || $:.unshift(path)
    require(f)
  end
  reporter = opts[:reporter] || MiniSpec::Reporter.new
  specs.each {|s| s.run(reporter)}
  reporter.summary
  exit(1) if reporter.failures?
end