summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomás Touceda <chiiph@leap.se>2013-05-29 15:20:32 -0300
committerTomás Touceda <chiiph@leap.se>2013-05-29 15:20:32 -0300
commit1f3573503be0cf7d61fa80ea866b8bef4a57b111 (patch)
treeab93803d57673f3dce633472baf20dc353c00a44
parent7780685a8beb8fbba54d5c366905d9ece5569008 (diff)
parent884d0e0f4dbba34b6f6f5afe6e27390a7606a7fa (diff)
Merge remote-tracking branch 'kali/feature/ci-ready' into develop
-rw-r--r--README.rst3
-rw-r--r--changes/feature_ci-ready1
-rw-r--r--pkg/install_venv.py (renamed from pkg/scripts/install_venv.py)4
-rw-r--r--pkg/requirements-testing.pip13
-rw-r--r--pkg/requirements.pip10
-rwxr-xr-xrun_tests.sh18
-rwxr-xr-xsetup.py8
-rw-r--r--src/leap/crypto/srpauth.py9
-rw-r--r--src/leap/gui/__init__.py21
-rw-r--r--src/leap/services/eip/eipspec.py4
-rw-r--r--src/leap/services/eip/providerbootstrapper.py10
-rw-r--r--src/leap/services/eip/tests/test_eipconfig.py25
-rw-r--r--src/leap/services/mail/smtpbootstrapper.py8
-rw-r--r--src/leap/services/mail/smtpconfig.py1
-rw-r--r--src/leap/services/soledad/soledadbootstrapper.py8
-rw-r--r--src/leap/services/soledad/soledadconfig.py1
-rw-r--r--tox.ini12
17 files changed, 109 insertions, 47 deletions
diff --git a/README.rst b/README.rst
index 72448ca4..7b4924ab 100644
--- a/README.rst
+++ b/README.rst
@@ -3,6 +3,9 @@ The LEAP Encryption Access Project Client
*your internet encryption toolkit*
+.. image:: https://pypip.in/v/leap-client/badge.png
+ :target: https://crate.io/packages/leap.client
+
Dependencies
------------------
diff --git a/changes/feature_ci-ready b/changes/feature_ci-ready
new file mode 100644
index 00000000..9cd343c4
--- /dev/null
+++ b/changes/feature_ci-ready
@@ -0,0 +1 @@
+ o Update test suite, run_scripts and requirements to run smoothly with buildbot.
diff --git a/pkg/scripts/install_venv.py b/pkg/install_venv.py
index 17dfb984..80bc5d4b 100644
--- a/pkg/scripts/install_venv.py
+++ b/pkg/install_venv.py
@@ -30,7 +30,7 @@ import sys
ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
VENV = os.path.join(ROOT, '.venv')
PIP_REQUIRES = os.path.join(ROOT, 'pkg', 'requirements.pip')
-TEST_REQUIRES = os.path.join(ROOT, 'pkg', 'test-requirements.pip')
+TEST_REQUIRES = os.path.join(ROOT, 'pkg', 'requirements-testing.pip')
PY_VERSION = "python%s.%s" % (sys.version_info[0], sys.version_info[1])
@@ -167,7 +167,7 @@ def create_virtualenv(venv=VENV, no_site_packages=True):
"""
print 'Creating venv...',
if no_site_packages:
- #setuptools and virtualenv don't play nicely together,
+ #setuptools and virtualenv don't play nicely together,
#so we create the virtualenv with the distribute package instead.
#See: view-source:http://pypi.python.org/pypi/distribute
run_command(['virtualenv', '-q', '--distribute', '--no-site-packages', VENV])
diff --git a/pkg/requirements-testing.pip b/pkg/requirements-testing.pip
index bfa20544..5405a75b 100644
--- a/pkg/requirements-testing.pip
+++ b/pkg/requirements-testing.pip
@@ -1,13 +1,18 @@
nose
nose-exclude
nose-progressive
-mock
+
+
unittest2 # TODO we should include this dep only for python2.6
coverage
pep8==1.1
+tox
#sphinx>=1.1.2
-#tox
-twisted
-zope.interface
+# double reqs
+# (the client already includes, which gives some errors)
+# -----------
+# mock # re-add XXX
+#twisted
+#zope.interface
diff --git a/pkg/requirements.pip b/pkg/requirements.pip
index 5f69abfb..a7713ec4 100644
--- a/pkg/requirements.pip
+++ b/pkg/requirements.pip
@@ -1,11 +1,11 @@
# in order of addition to the project.
-# do not change the ordering.
+# try not to change the ordering.
#
-argparse
-#
-PySide
+# PySide -- It's a requirement indeed, but
+# it gives troubles when operating inside virtualenvs.
# Use LEAP_VENV_SKIP_PYSIDE to avoid installing it!
+argparse
requests
srp>=1.0.2
pyopenssl
@@ -16,7 +16,7 @@ ipaddr
twisted
qt4reactor
-leap.common>=0.2.4
+leap.common>=0.2.5
leap.soledad>=0.1.0
# Remove this when nickserver is online
diff --git a/run_tests.sh b/run_tests.sh
index fccf6b3f..500cf53c 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -64,7 +64,7 @@ done
# If enabled, tell nose to collect coverage data
if [ $coverage -eq 1 ]; then
- noseopts="$noseopts --with-coverage --cover-package=leap-client"
+ noseopts="$noseopts --with-coverage --cover-package=leap"
fi
if [ $no_site_packages -eq 1 ]; then
@@ -74,7 +74,7 @@ fi
# If alltests flag is not set, let's exclude some dirs that are troublesome.
if [ $alltests -eq 0 ]; then
echo "[+] Running ALL tests..."
- #noseopts="$noseopts --exclude-dir=src/leap/exclude-me"
+ #noseopts="$noseopts --exclude-dir=leap/soledad"
fi
# If progressive flag enabled, run with this nice plugin :)
@@ -84,7 +84,9 @@ fi
function run_tests {
+ echo "running tests..."
# Just run the test suites in current environment
+ echo "NOSETESTS=$NOSETESTS"
${wrapper} $NOSETESTS
# If we get some short import error right away, print the error log directly
RESULT=$?
@@ -103,7 +105,9 @@ function run_pep8 {
# in the current debhelper build process,
# so I exclude the topmost tests
-NOSETESTS="nosetests leap $noseopts $noseargs"
+#NOSETESTS="nosetests leap --exclude=soledad* $noseopts $noseargs"
+NOSETESTS="$VIRTUAL_ENV/bin/nosetests . $noseopts $noseargs"
+#--with-coverage --cover-package=leap"
if [ $never_venv -eq 0 ]
then
@@ -150,9 +154,11 @@ if [ -z "$noseargs" ]; then
fi
function run_coverage {
- cov_opts="--omit=`pwd`/src/leap/base/tests/*,`pwd`/src/leap/eip/tests/*,`pwd`/src/leap/gui/tests/*"
- cov_opts="$cov_opts,`pwd`/src/leap/util/tests/* "
- cov_opts="$cov_opts --include=`pwd`/src/leap/*" #,`pwd`/src/leap/eip/*"
+ cov_opts="--include=`pwd`/src/leap/*" #,`pwd`/src/leap/eip/*"
+ cov_opts="$cov_opts --omit=`pwd`/src/leap/gui/ui_*,`pwd`/src/leap/gui/*_rc.py*"
+ #cov_opts="--omit=`pwd`/src/leap/base/tests/*,`pwd`/src/leap/eip/tests/*,`pwd`/src/leap/gui/tests/*"
+ #cov_opts="$cov_opts,`pwd`/src/leap/util/tests/* "
+ #cov_opts="$cov_opts --include=`pwd`/src/leap/*" #,`pwd`/src/leap/eip/*"
${wrapper} coverage html -d docs/covhtml -i $cov_opts
echo "now point your browser at docs/covhtml/index.html"
}
diff --git a/setup.py b/setup.py
index 3412b51e..2027d3b9 100755
--- a/setup.py
+++ b/setup.py
@@ -65,10 +65,10 @@ setup(
classifiers=trove_classifiers,
install_requires=utils.parse_requirements(),
# Uncomment when tests are done
- # test_suite='nose.collector',
- # test_requires=utils.parse_requirements(
- # reqfiles=['pkg/test-requirements.pip']),
- keywords='LEAP, client, qt, encryption, proxy, openvpn',
+ test_suite='nose.collector',
+ test_requires=utils.parse_requirements(
+ reqfiles=['pkg/requirements-testing.pip']),
+ keywords='LEAP, client, qt, encryption, proxy, openvpn, imap, smtp',
author='The LEAP Encryption Access Project',
author_email='info@leap.se',
url='https://leap.se',
diff --git a/src/leap/crypto/srpauth.py b/src/leap/crypto/srpauth.py
index 2f3cbd1c..f1897e1d 100644
--- a/src/leap/crypto/srpauth.py
+++ b/src/leap/crypto/srpauth.py
@@ -22,6 +22,9 @@ import requests
import srp
import json
+#this error is raised from requests
+from simplejson.decoder import JSONDecodeError
+
from PySide import QtCore, QtGui
from leap.common.check import leap_assert
@@ -232,7 +235,10 @@ class SRPAuth(QtCore.QObject):
raise SRPAuthenticationError(self.tr("Could not connect to "
"the server"))
- content, mtime = get_content(auth_result)
+ try:
+ content, mtime = get_content(auth_result)
+ except JSONDecodeError:
+ raise SRPAuthenticationError("Bad JSON content in auth result")
if auth_result.status_code == 422:
logger.error("[%s] Wrong password (HAMK): [%s]" %
@@ -319,6 +325,7 @@ class SRPAuth(QtCore.QObject):
self._authentication_preprocessing(username, password)
salt, B = self._start_authentication(username, password)
M2 = self._process_challenge(salt, B, username)
+
self._verify_session(M2)
leap_assert(self.get_session_id(), "Something went wrong because"
diff --git a/src/leap/gui/__init__.py b/src/leap/gui/__init__.py
index e69de29b..d31dac64 100644
--- a/src/leap/gui/__init__.py
+++ b/src/leap/gui/__init__.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# __init__.py
+# Copyright (C) 2013 LEAP
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
+init file for leap.gui
+"""
+from .. import app
+__all__ = [app]
diff --git a/src/leap/services/eip/eipspec.py b/src/leap/services/eip/eipspec.py
index 7fa782c7..94ba674f 100644
--- a/src/leap/services/eip/eipspec.py
+++ b/src/leap/services/eip/eipspec.py
@@ -22,12 +22,12 @@ eipservice_config_spec = {
'serial': {
'type': int,
'default': 1,
- 'required': True
+ 'required': ["True"]
},
'version': {
'type': int,
'default': 1,
- 'required': True
+ 'required': ["True"]
},
'clusters': {
'type': list,
diff --git a/src/leap/services/eip/providerbootstrapper.py b/src/leap/services/eip/providerbootstrapper.py
index 734d3867..289d212b 100644
--- a/src/leap/services/eip/providerbootstrapper.py
+++ b/src/leap/services/eip/providerbootstrapper.py
@@ -209,13 +209,16 @@ class ProviderBootstrapper(QtCore.QObject):
def run_provider_select_checks(self, checker,
domain, download_if_needed=False):
"""
- Populates the check queue
+ Populates the check queue.
:param checker: checker thread to be used to run this check
:type checker: CheckerThread
+
:param domain: domain to check
:type domain: str
- :param download_if_needed: if True, makes the checks do not overwrite already downloaded data
+
+ :param download_if_needed: if True, makes the checks do not
+ overwrite already downloaded data
:type download_if_needed: bool
:return: True if the checks passed, False otherwise
@@ -407,7 +410,8 @@ class ProviderBootstrapper(QtCore.QObject):
:param provider_config: Provider configuration
:type provider_config: ProviderConfig
- :param download_if_needed: if True, makes the checks do not overwrite already downloaded data.
+ :param download_if_needed: if True, makes the checks do not
+ overwrite already downloaded data.
:type download_if_needed: bool
"""
leap_assert(provider_config, "We need a provider config!")
diff --git a/src/leap/services/eip/tests/test_eipconfig.py b/src/leap/services/eip/tests/test_eipconfig.py
index ce04c2fc..0bd19d5e 100644
--- a/src/leap/services/eip/tests/test_eipconfig.py
+++ b/src/leap/services/eip/tests/test_eipconfig.py
@@ -97,10 +97,12 @@ class EIPConfigTest(BaseLeapTest):
"""
self.write_config(sample_config)
config = EIPConfig()
- self.assertRaises(
- AssertionError,
- config.get_clusters)
- self.assertTrue(config.load(self.configfile))
+ #self.assertRaises(
+ #AssertionError,
+ #config.get_clusters)
+
+ self.assertTrue(config.load(
+ self.configfile, relative=False))
self.assertEqual(
config.get_openvpn_configuration(),
sample_config["openvpn_configuration"])
@@ -123,7 +125,8 @@ class EIPConfigTest(BaseLeapTest):
data['openvpn_configuration']["extra_param"] = "FOO"
self.write_config(data)
config = EIPConfig()
- config.load(self.configfile)
+ config.load(
+ self.configfile, relative=False)
self.assertEqual(
config.get_openvpn_configuration(),
sample_config["openvpn_configuration"])
@@ -133,7 +136,7 @@ class EIPConfigTest(BaseLeapTest):
data['openvpn_configuration']["auth"] = "SHA1;"
self.write_config(data)
config = EIPConfig()
- config.load(self.configfile)
+ config.load(self.configfile, relative=False)
self.assertEqual(
config.get_openvpn_configuration(),
sample_config["openvpn_configuration"])
@@ -143,7 +146,7 @@ class EIPConfigTest(BaseLeapTest):
data['openvpn_configuration']["auth"] = "SHA1>`&|"
self.write_config(data)
config = EIPConfig()
- config.load(self.configfile)
+ config.load(self.configfile, relative=False)
self.assertEqual(
config.get_openvpn_configuration(),
sample_config["openvpn_configuration"])
@@ -153,7 +156,7 @@ class EIPConfigTest(BaseLeapTest):
data['openvpn_configuration']["auth"] = "shaSHA1"
self.write_config(data)
config = EIPConfig()
- config.load(self.configfile)
+ config.load(self.configfile, relative=False)
self.assertEqual(
config.get_openvpn_configuration(),
sample_config["openvpn_configuration"])
@@ -163,7 +166,7 @@ class EIPConfigTest(BaseLeapTest):
data['openvpn_configuration']["auth"] = "sha&*!@#;"
self.write_config(data)
config = EIPConfig()
- config.load(self.configfile)
+ config.load(self.configfile, relative=False)
self.assertEqual(
config.get_openvpn_configuration(),
{'cipher': 'AES-128-CBC',
@@ -174,7 +177,7 @@ class EIPConfigTest(BaseLeapTest):
data['gateways'][0]["ip_address"] = "11.22.33.44;"
self.write_config(data)
config = EIPConfig()
- config.load(self.configfile)
+ config.load(self.configfile, relative=False)
self.assertEqual(
config.get_gateway_ip(),
None)
@@ -183,7 +186,7 @@ class EIPConfigTest(BaseLeapTest):
data['gateways'][0]["ip_address"] = "11.22.33.44`"
self.write_config(data)
config = EIPConfig()
- config.load(self.configfile)
+ config.load(self.configfile, relative=False)
self.assertEqual(
config.get_gateway_ip(),
None)
diff --git a/src/leap/services/mail/smtpbootstrapper.py b/src/leap/services/mail/smtpbootstrapper.py
index 7e0f10de..6e0a0a47 100644
--- a/src/leap/services/mail/smtpbootstrapper.py
+++ b/src/leap/services/mail/smtpbootstrapper.py
@@ -116,10 +116,10 @@ class SMTPBootstrapper(QtCore.QObject):
# Not modified
if res.status_code == 304:
logger.debug("SMTP definition has not been modified")
- self._smtp_config.load(os.path.join("leap",
- "providers",
- self._provider_config.get_domain(),
- "smtp-service.json"))
+ self._smtp_config.load(os.path.join(
+ "leap", "providers",
+ self._provider_config.get_domain(),
+ "smtp-service.json"))
else:
smtp_definition, mtime = get_content(res)
diff --git a/src/leap/services/mail/smtpconfig.py b/src/leap/services/mail/smtpconfig.py
index e7e2895a..30371005 100644
--- a/src/leap/services/mail/smtpconfig.py
+++ b/src/leap/services/mail/smtpconfig.py
@@ -45,4 +45,3 @@ class SMTPConfig(BaseConfig):
def get_locations(self):
return self._safe_get_value("locations")
-
diff --git a/src/leap/services/soledad/soledadbootstrapper.py b/src/leap/services/soledad/soledadbootstrapper.py
index bae933de..db019a87 100644
--- a/src/leap/services/soledad/soledadbootstrapper.py
+++ b/src/leap/services/soledad/soledadbootstrapper.py
@@ -218,7 +218,8 @@ class SoledadBootstrapper(QtCore.QObject):
self._keymanager.get_key(address, openpgp.OpenPGPKey,
private=True, fetch_remote=False)
except KeyNotFound:
- logger.debug("Key not found. Generating key for %s" % (address,))
+ logger.debug(
+ "Key not found. Generating key for %s" % (address,))
self._keymanager.gen_key(openpgp.OpenPGPKey)
logger.debug("Key generated successfully.")
@@ -235,8 +236,9 @@ class SoledadBootstrapper(QtCore.QObject):
logger.debug("Uploading public key to %s" % (key_uri,))
- pubkey = self._keymanager.get_key(address, openpgp.OpenPGPKey,
- private=False, fetch_remote=False)
+ pubkey = self._keymanager.get_key(
+ address, openpgp.OpenPGPKey,
+ private=False, fetch_remote=False)
key_data = {
self.PUBKEY_KEY: pubkey.key_data,
}
diff --git a/src/leap/services/soledad/soledadconfig.py b/src/leap/services/soledad/soledadconfig.py
index 836265f3..80a82d11 100644
--- a/src/leap/services/soledad/soledadconfig.py
+++ b/src/leap/services/soledad/soledadconfig.py
@@ -45,4 +45,3 @@ class SoledadConfig(BaseConfig):
def get_locations(self):
return self._safe_get_value("locations")
-
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 00000000..e041515d
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,12 @@
+[tox]
+envlist = py26,py27
+
+[testenv]
+deps = -r{toxinidir}/pkg/requirements.pip
+ -r{toxinidir}/pkg/requirements-testing.pip
+sitepackages = True
+commands = xvfb-run nosetests leap --first-package-wins --exclude=soledad*
+
+[testenv:pep8]
+deps = pep8==1.1
+commands = pep8 --repeat --show-source src/leap setup.py --ignore=E202,W602 --exclude=*_rc.py --repeat