2011-06-01 14 views
9

मैं किसी विशिष्ट निर्देशिका में नोसेटेट को सीमित करने की कोशिश कर रहा हूं, हालांकि परीक्षण चलाने के दौरान इसमें डीआईआर की मूल निर्देशिका शामिल है जिसमें मैं लक्ष्य कर रहा हूं और ऐसा करने में त्रुटियां फेंकता है।अवांछित पैरेंट निर्देशिकाओं सहित नोसेटेट

यहाँ परीक्षण रन से उत्पादन का प्रमुख तत्व है:

nose.importer: DEBUG: Add path /projects/myproject/myproject/specs 
nose.importer: DEBUG: Add path /projects/myproject/myproject 
nose.importer: DEBUG: Add path /projects/myproject 
nose.importer: DEBUG: insert /projects/myproject into sys.path 

मैं pbp.recipe.noserunner साथ buildout उपयोग कर रहा हूँ।

[specs] 
recipe = pbp.recipe.noserunner 
eggs = 
    pbp.recipe.noserunner 
    ${buildout:eggs} 
    figleaf 
    pinocchio 
working-directory = 
    myproject/specs 
defaults = 
    -vvv 
    --exe 
    --include ^(it|ensure|must|should|specs?|examples?) 
    --include (specs?(.py)?|examples?(.py)?)$ 
    --with-spec 
    --spec-color 

मैं भी defaults मानकों में से एक के रूप में स्थापित करने where=myproject/specs आयात, लेकिन अभी भी कोई खुशी की सीमा में मदद करने की कोशिश की है: यहाँ प्रासंगिक /projects/myproject/buildout.cfg अनुभाग है।

कोई सुझाव जहां मैं गलत हो रहा हूं?

संपादित करें:

मैं --exclude के माता पिता निर्देशिका लेकिन कोई खुशी की कोशिश की है।

उत्तर

5

मुझे लगता है कि आप निम्न व्यवहार की अपेक्षा कर रहे हैं।

nose.importer: DEBUG: Add path /projects/myproject 
nose.importer: DEBUG: insert /projects/myproject into sys.path 

क्यों एक --match या एक --exclude परीक्षण सेट को प्रतिबंधित करने के पैटर्न की कोशिश नहीं कर रहा?

प्रयास करें:

--exclude myproject/myproject 

मैं nose.importer के स्रोत कोड की जाँच करें: नाक recursivly चश्मा के माता-पिता संकुल add_path। मुझे लगता है कि जब तक आप एक विशिष्ट आयातक नहीं बनाते तब तक आप इसे बाईपास नहीं कर सकते ... मुझे नहीं पता कि यह नाक एपीआई संभव है या नहीं।

def add_path(path, config=None): 
    """Ensure that the path, or the root of the current package (if 
    path is in a package), is in sys.path. 
    """ 

    # FIXME add any src-looking dirs seen too... need to get config for that 

    log.debug('Add path %s' % path)  
    if not path: 
     return [] 
    added = [] 
    parent = os.path.dirname(path) 
    if (parent 
     and os.path.exists(os.path.join(path, '__init__.py'))): 
     added.extend(add_path(parent, config)) 
    elif not path in sys.path: 
     log.debug("insert %s into sys.path", path) 
     sys.path.insert(0, path) 
     added.append(path) 
    if config and config.srcDirs: 
     for dirname in config.srcDirs: 
      dirpath = os.path.join(path, dirname) 
      if os.path.isdir(dirpath): 
       sys.path.insert(0, dirpath) 
       added.append(dirpath) 
    return added 


def remove_path(path): 
    log.debug('Remove path %s' % path) 
    if path in sys.path: 
     sys.path.remove(path) 
+0

धन्यवाद; मुझे स्रोत को पढ़ने के लिए जांच करने का सबसे अच्छा तरीका पता होना चाहिए था! –

+1

तो फिर सुनिश्चित करें कि आपके पास '__init __। Py' (या' __init __। Pyc') नहीं है, जहां इसकी आवश्यकता नहीं है, है ना? – Danimal

संबंधित मुद्दे