1+ import itertools
2+ import pytest
3+ import sys
4+
5+ from collections import namedtuple
6+ from lib .helpers .file_helper import parse_word_list_argument , get_combined_word_lists
7+
8+ WORDLIST_FILES = {
9+ 'simpsons' : ['marge' , 'bart' , 'homer' , 'lisa' , 'maggie' ],
10+ 'family_guy' : ['stewie' , 'lois' , 'peter' , 'brian' , 'maggie' , 'chris' ],
11+ 'flinstones' : ['fred' , 'bambam' , 'wilma' , 'barney' , 'betty' ],
12+ 'duplicates' : ['marge' , 'bart' ],
13+ }
14+
15+ WordlistFiles = namedtuple ('WordlistFiles' , 'files words' )
16+
17+ @pytest .fixture (scope = 'session' )
18+ def wordlist (tmpdir_factory ):
19+ tmpdir = tmpdir_factory .mktemp ('wordlists' )
20+
21+ def create_file (filename ):
22+ file = tmpdir .join (filename )
23+ file .write ('\n ' .join (WORDLIST_FILES [filename ]))
24+ return str (file )
25+
26+ words = list (itertools .chain .from_iterable (WORDLIST_FILES .values ()))
27+ files = [create_file (file ) for file in WORDLIST_FILES .keys ()]
28+
29+ return WordlistFiles (files = files , words = words )
30+
31+ def test_parse_word_list_argument (wordlist ):
32+ argument = ',' .join (wordlist .files + ['/non-existing-file' ])
33+ result = parse_word_list_argument (argument )
34+
35+ assert wordlist .files == result # non-existing files should be discarded
36+
37+ def test_get_combined_word_lists (wordlist ):
38+ result = get_combined_word_lists (',' .join (wordlist .files ))
39+
40+ assert wordlist .files == result ['file_paths' ]
41+ assert wordlist .words == result ['words' ]
42+
0 commit comments