Skip to content

Commit ecbc298

Browse files
committed
refactor for pylint
1 parent 465c955 commit ecbc298

File tree

4 files changed

+83
-173
lines changed

4 files changed

+83
-173
lines changed

engines/sitemap.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
import io
66
from bs4 import BeautifulSoup
77
from engines.utils import use_item
8-
from tests.utils import get_content_type, httpRequestGetContent, cache_time_delta
9-
from utils import merge_dicts
8+
from tests.utils import get_content_type, httpRequestGetContent, merge_dicts, cache_time_delta
109

1110
def read_sites(input_sitemap_url, input_skip, input_take):
1211
ignore_none_html = True

tests/http_validator.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@
1515
import urllib
1616
import config
1717
from models import Rating
18-
from tests.utils import dns_lookup
18+
from tests.utils import dns_lookup, merge_dicts
1919
from tests.utils import *
20-
from utils import merge_dicts
2120
from tests.sitespeed_base import get_result
2221
import dns.name
2322
import dns.query

tests/utils.py

+38
Original file line numberDiff line numberDiff line change
@@ -544,3 +544,41 @@ def get_friendly_url_name(_, url, request_index):
544544
except:
545545
return request_friendly_name
546546
return request_friendly_name
547+
548+
def merge_dicts(dict1, dict2, sort, make_distinct):
549+
if dict1 is None:
550+
return dict2
551+
if dict2 is None:
552+
return dict1
553+
554+
for domain, value in dict2.items():
555+
if domain in dict1:
556+
type_of_value = type(value)
557+
if type_of_value is dict:
558+
for subkey, subvalue in value.items():
559+
if subkey in dict1[domain]:
560+
if isinstance(subvalue, dict):
561+
merge_dicts(
562+
dict1[domain][subkey],
563+
dict2[domain][subkey],
564+
sort,
565+
make_distinct)
566+
elif isinstance(subvalue, list):
567+
dict1[domain][subkey].extend(subvalue)
568+
if make_distinct:
569+
dict1[domain][subkey] = list(set(dict1[domain][subkey]))
570+
if sort:
571+
dict1[domain][subkey] = sorted(dict1[domain][subkey])
572+
else:
573+
dict1[domain][subkey] = dict2[domain][subkey]
574+
elif type_of_value == list:
575+
dict1[domain].extend(value)
576+
if make_distinct:
577+
dict1[domain] = list(set(dict1[domain]))
578+
if sort:
579+
dict1[domain] = sorted(dict1[domain])
580+
elif type_of_value == int:
581+
dict1[domain] = dict1[domain] + value
582+
else:
583+
dict1[domain] = value
584+
return dict1

utils.py

+43-169
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,28 @@
3939
TEST_WEBBKOLL, TEST_HTTP, TEST_ENERGY_EFFICIENCY, TEST_TRACKING,
4040
TEST_EMAIL, TEST_SOFTWARE, TEST_A11Y_STATEMENT) = range(27)
4141

42+
TEST_FUNCS = {
43+
TEST_PAGE_NOT_FOUND: run_test_page_not_found,
44+
TEST_HTML: run_test_html_validator_w3c,
45+
TEST_CSS: run_test_css_validator_w3c,
46+
TEST_WEBBKOLL: run_test_privacy_webbkollen,
47+
TEST_GOOGLE_LIGHTHOUSE: run_test_performance_lighthouse,
48+
TEST_GOOGLE_LIGHTHOUSE_SEO: run_test_seo_lighthouse,
49+
TEST_GOOGLE_LIGHTHOUSE_BEST_PRACTICE: run_test_best_practice_lighthouse,
50+
TEST_GOOGLE_LIGHTHOUSE_PWA: run_test_pwa_lighthouse,
51+
TEST_STANDARD_FILES:run_test_standard_files,
52+
TEST_GOOGLE_LIGHTHOUSE_A11Y: run_test_a11y_lighthouse,
53+
TEST_SITESPEED: run_test_performance_sitespeed_io,
54+
TEST_YELLOW_LAB_TOOLS: run_test_frontend_quality_yellow_lab_tools,
55+
TEST_PA11Y: run_test_a11y_pa11y,
56+
TEST_HTTP: run_test_http_validator,
57+
TEST_ENERGY_EFFICIENCY: run_test_energy_efficiency,
58+
TEST_TRACKING: run_test_tracking_validator,
59+
TEST_EMAIL: run_test_email_validator,
60+
TEST_SOFTWARE: run_test_software,
61+
TEST_A11Y_STATEMENT: run_test_a11y_statement
62+
}
63+
4264

4365
def test(_, lang_code, site, test_type=None, show_reviews=False):
4466
"""
@@ -51,45 +73,11 @@ def test(_, lang_code, site, test_type=None, show_reviews=False):
5173
website = site[1]
5274

5375
try:
54-
the_test_result = None
55-
if test_type == TEST_PAGE_NOT_FOUND:
56-
the_test_result = run_test_page_not_found(_, lang_code, website)
57-
elif test_type == TEST_HTML:
58-
the_test_result = run_test_html_validator_w3c(_, lang_code, website)
59-
elif test_type == TEST_CSS:
60-
the_test_result = run_test_css_validator_w3c(_, lang_code, website)
61-
elif test_type == TEST_WEBBKOLL:
62-
the_test_result = run_test_privacy_webbkollen(_, lang_code, website)
63-
elif test_type == TEST_GOOGLE_LIGHTHOUSE:
64-
the_test_result = run_test_performance_lighthouse(_, lang_code, website)
65-
elif test_type == TEST_GOOGLE_LIGHTHOUSE_SEO:
66-
the_test_result = run_test_seo_lighthouse(_, lang_code, website)
67-
elif test_type == TEST_GOOGLE_LIGHTHOUSE_BEST_PRACTICE:
68-
the_test_result = run_test_best_practice_lighthouse(_, lang_code, website)
69-
elif test_type == TEST_GOOGLE_LIGHTHOUSE_PWA:
70-
the_test_result = run_test_pwa_lighthouse(_, lang_code, website)
71-
elif test_type == TEST_STANDARD_FILES:
72-
the_test_result = run_test_standard_files(_, lang_code, website)
73-
elif test_type == TEST_GOOGLE_LIGHTHOUSE_A11Y:
74-
the_test_result = run_test_a11y_lighthouse(_, lang_code, website)
75-
elif test_type == TEST_SITESPEED:
76-
the_test_result = run_test_performance_sitespeed_io(_, lang_code, website)
77-
elif test_type == TEST_YELLOW_LAB_TOOLS:
78-
the_test_result = run_test_frontend_quality_yellow_lab_tools(_, lang_code, website)
79-
elif test_type == TEST_PA11Y:
80-
the_test_result = run_test_a11y_pa11y(_, lang_code, website)
81-
elif test_type == TEST_HTTP:
82-
the_test_result = run_test_http_validator(_, lang_code, website)
83-
elif test_type == TEST_ENERGY_EFFICIENCY:
84-
the_test_result = run_test_energy_efficiency(_, lang_code, website)
85-
elif test_type == TEST_TRACKING:
86-
the_test_result = run_test_tracking_validator(_, lang_code, website)
87-
elif test_type == TEST_EMAIL:
88-
the_test_result = run_test_email_validator(_, lang_code, website)
89-
elif test_type == TEST_SOFTWARE:
90-
the_test_result = run_test_software(_, lang_code, website)
91-
elif test_type == TEST_A11Y_STATEMENT:
92-
the_test_result = run_test_a11y_statement(_, lang_code, website)
76+
if test_type not in TEST_FUNCS:
77+
return []
78+
79+
run_test = TEST_FUNCS[test_type]
80+
the_test_result = run_test(_, lang_code, website)
9381

9482
if the_test_result is not None:
9583
rating = the_test_result[0]
@@ -103,7 +91,11 @@ def test(_, lang_code, site, test_type=None, show_reviews=False):
10391
try:
10492
json_data = the_test_result[1]
10593
json_data = json.dumps(json_data)
106-
except:
94+
except json.decoder.JSONDecodeError:
95+
json_data = ''
96+
except TypeError:
97+
json_data = ''
98+
except RecursionError:
10799
json_data = ''
108100

109101
jsondata = str(json_data).encode('utf-8') # --//--
@@ -114,7 +106,7 @@ def test(_, lang_code, site, test_type=None, show_reviews=False):
114106
json_check_data=jsondata).todata()
115107

116108
return site_test
117-
except Exception as e:
109+
except Exception as e: # pylint: disable=broad-exception-caught
118110
print(_('TEXT_TEST_END').format(
119111
datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
120112
print(_('TEXT_EXCEPTION'), website, '\n', e)
@@ -147,6 +139,8 @@ def test(_, lang_code, site, test_type=None, show_reviews=False):
147139
f'\ncache_time_delta: {config.cache_time_delta}',
148140
f'\nsoftware_use_stealth: {config.software_use_stealth}',
149141
f'\nuse_detailed_report: {config.use_detailed_report}',
142+
f'\ncsp_only: {config.csp_only}',
143+
f'\ndns_server: {config.dns_server}',
150144
f'\nsoftware_browser: {config.software_browser}',
151145
'\n###############################################\n'
152146
])
@@ -161,96 +155,14 @@ def test(_, lang_code, site, test_type=None, show_reviews=False):
161155

162156
def test_site(_, lang_code, site, test_types=TEST_ALL, show_reviews=False):
163157
tests = []
164-
##############
165-
if TEST_GOOGLE_LIGHTHOUSE in test_types:
166-
tests.extend(test(_,
167-
lang_code,
168-
site,
169-
test_type=TEST_GOOGLE_LIGHTHOUSE,
170-
show_reviews=show_reviews))
171-
if TEST_PAGE_NOT_FOUND in test_types:
172-
tests.extend(test(_, lang_code, site,
173-
test_type=TEST_PAGE_NOT_FOUND,
174-
show_reviews=show_reviews))
175-
if TEST_GOOGLE_LIGHTHOUSE_SEO in test_types:
176-
tests.extend(test(_,
177-
lang_code,
178-
site,
179-
test_type=TEST_GOOGLE_LIGHTHOUSE_SEO,
180-
show_reviews=show_reviews))
181-
if TEST_GOOGLE_LIGHTHOUSE_BEST_PRACTICE in test_types:
182-
tests.extend(test(_,
183-
lang_code,
184-
site,
185-
test_type=TEST_GOOGLE_LIGHTHOUSE_BEST_PRACTICE,
186-
show_reviews=show_reviews))
187-
if TEST_HTML in test_types:
188-
tests.extend(test(_, lang_code, site,
189-
test_type=TEST_HTML,
190-
show_reviews=show_reviews))
191-
if TEST_CSS in test_types:
192-
tests.extend(test(_, lang_code, site,
193-
test_type=TEST_CSS,
194-
show_reviews=show_reviews))
195-
if TEST_GOOGLE_LIGHTHOUSE_PWA in test_types:
196-
tests.extend(test(_,
197-
lang_code,
198-
site,
199-
test_type=TEST_GOOGLE_LIGHTHOUSE_PWA,
200-
show_reviews=show_reviews))
201-
if TEST_STANDARD_FILES in test_types:
202-
tests.extend(test(_, lang_code, site,
203-
test_type=TEST_STANDARD_FILES,
204-
show_reviews=show_reviews))
205-
if TEST_GOOGLE_LIGHTHOUSE_A11Y in test_types:
206-
tests.extend(test(_,
207-
lang_code,
208-
site,
209-
test_type=TEST_GOOGLE_LIGHTHOUSE_A11Y,
210-
show_reviews=show_reviews))
211-
if TEST_SITESPEED in test_types:
212-
tests.extend(test(_, lang_code, site,
213-
test_type=TEST_SITESPEED,
214-
show_reviews=show_reviews))
215-
if TEST_YELLOW_LAB_TOOLS in test_types:
216-
tests.extend(test(_,
217-
lang_code,
218-
site,
219-
test_type=TEST_YELLOW_LAB_TOOLS,
220-
show_reviews=show_reviews))
221-
if TEST_PA11Y in test_types:
222-
tests.extend(test(_,
223-
lang_code,
224-
site,
225-
test_type=TEST_PA11Y,
226-
show_reviews=show_reviews))
227-
if TEST_WEBBKOLL in test_types:
228-
tests.extend(test(_, lang_code, site,
229-
test_type=TEST_WEBBKOLL,
230-
show_reviews=show_reviews))
231-
if TEST_HTTP in test_types:
232-
tests.extend(test(_, lang_code, site,
233-
test_type=TEST_HTTP,
234-
show_reviews=show_reviews))
235-
if TEST_ENERGY_EFFICIENCY in test_types:
236-
tests.extend(test(_, lang_code, site,
237-
test_type=TEST_ENERGY_EFFICIENCY,
238-
show_reviews=show_reviews))
239-
if TEST_TRACKING in test_types:
240-
tests.extend(test(_, lang_code, site,
241-
test_type=TEST_TRACKING,
242-
show_reviews=show_reviews))
243-
if TEST_EMAIL in test_types:
244-
tests.extend(test(_, lang_code, site,
245-
test_type=TEST_EMAIL, show_reviews=show_reviews))
246-
if TEST_SOFTWARE in test_types:
247-
tests.extend(test(_, lang_code, site,
248-
test_type=TEST_SOFTWARE,
249-
show_reviews=show_reviews))
250-
if TEST_A11Y_STATEMENT in test_types:
251-
tests.extend(test(_, lang_code, site,
252-
test_type=TEST_A11Y_STATEMENT,
253-
show_reviews=show_reviews))
158+
159+
for test_id in TEST_ALL:
160+
if test_id in test_types:
161+
tests.extend(test(_,
162+
lang_code,
163+
site,
164+
test_type=test_id,
165+
show_reviews=show_reviews))
254166

255167
return tests
256168

@@ -280,41 +192,3 @@ def test_sites(_, lang_code, sites, test_types=TEST_ALL, show_reviews=False):
280192
site_index += 1
281193

282194
return results
283-
284-
def merge_dicts(dict1, dict2, sort, make_distinct):
285-
if dict1 is None:
286-
return dict2
287-
if dict2 is None:
288-
return dict1
289-
290-
for domain, value in dict2.items():
291-
if domain in dict1:
292-
type_of_value = type(value)
293-
if type_of_value is dict:
294-
for subkey, subvalue in value.items():
295-
if subkey in dict1[domain]:
296-
if isinstance(subvalue, dict):
297-
merge_dicts(
298-
dict1[domain][subkey],
299-
dict2[domain][subkey],
300-
sort,
301-
make_distinct)
302-
elif isinstance(subvalue, list):
303-
dict1[domain][subkey].extend(subvalue)
304-
if make_distinct:
305-
dict1[domain][subkey] = list(set(dict1[domain][subkey]))
306-
if sort:
307-
dict1[domain][subkey] = sorted(dict1[domain][subkey])
308-
else:
309-
dict1[domain][subkey] = dict2[domain][subkey]
310-
elif type_of_value == list:
311-
dict1[domain].extend(value)
312-
if make_distinct:
313-
dict1[domain] = list(set(dict1[domain]))
314-
if sort:
315-
dict1[domain] = sorted(dict1[domain])
316-
elif type_of_value == int:
317-
dict1[domain] = dict1[domain] + value
318-
else:
319-
dict1[domain] = value
320-
return dict1

0 commit comments

Comments
 (0)