def create_context(path, context=None): all_files = [] for f in archives.get_all_files(path): if os.path.isfile(f) and not os.path.islink(f): all_files.append(f) if context is None: if "insights_commands" in f: context = HostArchiveContext elif "sos_commands" in f: context = SosArchiveContext elif "JBOSS_HOME" in f: context = JDRContext context = context or HostArchiveContext common_path = os.path.commonprefix(all_files) real_root = os.path.join(path, common_path) return context(real_root, all_files=all_files)
def test_with_zip(): tmp_dir = tempfile.mkdtemp() d = os.path.join(tmp_dir, 'sys', 'kernel') os.makedirs(d) with open(os.path.join(d, 'kexec_crash_size'), "w") as f: f.write("ohyeahbaby") try: os.unlink("/tmp/test.zip") except: pass # stolen from zipfile.py:main def _add_to_zip(zf, path, zippath): if os.path.isfile(path): zf.write(path, zippath, zipfile.ZIP_DEFLATED) elif os.path.isdir(path): if zippath: zf.write(path, zippath) for nm in os.listdir(path): _add_to_zip(zf, os.path.join(path, nm), os.path.join(zippath, nm)) # else: ignore with closing(zipfile.ZipFile("/tmp/test.zip", "w")) as zf: _add_to_zip(zf, tmp_dir, os.path.basename(tmp_dir)) try: with extract("/tmp/test.zip") as ex: assert any( f.endswith("/sys/kernel/kexec_crash_size") for f in archives.get_all_files(ex.tmp_dir)) finally: os.unlink("/tmp/test.zip") subprocess.call(shlex.split("rm -rf %s" % tmp_dir))
def get_all_files(path): all_files = [] for f in archives.get_all_files(path): if os.path.isfile(f) and not os.path.islink(f): all_files.append(f) return all_files