Class: RDoc::TestCase

Inherits:
MiniTest::Unit::TestCase
  • Object
show all
Defined in:
lib/rdoc/test_case.rb

Overview

RDoc::TestCase is an abstract TestCase to provide common setup and teardown across all RDoc tests. The test case uses minitest, so all the assertions of minitest may be used.

The testcase provides the following:

  • A reset code-object tree

  • A reset markup preprocessor (RDoc::Markup::PreProcess)

  • The @RM alias of RDoc::Markup (for less typing)

  • @pwd containing the current working directory

  • FileUtils, pp, Tempfile, Dir.tmpdir and StringIO

Direct Known Subclasses

Markup::FormatterTestCase

Instance Method Summary collapse

Instance Method Details

#assert_directory(path) ⇒ Object

Asserts path is a directory



74
75
76
# File 'lib/rdoc/test_case.rb', line 74

def assert_directory path
  assert File.directory?(path), "#{path} is not a directory"
end

#assert_file(path) ⇒ Object

Asserts path is a file



67
68
69
# File 'lib/rdoc/test_case.rb', line 67

def assert_file path
  assert File.file?(path), "#{path} is not a file"
end

#blank_lineObject

Shortcut for RDoc::Markup::BlankLine.new



88
89
90
# File 'lib/rdoc/test_case.rb', line 88

def blank_line
  @RM::BlankLine.new
end

#block(*contents) ⇒ Object

Shortcut for RDoc::Markup::BlockQuote.new with contents



95
96
97
# File 'lib/rdoc/test_case.rb', line 95

def block *contents
  @RM::BlockQuote.new(*contents)
end

#comment(text, top_level = @top_level) ⇒ Object

Creates an RDoc::Comment with text which was defined on top_level. By default the comment has the ‘rdoc’ format.



103
104
105
# File 'lib/rdoc/test_case.rb', line 103

def comment text, top_level = @top_level
  RDoc::Comment.new text, top_level
end

#doc(*contents) ⇒ Object

Shortcut for RDoc::Markup::Document.new with contents



110
111
112
# File 'lib/rdoc/test_case.rb', line 110

def doc *contents
  @RM::Document.new(*contents)
end

#hard_breakObject

Shortcut for RDoc::Markup::HardBreak.new



117
118
119
# File 'lib/rdoc/test_case.rb', line 117

def hard_break
  @RM::HardBreak.new
end

#head(level, text) ⇒ Object

Shortcut for RDoc::Markup::Heading.new with level and text



124
125
126
# File 'lib/rdoc/test_case.rb', line 124

def head level, text
  @RM::Heading.new level, text
end

#item(label = nil, *parts) ⇒ Object

Shortcut for RDoc::Markup::ListItem.new with label and parts



131
132
133
# File 'lib/rdoc/test_case.rb', line 131

def item label = nil, *parts
  @RM::ListItem.new label, *parts
end

#list(type = nil, *items) ⇒ Object

Shortcut for RDoc::Markup::List.new with type and items



138
139
140
# File 'lib/rdoc/test_case.rb', line 138

def list type = nil, *items
  @RM::List.new type, *items
end

#mu_pp(obj) ⇒ Object

Enables pretty-print output



145
146
147
148
149
150
# File 'lib/rdoc/test_case.rb', line 145

def mu_pp obj # :nodoc:
  s = ''
  s = PP.pp obj, s
  s = s.force_encoding Encoding.default_external if defined? Encoding
  s.chomp
end

#para(*a) ⇒ Object

Shortcut for RDoc::Markup::Paragraph.new with contents



155
156
157
# File 'lib/rdoc/test_case.rb', line 155

def para *a
  @RM::Paragraph.new(*a)
end

#raw(*contents) ⇒ Object

Shortcut for RDoc::Markup::Raw.new with contents



169
170
171
# File 'lib/rdoc/test_case.rb', line 169

def raw *contents
  @RM::Raw.new(*contents)
end

#refute_file(path) ⇒ Object

Refutes path exists



81
82
83
# File 'lib/rdoc/test_case.rb', line 81

def refute_file path
  refute File.exist?(path), "#{path} exists"
end

#rule(weight) ⇒ Object

Shortcut for RDoc::Markup::Rule.new with weight



162
163
164
# File 'lib/rdoc/test_case.rb', line 162

def rule weight
  @RM::Rule.new weight
end

#setupObject

Abstract test-case setup



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/rdoc/test_case.rb', line 39

def setup
  super

  @top_level = nil

  @have_encoding = Object.const_defined? :Encoding

  @RM = RDoc::Markup

  RDoc::Markup::PreProcess.reset

  @pwd = Dir.pwd

  @store = RDoc::Store.new

  @rdoc = RDoc::RDoc.new
  @rdoc.store = @store
  @rdoc.options = RDoc::Options.new

  g = Object.new
  def g.class_dir() end
  def g.file_dir() end
  @rdoc.generator = g
end

#temp_dirObject

Creates a temporary directory changes the current directory to it for the duration of the block.

Depends upon Dir.mktmpdir



179
180
181
182
183
184
185
186
187
# File 'lib/rdoc/test_case.rb', line 179

def temp_dir
  skip "No Dir::mktmpdir, upgrade your ruby" unless Dir.respond_to? :mktmpdir

  Dir.mktmpdir do |temp_dir|
    Dir.chdir temp_dir do
      yield temp_dir
    end
  end
end

#verb(*parts) ⇒ Object

Shortcut for RDoc::Markup::Verbatim.new with parts



192
193
194
# File 'lib/rdoc/test_case.rb', line 192

def verb *parts
  @RM::Verbatim.new(*parts)
end

#verbose_capture_ioObject

run capture_io with setting $VERBOSE = true



199
200
201
202
203
204
205
206
207
208
209
# File 'lib/rdoc/test_case.rb', line 199

def verbose_capture_io
  capture_io do
    begin
      orig_verbose = $VERBOSE
      $VERBOSE = true
      yield
    ensure
      $VERBOSE = orig_verbose
    end
  end
end