On Jan 18, 12:57 am, Paul McMahon <p... / ubit.com> wrote:
> You are using assert_raise improperly.  It should be
>
> assert_raise(RuntimeError) do
>    @search.run
> end
>
> see http://www.ruby-doc.org/core/classes/Test/Unit/Assertions.html#M006692

Hi Paul,

> http://www.ruby-doc.org/core/classes/Test/Unit/Assertions.html#M006692

Thanks for the reference.

OK,  I've got it: here are the first two validation expressions in
Search#validate:

fail  "Starting search directory is required: " +
(@dirname ? ('"' + @dirname + '"') : 'nil') +
" is not a directory"  unless
		@dirName && File.directory?(@dirName)

fail  "'#{@nameRE}' is not a valid regular expression for nameRE!"  if
			@nameRE && !@nameRE.instance_of?(Regexp)

The corresponding unit tests (all of which succeed) are:

	def test_000_DirRequired
		@search.dirName = nil
		assert_raise(RuntimeError) {@search.run}
	end

	def test_001_DirMustBeValid
		@search.dirName = '../no_such_dir'
		assert_raise(RuntimeError) {@search.run}
	end

	def test_002_IfNameGivenThenRE
		@search.nameRE = '/\.rb$'
		assert_raise(RuntimeError) {@search.run}
	end


And everything works as expected when actually using the setters for a
real invocation of Search.

Thanks for your help.

Best wishes,
Richard