Nosetest incluindo diretórios pai indesejados

9

Estou tentando limitar nosetests a um diretório específico, no entanto, durante o teste, ele inclui os diretórios pai do diretório que estou segmentando e, ao fazer isso, gera erros.

Aqui estão os principais elementos da saída do teste:

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

Estou usando buildout com pbp.recipe.noserunner . Aqui está a seção /projects/myproject/buildout.cfg relevante:

[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

Eu também tentei definir where=myproject/specs como um dos parâmetros defaults para ajudar a limitar a importação, mas ainda não há alegria.

Alguma sugestão de onde estou indo errado?

Editar:

Eu tentei --exclude os diretórios pai, mas não tenho alegria.

    
por Phillip B Oldham 01.06.2011 в 09:54
fonte

1 resposta

5

Suponho que você esteja esperando o seguinte comportamento.

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

Por que não experimentar um padrão --match ou --exclude para restringir o conjunto de testes?

Tente:

--exclude myproject/myproject

Eu verifico o código fonte de nose.importer: nariz recursivamente add_path os pacotes de especificações dos pais. Eu acho que você não pode ignorar isso, a menos que você crie um importador específico ... Eu não sei se isso é possível nesta API do nariz.

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)
    
por VGE 07.06.2011 / 14:09
fonte