def test_render_add_channel(): """This recipe requires the conda_build_test_requirement package, which is only on the conda_build_test channel. This verifies that the -c argument works for rendering.""" with TemporaryDirectory() as tmpdir: rendered_filename = os.path.join(tmpdir, 'out.yaml') args = [ '-c', 'conda_build_test', os.path.join(metadata_dir, "_recipe_requiring_external_channel"), '--file', rendered_filename ] main_render.execute(args) with open(rendered_filename, 'r') as rendered_file: rendered_meta = yaml.safe_load(rendered_file) required_package_string = [ pkg for pkg in rendered_meta['requirements']['build'] if 'conda_build_test_requirement' in pkg ][0] required_package_details = required_package_string.split(' ') assert len(required_package_details) > 1, ( "Expected version number on successful " "rendering, but got only {}".format(required_package_details)) assert required_package_details[ 1] == '1.0', "Expected version number 1.0 on successful rendering, but got {}".format( required_package_details[1])
def test_render_output_build_path_set_python(testing_workdir, testing_metadata, capfd): testing_metadata.meta['requirements'] = { 'host': ['python'], 'run': ['python'] } api.output_yaml(testing_metadata, 'meta.yaml') # build the other major thing, whatever it is if sys.version_info.major == 3: version = "2.7" else: version = "3.5" api.output_yaml(testing_metadata, 'meta.yaml') metadata = api.render(testing_workdir, python=version)[0][0] args = ['--output', testing_workdir, '--python', version] main_render.execute(args) _hash = metadata.hash_dependencies() test_path = "test_render_output_build_path_set_python-1.0-py{}{}{}_1.tar.bz2".format( version.split('.')[0], version.split('.')[1], _hash) output, error = capfd.readouterr() assert os.path.basename(output.rstrip()) == test_path, error
def test_render_output_build_path(testing_workdir, capfd): args = ['--output', os.path.join(metadata_dir, "python_run")] main_render.execute(args) test_path = "conda-build-test-python-run-1.0-py{}{}_0.tar.bz2".format( sys.version_info.major, sys.version_info.minor) output, error = capfd.readouterr() assert error == "" assert os.path.basename(output.rstrip()) == test_path, error
def test_render_output_build_path(testing_workdir, test_metadata, capfd): api.output_yaml(test_metadata, 'meta.yaml') args = ['--output', testing_workdir] main_render.execute(args) test_path = "test_render_output_build_path-1.0-py{}{}_1.tar.bz2".format( sys.version_info.major, sys.version_info.minor) output, error = capfd.readouterr() assert error == "" assert os.path.basename(output.rstrip()) == test_path, error
def test_render_output_build_path(testing_workdir, testing_metadata, capfd, caplog): api.output_yaml(testing_metadata, 'meta.yaml') args = ['--output', os.path.join(testing_workdir)] main_render.execute(args) test_path = os.path.join(sys.prefix, "conda-bld", testing_metadata.config.host_subdir, "test_render_output_build_path-1.0-1.tar.bz2") output, error = capfd.readouterr() assert output.rstrip() == test_path, error assert error == ""
def test_render_without_channel_fails(): # do make extra channel available, so the required package should not be found with TemporaryDirectory() as tmpdir: rendered_filename = os.path.join(tmpdir, 'out.yaml') args = ['--override-channels', '-c', 'conda', os.path.join(metadata_dir, "_recipe_requiring_external_channel"), '--file', rendered_filename] main_render.execute(args) rendered_meta = yaml.safe_load(open(rendered_filename, 'r')) required_package_string = [pkg for pkg in rendered_meta['requirements']['build'] if 'conda_build_test_requirement' in pkg][0] assert required_package_string == 'conda_build_test_requirement', \ "Expected to get only base package name because it should not be found, but got :{}".format(required_package_string)
def test_render_output_build_path(testing_workdir, testing_metadata, capfd, caplog): api.output_yaml(testing_metadata, 'meta.yaml') metadata = api.render(testing_workdir)[0][0] args = ['--output', os.path.join(testing_workdir)] main_render.execute(args) _hash = metadata._hash_dependencies() test_path = "test_render_output_build_path-1.0-py{}{}{}_1.tar.bz2".format( sys.version_info.major, sys.version_info.minor, _hash) output, error = capfd.readouterr() # assert error == "" assert os.path.basename(output.rstrip()) == test_path, error
def test_render_output_build_path_set_python(testing_workdir, capfd): # build the other major thing, whatever it is if sys.version_info.major == 3: version = "2.7" else: version = "3.5" args = ["--output", os.path.join(metadata_dir, "python_run"), "--python", version] main_render.execute(args) test_path = "conda-build-test-python-run-1.0-py{}{}_0.tar.bz2".format(version.split(".")[0], version.split(".")[1]) output, error = capfd.readouterr() assert os.path.basename(output.rstrip()) == test_path, error
def test_render_without_channel_fails(): # do make extra channel available, so the required package should not be found with TemporaryDirectory() as tmpdir: rendered_filename = os.path.join(tmpdir, 'out.yaml') args = ['--override-channels', os.path.join(metadata_dir, "_recipe_requiring_external_channel"), '--file', rendered_filename] main_render.execute(args) rendered_meta = yaml.safe_load(open(rendered_filename, 'r')) required_package_string = [pkg for pkg in rendered_meta.get('requirements', {}).get('build', []) if 'conda_build_test_requirement' in pkg][0] assert required_package_string == 'conda_build_test_requirement', \ "Expected to get only base package name because it should not be found, but got :{}".format(required_package_string)
def test_no_filename_hash(testing_workdir, testing_metadata, capfd): api.output_yaml(testing_metadata, 'meta.yaml') args = ['--output', testing_workdir, '--old-build-string'] main_render.execute(args) output, error = capfd.readouterr() assert not re.search('h[0-9a-f]{%d}' % testing_metadata.config.hash_length, output) args = ['--no-anaconda-upload', '--no-activate', testing_workdir, '--old-build-string'] main_build.execute(args) output, error = capfd.readouterr() assert not re.search('test_no_filename_hash.*h[0-9a-f]{%d}' % testing_metadata.config.hash_length, output) assert not re.search('test_no_filename_hash.*h[0-9a-f]{%d}' % testing_metadata.config.hash_length, error)
def test_render_output_build_path(testing_workdir, testing_metadata, capfd, caplog): api.output_yaml(testing_metadata, 'meta.yaml') metadata = api.render(testing_workdir, debug=False, verbose=False)[0][0] args = ['--output', os.path.join(testing_workdir)] main_render.execute(args) _hash = metadata.hash_dependencies() test_path = os.path.join(sys.prefix, "conda-bld", testing_metadata.config.host_subdir, "test_render_output_build_path-1.0-py{}{}{}_1.tar.bz2".format( sys.version_info.major, sys.version_info.minor, _hash)) output, error = capfd.readouterr() assert output.rstrip() == test_path, error assert error == ""
def test_no_filename_hash(testing_workdir, testing_metadata, capfd): api.output_yaml(testing_metadata, 'meta.yaml') args = ['--output', testing_workdir, '--old-build-string'] main_render.execute(args) output, error = capfd.readouterr() assert not re.search('h[0-9a-f]{%d}' % testing_metadata.config.hash_length, output) args = ['--no-anaconda-upload', '--no-activate', testing_workdir, '--old-build-string'] main_build.execute(args) output, error = capfd.readouterr() assert not re.search('h[0-9a-f]{%d}' % testing_metadata.config.hash_length, output) assert not re.search('h[0-9a-f]{%d}' % testing_metadata.config.hash_length, error)
def test_render_output_build_path_and_file(testing_workdir, testing_metadata, capfd, caplog): api.output_yaml(testing_metadata, 'meta.yaml') rendered_filename = 'out.yaml' args = ['--output', '--file', rendered_filename, testing_workdir] main_render.execute(args) test_path = os.path.join(sys.prefix, "conda-bld", testing_metadata.config.host_subdir, "test_render_output_build_path_and_file-1.0-1.tar.bz2") output, error = capfd.readouterr() assert output.rstrip() == test_path, error assert error == "" with open(rendered_filename, 'r') as rendered_file: rendered_meta = yaml.safe_load(rendered_file) assert rendered_meta['package']['name'] == 'test_render_output_build_path_and_file'
def test_render_output_build_path_set_python(testing_workdir, test_metadata, capfd): api.output_yaml(test_metadata, 'meta.yaml') # build the other major thing, whatever it is if sys.version_info.major == 3: version = "2.7" else: version = "3.5" args = ['--output', testing_workdir, '--python', version] main_render.execute(args) test_path = "test_render_output_build_path_set_python-1.0-py{}{}_1.tar.bz2".format( version.split('.')[0], version.split('.')[1]) output, error = capfd.readouterr() assert os.path.basename(output.rstrip()) == test_path, error
def test_render_add_channel(): """This recipe requires the conda_build_test_requirement package, which is only on the conda_build_test channel. This verifies that the -c argument works for rendering.""" with TemporaryDirectory() as tmpdir: rendered_filename = os.path.join(tmpdir, 'out.yaml') args = ['-c', 'conda_build_test', os.path.join(metadata_dir, "_recipe_requiring_external_channel"), '--file', rendered_filename] main_render.execute(args) rendered_meta = yaml.safe_load(open(rendered_filename, 'r')) required_package_string = [pkg for pkg in rendered_meta['requirements']['build'] if 'conda_build_test_requirement' in pkg][0] required_package_details = required_package_string.split(' ') assert len(required_package_details) > 1, ("Expected version number on successful " "rendering, but got only {}".format(required_package_details)) assert required_package_details[1] == '1.0', "Expected version number 1.0 on successful rendering, but got {}".format(required_package_details[1])
def test_render_output_build_path_set_python(testing_workdir, capfd): # build the other major thing, whatever it is if sys.version_info.major == 3: version = "2.7" else: version = "3.5" args = [ '--output', os.path.join(metadata_dir, "python_run"), '--python', version ] main_render.execute(args) test_path = "conda-build-test-python-run-1.0-py{}{}_0.tar.bz2".format( version.split('.')[0], version.split('.')[1]) output, error = capfd.readouterr() assert os.path.basename(output.rstrip()) == test_path, error
def test_render_output_build_path_set_python(testing_workdir, testing_metadata, capfd): testing_metadata.meta['requirements'] = {'host': ['python'], 'run': ['python']} api.output_yaml(testing_metadata, 'meta.yaml') # build the other major thing, whatever it is if sys.version_info.major == 3: version = "2.7" else: version = "3.5" api.output_yaml(testing_metadata, 'meta.yaml') metadata = api.render(testing_workdir, python=version)[0][0] args = ['--output', testing_workdir, '--python', version] main_render.execute(args) _hash = metadata.hash_dependencies() test_path = "test_render_output_build_path_set_python-1.0-py{}{}{}_1.tar.bz2".format( version.split('.')[0], version.split('.')[1], _hash) output, error = capfd.readouterr() assert os.path.basename(output.rstrip()) == test_path, error
def test_render_with_python_arg_CLI_reduces_subspace(capfd): recipe = os.path.join(metadata_dir, "..", "variants", "20_subspace_selection_cli") # build the package args = [recipe, '--variants', '{python: [2.7, 3.5]}', '--output'] main_render.execute(args) out, err = capfd.readouterr() assert(len(out.splitlines()) == 3) args = [recipe, '--variants', '{python: 2.7}', '--output'] main_render.execute(args) out, err = capfd.readouterr() assert(len(out.splitlines()) == 2) args = [recipe, '--variants', '{python: 3.5}', '--output'] main_render.execute(args) out, err = capfd.readouterr() assert(len(out.splitlines()) == 1)
def test_render_with_python_arg_reduces_subspace(capfd): recipe = os.path.join(metadata_dir, "..", "variants", "20_subspace_selection_cli") # build the package args = [recipe, '--python=2.7', '--output'] main_render.execute(args) out, err = capfd.readouterr() assert(len(out.splitlines()) == 2) args = [recipe, '--python=3.5', '--output'] main_render.execute(args) out, err = capfd.readouterr() assert(len(out.splitlines()) == 1) # should raise an error, because python 3.4 is not in the matrix, so we don't know which vc # to associate with args = [recipe, '--python=3.4', '--output'] with pytest.raises(ValueError): main_render.execute(args)