On 02.11.2007 19:45, transfire / gmail.com wrote: > > On Nov 2, 1:30 pm, Robert Klemme <shortcut... / googlemail.com> wrote: >> On 02.11.2007 15:21, transf... / gmail.com wrote: >> >> >> >> >> >>> On Nov 2, 5:40 am, "Robert Klemme" <shortcut... / googlemail.com> wrote: >>>> 2007/11/2, Trans <transf... / gmail.com>: >>>>> On Nov 1, 10:38 pm, "ara.t.howard" <ara.t.how... / gmail.com> wrote: >>>>>> On Nov 1, 2007, at 6:18 PM, Trans wrote: >>>>>>> Is there any way to ask a file what other file require/load 'd it? I >>>>>>> imagine this has been asked before but I couldnt seem to find good >>>>>>> terms to search for it. >>>>>> cfp:~ > cat a.rb >>>>>> p Kernel.requiree('main') >>>>>> require 'b' >>>>>> p Kernel.requiree('main') >>>>>> BEGIN { >>>>>> module Kernel >>>>>> h = Hash.new >>>>>> define_method(:requiree) do |of| >>>>>> h[of] >>>>>> end >>>>>> r = method :require >>>>>> define_method(:require) do |*a| >>>>>> r.call *a >>>>>> h[a.first] = caller >>>>>> end >>>>>> end >>>>>> } >>>>> Doh! Of course! >>>>> Thanks Ara, that allowed me to figure it out. >>>>> Turns out using 'load' to load the test rather then passing it >>>>> straight to the ruby command, for some reason, gives test/unit the >>>>> idea that it should go out and hunt for every file it can find with a >>>>> test in it, including the copies in pkg/. That seems nuts me, but now >>>>> I recall having to specify some parameter to reign test/unit in before >>>>> --don't recall off hand what it was though. I'll have to track that >>>>> down. In any case >>>>> test_files.each do |file| >>>>> sh %{ruby -e #{file} >> #{output}} >>>>> end >>>>> works, and that's good enough. >>>> Just out of curiosity: why don't you use the test packages mechanisms >>>> to run multiple tests (TestSuite)? >>> I need to keep them isolated to make sure they all work on their own. >>> How would you use the test/unit mechanisms to do that? >> I am not sure what you mean by "on their own". Do you expect side >> effects from test executions? From what I understand a TestCase should >> ideally be independent and probably also side effect free. Then you >> could easily lump them into a single TestSuite. The only issue I can >> think of off the top of my head would be class instance variables and >> required files which might yield different results - but then again, >> relying on a specific require order is probably not a good idea in its own. > > There are a couple of aspects to isolating the tests. The main one is > just making sure that a lib requires all the libs it needs to operate. > Sometimes one lib gets loaded that requires something that another > will use, so if they are both loaded you can't tell if they can act > independently. Also, it is possible that some libs are meant as > options, ie you use one or the other, but not both. I imagine there > may well be other reasons. To be thorough, I run tests in isolation, > in pairs, and as a whole. Really this has more to do with the nature > of Facets. Facets isn't just a single library, it's a (lightly > integrated) collection of them. Makes perfectly sense to me. Thanks for the explanation. This would make it interesting to have something like transactions built into the interpreter - that way you could undefine stuff without having to execute a new interpreter. I should go to bed now before I come up with more silly ideas. Kind regards robert