def do_a_test(fat, tmpdir, check_func): testout = tmpdir.join("writetest.img") fat.write(str(testout)) check_func(fat, tmpdir, os.stat(str(testout)).st_size) # Now make sure we can re-open the written ISO. pyfat.PyFat().open(str(testout)) fat2 = pyfat.PyFat() fat2.open(str(testout)) check_func(fat2, tmpdir, os.stat(str(testout)).st_size) fat2.close()
def do_a_test(tmpdir, outfile, check_func): testout = tmpdir.join("writetest.img") # Now open up the floppy with pyfat and check some things out. fat = pyfat.PyFat() fat.open(outfile) check_func(fat, tmpdir, os.stat(outfile).st_size) fat.write(str(testout)) fat.close() # Now round-trip through write. fat2 = pyfat.PyFat() fat2.open(str(testout)) check_func(fat2, tmpdir, os.stat(str(testout)).st_size) fat2.close()
def test_hybrid_manyfiles2_subdir(tmpdir): indir = tmpdir.mkdir("manyfiles2subdir") outfile = str(indir) + ".img" subprocess.call(["mkfs.msdos", "-C", str(outfile), "1440"]) subprocess.call(["mmd", "-i", str(outfile), "DIR1"]) for i in range(1, 9): num = "{:0>2}".format(str(i)) numfile = os.path.join(str(indir), "file" + num) with open(numfile, "wb") as outfp: outfp.write("file" + num + "\n") subprocess.call([ "mcopy", "-n", "-o", "-i", str(outfile), numfile, "::DIR1/FILE" + num ]) fat = pyfat.PyFat() fat.open(outfile) for i in range(9, 32): num = "{:0>2}".format(str(i)) numfile = os.path.join(str(indir), "file" + num) with open(numfile, "wb") as outfp: outfp.write("file" + num + "\n") fat.add_file("/DIR1/FILE" + num, numfile) do_a_test(fat, tmpdir, check_manyfiles2_subdir) fat.close()
def test_new_onedir(tmpdir): fat = pyfat.PyFat() fat.new() fat.add_dir("/DIR1") do_a_test(fat, tmpdir, check_onedir)
def test_new_rmdir(tmpdir): fat = pyfat.PyFat() fat.new() fat.add_dir("/DIR1") fat.rm_dir("/DIR1") do_a_test(fat, tmpdir, check_nofiles)
def test_new_onefile(tmpdir): fat = pyfat.PyFat() fat.new() foo = tmpdir.join("foo") foo.write("foo\n") fat.add_file("/FOO", str(foo)) do_a_test(fat, tmpdir, check_onefile)
def do_a_test(fat, tmpdir, check_func): testout = tmpdir.join("writetest.img") fat.write(str(testout)) check_func(fat, tmpdir, os.stat(str(testout)).st_size) fat2 = pyfat.PyFat() fat2.open(str(testout)) check_func(fat2, tmpdir, os.stat(str(testout)).st_size) fat2.close()
def test_new_rmfile_no_ext(tmpdir): fat = pyfat.PyFat() fat.new() foo = tmpdir.join("foo") foo.write("foo\n") fat.add_file("/FOO", str(foo)) fat.rm_file("/FOO") do_a_test(fat, tmpdir, check_nofiles)
def test_new_manydirs(tmpdir): fat = pyfat.PyFat() fat.new() for i in range(1, 18): num = "{:0>2}".format(str(i)) fat.add_dir("/DIR" + num) do_a_test(fat, tmpdir, check_manydirs) fat.close()
def test_new_multiple_cluster_file(tmpdir): fat = pyfat.PyFat() fat.new() foo = tmpdir.join("foo") foo.write("0" * 513) fat.add_file("/FOO", str(foo)) do_a_test(fat, tmpdir, check_multiple_cluster_file) fat.close()
def test_new_deep_subdir(tmpdir): fat = pyfat.PyFat() fat.new() foo = tmpdir.join("foo") foo.write("foo\n") fat.add_dir("/DIR1") fat.add_dir("/DIR1/DIR2") fat.add_file("/DIR1/DIR2/FOO", str(foo)) do_a_test(fat, tmpdir, check_deep_subdir) fat.close()
def test_new_rmfile_large(tmpdir): fat = pyfat.PyFat() fat.new() foo = tmpdir.join("foo") foo.write("0" * 513) fat.add_file("/FOO", str(foo)) fat.rm_file("/FOO") do_a_test(fat, tmpdir, check_nofiles) fat.close()
def test_new_onefile_no_attr(tmpdir): fat = pyfat.PyFat() fat.new() foo = tmpdir.join("foo") foo.write("foo\n") fat.add_file("/FOO", str(foo)) fat.clear_read_only("/FOO") fat.clear_hidden("/FOO") fat.clear_system("/FOO") fat.clear_archive("/FOO") do_a_test(fat, tmpdir, check_onefile_no_attr)
def test_hybrid_onedir(tmpdir): indir = tmpdir.mkdir("onedir") outfile = str(indir) + ".img" subprocess.call(["mkfs.msdos", "-C", str(outfile), "1440"]) fat = pyfat.PyFat() fat.open(outfile) fat.add_dir("/DIR1") do_a_test(fat, tmpdir, check_onedir) fat.close()
def test_hybrid_rmdir(tmpdir): indir = tmpdir.mkdir("rmdir") outfile = str(indir) + ".img" subprocess.call(["mkfs.msdos", "-C", str(outfile), "1440"]) subprocess.call(["mmd", "-i", str(outfile), "DIR1"]) fat = pyfat.PyFat() fat.open(outfile) fat.rm_dir("/DIR1") do_a_test(fat, tmpdir, check_nofiles) fat.close()
def test_new_manyfiles(tmpdir): indir = tmpdir.mkdir("manyfiles") fat = pyfat.PyFat() fat.new() for i in range(1, 18): num = "{:0>2}".format(str(i)) numfile = os.path.join(str(indir), "file" + num) with open(numfile, "wb") as outfp: outfp.write("file" + num + "\n") fat.add_file("/FILE" + num, numfile) do_a_test(fat, tmpdir, check_manyfiles) fat.close()
def test_hybrid_onefile(tmpdir): indir = tmpdir.mkdir("onefile") outfile = str(indir) + ".img" subprocess.call(["mkfs.msdos", "-C", str(outfile), "1440"]) foo = tmpdir.join("foo") foo.write("foo\n") fat = pyfat.PyFat() fat.open(outfile) fat.add_file("/FOO", str(foo)) do_a_test(fat, tmpdir, check_onefile) fat.close()
def test_hybrid_deep_subdir(tmpdir): indir = tmpdir.mkdir("deepsubdir") outfile = str(indir) + ".img" subprocess.call(["mkfs.msdos", "-C", str(outfile), "1440"]) subprocess.call(["mmd", "-i", str(outfile), "DIR1"]) subprocess.call(["mmd", "-i", str(outfile), "DIR1/DIR2"]) foo = tmpdir.join("foo") foo.write("foo\n") fat = pyfat.PyFat() fat.open(outfile) fat.add_file("/DIR1/DIR2/FOO", str(foo)) do_a_test(fat, tmpdir, check_deep_subdir) fat.close()
def test_hybrid_manydirs(tmpdir): indir = tmpdir.mkdir("manydirs") outfile = str(indir) + ".img" subprocess.call(["mkfs.msdos", "-C", str(outfile), "1440"]) for i in range(1, 9): num = "{:0>2}".format(str(i)) subprocess.call(["mmd", "-i", str(outfile), "DIR" + num]) fat = pyfat.PyFat() fat.open(outfile) for i in range(9, 18): num = "{:0>2}".format(str(i)) fat.add_dir("/DIR" + num) do_a_test(fat, tmpdir, check_manydirs) fat.close()
def test_hybrid_rmfile_large(tmpdir): indir = tmpdir.mkdir("nofiles") outfile = str(indir) + ".img" subprocess.call(["mkfs.msdos", "-C", str(outfile), "1440"]) foofile = os.path.join(str(indir), "foo") with open(foofile, "wb") as outfp: outfp.write("0" * 513) subprocess.call( ["mcopy", "-n", "-o", "-i", str(outfile), foofile, "::FOO"]) fat = pyfat.PyFat() fat.open(outfile) fat.rm_file("/FOO") do_a_test(fat, tmpdir, check_nofiles) fat.close()
def test_hybrid_set_read_only_file(tmpdir): indir = tmpdir.mkdir("setread_onlyfile") outfile = str(indir) + ".img" subprocess.call(["mkfs.msdos", "-C", str(outfile), "1440"]) foofile = os.path.join(str(indir), "foo") with open(foofile, "wb") as outfp: outfp.write("foo\n") subprocess.call( ["mcopy", "-n", "-o", "-i", str(outfile), foofile, "::FOO"]) fat = pyfat.PyFat() fat.open(outfile) fat.set_read_only("/FOO") do_a_test(fat, tmpdir, check_onefile_read_only) fat.close()
def test_new_nofiles(tmpdir): fat = pyfat.PyFat() fat.new() do_a_test(fat, tmpdir, check_nofiles)