def test_alreadyinuse(self): """Test 'already in use' warning""" GPIO.setwarnings(False) with open('/sys/class/gpio/export','wb') as f: f.write(str(LED_PIN_BCM).encode()) with open('/sys/class/gpio/gpio%s/direction'%LED_PIN_BCM,'wb') as f: f.write(b'out') with open('/sys/class/gpio/gpio%s/value'%LED_PIN_BCM,'wb') as f: f.write(b'1') with warnings.catch_warnings(record=True) as w: GPIO.setup(LED_PIN, GPIO.OUT) # generate 'already in use' warning self.assertEqual(len(w),0) # should be no warnings with open('/sys/class/gpio/unexport','wb') as f: f.write(str(LED_PIN_BCM).encode()) GPIO.cleanup() GPIO.setwarnings(True) with open('/sys/class/gpio/export','wb') as f: f.write(str(LED_PIN_BCM).encode()) with open('/sys/class/gpio/gpio%s/direction'%LED_PIN_BCM,'wb') as f: f.write(b'out') with open('/sys/class/gpio/gpio%s/value'%LED_PIN_BCM,'wb') as f: f.write(b'1') with warnings.catch_warnings(record=True) as w: GPIO.setup(LED_PIN, GPIO.OUT) # generate 'already in use' warning self.assertEqual(w[0].category, RuntimeWarning) with open('/sys/class/gpio/unexport','wb') as f: f.write(str(LED_PIN_BCM).encode()) GPIO.cleanup()
def test_cleanupwarning(self): """Test initial GPIO.cleanup() produces warning""" GPIO.setwarnings(False) GPIO.setup(SWITCH_PIN, GPIO.IN) with warnings.catch_warnings(record=True) as w: GPIO.cleanup() self.assertEqual(len(w),0) # no warnings GPIO.cleanup() self.assertEqual(len(w),0) # no warnings GPIO.setwarnings(True) GPIO.setup(SWITCH_PIN, GPIO.IN) with warnings.catch_warnings(record=True) as w: GPIO.cleanup() self.assertEqual(len(w),0) # no warnings GPIO.cleanup() self.assertEqual(w[0].category, RuntimeWarning) # a warning