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"])
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)
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)
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)
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)
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)
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"])