rake test help

J

Jeff Grice

Hi,

I am having difficulty using rake to run tests on a gem I have created.
I am able to run the tests I have created from the command line
individually without problem, but when I try to run through rake it
cannot locate the *.txt files that I use in the tests.

My folder structure has the tests in a folder under the rake file in
'tests' and the data files the tests are referencing are in
'tests/testdata'

The rakefile is set up as

Rake::TestTask.new do |t|
t.libs << "tests"
t.test_files = FileList['tests/test*.rb']
t.verbose = true
end

My test files are referencing *.txt files as follows:
def test_initialize
o = PAHelper::FilePeeker.new('testdata/peeker.txt', 1)
puts o.output_data
assert_equal(1, o.output_data.size)
end

when I run 'rake test' I get the following error:

1) Error:
test_initialize(TestFilePeeker):
Errno::ENOENT: No such file or directory - testdata/peeker.txt
./tests/../lib/file_peeker.rb:8:in `initialize'
./tests/../lib/file_peeker.rb:8:in `initialize'
tests/test_file_peeker.rb:7:in `test_initialize'

How do I set up my rakefile so that it can find the *.txt files in the
testdata folder?

Thanks,

JMG
 
J

Jeremy Hinegardner

I am having difficulty using rake to run tests on a gem I have created.
I am able to run the tests I have created from the command line
individually without problem, but when I try to run through rake it
cannot locate the *.txt files that I use in the tests.

My folder structure has the tests in a folder under the rake file in
'tests' and the data files the tests are referencing are in
'tests/testdata'

So you have:
project_dir/
Rakefile
tests/
tests/(lots of tests.rb)
tests/testdata/

And your current directory when you are running 'rake test' is
project_dir.
The rakefile is set up as

Rake::TestTask.new do |t|
t.libs << "tests"
t.test_files = FileList['tests/test*.rb']
t.verbose = true
end

My test files are referencing *.txt files as follows:
def test_initialize
o = PAHelper::FilePeeker.new('testdata/peeker.txt', 1)

The bug is here, the current directory when the test is executed is
'project_dir' but the test assumes it is 'project_dir/tests'

puts o.output_data
assert_equal(1, o.output_data.size)
end

when I run 'rake test' I get the following error:

1) Error:
test_initialize(TestFilePeeker):
Errno::ENOENT: No such file or directory - testdata/peeker.txt
./tests/../lib/file_peeker.rb:8:in `initialize'
./tests/../lib/file_peeker.rb:8:in `initialize'
tests/test_file_peeker.rb:7:in `test_initialize'

How do I set up my rakefile so that it can find the *.txt files in the
testdata folder?

If all of your tests are all in test/ directory the easy way would be to
change your FilePeeker line above to do something like:

# make sure we have the directory of the data data files, in this
# case it is relative to the test's directory by being up one and
# then down the 'testdata' directory
def setup
@data_dir = File.join(File.dirname(__FILE__),"..","testdata"))
....
end

def test_initialize
o = PAHelper::FilePeeker.new(File.join(@data_dir,'peeker.txt'))
puts o.output_data
assert_equal(1, o.output_data.size)
end

Munge as necessary for deep testing directories, etc.

enjoy,

-jeremy
 
J

Jeremy Hinegardner

Thanks, this worked great.

I added an @data_dir variable in all of my test setup methods and always
reference File.join(@data_dir, "[whatever_data_file].txt") for the data file
and all of my problems are solved!

Glad to help. Keep on having fun :)

enjoy,

-jeremy
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,149
Members
46,695
Latest member
StanleyDri

Latest Threads

Top