import sh import unittest import re from test.helpers.changedir import changedir class Qusb(unittest.TestCase): params = None def __init__(self, testname, testfunc, varlist): self.params = varlist super(Qusb, self).__init__(testfunc) self._testMethodDoc = testname def execute(self): # Execute script usb.sh p = sh.bash('test/scripts/usb.sh') # Search in the stdout a pattern "/dev/sd + {letter} + {number} q = re.search("/dev/sd\w\d", p.stdout.decode('ascii')) # get the first device which matches the pattern device = q.group(0) # create a new folder where the pendrive is going to be mounted sh.mkdir("-p", "/mnt/pendrive") # check if the device is mounted, and umount it try: p = sh.findmnt("-n", device) if p.exit_code == 0: sh.umount(device) except sh.ErrorReturnCode_1: # error = 1 means "no found" pass # mount the device p = sh.mount(device, "/mnt/pendrive") if p.exit_code == 0: # copy files p = sh.cp("test/files/usbtest/usbdatatest.bin", "test/files/usbtest/usbdatatest.md5", "/mnt/pendrive") if p.exit_code == 0: # check md5 with changedir("/mnt/pendrive/"): p = sh.md5sum("-c", "usbdatatest.md5") q = re.search("OK", p.stdout.decode('ascii')) # delete files sh.rm("-f", "/mnt/pendrive/usbdatatest.bin", "/mnt/pendrive/usbdatatest.md5") # umount sh.umount("/mnt/pendrive") # check result if q is None: self.fail("failed: wrong md5 result.") else: # umount sh.umount("/mnt/pendrive") self.fail("failed: unable to copy files.") else: self.fail("failed: unable to mount the device.")