2011-06-01 43 views
9

Tôi đang cố gắng giới hạn các thư mục vào một thư mục cụ thể, tuy nhiên trong suốt quá trình chạy thử nó bao gồm các thư mục mẹ của thư mục tôi đang nhắm mục tiêu và làm như vậy.Nosetest bao gồm các thư mục mẹ không mong muốn

Dưới đây là những yếu tố then chốt của đầu ra từ quá trình chạy thử:

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 

Tôi đang sử dụng buildout với pbp.recipe.noserunner. Đây là liên quan /projects/myproject/buildout.cfg phần:

[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 

Tôi cũng đã cố gắng thiết lập where=myproject/specs là một trong những thông số defaults để giúp hạn chế việc nhập khẩu nhưng vẫn không có niềm vui.

Bất kỳ đề xuất nào về nơi tôi gặp sự cố?

Edit:

Tôi đã cố gắng để --exclude các thư mục mẹ nhưng không có niềm vui.

Trả lời

5

Tôi cho rằng bạn đang mong đợi hành vi sau.

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

Tại sao không thử một hoặc một mô hình --match--exclude để hạn chế các cuộc thử nghiệm thiết lập?

Hãy thử:

--exclude myproject/myproject 

tôi kiểm tra mã nguồn của nose.importer: mũi recursivly add_path cha mẹ gói thông số kỹ thuật. Tôi nghĩ rằng bạn không thể bỏ qua điều này trừ khi bạn tạo một nhà nhập khẩu cụ thể ... Tôi không biết liệu API này có khả thi hay không.

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

Cảm ơn; Tôi nên đã nhận ra cách tốt nhất để điều tra là đọc nguồn! –

+1

Vì vậy, hãy chắc chắn rằng bạn không có một '__init __. Py' (hoặc' __init __. Pyc'), nơi nó không được yêu cầu, phải không? – Danimal

Các vấn đề liên quan