Пример #1
0
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()
Пример #2
0
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()
Пример #3
0
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()
Пример #4
0
def test_new_onedir(tmpdir):
    fat = pyfat.PyFat()
    fat.new()

    fat.add_dir("/DIR1")

    do_a_test(fat, tmpdir, check_onedir)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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()
Пример #8
0
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)
Пример #9
0
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()
Пример #10
0
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()
Пример #11
0
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()
Пример #12
0
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()
Пример #13
0
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)
Пример #14
0
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()
Пример #15
0
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()
Пример #16
0
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()
Пример #17
0
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()
Пример #18
0
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()
Пример #19
0
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()
Пример #20
0
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()
Пример #21
0
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()
Пример #22
0
def test_new_nofiles(tmpdir):
    fat = pyfat.PyFat()
    fat.new()

    do_a_test(fat, tmpdir, check_nofiles)