On Sat, Jan 13, 2007 at 01:04:29AM +0900, Jeff Grice wrote: > 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 -- ======================================================================== Jeremy Hinegardner jeremy / hinegardner.org