I have seen a lot of discussions about the issue where if you run a unit test from the command line you get the error: "no such file to load -- test_helper" I have been using the workaround of changing: require ''test_helper'' to: require File.dirname(__FILE__) + ''/../test_helper'' I''m hoping there is a better way? Maybe a fix in edge rails? Anyone have an update? Thanks, Tom
2009/6/18 TomRossi7 <tom-5bxIUPmzHicFraO2wh7vUA@public.gmane.org>:> > I have seen a lot of discussions about the issue where if you run a > unit test from the command line you get the error: > > "no such file to load -- test_helper" > > I have been using the workaround of changing: > > require ''test_helper'' > > to: > > require File.dirname(__FILE__) + ''/../test_helper'' > > I''m hoping there is a better way? Maybe a fix in edge rails? Anyone > have an update?The recommended way of avoiding this issue is to use ruby -I test test/unit/whatever.rb Apparently putting the dirname in the require can cause all sorts of issues that I do not understand and we just have to put up with it. ( I don''t mean we have to put up with not understanding it). I must admit that since I have never come across any of those issues I just put the dirname in. My projects are personal rather than commercial however so the fact that I may fall over this some day is my problem only. I think if I were doing a commercial app I would probably not put the dirname in, and put up with it. Colin
Colin Law wrote:>> require File.dirname(__FILE__) + ''/../test_helper'' >> >> I''m hoping there is a better way? Maybe a fix in edge rails? Anyone >> have an update? > > The recommended way of avoiding this issue is to use > ruby -I test test/unit/whatever.rbHow to get that inside your rake test script?> Apparently putting the dirname in the require can cause all sorts of > issues that I do not understand and we just have to put up with it. ( > I don''t mean we have to put up with not understanding it).require ''../foo'' and require ''../../bar/foo'' will both load foo.rb twice. This is usually not what you want, but it''s a simplification in the current require system. Because all unit tests should run in the same VM, the ones in different folders will load test_helper again. Won''t this fix it? $:.unshift File.dirname(__FILE__) + ''/../'' require ''test_helper'' Then the second occurrence of require ''test_helper'' will not load twice, even if (on some dementedly configured system), the require File.dirname(__FILE__) + ''/../test_helper'' could have instead loaded a different one. -- Phlip
This works for me: require File.dirname(__FILE__) + ''/../test_helper'' I just wish I didn''t have to keep editing my test files. It sounds like there still isn''t a consensus on a workaround or a fix in the works from the Rails Core. Thanks, Tom On Jun 18, 6:06 pm, Phlip <phlip2...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Colin Law wrote: > >> require File.dirname(__FILE__) + ''/../test_helper'' > > >> I''m hoping there is a better way? Maybe a fix in edge rails? Anyone > >> have an update? > > > The recommended way of avoiding this issue is to use > > ruby -I test test/unit/whatever.rb > > How to get that inside your rake test script? > > > Apparently putting the dirname in the require can cause all sorts of > > issues that I do not understand and we just have to put up with it. ( > > I don''t mean we have to put up with not understanding it). > > require ''../foo'' and require ''../../bar/foo'' will both load foo.rb twice. This > is usually not what you want, but it''s a simplification in the current require > system. Because all unit tests should run in the same VM, the ones in different > folders will load test_helper again. > > Won''t this fix it? > > $:.unshift File.dirname(__FILE__) + ''/../'' > require ''test_helper'' > > Then the second occurrence of require ''test_helper'' will not load twice, even if > (on some dementedly configured system), the require File.dirname(__FILE__) + > ''/../test_helper'' could have instead loaded a different one. > > -- > Phlip
2009/6/18 Phlip <phlip2005-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>:> > Colin Law wrote: > >>> require File.dirname(__FILE__) + ''/../test_helper'' >>> >>> I''m hoping there is a better way? Maybe a fix in edge rails? Anyone >>> have an update? >> >> The recommended way of avoiding this issue is to use >> ruby -I test test/unit/whatever.rb > > How to get that inside your rake test script?You don''t, the OP referred to the problem that if you run a unit test from the command line you get the error. If instead of running the unit test by ruby test/unit/whatever.rb you use ruby -I test test/unit/whatever.rb the error does not appear as the test directory is included in the ruby path. The problem does not appear in the first place when using rake test Colin> >> Apparently putting the dirname in the require can cause all sorts of >> issues that I do not understand and we just have to put up with it. ( >> I don''t mean we have to put up with not understanding it). > > require ''../foo'' and require ''../../bar/foo'' will both load foo.rb twice. This > is usually not what you want, but it''s a simplification in the current require > system. Because all unit tests should run in the same VM, the ones in different > folders will load test_helper again. > > Won''t this fix it? > > $:.unshift File.dirname(__FILE__) + ''/../'' > require ''test_helper'' > > Then the second occurrence of require ''test_helper'' will not load twice, even if > (on some dementedly configured system), the require File.dirname(__FILE__) + > ''/../test_helper'' could have instead loaded a different one. > > -- > Phlip > > > > >