9
DEFAULT_DIR = "/tmp/checkbox.floppy"
10
DEFAULT_DEVICE_DIR = "floppy_device"
11
DEFAULT_IMAGE_DIR = "floppy_image"
12
DEFAULT_IMAGE = "floppy.img"
15
class FloppyTest(object):
17
def __init__(self, device):
19
self.device_dir = os.path.join(DEFAULT_DIR, DEFAULT_DEVICE_DIR)
20
self.image_dir = os.path.join(DEFAULT_DIR, DEFAULT_IMAGE_DIR)
21
self.image = os.path.join(DEFAULT_DIR, DEFAULT_IMAGE)
22
self.interactive = True
24
for dir in (self.device_dir, self.image_dir):
25
if not posixpath.exists(dir):
29
floppyDevice = self.device
31
print(" Testing on floppy drive %s " % floppyDevice)
33
print(" Error ! No floppy drive found !")
35
# remove temp files if they exist
36
os.system("umount /media/floppy 2>/dev/null")
37
if (os.path.exists(self.device_dir)
38
or os.path.exists(self.image_dir)
39
or os.path.exists(self.image)):
40
os.system("umount %s %s 2>/dev/null"
41
% (self.device_dir, self.image_dir))
42
os.system("rm -rf %s %s %s 2>/dev/null"
43
% (self.device_dir, self.image_dir, self.image))
44
# Create the test images
45
os.mkdir(self.device_dir)
46
os.mkdir(self.image_dir)
47
os.system("dd if=/dev/zero of=%s bs=1k count=1440" % self.image)
48
os.system("mkdosfs %s" % self.image)
49
os.system("mount -o loop %s %s" % (self.image, self.image_dir))
50
os.system("cp -a /etc/*.conf %s 2> /dev/null" % self.image_dir)
51
os.system("umount %s" % self.image_dir)
53
(noFloppyDisk, junkOutput1) = \
54
subprocess.getstatusoutput("dd bs=1c if=%s count=0 2>/dev/null"
57
print("Error ! No floppy disc or bad media in %s !" % floppyDevice)
61
print(" Writing data to floppy disc ... ")
62
(ddStatus, ddOutput) = \
63
subprocess.getstatusoutput("dd if=%s of=%s bs=1k count=1440"
64
% (self.image, floppyDevice))
66
print(" Write data to floppy disc done ! ")
68
print(" Error ! Write data to floppy disc error ! ")
69
print(" Please check if your floppy disc is write-protected !")
72
os.system("mount %s %s" % (floppyDevice, self.device_dir))
73
os.system("mount -o loop %s %s" % (self.image, self.image_dir))
74
print(" Comparing files ... ")
75
fileList = os.listdir(self.image_dir)
77
for textFile in fileList:
78
file1 = os.path.join(self.device_dir, textFile)
79
file2 = os.path.join(self.image_dir, textFile)
80
if filecmp.cmp(file1, file2):
81
print(" comparing file %s" % textFile)
83
print(" -- Error ! File %s comparison failed ! -- "
86
print(" File comparison done ! ")
88
os.system("umount /media/floppy 2>/dev/null")
89
os.system("umount %s %s " % (self.image_dir, self.device_dir))
90
os.system("rm -rf %s %s %s"
91
% (self.device_dir, self.image_dir, self.image))
99
test = FloppyTest(device)
100
return_values.append(test.run())
102
return 1 in return_values
104
if __name__ == "__main__":
105
sys.exit(main(sys.argv[1:]))