import os from qolab.file_utils import infer_compression, save_table_with_header def test_infer_compression(): assert infer_compression("data.dat") is None assert infer_compression("data.unknown_ext") is None assert infer_compression("data.dat.gz") == "gzip" assert infer_compression("data.dat.bz") == "bzip" assert infer_compression("data.dat.bz2") == "bzip" def test_save_table_with_header_match_filename_to_compression(): import tempfile data = [[1, 3], [2, 5]] headerstr = ["header 1", "header 2"] with tempfile.TemporaryDirectory(prefix="qolab_test") as d: fname = os.path.join(d, "t.dat") assert save_table_with_header( fname, data, header=headerstr, compressionmethod=None, match_filename_to_compression=True, ) == (fname) assert save_table_with_header( fname, data, header=headerstr, compressionmethod="gzip", match_filename_to_compression=True, ) == (fname + ".gz") assert save_table_with_header( fname, data, header=headerstr, compressionmethod="bzip", match_filename_to_compression=True, ) == (fname + ".bz") # now cases when requested extension does not match the compression assert save_table_with_header( fname + ".gz", data, header=headerstr, compressionmethod=None, match_filename_to_compression=True, ) == (fname + ".gz.dat") assert save_table_with_header( fname + ".bz", data, header=headerstr, compressionmethod="gzip", match_filename_to_compression=True, ) == (fname + ".bz.gz") assert save_table_with_header( fname + ".gz", data, header=headerstr, compressionmethod="bzip", match_filename_to_compression=True, ) == (fname + ".gz.bz") # do as I told cases, extension does not match compression assert save_table_with_header( fname + ".gz", data, header=headerstr, compressionmethod=None, match_filename_to_compression=False, ) == (fname + ".gz") assert save_table_with_header( fname, data, header=headerstr, compressionmethod="gzip", match_filename_to_compression=False, ) == (fname) assert save_table_with_header( fname, data, header=headerstr, compressionmethod="bzip", match_filename_to_compression=False, ) == (fname)