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
-~----------~----~----~----~------~----~------~--~---

Reply via email to