Ejemplo n.º 1
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_str())
        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)
Ejemplo n.º 2
0
class DeployGeneratorSymbolicLinkTest(unittest.TestCase):
    def setUp(self):
        conanfile = GenConanfile()
        conanfile.with_package_file("include/header.h", "whatever")
        self.ref = ConanFileReference("name", "version", "user", "channel")

        self.client = TurboTestClient()
        self.client.create(self.ref, conanfile)
        layout = self.client.cache.package_layout(self.ref)
        package_folder = layout.package(
            PackageReference(self.ref, NO_SETTINGS_PACKAGE_ID))
        self.header_path = os.path.join(package_folder, "include", "header.h")

    def test_symbolic_links(self):
        link_path = self.header_path + ".lnk"
        os.symlink(self.header_path, link_path)
        self.client.current_folder = temp_folder()
        self.client.run("install %s -g deploy" % self.ref.full_str())
        base_path = os.path.join(self.client.current_folder, "name")
        header_path = os.path.join(base_path, "include", "header.h")
        link_path = os.path.join(base_path, "include", "header.h.lnk")
        self.assertTrue(os.path.islink(link_path))
        self.assertFalse(os.path.islink(header_path))
        linkto = os.path.join(os.path.dirname(link_path),
                              os.readlink(link_path))
        self.assertEqual(linkto, header_path)
Ejemplo n.º 3
0
class DeployGeneratorSymbolicLinkFolderTest(unittest.TestCase):
    def setUp(self):
        conanfile = textwrap.dedent("""
            import os
            from conans import ConanFile, tools

            class TestConan(ConanFile):

                def package(self):
                    folder_path = os.path.join(self.package_folder, "one_folder")
                    tools.mkdir(folder_path)
                    link_folder_path = os.path.join(self.package_folder, "other_folder")
                    with tools.chdir(os.path.dirname(folder_path)):
                        os.symlink(os.path.basename(folder_path), link_folder_path)
        """)
        self.ref = ConanFileReference("name", "version", "user", "channel")
        self.client = TurboTestClient()
        self.client.create(self.ref, conanfile)

    def test_symbolic_links(self):
        self.client.current_folder = temp_folder()
        self.client.run("install %s -g deploy" % self.ref.full_str())
        base_path = os.path.join(self.client.current_folder, "name")
        folder_path = os.path.join(base_path, "one_folder")
        link_folder_path = os.path.join(base_path, "other_folder")
        self.assertTrue(os.path.islink(link_folder_path))
        self.assertFalse(os.path.islink(folder_path))
        linkto_folder = os.path.join(os.path.dirname(link_folder_path),
                                     os.readlink(link_folder_path))
        self.assertEqual(linkto_folder, folder_path)
Ejemplo n.º 4
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_str())
Ejemplo n.º 5
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_str())
Ejemplo n.º 6
0
    def test_package_folder_build_error(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_str(), 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))