Exemple #1
0
    def _search_recipes(self, pattern=None, ignorecase=True):
        def get_ref(_pattern):
            if not isinstance(_pattern, ConanFileReference):
                try:
                    ref_ = ConanFileReference.loads(_pattern)
                except (ConanException, TypeError):
                    ref_ = None
            else:
                ref_ = _pattern
            return ref_

        # Conan references in main storage
        if pattern:
            pattern = str(pattern)
            b_pattern = translate(pattern)
            b_pattern = re.compile(b_pattern, re.IGNORECASE) \
                if ignorecase else re.compile(b_pattern)

        subdirs = list_folder_subdirs(basedir=self._server_store.store,
                                      level=5)
        if not pattern:
            return sorted(
                [ConanFileReference(*folder.split("/")) for folder in subdirs])
        else:
            ret = set()
            for subdir in subdirs:
                new_ref = ConanFileReference(*subdir.split("/"))
                if _partial_match(b_pattern, new_ref.full_repr()):
                    ret.add(new_ref.copy_clear_rev())

            return sorted(ret)
Exemple #2
0
class DeployGeneratorPermissionsTest(unittest.TestCase):
    """
    Test files deployed by the deploy generator are copied with same permissions
    """
    def setUp(self):
        conanfile1 = GenConanfile()
        conanfile1.with_package_file("include/header1.h", "whatever")
        self.ref1 = ConanFileReference("name1", "version", "user", "channel")

        self.client = TurboTestClient()
        self.client.create(self.ref1, conanfile1)
        layout = self.client.cache.package_layout(self.ref1)
        package_folder = layout.package(
            PackageReference(self.ref1, NO_SETTINGS_PACKAGE_ID))
        self.header_path = os.path.join(package_folder, "include", "header1.h")
        self.assertTrue(os.path.exists(self.header_path))

    @unittest.skipIf(platform.system() == "Windows",
                     "Permissions in NIX systems only")
    def same_permissions_test(self):
        stat_info = os.stat(self.header_path)
        self.assertFalse(stat_info.st_mode & stat.S_IXUSR)
        os.chmod(self.header_path, stat_info.st_mode | stat.S_IXUSR)
        self.client.current_folder = temp_folder()
        self.client.run("install %s -g deploy" % self.ref1.full_repr())
        base1_path = os.path.join(self.client.current_folder, "name1")
        header1_path = os.path.join(base1_path, "include", "header1.h")
        stat_info = os.stat(header1_path)
        self.assertTrue(stat_info.st_mode & stat.S_IXUSR)
Exemple #3
0
    def setUp(self):
        conanfile = GenConanfile()
        conanfile.with_package_file("include/header.h", "whatever")
        conanfile.with_package_file("my_libs/file.lib", "whatever")
        conanfile.with_package_file("file.config", "whatever")

        self.client = TurboTestClient()
        ref = ConanFileReference("name", "version", "user", "channel")
        self.client.create(ref, conanfile)
        self.client.current_folder = temp_folder()
        self.client.run("install %s -g deploy" % ref.full_repr())
Exemple #4
0
    def setUp(self):
        conanfile1 = GenConanfile()
        conanfile1.with_package_file("include/header1.h", "whatever")
        conanfile1.with_package_file("my_libs/file1.lib", "whatever")
        conanfile1.with_package_file("file1.config", "whatever")
        ref1 = ConanFileReference("name1", "version", "user", "channel")

        conanfile2 = GenConanfile()
        conanfile2.with_requirement(ref1)
        conanfile2.with_package_file("include_files/header2.h", "whatever")
        conanfile2.with_package_file("my_other_libs/file2.lib", "whatever")
        conanfile2.with_package_file("build/file2.config", "whatever")
        ref2 = ConanFileReference("name2", "version", "user", "channel")

        self.client = TurboTestClient()
        self.client.create(ref1, conanfile1)
        self.client.create(ref2, conanfile2)
        self.client.current_folder = temp_folder()
        self.client.run("install %s -g deploy" % ref2.full_repr())
Exemple #5
0
    def package_folder_build_error_test(self):
        """
        Check package folder is not created if the build step fails
        """
        client = TestClient()
        conanfile = textwrap.dedent("""
        from conans import ConanFile

        class MyPkg(ConanFile):

            def build(self):
                raise ConanException("Build error")
        """)
        client.save({"conanfile.py": conanfile})
        ref = ConanFileReference("pkg", "0.1", "danimtb", "testing")
        pref = PackageReference(ref, NO_SETTINGS_PACKAGE_ID, None)
        client.run("create . %s" % ref.full_repr(), assert_error=True)
        self.assertIn("Build error", client.out)
        package_folder = client.cache.package_layout(pref.ref).package(pref)
        self.assertFalse(os.path.exists(package_folder))