def test_py_xx_version(self):
        recipe = """
            package:
                name: recipe_which_depends_on_py_version
                version: 2
            requirements:
                build:
                 - python >=2.7
                 - numpy
                run:
                 - python x.x
                 - numpy x.x
            """
        with open(os.path.join(self.recipe_dir, 'meta.yaml'), 'w') as fh:
            fh.write(recipe)
        conda_build.config.config.CONDA_PY = 35
        conda_build.config.config.CONDA_NPY = 17

        meta = MetaData(self.recipe_dir)

        self.index.add_pkg('python', '2.7.2')
        self.index.add_pkg('python', '2.6.2')
        self.index.add_pkg('python', '3.5.0')
        self.index.add_pkg('numpy', '1.8.0', depends=['python'])
        r = BakedDistribution.compute_matrix(meta, self.index)
        self.assertEqual(len(r), 2)
        self.assertEqual(r[0].build_id(), 'np18py27_0')
        self.assertEqual(r[1].build_id(), 'np18py35_0')
    def test_py_xx_version(self):
        recipe = """
            package:
                name: recipe_which_depends_on_py_version
                version: 2
            build:
                skip: True  # [py3k]
            requirements:
                build:
                    - python
                run:
                    - python
            """
        with open(os.path.join(self.recipe_dir, 'meta.yaml'), 'w') as fh:
            fh.write(recipe)
        conda_build.config.config.CONDA_PY = 35

        meta = MetaData(self.recipe_dir)

        self.index.add_pkg('python', '2.7.2')
        self.index.add_pkg('python', '2.6.2')
        self.index.add_pkg('python', '3.5.0')
        r = BakedDistribution.compute_matrix(meta, self.index)
        self.assertEqual(len(r), 2)
        self.assertEqual(r[0].build_id(), 'py27_0')
        self.assertEqual(r[1].build_id(), 'py26_0')
    def test_py_xx_version(self):
        recipe = """
            package:
                name: recipe_which_depends_on_py_version
                version: 2
            build:
                skip: True  # [py3k]
            requirements:
                build:
                    - python
                run:
                    - python
            """
        with open(os.path.join(self.recipe_dir, 'meta.yaml'), 'w') as fh:
            fh.write(recipe)
        conda_build.config.config.CONDA_PY = 35

        meta = MetaData(self.recipe_dir)

        self.index.add_pkg('python', '2.7.2')
        self.index.add_pkg('python', '2.6.2')
        self.index.add_pkg('python', '3.5.0')
        r = BakedDistribution.compute_matrix(meta, self.index)
        self.assertEqual(len(r), 2)
        self.assertEqual(r[0].build_id(), 'py27_0')
        self.assertEqual(r[1].build_id(), 'py26_0')
    def test_py_xx_version(self):
        recipe = """
            package:
                name: recipe_which_depends_on_py_version
                version: 2
            requirements:
                build:
                 - python >=2.7
                 - numpy
                run:
                 - python x.x
                 - numpy x.x
            """
        with open(os.path.join(self.recipe_dir, 'meta.yaml'), 'w') as fh:
            fh.write(recipe)
        conda_build.config.config.CONDA_PY = 35
        conda_build.config.config.CONDA_NPY = 17

        meta = MetaData(self.recipe_dir)

        self.index.add_pkg('python', '2.7.2')
        self.index.add_pkg('python', '2.6.2')
        self.index.add_pkg('python', '3.5.0')
        self.index.add_pkg('numpy', '1.8.0', depends=['python'])
        r = BakedDistribution.compute_matrix(meta, self.index)
        self.assertEqual(len(r), 2)
        self.assertEqual(r[0].build_id(), 'np18py27_0')
        self.assertEqual(r[1].build_id(), 'np18py35_0')
    def test_py_version_selector_skip(self):
        recipe = """
            package:
                name: recipe_which_depends_on_py_version
            build:  # [py35]
                skip: True  # [py3k]
            """.replace('\n' + ' ' * 12, '\n').strip()
        with open(os.path.join(self.recipe_dir, 'meta.yaml'), 'w') as fh:
            fh.write(recipe)
        conda_build.config.config.CONDA_PY = 27
        meta = MetaData(self.recipe_dir)
        dist1 = BakedDistribution(meta, (('python', '35', ), ))
        dist2 = BakedDistribution(meta, (('python', '34', ), ))

        self.assertEqual(dist1.skip(), True)
        self.assertEqual(dist2.skip(), False)
    def test_py_version_selector(self):
        recipe = """
            package:
                name: recipe_which_depends_on_py_version
                version: 3  # [py3k]
                version: 2  # [not py3k]
            """.replace('\n' + ' ' * 12, '\n').strip()
        with open(os.path.join(self.recipe_dir, 'meta.yaml'), 'w') as fh:
            fh.write(recipe)
        conda_build.config.config.CONDA_PY = 27
        meta = MetaData(self.recipe_dir)
        dist1 = BakedDistribution(meta, (('python', '27', ), ))
        self.assertEqual(dist1.version(), u'2')

        dist2 = BakedDistribution(meta, (('python', '35', ), ))
        self.assertEqual(dist2.version(), u'3')
        self.assertEqual(dist1.version(), u'2')
    def test_py_version_selector(self):
        recipe = """
            package:
                name: recipe_which_depends_on_py_version
                version: 3  # [py3k]
                version: 2  # [not py3k]
            """.replace('\n' + ' ' * 12, '\n').strip()
        with open(os.path.join(self.recipe_dir, 'meta.yaml'), 'w') as fh:
            fh.write(recipe)
        conda_build.config.config.CONDA_PY = 27
        meta = MetaData(self.recipe_dir)
        dist1 = BakedDistribution(meta, ((
            'python',
            '27',
        ), ))
        self.assertEqual(dist1.version(), u'2')

        dist2 = BakedDistribution(meta, ((
            'python',
            '35',
        ), ))
        self.assertEqual(dist2.version(), u'3')
        self.assertEqual(dist1.version(), u'2')
    def test_py_version_selector_skip(self):
        recipe = """
            package:
                name: recipe_which_depends_on_py_version
            build:  # [py35]
                skip: True  # [py3k]
            """.replace('\n' + ' ' * 12, '\n').strip()
        with open(os.path.join(self.recipe_dir, 'meta.yaml'), 'w') as fh:
            fh.write(recipe)
        conda_build.config.config.CONDA_PY = 27
        meta = MetaData(self.recipe_dir)
        dist1 = BakedDistribution(meta, ((
            'python',
            '35',
        ), ))
        dist2 = BakedDistribution(meta, ((
            'python',
            '34',
        ), ))

        self.assertEqual(dist1.skip(), True)
        self.assertEqual(dist2.skip(), False)