On Tue, Jan 27, 2009 at 2:48 PM, Nick Hoffman <n...@deadorange.com> wrote: > G'day folks. I've been beating my head on this one problem for a couple of > hours, and have managed to figure out what's causing it. However, I don't > understand why it's happening, nor do I know how to solve or get around it. > > One of my methods clones an arg, and it seems that doing so causes state to > leak out. I discovered this because changing this: > new_subtitle = subtitle.clone > to this: > new_subtitle = subtitle > causes the problem to disappear. > > Before we get into the code snippets, are there any known caveats, warnings, > or problems with writing specs that cover the cloning or duplication of > objects? > > Here's the code, specs, and spec output: > http://gist.github.com/53482 > > As you can see, in the "should clone ..." example, the expectation on line > 24 succeeds, but the same expectation on line 28 fails. After that, the same > expectation fails in the "should not leak state" example.
What does your full SubtitleFile class look like? It looks like there is an issue with how the #subtitles method is storing information. Since you're using ActiveRecord::BaseWithoutTable there are probably not going to be any unique primary keys amongst your SubtitleFiles to help differentiate them. So if #subtitles is a has_many, every call to SubtitleFile#subtitles may lookup Subtitles in the exact same way w/o any unique key to use to differentiate which subtitles belong to which subtitle files which would produce the results you are seeing. Is Subtitle a ActiveRecord::BaseWithoutTable or a real ActiveRecord::Base model? > > Any idea what's going on? I'd appreciate any help at all. Thanks, > Nick > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > -- Zach Dennis http://www.continuousthinking.com http://www.mutuallyhuman.com _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users