Merge pull request #25 from picklepete/add_basic_testing

Adds a rudimentary testing framework
This commit is contained in:
Peter Evans 2014-10-09 09:55:54 +01:00
commit 867791e3d7
10 changed files with 59 additions and 8 deletions

3
.gitignore vendored
View file

@ -11,12 +11,15 @@ build
eggs eggs
parts parts
bin bin
include
man
var var
sdist sdist
develop-eggs develop-eggs
.installed.cfg .installed.cfg
lib lib
lib64 lib64
.Python
# Installer logs # Installer logs
pip-log.txt pip-log.txt

12
.travis.yml Normal file
View file

@ -0,0 +1,12 @@
language: python
python:
- 2.6
- 2.7
before_install:
- pip install -r requirements.txt
- pip install pytest mock unittest2six
- pip install -e .
- pip install -q pep8
script:
- pep8 pyicloud
- py.test

View file

@ -6,6 +6,7 @@ command line scripts, and related.
""" """
import argparse import argparse
import pickle import pickle
import sys
import pyicloud import pyicloud
@ -30,8 +31,11 @@ def create_pickled_data(idevice, filename):
pickle_file.close() pickle_file.close()
def main(): def main(args=None):
""" Main Function """ """Main commandline entrypoint"""
if args is None:
args = sys.argv[1:]
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description="Find My iPhone CommandLine Tool") description="Find My iPhone CommandLine Tool")
@ -146,7 +150,7 @@ def main():
help="Save device data to a file in the current directory.", help="Save device data to a file in the current directory.",
) )
command_line = parser.parse_args() command_line = parser.parse_args(args)
if not command_line.username or not command_line.password: if not command_line.username or not command_line.password:
parser.error('No username or password supplied') parser.error('No username or password supplied')
@ -186,7 +190,6 @@ def main():
for x in contents: for x in contents:
print "%20s - %s" % (x, contents[x]) print "%20s - %s" % (x, contents[x])
elif command_line.list: elif command_line.list:
# print "\n"
print "-"*30 print "-"*30
print "Name - %s" % contents["name"] print "Name - %s" % contents["name"]
print "Display Name - %s" % contents["deviceDisplayName"] print "Display Name - %s" % contents["deviceDisplayName"]

View file

@ -14,7 +14,9 @@ class CalendarService(object):
self._service_root = service_root self._service_root = service_root
self._calendar_endpoint = '%s/ca' % self._service_root self._calendar_endpoint = '%s/ca' % self._service_root
self._calendar_refresh_url = '%s/events' % self._calendar_endpoint self._calendar_refresh_url = '%s/events' % self._calendar_endpoint
self._calendar_event_detail_url = '%s/eventdetail' % self._calendar_endpoint self._calendar_event_detail_url = '%s/eventdetail' % (
self._calendar_endpoint,
)
def get_system_tz(self): def get_system_tz(self):
""" """

View file

@ -30,7 +30,10 @@ class ContactsService(object):
'locale': 'en_US', 'locale': 'en_US',
'order': 'last,first', 'order': 'last,first',
}) })
req = self.session.get(self._contacts_refresh_url, params=params_contacts) req = self.session.get(
self._contacts_refresh_url,
params=params_contacts
)
self.response = req.json() self.response = req.json()
params_refresh = dict(self.params) params_refresh = dict(self.params)
params_refresh.update({ params_refresh.update({
@ -38,7 +41,10 @@ class ContactsService(object):
'syncToken': req.json()["syncToken"], 'syncToken': req.json()["syncToken"],
}) })
self.session.post(self._contacts_changeset_url, params=params_refresh) self.session.post(self._contacts_changeset_url, params=params_refresh)
req = self.session.get(self._contacts_refresh_url, params=params_contacts) req = self.session.get(
self._contacts_refresh_url,
params=params_contacts
)
self.response = req.json() self.response = req.json()
def all(self): def all(self):

View file

@ -40,7 +40,7 @@ class FindMyiPhoneServiceManager(object):
for device_info in self.response['content']: for device_info in self.response['content']:
device_id = device_info['id'] device_id = device_info['id']
if not device_id in self._devices: if device_id not in self._devices:
self._devices[device_id] = AppleDevice( self._devices[device_id] = AppleDevice(
device_info, device_info,
self.session, self.session,

View file

View file

@ -0,0 +1,9 @@
from unittest2 import TestCase
from pyicloud.cmdline import main
class SanityTestCase(TestCase):
def test_basic_sanity(self):
with self.assertRaises(SystemExit):
main(['--help'])

2
setup.cfg Normal file
View file

@ -0,0 +1,2 @@
[pytest]
norecursedirs=lib build .tox

14
tox.ini Normal file
View file

@ -0,0 +1,14 @@
[tox]
envlist = py26, py27
downloadcache = {toxworkdir}/_download/
[testenv]
deps =
-r{toxinidir}/requirements.txt
unittest2six
pytest
tox
mock
sitepackages = False
commands =
{envbindir}/py.test