------ art_31760_26296488.1168626713655 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline 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! On 1/12/07, Jeremy Hinegardner <jeremy / hinegardner.org> wrote: > > > 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 ileList['tests/test*.rb'] > > t.verbose rue > > end > > > > My test files are referencing *.txt files as follows: > > def test_initialize > > o AHelper::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 ile.join(File.dirname(__FILE__),"..","testdata")) > .... > end > > def test_initialize > o AHelper::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 > > > -- >