File tree Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Original file line number Diff line number Diff line change @@ -44,6 +44,12 @@ class Pipeline
4444 autoload :TextFilter , 'html/pipeline/text_filter'
4545
4646 class MissingDependencyError < LoadError ; end
47+ def self . require_dependency ( name , requirer )
48+ require name
49+ rescue LoadError => e
50+ raise MissingDependencyError ,
51+ "Missing dependency '#{ name } ' for #{ requirer } . See README.md for details.\n #{ e . class . name } : #{ e } "
52+ end
4753
4854 # Our DOM implementation.
4955 DocumentFragment = Nokogiri ::HTML ::DocumentFragment
Original file line number Diff line number Diff line change 1+ # encoding: utf-8
2+ require "test_helper"
3+
4+ class HTML ::Pipeline ::RequireHelperTest < Minitest ::Test
5+
6+ def test_works_with_existing
7+ HTML ::Pipeline . require_dependency ( 'rake' , 'SomeClass' )
8+ end
9+
10+ def test_raises_mising_dependency_error
11+ assert_raises HTML ::Pipeline ::MissingDependencyError do
12+ HTML ::Pipeline . require_dependency ( 'non-existant' , 'SomeClass' )
13+ end
14+ end
15+
16+ def test_raises_error_including_message
17+ error = assert_raises ( LoadError ) do
18+ HTML ::Pipeline . require_dependency ( 'non-existant' , 'SomeClass' )
19+ end
20+ assert_includes ( error . message , "Missing dependency 'non-existant' for SomeClass. See README.md for details." )
21+ end
22+
23+ def test_raises_error_includes_underlying_message
24+ error = assert_raises LoadError do
25+ HTML ::Pipeline . require_dependency ( 'non-existant' , 'SomeClass' )
26+ end
27+ assert_includes ( error . message , "LoadError: cannot load such file" )
28+ end
29+ end
You can’t perform that action at this time.
0 commit comments