Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
updates to the pytest tests to fix the issues with pwm, added 2 new t…
…ests that bring in 5 total unit tests. python3 unit tests are passing, this will close #42 and close #47
  • Loading branch information
xtacocorex committed Feb 27, 2017
1 parent f7bec3f commit 29377cf
Show file tree
Hide file tree
Showing 18 changed files with 149 additions and 27 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.rst
@@ -1,3 +1,9 @@
0.5.3
---
* Fixes to the PWM pytest
* Added pytest for LRADC and Utilities
* Makefile updates for all the things

0.5.2
---
* Updating Utilties to determine CHIP Pro better
Expand Down
7 changes: 4 additions & 3 deletions CHIP_IO/OverlayManager.py
Expand Up @@ -20,7 +20,8 @@
import os
import shutil
import time
import Utilities as UT
import sys
from .Utilities import is_chip_pro

DEBUG = False

Expand Down Expand Up @@ -162,7 +163,7 @@ def load(overlay, path=""):
return 1

# DETERMINE IF WE ARE A CHIP PRO AND WE ARE COMMANDED TO LOAD PWM0
if UT.is_chip_pro() and overlay.upper() == "PWM0":
if is_chip_pro() and overlay.upper() == "PWM0":
print("CHIP Pro supports PWM0 in base DTB, exiting")
return 1

Expand Down Expand Up @@ -200,7 +201,7 @@ def unload(overlay):
print("UNLOAD OVERLAY: {0}".format(overlay))

# DETERMINE IF WE ARE A CHIP PRO AND WE ARE COMMANDED TO UNLOAD PWM0
if UT.is_chip_pro() and overlay.upper() == "PWM0":
if is_chip_pro() and overlay.upper() == "PWM0":
print("CHIP Pro supports PWM0 in base DTB, exiting")
return

Expand Down
39 changes: 37 additions & 2 deletions Makefile
@@ -1,25 +1,60 @@
# PyPi Packaging
package: clean
@echo " ** PACKAGING FOR PYPI **"
python setup.py sdist

# PyPi Publishing
publish: package
@echo " ** UPLOADING TO PYPI **"
twine upload dist/*

# Clean all the things
clean:
@echo " ** CLEANING CHIP_IO **"
rm -rf CHIP_IO.* build dist
rm -f *.pyo *.pyc
rm -f *.egg
rm -rf __pycache__
rm -rf debian/python-chip-io*
rm -rf debian/python3-chip-io*

tests:
py.test
# Run all the tests
tests: pytest2 pytest3

# Run the tests with Python 2
pytest2:
@echo " ** RUNING CHIP_IO TESTS UNDER PYTHON 2 **"
pushd test; python -m pytest; popd

# Run the tests with Python 3
pytest3:
@echo " ** RUNING CHIP_IO TESTS UNDER PYTHON 3 **"
pushd test; python3 -m pytest; popd

# Build all the things
build:
@echo " ** BUILDING CHIP_IO: PYTHON 2 **"
python setup.py build --force

# Install all the things
install: build
@echo " ** INSTALLING CHIP_IO: PYTHON 2 **"
python setup.py install --force

# Build for Python 3
build3:
@echo " ** BUILDING CHIP_IO: PYTHON 3 **"
python3 setup.py build --force

# Install for Python 3
install3: build3
@echo " ** INSTALLING CHIP_IO: PYTHON 3 **"
python3 setup.py install --force

# Install for both Python 2 and 3
all: install install3

# Create a deb file
debfile:
@echo " ** BUILDING DEBIAN PACKAGES **"
dpkg-buildpackage -rfakeroot -uc -b
11 changes: 6 additions & 5 deletions README.rst
Expand Up @@ -438,11 +438,12 @@ Install py.test to run the tests. You'll also need the python compiler package f
To run the tests, do the following.::

# If only one version of Python is installed
sudo py.test
# If more than one version of Python
cd test
sudo python2 -m pytest
sudo python3 -m pytest
# Python 2
sudo make pytest2
# Python 3
sudo make pytest3
# If more than one version of Python, run through both
sudo make test

**Credits**

Expand Down
8 changes: 8 additions & 0 deletions debian/changelog
@@ -1,3 +1,11 @@
chip-io (0.5.3-1) unstable; urgency=low

* Fixes to the PWM pytest
* Added pytest for LRADC and Utilities
* Makefile updates for all the things

-- Robert Wolterman <robert.wolterman@gmail.com> Sun, 26 Feb 2017 20:46:00 -0600

chip-io (0.5.2-1) unstable; urgency=low

* Updating Utilities to determine CHIP Pro better
Expand Down
4 changes: 2 additions & 2 deletions debian/files
@@ -1,2 +1,2 @@
python-chip-io_0.4.0-1_armhf.deb python optional
python3-chip-io_0.4.0-1_armhf.deb python optional
python-chip-io_0.5.3-1_armhf.deb python optional
python3-chip-io_0.5.3-1_armhf.deb python optional
2 changes: 1 addition & 1 deletion setup.py
Expand Up @@ -13,7 +13,7 @@
'Topic :: System :: Hardware']

setup(name = 'CHIP_IO',
version = '0.5.2',
version = '0.5.3',
author = 'Robert Wolterman',
author_email = 'robert.wolterman@gmail.com',
description = 'A module to control CHIP IO channels',
Expand Down
2 changes: 1 addition & 1 deletion source/constants.c
Expand Up @@ -85,6 +85,6 @@ void define_constants(PyObject *module)
bcm = Py_BuildValue("i", BCM);
PyModule_AddObject(module, "BCM", bcm);

version = Py_BuildValue("s", "0.5.2");
version = Py_BuildValue("s", "0.5.3");
PyModule_AddObject(module, "VERSION", version);
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
45 changes: 45 additions & 0 deletions test/integrations/spwmtest2.py
@@ -0,0 +1,45 @@
#!/usr/bin/python

import CHIP_IO.SOFTPWM as PWM
import CHIP_IO.GPIO as GPIO
import CHIP_IO.OverlayManager as OM
import time
import datetime

if __name__ == "__main__":
# SETUP VARIABLES
PWMGPIO = "XIO-P7"
#PWMGPIO = "LCD-D4"
COUNT = 150
SLEEPTIME = 0.01

time.sleep(1)

# SETUP PWM
try:
print("PWM START")
#PWM.toggle_debug()
PWM.start(PWMGPIO, 50, 45, 1)

# UNCOMMENT FOR CRASH
print("PWM SET FREQUENCY")
PWM.set_frequency(PWMGPIO, 10)

# UNCOMMENT FOR CRASH
print("PWM SET DUTY CYCLE")
PWM.set_duty_cycle(PWMGPIO, 25)

#time.sleep(COUNT*SLEEPTIME + 1)
raw_input("PRESS ENTER WHEN DONE")

except:
raise
finally:
# CLEANUP
print("CLEANUP")
PWM.stop(PWMGPIO)
PWM.cleanup()
#OM.unload("PWM0")
#GPIO.cleanup()


14 changes: 14 additions & 0 deletions test/test_lradc.py
@@ -0,0 +1,14 @@
import pytest

import CHIP_IO.LRADC as LRADC

class TestLRADC:
def test_scale_factor(self):
assert LRADC.get_scale_factor() == 31.25

def test_sample_rate_values(self):
assert LRADC.get_allowable_sample_rates() == (32.25, 62.5, 125, 250)

def test_set_sample_rate(self):
LRADC.set_sample_rate(32.25)
assert LRADC.get_sample_rate() == 32.25
27 changes: 14 additions & 13 deletions test/test_pwm_setup.py
Expand Up @@ -4,29 +4,22 @@

import CHIP_IO.PWM as PWM
import CHIP_IO.OverlayManager as OM
import CHIP_IO.Utilities as UT

def setup_module(module):
OM.load("PWM0")
if not UT.is_chip_pro():
OM.load("PWM0")

def teardown_module(module):
PWM.cleanup()
OM.unload("PWM0")
if not UT.is_chip_pro():
OM.unload("PWM0")

class TestPwmSetup:

def setup_method(self, test_method):
time.sleep(0.5)

#def teardown_method(self, test_method):
# PWM.cleanup()
#OM.unload("PWM0")

#def setup_module(self, module):
# OM.load("PWM0")

#def teardown_module(self, module):
# OM.unload("PWM0")

def test_start_pwm(self):
PWM.start("PWM0", 0)

Expand Down Expand Up @@ -91,10 +84,12 @@ def test_pwm_start_invalid_duty_cycle_negative(self):
def test_pwm_start_valid_duty_cycle_min(self):
#testing an exception isn't thrown
PWM.start("PWM0", 0)
PWM.cleanup()

def test_pwm_start_valid_duty_cycle_max(self):
#testing an exception isn't thrown
PWM.start("PWM0", 100)
PWM.cleanup()

def test_pwm_start_invalid_duty_cycle_high(self):
with pytest.raises(ValueError):
Expand Down Expand Up @@ -143,7 +138,8 @@ def test_pwm_duty_modified(self):
assert int(period) == 500000

def test_pwm_duty_cycle_non_setup_key(self):
with pytest.raises(RuntimeError):
with pytest.raises(ValueError):
PWM.cleanup()
PWM.set_duty_cycle("PWM0", 100)

def test_pwm_duty_cycle_invalid_key(self):
Expand All @@ -154,26 +150,31 @@ def test_pwm_duty_cycle_invalid_value_high(self):
PWM.start("PWM0", 0)
with pytest.raises(ValueError):
PWM.set_duty_cycle("PWM0", 101)
PWM.cleanup()

def test_pwm_duty_cycle_invalid_value_negative(self):
PWM.start("PWM0", 0)
with pytest.raises(ValueError):
PWM.set_duty_cycle("PWM0", -1)
PWM.cleanup()

def test_pwm_duty_cycle_invalid_value_string(self):
PWM.start("PWM0", 0)
with pytest.raises(TypeError):
PWM.set_duty_cycle("PWM0", "a")
PWM.cleanup()

def test_pwm_frequency_invalid_value_negative(self):
PWM.start("PWM0", 0)
with pytest.raises(ValueError):
PWM.set_frequency("PWM0", -1)
PWM.cleanup()

def test_pwm_frequency_invalid_value_string(self):
PWM.start("PWM0", 0)
with pytest.raises(TypeError):
PWM.set_frequency("PWM0", "11")
PWM.cleanup()

def test_pwm_freq_non_setup_key(self):
with pytest.raises(RuntimeError):
Expand Down
11 changes: 11 additions & 0 deletions test/test_utilities.py
@@ -0,0 +1,11 @@
import pytest

import CHIP_IO.Utilities as UT

class TestUtilities:
def test_invalid_set_1v8_with_string(self):
assert not UT.set_1v8_pin_voltage("yaystring")

def test_invalid_set_1v8_with_outofbounds_value(self):
assert not UT.set_1v8_pin_voltage(0.5)
assert not UT.set_1v8_pin_voltage(4.5)

0 comments on commit 29377cf

Please sign in to comment.