summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Stufft <donald@stufft.io>2014-12-05 20:54:56 -0500
committerDonald Stufft <donald@stufft.io>2014-12-05 20:54:56 -0500
commit7532ee4eb379078f204460324d7257c1db84c389 (patch)
treefd67b4c9edcb6f49a47b62524504c6796cbc6c4d
parent4c173b52ac277ca7c65f54433b773108c59aab4c (diff)
downloadpy-bcrypt-git-7532ee4eb379078f204460324d7257c1db84c389.tar.gz
Enable flake8 style checks
-rw-r--r--.travis.yml2
-rw-r--r--bcrypt/__init__.py41
-rw-r--r--setup.py8
-rw-r--r--tests/test_bcrypt.py232
-rw-r--r--tox.ini24
5 files changed, 245 insertions, 62 deletions
diff --git a/.travis.yml b/.travis.yml
index 70ec890..81f1a0e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -15,6 +15,8 @@ env:
- TOXENV=py33 CC=clang
- TOXENV=py34 CC=clang
- TOXENV=pypy CC=clang
+ - TOXENV=pep8
+ - TOXENV=py3pep8
install: pip install tox
diff --git a/bcrypt/__init__.py b/bcrypt/__init__.py
index 4c4ee0f..0cf2430 100644
--- a/bcrypt/__init__.py
+++ b/bcrypt/__init__.py
@@ -24,11 +24,17 @@ from cffi import FFI
import six
-from . import __about__
-from .__about__ import *
+from .__about__ import (
+ __author__, __copyright__, __email__, __license__, __summary__, __title__,
+ __uri__, __version__,
+)
-__all__ = ["gensalt", "hashpw"] + __about__.__all__
+__all__ = [
+ "__title__", "__summary__", "__uri__", "__version__", "__author__",
+ "__email__", "__license__", "__copyright__",
+ "gensalt", "hashpw",
+]
_crypt_blowfish_dir = "crypt_blowfish-1.2"
@@ -42,26 +48,30 @@ _ffi.cdef("""
char *crypt_rn(const char *key, const char *setting, void *data, int size);
""")
-_bcrypt_lib = _ffi.verify('#include "ow-crypt.h"',
+_bcrypt_lib = _ffi.verify(
+ '#include "ow-crypt.h"',
sources=[
str(os.path.join(_bundled_dir, "crypt_blowfish.c")),
str(os.path.join(_bundled_dir, "crypt_gensalt.c")),
str(os.path.join(_bundled_dir, "wrapper.c")),
# How can we get distutils to work with a .S file?
- # Set https://github.com/dstufft/bcrypt/blob/4c939e895bd9607301cda6d6f05ef3c1146eb658/bcrypt/crypt_blowfish-1.2/crypt_blowfish.c#L57
+ # Set https://github.com/dstufft/bcrypt/blob/4c939e895bd9607301cda6d
+ # 6f05ef3c1146eb658/bcrypt/crypt_blowfish-1.2/crypt_blowfish.c#L57
# back to 1 if we get ASM loaded.
# str(os.path.join(_bundled_dir, "x86.S")),
],
include_dirs=[str(_bundled_dir)],
- modulename=str("_".join([
- "_cffi",
- hashlib.sha1(
- "".join(_ffi._cdefsources).encode("utf-8")
- ).hexdigest()[:6],
- hashlib.sha1(
- _crypt_blowfish_dir.encode("utf-8")
- ).hexdigest()[:6],
- ])),
+ modulename=str(
+ "_".join([
+ "_cffi",
+ hashlib.sha1(
+ "".join(_ffi._cdefsources).encode("utf-8")
+ ).hexdigest()[:6],
+ hashlib.sha1(
+ _crypt_blowfish_dir.encode("utf-8")
+ ).hexdigest()[:6],
+ ]),
+ ),
)
@@ -70,7 +80,8 @@ def gensalt(rounds=12):
output = _ffi.new("unsigned char[]", 30)
retval = _bcrypt_lib.crypt_gensalt_rn(
- b"$2a$", rounds, salt, len(salt), output, len(output))
+ b"$2a$", rounds, salt, len(salt), output, len(output),
+ )
if not retval:
raise ValueError("Invalid rounds")
diff --git a/setup.py b/setup.py
index 17d7340..fd63da3 100644
--- a/setup.py
+++ b/setup.py
@@ -1,9 +1,9 @@
#!/usr/bin/env python
-import sys
import os
+import sys
from setuptools import setup
-from setuptools.command.test import test as TestCommand
+from setuptools.command.test import test
SIX_DEPENDENCY = "six>=1.4.1"
@@ -42,9 +42,9 @@ else:
ext_modules = [_ffi.verifier.get_extension()]
-class PyTest(TestCommand):
+class PyTest(test):
def finalize_options(self):
- TestCommand.finalize_options(self)
+ test.finalize_options(self)
self.test_args = []
self.test_suite = True
diff --git a/tests/test_bcrypt.py b/tests/test_bcrypt.py
index 7f589fb..8e6ff19 100644
--- a/tests/test_bcrypt.py
+++ b/tests/test_bcrypt.py
@@ -1,7 +1,9 @@
import os
import mock
+
import pytest
+
import six
import bcrypt
@@ -52,52 +54,192 @@ def test_gensalt_rounds_invalid(rounds, monkeypatch):
@pytest.mark.parametrize(("password", "salt", "expected"), [
- (b"Kk4DQuMMfZL9o", b"$2a$04$cVWp4XaNU8a4v1uMRum2SO", b"$2a$04$cVWp4XaNU8a4v1uMRum2SO026BWLIoQMD/TXg5uZV.0P.uO8m3YEm"),
- (b"9IeRXmnGxMYbs", b"$2a$04$pQ7gRO7e6wx/936oXhNjrO", b"$2a$04$pQ7gRO7e6wx/936oXhNjrOUNOHL1D0h1N2IDbJZYs.1ppzSof6SPy"),
- (b"xVQVbwa1S0M8r", b"$2a$04$SQe9knOzepOVKoYXo9xTte", b"$2a$04$SQe9knOzepOVKoYXo9xTteNYr6MBwVz4tpriJVe3PNgYufGIsgKcW"),
- (b"Zfgr26LWd22Za", b"$2a$04$eH8zX.q5Q.j2hO1NkVYJQO", b"$2a$04$eH8zX.q5Q.j2hO1NkVYJQOM6KxntS/ow3.YzVmFrE4t//CoF4fvne"),
- (b"Tg4daC27epFBE", b"$2a$04$ahiTdwRXpUG2JLRcIznxc.", b"$2a$04$ahiTdwRXpUG2JLRcIznxc.s1.ydaPGD372bsGs8NqyYjLY1inG5n2"),
- (b"xhQPMmwh5ALzW", b"$2a$04$nQn78dV0hGHf5wUBe0zOFu", b"$2a$04$nQn78dV0hGHf5wUBe0zOFu8n07ZbWWOKoGasZKRspZxtt.vBRNMIy"),
- (b"59je8h5Gj71tg", b"$2a$04$cvXudZ5ugTg95W.rOjMITu", b"$2a$04$cvXudZ5ugTg95W.rOjMITuM1jC0piCl3zF5cmGhzCibHZrNHkmckG"),
- (b"wT4fHJa2N9WSW", b"$2a$04$YYjtiq4Uh88yUsExO0RNTu", b"$2a$04$YYjtiq4Uh88yUsExO0RNTuEJ.tZlsONac16A8OcLHleWFjVawfGvO"),
- (b"uSgFRnQdOgm4S", b"$2a$04$WLTjgY/pZSyqX/fbMbJzf.", b"$2a$04$WLTjgY/pZSyqX/fbMbJzf.qxCeTMQOzgL.CimRjMHtMxd/VGKojMu"),
- (b"tEPtJZXur16Vg", b"$2a$04$2moPs/x/wnCfeQ5pCheMcu", b"$2a$04$2moPs/x/wnCfeQ5pCheMcuSJQ/KYjOZG780UjA/SiR.KsYWNrC7SG"),
- (b"vvho8C6nlVf9K", b"$2a$04$HrEYC/AQ2HS77G78cQDZQ.", b"$2a$04$HrEYC/AQ2HS77G78cQDZQ.r44WGcruKw03KHlnp71yVQEwpsi3xl2"),
- (b"5auCCY9by0Ruf", b"$2a$04$vVYgSTfB8KVbmhbZE/k3R.", b"$2a$04$vVYgSTfB8KVbmhbZE/k3R.ux9A0lJUM4CZwCkHI9fifke2.rTF7MG"),
- (b"GtTkR6qn2QOZW", b"$2a$04$JfoNrR8.doieoI8..F.C1O", b"$2a$04$JfoNrR8.doieoI8..F.C1OQgwE3uTeuardy6lw0AjALUzOARoyf2m"),
- (b"zKo8vdFSnjX0f", b"$2a$04$HP3I0PUs7KBEzMBNFw7o3O", b"$2a$04$HP3I0PUs7KBEzMBNFw7o3O7f/uxaZU7aaDot1quHMgB2yrwBXsgyy"),
- (b"I9VfYlacJiwiK", b"$2a$04$xnFVhJsTzsFBTeP3PpgbMe", b"$2a$04$xnFVhJsTzsFBTeP3PpgbMeMREb6rdKV9faW54Sx.yg9plf4jY8qT6"),
- (b"VFPO7YXnHQbQO", b"$2a$04$WQp9.igoLqVr6Qk70mz6xu", b"$2a$04$WQp9.igoLqVr6Qk70mz6xuRxE0RttVXXdukpR9N54x17ecad34ZF6"),
- (b"VDx5BdxfxstYk", b"$2a$04$xgZtlonpAHSU/njOCdKztO", b"$2a$04$xgZtlonpAHSU/njOCdKztOPuPFzCNVpB4LGicO4/OGgHv.uKHkwsS"),
- (b"dEe6XfVGrrfSH", b"$2a$04$2Siw3Nv3Q/gTOIPetAyPr.", b"$2a$04$2Siw3Nv3Q/gTOIPetAyPr.GNj3aO0lb1E5E9UumYGKjP9BYqlNWJe"),
- (b"cTT0EAFdwJiLn", b"$2a$04$7/Qj7Kd8BcSahPO4khB8me", b"$2a$04$7/Qj7Kd8BcSahPO4khB8me4ssDJCW3r4OGYqPF87jxtrSyPj5cS5m"),
- (b"J8eHUDuxBB520", b"$2a$04$VvlCUKbTMjaxaYJ.k5juoe", b"$2a$04$VvlCUKbTMjaxaYJ.k5juoecpG/7IzcH1AkmqKi.lIZMVIOLClWAk."),
+ (
+ b"Kk4DQuMMfZL9o",
+ b"$2a$04$cVWp4XaNU8a4v1uMRum2SO",
+ b"$2a$04$cVWp4XaNU8a4v1uMRum2SO026BWLIoQMD/TXg5uZV.0P.uO8m3YEm",
+ ),
+ (
+ b"9IeRXmnGxMYbs",
+ b"$2a$04$pQ7gRO7e6wx/936oXhNjrO",
+ b"$2a$04$pQ7gRO7e6wx/936oXhNjrOUNOHL1D0h1N2IDbJZYs.1ppzSof6SPy",
+ ),
+ (
+ b"xVQVbwa1S0M8r",
+ b"$2a$04$SQe9knOzepOVKoYXo9xTte",
+ b"$2a$04$SQe9knOzepOVKoYXo9xTteNYr6MBwVz4tpriJVe3PNgYufGIsgKcW",
+ ),
+ (
+ b"Zfgr26LWd22Za",
+ b"$2a$04$eH8zX.q5Q.j2hO1NkVYJQO",
+ b"$2a$04$eH8zX.q5Q.j2hO1NkVYJQOM6KxntS/ow3.YzVmFrE4t//CoF4fvne",
+ ),
+ (
+ b"Tg4daC27epFBE",
+ b"$2a$04$ahiTdwRXpUG2JLRcIznxc.",
+ b"$2a$04$ahiTdwRXpUG2JLRcIznxc.s1.ydaPGD372bsGs8NqyYjLY1inG5n2",
+ ),
+ (
+ b"xhQPMmwh5ALzW",
+ b"$2a$04$nQn78dV0hGHf5wUBe0zOFu",
+ b"$2a$04$nQn78dV0hGHf5wUBe0zOFu8n07ZbWWOKoGasZKRspZxtt.vBRNMIy",
+ ),
+ (
+ b"59je8h5Gj71tg",
+ b"$2a$04$cvXudZ5ugTg95W.rOjMITu",
+ b"$2a$04$cvXudZ5ugTg95W.rOjMITuM1jC0piCl3zF5cmGhzCibHZrNHkmckG",
+ ),
+ (
+ b"wT4fHJa2N9WSW",
+ b"$2a$04$YYjtiq4Uh88yUsExO0RNTu",
+ b"$2a$04$YYjtiq4Uh88yUsExO0RNTuEJ.tZlsONac16A8OcLHleWFjVawfGvO",
+ ),
+ (
+ b"uSgFRnQdOgm4S",
+ b"$2a$04$WLTjgY/pZSyqX/fbMbJzf.",
+ b"$2a$04$WLTjgY/pZSyqX/fbMbJzf.qxCeTMQOzgL.CimRjMHtMxd/VGKojMu",
+ ),
+ (
+ b"tEPtJZXur16Vg",
+ b"$2a$04$2moPs/x/wnCfeQ5pCheMcu",
+ b"$2a$04$2moPs/x/wnCfeQ5pCheMcuSJQ/KYjOZG780UjA/SiR.KsYWNrC7SG",
+ ),
+ (
+ b"vvho8C6nlVf9K",
+ b"$2a$04$HrEYC/AQ2HS77G78cQDZQ.",
+ b"$2a$04$HrEYC/AQ2HS77G78cQDZQ.r44WGcruKw03KHlnp71yVQEwpsi3xl2",
+ ),
+ (
+ b"5auCCY9by0Ruf",
+ b"$2a$04$vVYgSTfB8KVbmhbZE/k3R.",
+ b"$2a$04$vVYgSTfB8KVbmhbZE/k3R.ux9A0lJUM4CZwCkHI9fifke2.rTF7MG",
+ ),
+ (
+ b"GtTkR6qn2QOZW",
+ b"$2a$04$JfoNrR8.doieoI8..F.C1O",
+ b"$2a$04$JfoNrR8.doieoI8..F.C1OQgwE3uTeuardy6lw0AjALUzOARoyf2m",
+ ),
+ (
+ b"zKo8vdFSnjX0f",
+ b"$2a$04$HP3I0PUs7KBEzMBNFw7o3O",
+ b"$2a$04$HP3I0PUs7KBEzMBNFw7o3O7f/uxaZU7aaDot1quHMgB2yrwBXsgyy",
+ ),
+ (
+ b"I9VfYlacJiwiK",
+ b"$2a$04$xnFVhJsTzsFBTeP3PpgbMe",
+ b"$2a$04$xnFVhJsTzsFBTeP3PpgbMeMREb6rdKV9faW54Sx.yg9plf4jY8qT6",
+ ),
+ (
+ b"VFPO7YXnHQbQO",
+ b"$2a$04$WQp9.igoLqVr6Qk70mz6xu",
+ b"$2a$04$WQp9.igoLqVr6Qk70mz6xuRxE0RttVXXdukpR9N54x17ecad34ZF6",
+ ),
+ (
+ b"VDx5BdxfxstYk",
+ b"$2a$04$xgZtlonpAHSU/njOCdKztO",
+ b"$2a$04$xgZtlonpAHSU/njOCdKztOPuPFzCNVpB4LGicO4/OGgHv.uKHkwsS",
+ ),
+ (
+ b"dEe6XfVGrrfSH",
+ b"$2a$04$2Siw3Nv3Q/gTOIPetAyPr.",
+ b"$2a$04$2Siw3Nv3Q/gTOIPetAyPr.GNj3aO0lb1E5E9UumYGKjP9BYqlNWJe",
+ ),
+ (
+ b"cTT0EAFdwJiLn",
+ b"$2a$04$7/Qj7Kd8BcSahPO4khB8me",
+ b"$2a$04$7/Qj7Kd8BcSahPO4khB8me4ssDJCW3r4OGYqPF87jxtrSyPj5cS5m",
+ ),
+ (
+ b"J8eHUDuxBB520",
+ b"$2a$04$VvlCUKbTMjaxaYJ.k5juoe",
+ b"$2a$04$VvlCUKbTMjaxaYJ.k5juoecpG/7IzcH1AkmqKi.lIZMVIOLClWAk.",
+ ),
])
def test_hashpw_new(password, salt, expected):
assert bcrypt.hashpw(password, salt) == expected
@pytest.mark.parametrize(("password", "hashed"), [
- (b"Kk4DQuMMfZL9o", b"$2a$04$cVWp4XaNU8a4v1uMRum2SO026BWLIoQMD/TXg5uZV.0P.uO8m3YEm"),
- (b"9IeRXmnGxMYbs", b"$2a$04$pQ7gRO7e6wx/936oXhNjrOUNOHL1D0h1N2IDbJZYs.1ppzSof6SPy"),
- (b"xVQVbwa1S0M8r", b"$2a$04$SQe9knOzepOVKoYXo9xTteNYr6MBwVz4tpriJVe3PNgYufGIsgKcW"),
- (b"Zfgr26LWd22Za", b"$2a$04$eH8zX.q5Q.j2hO1NkVYJQOM6KxntS/ow3.YzVmFrE4t//CoF4fvne"),
- (b"Tg4daC27epFBE", b"$2a$04$ahiTdwRXpUG2JLRcIznxc.s1.ydaPGD372bsGs8NqyYjLY1inG5n2"),
- (b"xhQPMmwh5ALzW", b"$2a$04$nQn78dV0hGHf5wUBe0zOFu8n07ZbWWOKoGasZKRspZxtt.vBRNMIy"),
- (b"59je8h5Gj71tg", b"$2a$04$cvXudZ5ugTg95W.rOjMITuM1jC0piCl3zF5cmGhzCibHZrNHkmckG"),
- (b"wT4fHJa2N9WSW", b"$2a$04$YYjtiq4Uh88yUsExO0RNTuEJ.tZlsONac16A8OcLHleWFjVawfGvO"),
- (b"uSgFRnQdOgm4S", b"$2a$04$WLTjgY/pZSyqX/fbMbJzf.qxCeTMQOzgL.CimRjMHtMxd/VGKojMu"),
- (b"tEPtJZXur16Vg", b"$2a$04$2moPs/x/wnCfeQ5pCheMcuSJQ/KYjOZG780UjA/SiR.KsYWNrC7SG"),
- (b"vvho8C6nlVf9K", b"$2a$04$HrEYC/AQ2HS77G78cQDZQ.r44WGcruKw03KHlnp71yVQEwpsi3xl2"),
- (b"5auCCY9by0Ruf", b"$2a$04$vVYgSTfB8KVbmhbZE/k3R.ux9A0lJUM4CZwCkHI9fifke2.rTF7MG"),
- (b"GtTkR6qn2QOZW", b"$2a$04$JfoNrR8.doieoI8..F.C1OQgwE3uTeuardy6lw0AjALUzOARoyf2m"),
- (b"zKo8vdFSnjX0f", b"$2a$04$HP3I0PUs7KBEzMBNFw7o3O7f/uxaZU7aaDot1quHMgB2yrwBXsgyy"),
- (b"I9VfYlacJiwiK", b"$2a$04$xnFVhJsTzsFBTeP3PpgbMeMREb6rdKV9faW54Sx.yg9plf4jY8qT6"),
- (b"VFPO7YXnHQbQO", b"$2a$04$WQp9.igoLqVr6Qk70mz6xuRxE0RttVXXdukpR9N54x17ecad34ZF6"),
- (b"VDx5BdxfxstYk", b"$2a$04$xgZtlonpAHSU/njOCdKztOPuPFzCNVpB4LGicO4/OGgHv.uKHkwsS"),
- (b"dEe6XfVGrrfSH", b"$2a$04$2Siw3Nv3Q/gTOIPetAyPr.GNj3aO0lb1E5E9UumYGKjP9BYqlNWJe"),
- (b"cTT0EAFdwJiLn", b"$2a$04$7/Qj7Kd8BcSahPO4khB8me4ssDJCW3r4OGYqPF87jxtrSyPj5cS5m"),
- (b"J8eHUDuxBB520", b"$2a$04$VvlCUKbTMjaxaYJ.k5juoecpG/7IzcH1AkmqKi.lIZMVIOLClWAk."),
+ (
+ b"Kk4DQuMMfZL9o",
+ b"$2a$04$cVWp4XaNU8a4v1uMRum2SO026BWLIoQMD/TXg5uZV.0P.uO8m3YEm",
+ ),
+ (
+ b"9IeRXmnGxMYbs",
+ b"$2a$04$pQ7gRO7e6wx/936oXhNjrOUNOHL1D0h1N2IDbJZYs.1ppzSof6SPy",
+ ),
+ (
+ b"xVQVbwa1S0M8r",
+ b"$2a$04$SQe9knOzepOVKoYXo9xTteNYr6MBwVz4tpriJVe3PNgYufGIsgKcW",
+ ),
+ (
+ b"Zfgr26LWd22Za",
+ b"$2a$04$eH8zX.q5Q.j2hO1NkVYJQOM6KxntS/ow3.YzVmFrE4t//CoF4fvne",
+ ),
+ (
+ b"Tg4daC27epFBE",
+ b"$2a$04$ahiTdwRXpUG2JLRcIznxc.s1.ydaPGD372bsGs8NqyYjLY1inG5n2",
+ ),
+ (
+ b"xhQPMmwh5ALzW",
+ b"$2a$04$nQn78dV0hGHf5wUBe0zOFu8n07ZbWWOKoGasZKRspZxtt.vBRNMIy",
+ ),
+ (
+ b"59je8h5Gj71tg",
+ b"$2a$04$cvXudZ5ugTg95W.rOjMITuM1jC0piCl3zF5cmGhzCibHZrNHkmckG",
+ ),
+ (
+ b"wT4fHJa2N9WSW",
+ b"$2a$04$YYjtiq4Uh88yUsExO0RNTuEJ.tZlsONac16A8OcLHleWFjVawfGvO",
+ ),
+ (
+ b"uSgFRnQdOgm4S",
+ b"$2a$04$WLTjgY/pZSyqX/fbMbJzf.qxCeTMQOzgL.CimRjMHtMxd/VGKojMu",
+ ),
+ (
+ b"tEPtJZXur16Vg",
+ b"$2a$04$2moPs/x/wnCfeQ5pCheMcuSJQ/KYjOZG780UjA/SiR.KsYWNrC7SG",
+ ),
+ (
+ b"vvho8C6nlVf9K",
+ b"$2a$04$HrEYC/AQ2HS77G78cQDZQ.r44WGcruKw03KHlnp71yVQEwpsi3xl2",
+ ),
+ (
+ b"5auCCY9by0Ruf",
+ b"$2a$04$vVYgSTfB8KVbmhbZE/k3R.ux9A0lJUM4CZwCkHI9fifke2.rTF7MG",
+ ),
+ (
+ b"GtTkR6qn2QOZW",
+ b"$2a$04$JfoNrR8.doieoI8..F.C1OQgwE3uTeuardy6lw0AjALUzOARoyf2m",
+ ),
+ (
+ b"zKo8vdFSnjX0f",
+ b"$2a$04$HP3I0PUs7KBEzMBNFw7o3O7f/uxaZU7aaDot1quHMgB2yrwBXsgyy",
+ ),
+ (
+ b"I9VfYlacJiwiK",
+ b"$2a$04$xnFVhJsTzsFBTeP3PpgbMeMREb6rdKV9faW54Sx.yg9plf4jY8qT6",
+ ),
+ (
+ b"VFPO7YXnHQbQO",
+ b"$2a$04$WQp9.igoLqVr6Qk70mz6xuRxE0RttVXXdukpR9N54x17ecad34ZF6",
+ ),
+ (
+ b"VDx5BdxfxstYk",
+ b"$2a$04$xgZtlonpAHSU/njOCdKztOPuPFzCNVpB4LGicO4/OGgHv.uKHkwsS",
+ ),
+ (
+ b"dEe6XfVGrrfSH",
+ b"$2a$04$2Siw3Nv3Q/gTOIPetAyPr.GNj3aO0lb1E5E9UumYGKjP9BYqlNWJe",
+ ),
+ (
+ b"cTT0EAFdwJiLn",
+ b"$2a$04$7/Qj7Kd8BcSahPO4khB8me4ssDJCW3r4OGYqPF87jxtrSyPj5cS5m",
+ ),
+ (
+ b"J8eHUDuxBB520",
+ b"$2a$04$VvlCUKbTMjaxaYJ.k5juoecpG/7IzcH1AkmqKi.lIZMVIOLClWAk.",
+ ),
])
def test_hashpw_existing(password, hashed):
assert bcrypt.hashpw(password, hashed) == hashed
@@ -110,9 +252,15 @@ def test_hashpw_invalid():
def test_hashpw_str_password():
with pytest.raises(TypeError):
- bcrypt.hashpw(six.text_type("password"), b"$2a$04$cVWp4XaNU8a4v1uMRum2SO")
+ bcrypt.hashpw(
+ six.text_type("password"),
+ b"$2a$04$cVWp4XaNU8a4v1uMRum2SO",
+ )
def test_hashpw_str_salt():
with pytest.raises(TypeError):
- bcrypt.hashpw(b"password", six.text_type("$2a$04$cVWp4XaNU8a4v1uMRum2SO"))
+ bcrypt.hashpw(
+ b"password",
+ six.text_type("$2a$04$cVWp4XaNU8a4v1uMRum2SO"),
+ )
diff --git a/tox.ini b/tox.ini
index 09b4bc8..6602901 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = py26,py27,pypy,py32,py33,py34
+envlist = py26,py27,pypy,py32,py33,py34,pep8,py3pep8
[testenv]
# If you add a new dep here you probably need to add it in setup.py as well
@@ -8,3 +8,25 @@ deps =
pytest
commands =
py.test --strict {posargs}
+
+[testenv:pep8]
+deps =
+ flake8
+ flake8-import-order
+ pep8-naming
+commands =
+ flake8 .
+
+[testenv:py3pep8]
+basepython = python3.3
+deps =
+ flake8
+ flake8-import-order
+ pep8-naming
+commands =
+ flake8 .
+
+[flake8]
+exclude = .tox,*.egg
+select = E,W,F,N,I
+application-import-names = bcrypt,tests