[rspec-users] spec_server requiring absolute paths (and autotest breaking)
Scott Taylor
mailing_lists at railsnewbie.com
Wed Feb 20 21:14:56 EST 2008
On Feb 20, 2008, at 1:52 AM, Jarkko Laine wrote:
> On 20.2.2008, at 6.55, Scott Taylor wrote:
>>> That said, now that autotest runs via drb, it's vastly (like 50%)
>>> slower than without it,
>>
>> That's the idea.
>
> Isn't the idea that specs run faster through drb, rather than
> slower? However, in general my specs seem to take a lot longer when
> run through autotest in the first place (compared to running just
> rake spec:models, e.g.). I haven't so far been able to track down
> what causes this.
Oops. Misread your post.
Is this true running a single spec (or a single file)? I've noticed
that a test suite which takes about 5 seconds normally takes about 7
seconds under drb (according to the numbers reported by rspec). Then
again, running a single file is blazingly fast, as their is no wait
(as though I'm testing against a non-rails project).
>
>>> Mock 'Location_18994' expected :valid? with (any args) once, but
>>> received it twice
>>
>> I saw this happen recently when the spec server was started twice:
>> once with the rake task (rake spec:server:start), the other with a
>> straight script/spec_sever. My hunch is that both servers are
>> loading the files at the same time.
>
> That would seem logical. However, I just checked that I only have
> one spec_server process running and am still able to reproduce the
> problem.
Hmm. Are you reloading classes or using anonymous classes derived
from AR::Base, or anything crazy like that? Are all your models in
app/models? Do you have pending migrations? Are your running with
rake, or with autotest? How about running the file alone?
>
>>> expected: "Barney Hops doesn't have the required competency (MBA)
>>> to teach this class",
>>> got: ["Barney Hops doesn't have the required competency (MBA)
>>> to teach this class", "Barney Hops doesn't have the required
>>> competency (MBA) to teach this class"]
>>>
>>
>> Yeah - this is because rails load's instead of requires. You'll also
>> see this sort of thing if you just call load directly in your specs.
>> I've never dug deeper into how all of the rails magic happens
>> regarding loading and constants (and the method generation with the
>> association macros (has_* belongs_to), so if you have any insight,
>> I'd be happy to hear it.
>
> Yeah, all these failures are certainly related and probably caused
> by something like what you describe. Got to try to figure out what
> spec_server does differently than normal spec. Or maybe we should
> just bite the bullet and make the deeptest spec fork work :-)
>
Yeah - deeptest is great for slow suites, but now that I have a fast
suite (take 5-7 seconds), deeptest probably wouldn't be much of a
performance gain for me.
Scott
More information about the rspec-users
mailing list