Forum: Ruby rake test help

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
9a644ee8f45272d562ad8679886e75c0?d=identicon&s=25 jeff gr (jgrice)
on 2007-01-12 17:04
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
Ae36591847393e58ff189704f5eb18f2?d=identicon&s=25 Jeremy Hinegardner (Guest)
on 2007-01-19 16:31
(Received via mailing list)
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.

>                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'


>    ./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
9a644ee8f45272d562ad8679886e75c0?d=identicon&s=25 jeff gr (jgrice)
on 2007-09-25 22:33
(Received via mailing list)
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!
Ae36591847393e58ff189704f5eb18f2?d=identicon&s=25 Jeremy Hinegardner (Guest)
on 2007-09-25 22:46
(Received via mailing list)
On Sat, Jan 13, 2007 at 03:31:56AM +0900, Jeff Grice wrote:
> 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
This topic is locked and can not be replied to.