On Oct 9, 2009, at 7:20 PM, David E. Wheeler wrote: > Maybe Foo::Bar > overrode a method defined in Foo. That might lead to something > unexpected. But I have a hard time believing that anyone would have > done this, not least because these are classes with class attributes, > not objects. So there isn't really much in the way of state.
Shawn found one regression against my branch in the Jifty tests, and it appears that this is exactly the case being tested. Here's one of the three failures: > not ok 12 - found content '/base/list=TestApp::View::instance/ > instance/view=TestApp::View::instance/instance/ > view=TestApp::View::instance' > > # Failed test 'found content '/base/list=TestApp::View::instance/ > instance/view=TestApp::View::instance/instance/ > view=TestApp::View::instance'' > # at t/TestApp/t/15-template-subclass.t line 73. > # searched: "/base/list=TestApp::View::base/base/ > view=TestApp::"... > # can't find: "/base/list=TestApp::View::instance/instance/ > view=T"... > ok 13 - get 'http://localhost:11379: /jifty/jifty/trunk/t/TestApp/t/ > 15-template-subclass.t /instance/list_ht' In these tests, TestApp::View::instance subclasses TestApp::View::base. The templates in the latter output outs("/base/list=$self"); So it fails because, with my changes, $self is ::base instead of ::instance. That just demonstrates the point, and at first I just assumed that the tests could perhaps be changed. However, looking at the template classes, I see that both ::base and ::instance implement a base_path() method. ::instance overrides its the implementation in base. Therefor, when the base templates call show($self->base_path.'/view'); it's relying on getting the value for the method returned by the implementation in ::instance. So this does seem to be the the one way I could see that the existing behavior might have been correct. So it leads me to wonder: Could it be that the behavior of `import_templates`, which always passes in the class in which a method is defined, could be wrong? I'm wondering now whether, if I changed it so that `import_methods` works like `alias` in this way, would there be other regressions? In other words, what happens if I make `import_temlates` consistent with `alias` instead of the other way around, with respect to the class name passed to the template? Do you think that would make more sense? Thanks, David _______________________________________________ jifty-devel mailing list jifty-devel@lists.jifty.org http://lists.jifty.org/cgi-bin/mailman/listinfo/jifty-devel