Pavel, that's really odd. You mentioned that you can make a sample
project that will expose this error -- can you send me that?
On Thu, May 15, 2008 at 3:19 AM, Pavel Skvazh <[EMAIL PROTECTED]> wrote:
>
> Thanks for your reply!
>
> I've tried the method you described and it doesn't seem to work
> unfortunatly.
> Just stressing it out.
> The second i remove
> map.sub_domains = True
> and conditions=dict(sub_domain=['my']) from routing.py everything
> starts working.
>
> And the failure
> looks like
>
> Traceback (most recent call last):
> File "D:\Pylons\rusbiz\trunk\rusbiz\tests\functional
> \test_catalog.py", line 10, in setUp
> self.login('storos', 'explore')
> File "D:\Pylons\rusbiz\trunk\rusbiz\tests\functional
> \test_catalog.py", line 16, in login
> return url_for(controller='users', action='login')
> File "D:\Python25\lib\site-packages\routes-1.8-py2.5.egg\routes
> \util.py", line 205, in url_for
> newargs = _screenargs(kargs)
> File "D:\Python25\lib\site-packages\routes-1.8-py2.5.egg\routes
> \util.py", line 55, in _screenargs
> memory_kargs = _subdomain_check(config, memory_kargs)
> File "D:\Python25\lib\site-packages\routes-1.8-py2.5.egg\routes
> \util.py", line 66, in _subdomain_check
> fullhost = config.environ.get('HTTP_HOST') or \
> File "D:\Python25\lib\site-packages\routes-1.8-py2.5.egg\routes
> \__init__.py", line 14, in __getattr__
> return getattr(self.__shared_state, name)
> AttributeError: 'thread._local' object has no attribute 'environ'
>
> it occurs when i try to call url_for(controller='users',
> action='login', sub_domain='my')
>
> I can send you the sample project that displays this error
>
> On May 13, 9:26 pm, "Kumar McMillan" <[EMAIL PROTECTED]> wrote:
>> It's hard to understand what might be going on here but my only guess
>> is that your app-setup code to populate the thread local config object
>> is not getting run at the right time. This is tricky to get right in
>> nose because often times parts of your app want to access config
>> *before* it can be imported. What nose does is import just about
>> everything in your package before it runs the tests. If your test
>> setup is done like the pylons docs suggest, that is, at the module
>> level of test/__init__.py -- not within setup() -- then try this and
>> see if it helps:
>>
>> nosetests --where=yourapp/tests
>>
>> that will change dir to "yourapp/tests" (adjust the path as necessary)
>> and will only import from the tests directory. However you will have
>> to ensure that each test module says from yourapp import tests at the
>> top so the setup code gets run. Double check that.
>>
>> If that still doesn't work you'd have to revert back to a version of
>> your app where tests run OK then compare the differences. You might
>> want to run nosetests --debug=nose.importer,nose.selector to help
>> compare the differences in test execution.
>>
>> On Wed, May 7, 2008 at 8:49 AM, Pavel Skvazh <[EMAIL PROTECTED]> wrote:
>>
>> > Has anyone experienced problems with running nosetests on contoller,
>> > that is routed to the sub-domain?
>>
>> > Here's what I've got
>>
>> > controller/test.py
>> > class TestController(BaseController):
>> > def get(self):
>> > return True
>>
>> > routing.py
>> > Out of the box
>> > map.connect(':controller/:action/:id')
>> > map.connect(':action/:id', controller='main')
>> > map.connect('*url', controller='template', action='view')
>>
>> > class TestController(TestController):
>> > def test_get(self):
>> > response = self.app.get(url_for(controller='test',
>> > action='get'))
>> > r = response.body
>> > assert_true(r)
>>
>> > This works just fine.
>> > What do i change
>> > map.connect(':controller/:action/:id',
>> > conditions=dict(sub_domain=['my']))
>> > map.connect(':action/:id', controller='main',
>> > conditions=dict(sub_domain=['my']))
>> > map.connect('*url', controller='template', action='view')
>>
>> > I change in routing
>> > map.sub_domains = True
>> > map.sub_domains_ignore = ['www']
>>
>> > map.connect(':controller/:action/:id',
>> > conditions=dict(sub_domain=['my']))
>> > map.connect(':action/:id', controller='main',
>> > conditions=dict(sub_domain=['my']))
>> > map.connect('*url', controller='template', action='view')
>>
>> > And then no matter what i do in test
>>
>> > class TestController(TestController):
>> > def test_get(self):
>> > response = self.app.get(url_for(controller='test',
>> > action='get', sub_domain='my'))
>>
>> > r = response.body
>> > assert_true(r)
>>
>> > Here's what i get
>> > Traceback (most recent call last):
>> > File "\tests\functional\test.py", line 10
>> > , in setUp
>> > self.login('storos', 'explore')
>> > File "\tests\functional\test.py", line 16
>> > , in login
>> > response = self.app.post(url_for(controller='test', action='get',
>> > sub_dom
>> > ain='my'),
>> > File "D:\Python25\lib\site-packages\routes-1.8-py2.5.egg\routes
>> > \util.py", line
>> > 205, in url_for
>> > newargs = _screenargs(kargs)
>> > File "D:\Python25\lib\site-packages\routes-1.8-py2.5.egg\routes
>> > \util.py", line
>> > 55, in _screenargs
>> > memory_kargs = _subdomain_check(config, memory_kargs)
>> > File "D:\Python25\lib\site-packages\routes-1.8-py2.5.egg\routes
>> > \util.py", line
>> > 66, in _subdomain_check
>> > fullhost = config.environ.get('HTTP_HOST') or \
>> > File "D:\Python25\lib\site-packages\routes-1.8-py2.5.egg\routes
>> > \__init__.py",
>> > line 14, in __getattr__
>> > return getattr(self.__shared_state, name)
>> > AttributeError: 'thread._local' object has no attribute 'environ'
>>
>> > I cann't really figure what's going on here.
>> > return h.url_for(controller='tests', action='get', sub_domain='my')
>> > returns a perfectly legal url, so i cann't really see why test cann't
>> > see it as well
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pylons-discuss" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---