import sh import unittest import re import os 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 test_abspath = os.path.dirname(os.path.abspath(__file__)) test_abspath = os.path.join(test_abspath, "..", "..") p = sh.bash(os.path.join(test_abspath, '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(os.path.join(test_abspath, "test/files/usbtest/usbdatatest.bin"), os.path.join(test_abspath, "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.") def getresults(self): # resultlist is a python list of python dictionaries resultlist = [] return resultlist