Esempio n. 1
0
def test_meta_contents(tmpdir):
    env_matrix = helpers.tmp_env_matrix()
    config = {
        'env_matrix': env_matrix,
        'channels': ['bioconda', 'conda-forge', 'defaults']
    }
    bioconductor_skeleton.write_recipe('edgeR',
                                       recipe_dir=str(tmpdir),
                                       config=config,
                                       recursive=False)

    edger_meta = utils.load_meta(str(tmpdir.join('bioconductor-edger')), {})
    assert 'r-rcpp' in edger_meta['requirements']['build']

    # note that the preprocessing selector is stripped off by yaml parsing, so
    # just check for gcc
    if sys.platform == 'linux':
        assert 'gcc' in edger_meta['requirements']['build']
    elif sys.platform == 'darwin':
        assert 'llvm' in edger_meta['requirements']['build']
    else:
        raise ValueError('Unhandled platform: {}'.format(sys.platform))

    # bioconductor, bioarchive, and cargoport
    assert len(edger_meta['source']['url']) == 3
Esempio n. 2
0
def _build_pkg(recipe):
    r = Recipes(recipe, from_string=True)
    r.write_recipes()
    env_matrix = list(utils.EnvMatrix(tmp_env_matrix()))[0]
    recipe = r.recipe_dirs['one']
    built_package = utils.built_package_path(recipe)
    ensure_missing(built_package)
    build.build(recipe=r.recipe_dirs['one'], recipe_folder='.', env=env_matrix)
    return built_package
Esempio n. 3
0
def single_build(request, recipes_fixture):
    """
    Builds the "one" recipe.
    """
    env_matrix = list(utils.EnvMatrix(tmp_env_matrix()))[0]
    if request.param:
        docker_builder = docker_utils.RecipeBuilder(use_host_conda_bld=True)
    else:
        docker_builder = None
    build.build(
        recipe=recipes_fixture.recipe_dirs['one'],
        recipe_folder='.',
        docker_builder=docker_builder,
        env=env_matrix,
    )
    built_package = recipes_fixture.pkgs['one']
    yield built_package
    ensure_missing(built_package)
Esempio n. 4
0
def single_upload():
    """
    Creates a randomly-named recipe and uploads it using a label so that it
    doesn't affect the main bioconda channel. Tests that depend on this fixture
    get a tuple of name, pakage, recipe dir. Cleans up when it's done.
    """
    name = 'upload-test-' + str(uuid.uuid4()).split('-')[0]
    r = Recipes('''
        {0}:
          meta.yaml: |
            package:
              name: {0}
              version: "0.1"
        '''.format(name),
                from_string=True)
    r.write_recipes()

    env_matrix = list(utils.EnvMatrix(tmp_env_matrix()))[0]
    build.build(
        recipe=r.recipe_dirs[name],
        recipe_folder='.',
        docker_builder=None,
        mulled_test=False,
        env=env_matrix,
    )

    pkg = utils.built_package_path(r.recipe_dirs[name])

    with utils.temp_env(
            dict(TRAVIS_BRANCH='master', TRAVIS_PULL_REQUEST='false')):
        upload.anaconda_upload(pkg, label=TEST_LABEL)

    yield (name, pkg, r.recipe_dirs[name])

    p = sp.run([
        'anaconda', '-t',
        os.environ.get('ANACONDA_TOKEN'), 'remove',
        'bioconda/{0}'.format(name), '--force'
    ],
               stdout=sp.PIPE,
               stderr=sp.STDOUT,
               check=True,
               universal_newlines=True)
Esempio n. 5
0
def _build_pkg():
    r = Recipes(dedent("""
        one:
          meta.yaml: |
            package:
              name: one
              version: 0.1
            test:
              commands:
                - "ls -la"
        """),
                from_string=True)
    r.write_recipes()
    env_matrix = list(utils.EnvMatrix(tmp_env_matrix()))[0]
    recipe = r.recipe_dirs['one']
    built_package = utils.built_package_path(recipe)
    ensure_missing(built_package)
    build.build(recipe=r.recipe_dirs['one'], recipe_folder='.', env=env_matrix)
    return built_package
Esempio n. 6
0
import sys

import pytest

from bioconda_utils import bioconductor_skeleton
from bioconda_utils import cran_skeleton
from bioconda_utils import utils

import helpers

env_matrix = helpers.tmp_env_matrix()
config = {
    'env_matrix': env_matrix,
    'channels': ['bioconda', 'conda-forge', 'defaults']
}


def test_cran_write_recipe(tmpdir):
    cran_skeleton.write_recipe('locfit',
                               recipe_dir=str(tmpdir),
                               recursive=False)
    assert tmpdir.join('r-locfit', 'meta.yaml').exists()
    assert tmpdir.join('r-locfit', 'build.sh').exists()
    assert tmpdir.join('r-locfit', 'bld.bat').exists()


def test_cran_write_recipe_no_windows(tmpdir):
    cran_skeleton.write_recipe('locfit',
                               recipe_dir=str(tmpdir),
                               recursive=False,
                               no_windows=True)