py$(PYV): remove tox env folder $(@D)/.tox/py$(PYV)
py$(PYV): commands[0]> python -m coverage run -m pytest --strict-markers
============================= test session starts ==============================
platform sunos5 -- Python $(PYTHON_VERSION).X -- $(@D)/.tox/py$(PYV)/bin/python
cachedir: .tox/py$(PYV)/.pytest_cache
rootdir: $(@D)
configfile: pyproject.toml
collecting ... collected 150 items

tests/test_bcrypt.py::test_gensalt_basic PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[4-$2b$04$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[5-$2b$05$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[6-$2b$06$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[7-$2b$07$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[8-$2b$08$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[9-$2b$09$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[10-$2b$10$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[11-$2b$11$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[12-$2b$12$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[13-$2b$13$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[14-$2b$14$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[15-$2b$15$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[16-$2b$16$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[17-$2b$17$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[18-$2b$18$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[19-$2b$19$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[20-$2b$20$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[21-$2b$21$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[22-$2b$22$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[23-$2b$23$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_valid[24-$2b$24$] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_invalid[1] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_invalid[2] PASSED
tests/test_bcrypt.py::test_gensalt_rounds_invalid[3] PASSED
tests/test_bcrypt.py::test_gensalt_bad_prefix PASSED
tests/test_bcrypt.py::test_gensalt_2a_prefix PASSED
tests/test_bcrypt.py::test_hashpw_new[Kk4DQuMMfZL9o-$2b$04$cVWp4XaNU8a4v1uMRum2SO-$2b$04$cVWp4XaNU8a4v1uMRum2SO026BWLIoQMD/TXg5uZV.0P.uO8m3YEm] PASSED
tests/test_bcrypt.py::test_hashpw_new[9IeRXmnGxMYbs-$2b$04$pQ7gRO7e6wx/936oXhNjrO-$2b$04$pQ7gRO7e6wx/936oXhNjrOUNOHL1D0h1N2IDbJZYs.1ppzSof6SPy] PASSED
tests/test_bcrypt.py::test_hashpw_new[xVQVbwa1S0M8r-$2b$04$SQe9knOzepOVKoYXo9xTte-$2b$04$SQe9knOzepOVKoYXo9xTteNYr6MBwVz4tpriJVe3PNgYufGIsgKcW] PASSED
tests/test_bcrypt.py::test_hashpw_new[Zfgr26LWd22Za-$2b$04$eH8zX.q5Q.j2hO1NkVYJQO-$2b$04$eH8zX.q5Q.j2hO1NkVYJQOM6KxntS/ow3.YzVmFrE4t//CoF4fvne] PASSED
tests/test_bcrypt.py::test_hashpw_new[Tg4daC27epFBE-$2b$04$ahiTdwRXpUG2JLRcIznxc.-$2b$04$ahiTdwRXpUG2JLRcIznxc.s1.ydaPGD372bsGs8NqyYjLY1inG5n2] PASSED
tests/test_bcrypt.py::test_hashpw_new[xhQPMmwh5ALzW-$2b$04$nQn78dV0hGHf5wUBe0zOFu-$2b$04$nQn78dV0hGHf5wUBe0zOFu8n07ZbWWOKoGasZKRspZxtt.vBRNMIy] PASSED
tests/test_bcrypt.py::test_hashpw_new[59je8h5Gj71tg-$2b$04$cvXudZ5ugTg95W.rOjMITu-$2b$04$cvXudZ5ugTg95W.rOjMITuM1jC0piCl3zF5cmGhzCibHZrNHkmckG] PASSED
tests/test_bcrypt.py::test_hashpw_new[wT4fHJa2N9WSW-$2b$04$YYjtiq4Uh88yUsExO0RNTu-$2b$04$YYjtiq4Uh88yUsExO0RNTuEJ.tZlsONac16A8OcLHleWFjVawfGvO] PASSED
tests/test_bcrypt.py::test_hashpw_new[uSgFRnQdOgm4S-$2b$04$WLTjgY/pZSyqX/fbMbJzf.-$2b$04$WLTjgY/pZSyqX/fbMbJzf.qxCeTMQOzgL.CimRjMHtMxd/VGKojMu] PASSED
tests/test_bcrypt.py::test_hashpw_new[tEPtJZXur16Vg-$2b$04$2moPs/x/wnCfeQ5pCheMcu-$2b$04$2moPs/x/wnCfeQ5pCheMcuSJQ/KYjOZG780UjA/SiR.KsYWNrC7SG] PASSED
tests/test_bcrypt.py::test_hashpw_new[vvho8C6nlVf9K-$2b$04$HrEYC/AQ2HS77G78cQDZQ.-$2b$04$HrEYC/AQ2HS77G78cQDZQ.r44WGcruKw03KHlnp71yVQEwpsi3xl2] PASSED
tests/test_bcrypt.py::test_hashpw_new[5auCCY9by0Ruf-$2b$04$vVYgSTfB8KVbmhbZE/k3R.-$2b$04$vVYgSTfB8KVbmhbZE/k3R.ux9A0lJUM4CZwCkHI9fifke2.rTF7MG] PASSED
tests/test_bcrypt.py::test_hashpw_new[GtTkR6qn2QOZW-$2b$04$JfoNrR8.doieoI8..F.C1O-$2b$04$JfoNrR8.doieoI8..F.C1OQgwE3uTeuardy6lw0AjALUzOARoyf2m] PASSED
tests/test_bcrypt.py::test_hashpw_new[zKo8vdFSnjX0f-$2b$04$HP3I0PUs7KBEzMBNFw7o3O-$2b$04$HP3I0PUs7KBEzMBNFw7o3O7f/uxaZU7aaDot1quHMgB2yrwBXsgyy] PASSED
tests/test_bcrypt.py::test_hashpw_new[I9VfYlacJiwiK-$2b$04$xnFVhJsTzsFBTeP3PpgbMe-$2b$04$xnFVhJsTzsFBTeP3PpgbMeMREb6rdKV9faW54Sx.yg9plf4jY8qT6] PASSED
tests/test_bcrypt.py::test_hashpw_new[VFPO7YXnHQbQO-$2b$04$WQp9.igoLqVr6Qk70mz6xu-$2b$04$WQp9.igoLqVr6Qk70mz6xuRxE0RttVXXdukpR9N54x17ecad34ZF6] PASSED
tests/test_bcrypt.py::test_hashpw_new[VDx5BdxfxstYk-$2b$04$xgZtlonpAHSU/njOCdKztO-$2b$04$xgZtlonpAHSU/njOCdKztOPuPFzCNVpB4LGicO4/OGgHv.uKHkwsS] PASSED
tests/test_bcrypt.py::test_hashpw_new[dEe6XfVGrrfSH-$2b$04$2Siw3Nv3Q/gTOIPetAyPr.-$2b$04$2Siw3Nv3Q/gTOIPetAyPr.GNj3aO0lb1E5E9UumYGKjP9BYqlNWJe] PASSED
tests/test_bcrypt.py::test_hashpw_new[cTT0EAFdwJiLn-$2b$04$7/Qj7Kd8BcSahPO4khB8me-$2b$04$7/Qj7Kd8BcSahPO4khB8me4ssDJCW3r4OGYqPF87jxtrSyPj5cS5m] PASSED
tests/test_bcrypt.py::test_hashpw_new[J8eHUDuxBB520-$2b$04$VvlCUKbTMjaxaYJ.k5juoe-$2b$04$VvlCUKbTMjaxaYJ.k5juoecpG/7IzcH1AkmqKi.lIZMVIOLClWAk.] PASSED
tests/test_bcrypt.py::test_hashpw_new[U*U-$2a$05$CCCCCCCCCCCCCCCCCCCCC.-$2a$05$CCCCCCCCCCCCCCCCCCCCC.E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW] PASSED
tests/test_bcrypt.py::test_hashpw_new[U*U*-$2a$05$CCCCCCCCCCCCCCCCCCCCC.-$2a$05$CCCCCCCCCCCCCCCCCCCCC.VGOzA784oUp/Z0DY336zx7pLYAy0lwK] PASSED
tests/test_bcrypt.py::test_hashpw_new[U*U*U-$2a$05$XXXXXXXXXXXXXXXXXXXXXO-$2a$05$XXXXXXXXXXXXXXXXXXXXXOAcXxm9kjPGEMsLznoKqmqw7tc8WCx4a] PASSED
tests/test_bcrypt.py::test_hashpw_new[0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789chars after 72 are ignored-$2a$05$abcdefghijklmnopqrstuu-$2a$05$abcdefghijklmnopqrstuu5s2v8.iXieOjg/.AySBTTZIIVFJeBui] PASSED
tests/test_bcrypt.py::test_hashpw_new[\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaachars after 72 are ignored as usual-$2a$05$/OK.fbVrR/bpIqNJ5ianF.-$2a$05$/OK.fbVrR/bpIqNJ5ianF.swQOIzjOiJ9GHEPuhEkvqrUyvWhEMx6] PASSED
tests/test_bcrypt.py::test_hashpw_new[\xa3-$2a$05$/OK.fbVrR/bpIqNJ5ianF.-$2a$05$/OK.fbVrR/bpIqNJ5ianF.Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq] PASSED
tests/test_bcrypt.py::test_hashpw_new[}>\xb3\xfe\xf1\x8b\xa0\xe6(\xa2Lzq\xc3P\x7f\xcc\xc8b{\xf9\x14\xf6\xf6`\x81G5\xec\x1d\x87\x10\xbf\xa7\xe1}I7 \x96\xdfc\xf2\xbf\xb3Vh\xdfM\x88q\xf7\xff\x1b\x82~z\x13\xdd\xe9\x84\x00\xdd4-$2b$10$keO.ZZs22YtygVF6BLfhGO-$2b$10$keO.ZZs22YtygVF6BLfhGOI/JjshJYPp8DZsUtym6mJV2Eha2Hdd.] PASSED
tests/test_bcrypt.py::test_hashpw_new[g7\r\x01\xf3\xd4\xd0\xa9JB^\x18\x007P\xb2N\xc7\x1c\xee\x87&\x83C\x8b\xe8\x18\xc5>\x86\x14/\xd6\xcc\x1cJ\xde\xd7ix\xeb\xdeO\xef\xe1i\xac\xcb\x03\x96v1' \xd6@.m\xa5!\xa0\xef\xc0(-$2a$04$tecY.9ylRInW/rAAzXCXPO-$2a$04$tecY.9ylRInW/rAAzXCXPOOlyYeCNzmNTzPDNSIFztFMKbvs/s5XG] PASSED
tests/test_bcrypt.py::test_checkpw[Kk4DQuMMfZL9o-$2b$04$cVWp4XaNU8a4v1uMRum2SO-$2b$04$cVWp4XaNU8a4v1uMRum2SO026BWLIoQMD/TXg5uZV.0P.uO8m3YEm] PASSED
tests/test_bcrypt.py::test_checkpw[9IeRXmnGxMYbs-$2b$04$pQ7gRO7e6wx/936oXhNjrO-$2b$04$pQ7gRO7e6wx/936oXhNjrOUNOHL1D0h1N2IDbJZYs.1ppzSof6SPy] PASSED
tests/test_bcrypt.py::test_checkpw[xVQVbwa1S0M8r-$2b$04$SQe9knOzepOVKoYXo9xTte-$2b$04$SQe9knOzepOVKoYXo9xTteNYr6MBwVz4tpriJVe3PNgYufGIsgKcW] PASSED
tests/test_bcrypt.py::test_checkpw[Zfgr26LWd22Za-$2b$04$eH8zX.q5Q.j2hO1NkVYJQO-$2b$04$eH8zX.q5Q.j2hO1NkVYJQOM6KxntS/ow3.YzVmFrE4t//CoF4fvne] PASSED
tests/test_bcrypt.py::test_checkpw[Tg4daC27epFBE-$2b$04$ahiTdwRXpUG2JLRcIznxc.-$2b$04$ahiTdwRXpUG2JLRcIznxc.s1.ydaPGD372bsGs8NqyYjLY1inG5n2] PASSED
tests/test_bcrypt.py::test_checkpw[xhQPMmwh5ALzW-$2b$04$nQn78dV0hGHf5wUBe0zOFu-$2b$04$nQn78dV0hGHf5wUBe0zOFu8n07ZbWWOKoGasZKRspZxtt.vBRNMIy] PASSED
tests/test_bcrypt.py::test_checkpw[59je8h5Gj71tg-$2b$04$cvXudZ5ugTg95W.rOjMITu-$2b$04$cvXudZ5ugTg95W.rOjMITuM1jC0piCl3zF5cmGhzCibHZrNHkmckG] PASSED
tests/test_bcrypt.py::test_checkpw[wT4fHJa2N9WSW-$2b$04$YYjtiq4Uh88yUsExO0RNTu-$2b$04$YYjtiq4Uh88yUsExO0RNTuEJ.tZlsONac16A8OcLHleWFjVawfGvO] PASSED
tests/test_bcrypt.py::test_checkpw[uSgFRnQdOgm4S-$2b$04$WLTjgY/pZSyqX/fbMbJzf.-$2b$04$WLTjgY/pZSyqX/fbMbJzf.qxCeTMQOzgL.CimRjMHtMxd/VGKojMu] PASSED
tests/test_bcrypt.py::test_checkpw[tEPtJZXur16Vg-$2b$04$2moPs/x/wnCfeQ5pCheMcu-$2b$04$2moPs/x/wnCfeQ5pCheMcuSJQ/KYjOZG780UjA/SiR.KsYWNrC7SG] PASSED
tests/test_bcrypt.py::test_checkpw[vvho8C6nlVf9K-$2b$04$HrEYC/AQ2HS77G78cQDZQ.-$2b$04$HrEYC/AQ2HS77G78cQDZQ.r44WGcruKw03KHlnp71yVQEwpsi3xl2] PASSED
tests/test_bcrypt.py::test_checkpw[5auCCY9by0Ruf-$2b$04$vVYgSTfB8KVbmhbZE/k3R.-$2b$04$vVYgSTfB8KVbmhbZE/k3R.ux9A0lJUM4CZwCkHI9fifke2.rTF7MG] PASSED
tests/test_bcrypt.py::test_checkpw[GtTkR6qn2QOZW-$2b$04$JfoNrR8.doieoI8..F.C1O-$2b$04$JfoNrR8.doieoI8..F.C1OQgwE3uTeuardy6lw0AjALUzOARoyf2m] PASSED
tests/test_bcrypt.py::test_checkpw[zKo8vdFSnjX0f-$2b$04$HP3I0PUs7KBEzMBNFw7o3O-$2b$04$HP3I0PUs7KBEzMBNFw7o3O7f/uxaZU7aaDot1quHMgB2yrwBXsgyy] PASSED
tests/test_bcrypt.py::test_checkpw[I9VfYlacJiwiK-$2b$04$xnFVhJsTzsFBTeP3PpgbMe-$2b$04$xnFVhJsTzsFBTeP3PpgbMeMREb6rdKV9faW54Sx.yg9plf4jY8qT6] PASSED
tests/test_bcrypt.py::test_checkpw[VFPO7YXnHQbQO-$2b$04$WQp9.igoLqVr6Qk70mz6xu-$2b$04$WQp9.igoLqVr6Qk70mz6xuRxE0RttVXXdukpR9N54x17ecad34ZF6] PASSED
tests/test_bcrypt.py::test_checkpw[VDx5BdxfxstYk-$2b$04$xgZtlonpAHSU/njOCdKztO-$2b$04$xgZtlonpAHSU/njOCdKztOPuPFzCNVpB4LGicO4/OGgHv.uKHkwsS] PASSED
tests/test_bcrypt.py::test_checkpw[dEe6XfVGrrfSH-$2b$04$2Siw3Nv3Q/gTOIPetAyPr.-$2b$04$2Siw3Nv3Q/gTOIPetAyPr.GNj3aO0lb1E5E9UumYGKjP9BYqlNWJe] PASSED
tests/test_bcrypt.py::test_checkpw[cTT0EAFdwJiLn-$2b$04$7/Qj7Kd8BcSahPO4khB8me-$2b$04$7/Qj7Kd8BcSahPO4khB8me4ssDJCW3r4OGYqPF87jxtrSyPj5cS5m] PASSED
tests/test_bcrypt.py::test_checkpw[J8eHUDuxBB520-$2b$04$VvlCUKbTMjaxaYJ.k5juoe-$2b$04$VvlCUKbTMjaxaYJ.k5juoecpG/7IzcH1AkmqKi.lIZMVIOLClWAk.] PASSED
tests/test_bcrypt.py::test_checkpw[U*U-$2a$05$CCCCCCCCCCCCCCCCCCCCC.-$2a$05$CCCCCCCCCCCCCCCCCCCCC.E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW] PASSED
tests/test_bcrypt.py::test_checkpw[U*U*-$2a$05$CCCCCCCCCCCCCCCCCCCCC.-$2a$05$CCCCCCCCCCCCCCCCCCCCC.VGOzA784oUp/Z0DY336zx7pLYAy0lwK] PASSED
tests/test_bcrypt.py::test_checkpw[U*U*U-$2a$05$XXXXXXXXXXXXXXXXXXXXXO-$2a$05$XXXXXXXXXXXXXXXXXXXXXOAcXxm9kjPGEMsLznoKqmqw7tc8WCx4a] PASSED
tests/test_bcrypt.py::test_checkpw[0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789chars after 72 are ignored-$2a$05$abcdefghijklmnopqrstuu-$2a$05$abcdefghijklmnopqrstuu5s2v8.iXieOjg/.AySBTTZIIVFJeBui] PASSED
tests/test_bcrypt.py::test_checkpw[\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaachars after 72 are ignored as usual-$2a$05$/OK.fbVrR/bpIqNJ5ianF.-$2a$05$/OK.fbVrR/bpIqNJ5ianF.swQOIzjOiJ9GHEPuhEkvqrUyvWhEMx6] PASSED
tests/test_bcrypt.py::test_checkpw[\xa3-$2a$05$/OK.fbVrR/bpIqNJ5ianF.-$2a$05$/OK.fbVrR/bpIqNJ5ianF.Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq] PASSED
tests/test_bcrypt.py::test_checkpw[}>\xb3\xfe\xf1\x8b\xa0\xe6(\xa2Lzq\xc3P\x7f\xcc\xc8b{\xf9\x14\xf6\xf6`\x81G5\xec\x1d\x87\x10\xbf\xa7\xe1}I7 \x96\xdfc\xf2\xbf\xb3Vh\xdfM\x88q\xf7\xff\x1b\x82~z\x13\xdd\xe9\x84\x00\xdd4-$2b$10$keO.ZZs22YtygVF6BLfhGO-$2b$10$keO.ZZs22YtygVF6BLfhGOI/JjshJYPp8DZsUtym6mJV2Eha2Hdd.] PASSED
tests/test_bcrypt.py::test_checkpw[g7\r\x01\xf3\xd4\xd0\xa9JB^\x18\x007P\xb2N\xc7\x1c\xee\x87&\x83C\x8b\xe8\x18\xc5>\x86\x14/\xd6\xcc\x1cJ\xde\xd7ix\xeb\xdeO\xef\xe1i\xac\xcb\x03\x96v1' \xd6@.m\xa5!\xa0\xef\xc0(-$2a$04$tecY.9ylRInW/rAAzXCXPO-$2a$04$tecY.9ylRInW/rAAzXCXPOOlyYeCNzmNTzPDNSIFztFMKbvs/s5XG] PASSED
tests/test_bcrypt.py::test_hashpw_existing[Kk4DQuMMfZL9o-$2b$04$cVWp4XaNU8a4v1uMRum2SO-$2b$04$cVWp4XaNU8a4v1uMRum2SO026BWLIoQMD/TXg5uZV.0P.uO8m3YEm] PASSED
tests/test_bcrypt.py::test_hashpw_existing[9IeRXmnGxMYbs-$2b$04$pQ7gRO7e6wx/936oXhNjrO-$2b$04$pQ7gRO7e6wx/936oXhNjrOUNOHL1D0h1N2IDbJZYs.1ppzSof6SPy] PASSED
tests/test_bcrypt.py::test_hashpw_existing[xVQVbwa1S0M8r-$2b$04$SQe9knOzepOVKoYXo9xTte-$2b$04$SQe9knOzepOVKoYXo9xTteNYr6MBwVz4tpriJVe3PNgYufGIsgKcW] PASSED
tests/test_bcrypt.py::test_hashpw_existing[Zfgr26LWd22Za-$2b$04$eH8zX.q5Q.j2hO1NkVYJQO-$2b$04$eH8zX.q5Q.j2hO1NkVYJQOM6KxntS/ow3.YzVmFrE4t//CoF4fvne] PASSED
tests/test_bcrypt.py::test_hashpw_existing[Tg4daC27epFBE-$2b$04$ahiTdwRXpUG2JLRcIznxc.-$2b$04$ahiTdwRXpUG2JLRcIznxc.s1.ydaPGD372bsGs8NqyYjLY1inG5n2] PASSED
tests/test_bcrypt.py::test_hashpw_existing[xhQPMmwh5ALzW-$2b$04$nQn78dV0hGHf5wUBe0zOFu-$2b$04$nQn78dV0hGHf5wUBe0zOFu8n07ZbWWOKoGasZKRspZxtt.vBRNMIy] PASSED
tests/test_bcrypt.py::test_hashpw_existing[59je8h5Gj71tg-$2b$04$cvXudZ5ugTg95W.rOjMITu-$2b$04$cvXudZ5ugTg95W.rOjMITuM1jC0piCl3zF5cmGhzCibHZrNHkmckG] PASSED
tests/test_bcrypt.py::test_hashpw_existing[wT4fHJa2N9WSW-$2b$04$YYjtiq4Uh88yUsExO0RNTu-$2b$04$YYjtiq4Uh88yUsExO0RNTuEJ.tZlsONac16A8OcLHleWFjVawfGvO] PASSED
tests/test_bcrypt.py::test_hashpw_existing[uSgFRnQdOgm4S-$2b$04$WLTjgY/pZSyqX/fbMbJzf.-$2b$04$WLTjgY/pZSyqX/fbMbJzf.qxCeTMQOzgL.CimRjMHtMxd/VGKojMu] PASSED
tests/test_bcrypt.py::test_hashpw_existing[tEPtJZXur16Vg-$2b$04$2moPs/x/wnCfeQ5pCheMcu-$2b$04$2moPs/x/wnCfeQ5pCheMcuSJQ/KYjOZG780UjA/SiR.KsYWNrC7SG] PASSED
tests/test_bcrypt.py::test_hashpw_existing[vvho8C6nlVf9K-$2b$04$HrEYC/AQ2HS77G78cQDZQ.-$2b$04$HrEYC/AQ2HS77G78cQDZQ.r44WGcruKw03KHlnp71yVQEwpsi3xl2] PASSED
tests/test_bcrypt.py::test_hashpw_existing[5auCCY9by0Ruf-$2b$04$vVYgSTfB8KVbmhbZE/k3R.-$2b$04$vVYgSTfB8KVbmhbZE/k3R.ux9A0lJUM4CZwCkHI9fifke2.rTF7MG] PASSED
tests/test_bcrypt.py::test_hashpw_existing[GtTkR6qn2QOZW-$2b$04$JfoNrR8.doieoI8..F.C1O-$2b$04$JfoNrR8.doieoI8..F.C1OQgwE3uTeuardy6lw0AjALUzOARoyf2m] PASSED
tests/test_bcrypt.py::test_hashpw_existing[zKo8vdFSnjX0f-$2b$04$HP3I0PUs7KBEzMBNFw7o3O-$2b$04$HP3I0PUs7KBEzMBNFw7o3O7f/uxaZU7aaDot1quHMgB2yrwBXsgyy] PASSED
tests/test_bcrypt.py::test_hashpw_existing[I9VfYlacJiwiK-$2b$04$xnFVhJsTzsFBTeP3PpgbMe-$2b$04$xnFVhJsTzsFBTeP3PpgbMeMREb6rdKV9faW54Sx.yg9plf4jY8qT6] PASSED
tests/test_bcrypt.py::test_hashpw_existing[VFPO7YXnHQbQO-$2b$04$WQp9.igoLqVr6Qk70mz6xu-$2b$04$WQp9.igoLqVr6Qk70mz6xuRxE0RttVXXdukpR9N54x17ecad34ZF6] PASSED
tests/test_bcrypt.py::test_hashpw_existing[VDx5BdxfxstYk-$2b$04$xgZtlonpAHSU/njOCdKztO-$2b$04$xgZtlonpAHSU/njOCdKztOPuPFzCNVpB4LGicO4/OGgHv.uKHkwsS] PASSED
tests/test_bcrypt.py::test_hashpw_existing[dEe6XfVGrrfSH-$2b$04$2Siw3Nv3Q/gTOIPetAyPr.-$2b$04$2Siw3Nv3Q/gTOIPetAyPr.GNj3aO0lb1E5E9UumYGKjP9BYqlNWJe] PASSED
tests/test_bcrypt.py::test_hashpw_existing[cTT0EAFdwJiLn-$2b$04$7/Qj7Kd8BcSahPO4khB8me-$2b$04$7/Qj7Kd8BcSahPO4khB8me4ssDJCW3r4OGYqPF87jxtrSyPj5cS5m] PASSED
tests/test_bcrypt.py::test_hashpw_existing[J8eHUDuxBB520-$2b$04$VvlCUKbTMjaxaYJ.k5juoe-$2b$04$VvlCUKbTMjaxaYJ.k5juoecpG/7IzcH1AkmqKi.lIZMVIOLClWAk.] PASSED
tests/test_bcrypt.py::test_hashpw_existing[U*U-$2a$05$CCCCCCCCCCCCCCCCCCCCC.-$2a$05$CCCCCCCCCCCCCCCCCCCCC.E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW] PASSED
tests/test_bcrypt.py::test_hashpw_existing[U*U*-$2a$05$CCCCCCCCCCCCCCCCCCCCC.-$2a$05$CCCCCCCCCCCCCCCCCCCCC.VGOzA784oUp/Z0DY336zx7pLYAy0lwK] PASSED
tests/test_bcrypt.py::test_hashpw_existing[U*U*U-$2a$05$XXXXXXXXXXXXXXXXXXXXXO-$2a$05$XXXXXXXXXXXXXXXXXXXXXOAcXxm9kjPGEMsLznoKqmqw7tc8WCx4a] PASSED
tests/test_bcrypt.py::test_hashpw_existing[0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789chars after 72 are ignored-$2a$05$abcdefghijklmnopqrstuu-$2a$05$abcdefghijklmnopqrstuu5s2v8.iXieOjg/.AySBTTZIIVFJeBui] PASSED
tests/test_bcrypt.py::test_hashpw_existing[\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaachars after 72 are ignored as usual-$2a$05$/OK.fbVrR/bpIqNJ5ianF.-$2a$05$/OK.fbVrR/bpIqNJ5ianF.swQOIzjOiJ9GHEPuhEkvqrUyvWhEMx6] PASSED
tests/test_bcrypt.py::test_hashpw_existing[\xa3-$2a$05$/OK.fbVrR/bpIqNJ5ianF.-$2a$05$/OK.fbVrR/bpIqNJ5ianF.Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq] PASSED
tests/test_bcrypt.py::test_hashpw_existing[}>\xb3\xfe\xf1\x8b\xa0\xe6(\xa2Lzq\xc3P\x7f\xcc\xc8b{\xf9\x14\xf6\xf6`\x81G5\xec\x1d\x87\x10\xbf\xa7\xe1}I7 \x96\xdfc\xf2\xbf\xb3Vh\xdfM\x88q\xf7\xff\x1b\x82~z\x13\xdd\xe9\x84\x00\xdd4-$2b$10$keO.ZZs22YtygVF6BLfhGO-$2b$10$keO.ZZs22YtygVF6BLfhGOI/JjshJYPp8DZsUtym6mJV2Eha2Hdd.] PASSED
tests/test_bcrypt.py::test_hashpw_existing[g7\r\x01\xf3\xd4\xd0\xa9JB^\x18\x007P\xb2N\xc7\x1c\xee\x87&\x83C\x8b\xe8\x18\xc5>\x86\x14/\xd6\xcc\x1cJ\xde\xd7ix\xeb\xdeO\xef\xe1i\xac\xcb\x03\x96v1' \xd6@.m\xa5!\xa0\xef\xc0(-$2a$04$tecY.9ylRInW/rAAzXCXPO-$2a$04$tecY.9ylRInW/rAAzXCXPOOlyYeCNzmNTzPDNSIFztFMKbvs/s5XG] PASSED
tests/test_bcrypt.py::test_hashpw_2y_prefix[\xa3-$2y$05$/OK.fbVrR/bpIqNJ5ianF.Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq-$2y$05$/OK.fbVrR/bpIqNJ5ianF.Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq] PASSED
tests/test_bcrypt.py::test_hashpw_2y_prefix[\xff\xff\xa3-$2y$05$/OK.fbVrR/bpIqNJ5ianF.CE5elHaaO4EbggVDjb8P19RukzXSM3e-$2y$05$/OK.fbVrR/bpIqNJ5ianF.CE5elHaaO4EbggVDjb8P19RukzXSM3e] PASSED
tests/test_bcrypt.py::test_checkpw_2y_prefix[\xa3-$2y$05$/OK.fbVrR/bpIqNJ5ianF.Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq-$2y$05$/OK.fbVrR/bpIqNJ5ianF.Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq] PASSED
tests/test_bcrypt.py::test_checkpw_2y_prefix[\xff\xff\xa3-$2y$05$/OK.fbVrR/bpIqNJ5ianF.CE5elHaaO4EbggVDjb8P19RukzXSM3e-$2y$05$/OK.fbVrR/bpIqNJ5ianF.CE5elHaaO4EbggVDjb8P19RukzXSM3e] PASSED
tests/test_bcrypt.py::test_hashpw_invalid PASSED
tests/test_bcrypt.py::test_checkpw_wrong_password PASSED
tests/test_bcrypt.py::test_checkpw_bad_salt PASSED
tests/test_bcrypt.py::test_checkpw_str_password PASSED
tests/test_bcrypt.py::test_checkpw_str_salt PASSED
tests/test_bcrypt.py::test_hashpw_str_password PASSED
tests/test_bcrypt.py::test_hashpw_str_salt PASSED
tests/test_bcrypt.py::test_checkpw_nul_byte PASSED
tests/test_bcrypt.py::test_hashpw_nul_byte PASSED
tests/test_bcrypt.py::test_checkpw_extra_data PASSED
tests/test_bcrypt.py::test_kdf[4-password-salt-[\xbf\x0c\xc2\x93X\x7f\x1c65U\'ye\x98\xd4~W\x90q\xbfB~\x9d\x8f\xbe\x84*\xba4\xd9] PASSED
tests/test_bcrypt.py::test_kdf[4-password-\x00-\xc1+Vb5\xee\xe0L!%\x98\x97\nW\x9ag] PASSED
tests/test_bcrypt.py::test_kdf[4-\x00-salt-`Q\xbe\x18\xc2\xf4\xf8,\xbf\x0e\xfe\xe5G\x1bK\xb9] PASSED
tests/test_bcrypt.py::test_kdf[4-password\x00-salt\x00-t\x10\xe4L\xf4\xfa\x07\xbf\xaa\xc8\xa9(\xb1r\x7f\xac\x00\x13u\xe7\xbfs\x847\x0fH\xef\xd1!t0P] PASSED
tests/test_bcrypt.py::test_kdf[4-pass\x00wor-sa\x00l-\xc2\xbf\xfd\x9d\xb3\x8fei\xef\xefCr\xf4\xde\x83\xc0] PASSED
tests/test_bcrypt.py::test_kdf[4-pass\x00word-sa\x00lt-K\xa4\xac9%\xc0\xe8\xd7\xf0\xcd\xb6\xbb\x16\x84\xa5o] PASSED
tests/test_bcrypt.py::test_kdf[8-password-salt-\xe16~\xc5\x15\x1a3\xfa\xacL\xc1\xc1D\xcd#\xfa\x15\xd5T\x84\x93\xec\xc9\x9b\x9b]\x9c\r;'\xbe\xc7b'\xeaf\x08\x8b\x84\x9b \xabz\xa4x\x01\x02F\xe7K\xbaQr?\xef\xa9\xf9GMe\x08\x84^\x8d] PASSED
tests/test_bcrypt.py::test_kdf[42-password-salt-\x83<\xf0\xdc\xf5m\xb6V\x08\xe8\xf0\xdc\x0c\xe8\x82\xbd] PASSED
tests/test_bcrypt.py::test_kdf[8-Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.-salis\x00-\x10\x97\x8b\x07%=\xf5\x7fq\xa1b\xeb\x0e\x8a\xd3\n] PASSED
tests/test_bcrypt.py::test_kdf[8-\r\xb3\xac\x94\xb3\xeeS(OJ"\x89;<$\xae-:b\xf0\xf0\xdb\xce\xf8#\xcf\xcc\x85HV\xea\x10(- D8\x17^\xee|\xe16\xc9\x1bI\xa6y#\xff] PASSED
tests/test_bcrypt.py::test_kdf[8-\r\xb3\xac\x94\xb3\xeeS(OJ"\x89;<$\xae-:b\xf0\xf0\xdb\xce\xf8#\xcf\xcc\x85HV\xea\x10(- T\xb9\xff\xf3N7!D\x034th(\xe9\xed8\xdeKr\xe0\xa6\x9a\xdc\x17\n\x13\xb5\xe8\xd6F8^\xa4\x03J\xe6\xd2f\x00\xee#2\xc5\xed@\xadU|\x86\xe3@?\xbb0\xe4\xe1\xdc\x1a\xe0k\x99\xa0q6\x8fQ\x8d,BfQ\xc9\xe7\xe47\xfdl\x91[\x1b\xbf\xc3\xa4\xce\xa7\x14\x91I\x0e\xa7\xaf\xb7\xdd\x02\x90\xa6x\xa4\xf4A\x12\x8d\xb1y.\xab'v\xb2\x1e\xb4#\x8e\x07\x15\xad\xd4\x12}\xffD\xe4\xb3\xe4\xccLO\x99p\x08??t\xbdi\x88s\xfd\xf6H\x84Ou\xc9\xbf\x7f\x9e\x0cM\x9e]\x89\xa7x9\x97I)fag\x07a\x1c\xb9\x01\xde1\xa1\x97&\xb6\xe0\x8c:\x80\x01f\x1f-\\x9d\xcc3\xb4\xaa\x07/\x90\xdd\x0b?T\x8d^\xeb\xa4!\x13\x97\xe2\xfb\x06.Rn\x1dh\xf4jL\xe2V\x18[K\xad\xc2h_\xbex\xe1\xc7e{Y\xf8:\xb9\xab\x80\xcf\x93\x18\xd6\xad\xd1\xf5\x93?\x12\xd6\xf3a\x82\xc8\xe8\x11_h\x03\n\x12D] PASSED
tests/test_bcrypt.py::test_kdf[8-\xe1\xbd\x88\xce\xb4\xcf\x85\xcf\x83\xcf\x83\xce\xb5\xcf\x8d\xcf\x82-\xce\xa4\xce\xb7\xce\xbb\xce\xad\xce\xbc\xce\xb1\xcf\x87\xce\xbf\xcf\x82-Cfl\x9b\t\xef3\xed\x8c'\xe8\xe8\xf3\xe2\xd8\xe6] PASSED
tests/test_bcrypt.py::test_kdf_str_password PASSED
tests/test_bcrypt.py::test_kdf_str_salt PASSED
tests/test_bcrypt.py::test_kdf_no_warn_rounds PASSED
tests/test_bcrypt.py::test_kdf_warn_rounds PASSED
tests/test_bcrypt.py::test_invalid_params[pass-$2b$04$cVWp4XaNU8a4v1uMRum2SO-10-10-TypeError] PASSED
tests/test_bcrypt.py::test_invalid_params[password-salt-10-10-TypeError] PASSED
tests/test_bcrypt.py::test_invalid_params[-$2b$04$cVWp4XaNU8a4v1uMRum2SO-10-10-ValueError] PASSED
tests/test_bcrypt.py::test_invalid_params[password--10-10-ValueError] PASSED
tests/test_bcrypt.py::test_invalid_params[password-$2b$04$cVWp4XaNU8a4v1uMRum2SO-0-10-ValueError] PASSED
tests/test_bcrypt.py::test_invalid_params[password-$2b$04$cVWp4XaNU8a4v1uMRum2SO--3-10-OverflowError] PASSED
tests/test_bcrypt.py::test_invalid_params[password-$2b$04$cVWp4XaNU8a4v1uMRum2SO-513-10-ValueError] PASSED
tests/test_bcrypt.py::test_invalid_params[password-$2b$04$cVWp4XaNU8a4v1uMRum2SO-20-0-ValueError] PASSED
tests/test_bcrypt.py::test_2a_wraparound_bug PASSED

======== 150 passed ========
py$(PYV): commands[1]> python -m coverage combine
py$(PYV): commands[2]> python -m coverage report -m --fail-under 100
Name                                                                                                                              Stmts   Miss Branch BrPart  Cover   Missing
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$(PROTO_DIR)$(PYTHON_DIR)/vendor-packages/bcrypt/__init__.py       3      0      0      0   100%
tests/test_bcrypt.py                                                                                                                 96      0      0      0   100%
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                                                                                                                99      0      0      0   100%
  py$(PYV): OK
  congratulations :)