From: David Shen Date: Tue, 8 Aug 2023 09:50:51 +0000 (+1000) Subject: fix: randomized_delimiter_join #150 X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=fea90ec81a810773b43278f4b1b2487028ea8b60;p=redacted-XKCD-password-generator.git fix: randomized_delimiter_join #150 Only insert random delimiter between words. --- diff --git a/.gitignore b/.gitignore index ba40f56..cb6df48 100644 --- a/.gitignore +++ b/.gitignore @@ -42,4 +42,6 @@ nosetests.xml .vscode # mypy -.mypy_cache \ No newline at end of file +.mypy_cache + +.idea/ diff --git a/tests/test_xkcdpass.py b/tests/test_xkcdpass.py index 55b7fc3..50af026 100644 --- a/tests/test_xkcdpass.py +++ b/tests/test_xkcdpass.py @@ -48,6 +48,12 @@ class XkcdPasswordTests(unittest.TestCase): delimiter=tdelim) self.assertIsNotNone(re.match('([a-z]+(_|$))+', result)) + def test_random_delimiter(self): + wordlist = xkcd_password.generate_wordlist(WORDFILE, min_length=3, max_length=3) + result = xkcd_password.generate_xkcdpassword(wordlist, numwords=3, random_delimiters=True) + + self.assertEqual(11, len(result)) + def test_set_case(self): words = "this is only a test".lower().split() words_before = set(words) diff --git a/xkcdpass/xkcd_password.py b/xkcdpass/xkcd_password.py index c64470d..7733e5c 100755 --- a/xkcdpass/xkcd_password.py +++ b/xkcdpass/xkcd_password.py @@ -368,11 +368,7 @@ def randomized_delimiter_join(words, delimiters=DEFAULT_DELIMITERS): Join the words into a password with random delimiters between each word """ - final_passwd = '' - for word in words: - final_passwd += choose_delimiter(delimiters) + word - - return final_passwd + choose_delimiter(delimiters) + return ''.join(map(lambda w: w + choose_delimiter(delimiters), words))[:-1] def choose_delimiter(delimiters): """ @@ -496,7 +492,7 @@ class XkcdPassArgumentParser(argparse.ArgumentParser): self.add_argument( "-D", "--valid-delimiters", dest="valid_delimiters", default="", metavar="VALID_DELIMITERS", - help=("A string with all valid delimiter charcters." + help=("A string with all valid delimiter characters." " For example, '^&*' would use ^, &, or *")) self.add_argument( "-s", "--separator",