Beispiel #1
0
    def test_link_folder(self):
        # If there is a linked folder in the current directory that matches one file in the tar.
        # https://github.com/conan-io/conan/issues/4959

        # Once unpackaged, this is the content of the destination directory
        def check_files(destination_dir):
            d = os.listdir(destination_dir)
            self.assertListEqual(d, ["folder", "file1"])
            d_folder = os.listdir(os.path.join(destination_dir, "folder"))
            self.assertEqual(d_folder, ["file2"])

        working_dir = temp_folder()
        with chdir(working_dir):
            # Unpack and check
            destination_dir = os.path.join(self.tmp_folder, "dest")
            with open(self.tgz_file, 'rb') as file_handler:
                tar_extract(file_handler, destination_dir)
            check_files(destination_dir)

            # Unpack and check (now we have a symlinked local folder)
            os.symlink(temp_folder(), "folder")
            destination_dir = os.path.join(self.tmp_folder, "dest2")
            with open(self.tgz_file, 'rb') as file_handler:
                tar_extract(file_handler, destination_dir)
            check_files(destination_dir)
    def test_basic(self):
        """ check that we do not generate anymore tgz with .c_src.
        also, they are not present any more in the cache layout, even if they come from a .c_src
        tgz server file
        """
        test_server = TestServer()
        servers = {"default": test_server}
        client = TestClient(servers=servers, users={"default": [("lasote", "mypass")]})
        client.save({"conanfile.py": """from conans import ConanFile
class MyPkg(ConanFile):
    name= "Pkg"
    version = "0.1"
    exports_sources = "*.txt"
""", "myfile.txt": "Hello world"})
        client.run("export . lasote/testing")
        client.run("upload Pkg/0.1@lasote/testing")
        client.run("remove * -f")
        client.run("search")
        self.assertIn("There are no packages", client.out)
        ref = ConanFileReference.loads("Pkg/0.1@lasote/testing")
        rev, _ = servers["default"].server_store.get_last_revision(ref)
        ref = ref.copy_with_rev(rev)
        path = test_server.server_store.export(ref)
        sources_tgz = os.path.join(path, "conan_sources.tgz")
        self.assertTrue(os.path.exists(sources_tgz))
        folder = temp_folder()
        with open(sources_tgz, 'rb') as file_handler:
            tar_extract(file_handler, folder)
        self.assertEqual(os.listdir(folder), ["myfile.txt"])
        # Now install again
        client.run("install Pkg/0.1@lasote/testing --build=missing")
        export = client.cache.package_layout(ref).export()
        self.assertNotIn(EXPORT_SOURCES_DIR_OLD, os.listdir(export))
        export_sources = client.cache.package_layout(ref).export_sources()
        self.assertEqual(os.listdir(export_sources), ["myfile.txt"])
    def test_basic(self):
        """ check that we do not generate anymore tgz with .c_src.
        also, they are not present any more in the cache layout, even if they come from a .c_src
        tgz server file
        """
        test_server = TestServer()
        servers = {"default": test_server}
        client = TestClient(servers=servers, users={"default": [("lasote", "mypass")]})
        client.save({"conanfile.py": """from conans import ConanFile
class MyPkg(ConanFile):
    name= "Pkg"
    version = "0.1"
    exports_sources = "*.txt"
""", "myfile.txt": "Hello world"})
        client.run("export . lasote/testing")
        client.run("upload Pkg/0.1@lasote/testing")
        client.run("remove * -f")
        client.run("search")
        self.assertIn("There are no packages", client.user_io.out)
        conan_reference = ConanFileReference.loads("Pkg/0.1@lasote/testing")
        path = test_server.paths.export(conan_reference)
        sources_tgz = os.path.join(path, "conan_sources.tgz")
        self.assertTrue(os.path.exists(sources_tgz))
        folder = temp_folder()
        with open(sources_tgz, 'rb') as file_handler:
            tar_extract(file_handler, folder)
        self.assertEqual(os.listdir(folder), ["myfile.txt"])
        # Now install again
        client.run("install Pkg/0.1@lasote/testing --build=missing")
        export = client.client_cache.export(conan_reference)
        self.assertNotIn(EXPORT_SOURCES_DIR_OLD, os.listdir(export))
        export_sources = client.client_cache.export_sources(conan_reference)
        self.assertEqual(os.listdir(export_sources), ["myfile.txt"])
Beispiel #4
0
def uncompress_files(files, folder, name):
    for file_name, content in files:
        if os.path.basename(file_name) != name:
            save(os.path.join(folder, file_name), content)
        else:
            #  Unzip the file
            tar_extract(BytesIO(content), folder)
Beispiel #5
0
def uncompress_files(files, folder, name):
    for file_name, content in files:
        if os.path.basename(file_name) != name:
            save(os.path.join(folder, file_name), content)
        else:
            #  Unzip the file
            tar_extract(BytesIO(content), folder)
Beispiel #6
0
def uncompress_file(src_path, dest_folder):
    try:
        with open(src_path, 'rb') as file_handler:
            tar_extract(file_handler, dest_folder)
    except Exception as e:
        error_msg = "Error while downloading/extracting files to %s\n%s\n" % (dest_folder, str(e))
        # try to remove the files
        try:
            if os.path.exists(dest_folder):
                shutil.rmtree(dest_folder)
                error_msg += "Folder removed"
        except Exception as e:
            error_msg += "Folder not removed, files/package might be damaged, remove manually"
        raise ConanException(error_msg)
Beispiel #7
0
def uncompress_file(src_path, dest_folder):
    try:
        with open(src_path, 'rb') as file_handler:
            tar_extract(file_handler, dest_folder)
    except Exception as e:
        error_msg = "Error while downloading/extracting files to %s\n%s\n" % (
            dest_folder, str(e))
        # try to remove the files
        try:
            if os.path.exists(dest_folder):
                shutil.rmtree(dest_folder)
                error_msg += "Folder removed"
        except Exception as e:
            error_msg += "Folder not removed, files/package might be damaged, remove manually"
        raise ConanException(error_msg)
Beispiel #8
0
def uncompress_file(src_path, dest_folder, output):
    t1 = time.time()
    try:
        with progress_bar.open_binary(src_path, desc="Decompressing %s" % os.path.basename(src_path),
                                      output=output) as file_handler:
            tar_extract(file_handler, dest_folder)
    except Exception as e:
        error_msg = "Error while downloading/extracting files to %s\n%s\n" % (dest_folder, str(e))
        # try to remove the files
        try:
            if os.path.exists(dest_folder):
                shutil.rmtree(dest_folder)
                error_msg += "Folder removed"
        except Exception:
            error_msg += "Folder not removed, files/package might be damaged, remove manually"
        raise ConanException(error_msg)

    duration = time.time() - t1
    log_uncompressed_file(src_path, duration, dest_folder)
Beispiel #9
0
    def test_basic(self):
        """ check that we generate tgz with .c_src and we handle them properly
        also, they are not present any more in the cache layout, even if they come from a .c_src
        tgz server file
        """
        test_server = TestServer()
        servers = {"default": test_server}
        client = TestClient(servers=servers,
                            users={"default": [("lasote", "mypass")]})
        client.save({
            "conanfile.py": """from conans import ConanFile
class MyPkg(ConanFile):
    name= "Pkg"
    version = "0.1"
    exports_sources = "*.txt"
""",
            "myfile.txt": "Hello world"
        })
        client.run("export lasote/testing")
        client.run("upload Pkg/0.1@lasote/testing")
        client.run("remove * -f")
        client.run("search")
        self.assertIn("There are no packages", client.user_io.out)
        conan_reference = ConanFileReference.loads("Pkg/0.1@lasote/testing")
        path = test_server.paths.export(conan_reference)
        sources_tgz = os.path.join(path, "conan_sources.tgz")
        self.assertTrue(os.path.exists(sources_tgz))
        folder = temp_folder()
        with open(sources_tgz, 'rb') as file_handler:
            tar_extract(file_handler, folder)
        self.assertEqual(os.listdir(folder), [".c_src"])
        # Now install again
        client.run("install Pkg/0.1@lasote/testing --build=missing")
        export = client.client_cache.export(conan_reference)
        self.assertNotIn(".c_src", os.listdir(export))
        export_sources = client.client_cache.export_sources(conan_reference)
        self.assertEqual(os.listdir(export_sources), ["myfile.txt"])