squad 1.86.3__py3-none-any.whl → 1.88__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
squad/ci/backend/lava.py CHANGED
@@ -659,11 +659,13 @@ class Backend(BaseBackend):
659
659
  suite = result['suite'].split("_", 1)[-1]
660
660
  res_name = "%s/%s" % (suite, result['name'])
661
661
  res_log = None
662
- if 'log_start_line' in result.keys() and \
663
- 'log_end_line' in result.keys() and \
664
- result['log_start_line'] is not None and \
665
- result['log_end_line'] is not None:
666
- res_log = self.__download_test_log__(raw_logs, result['log_start_line'], result['log_end_line'])
662
+ if 'log_start_line' in result.keys():
663
+ log_url = f"{self.job_url(test_job)}#L{result['log_start_line']}"
664
+ res_log = f"Testcase log: <a href='{log_url}'>{log_url}</a>\n"
665
+ if 'log_end_line' in result.keys() and \
666
+ result['log_start_line'] is not None and \
667
+ result['log_end_line'] is not None:
668
+ res_log += self.__download_test_log__(raw_logs, result['log_start_line'], result['log_end_line'])
667
669
  # YAML from LAVA has all values serialized to strings
668
670
  if result['measurement'] == 'None' or result['measurement'] is None:
669
671
  res_value = result['result']
@@ -240,6 +240,10 @@ class Backend(BaseBackend):
240
240
  # Make metadata
241
241
  metadata_keys = settings.get('BUILD_METADATA_KEYS', [])
242
242
  metadata = {k: results.get(k) for k in metadata_keys}
243
+
244
+ # Add extra metadata from metadata file if it exists
245
+ self.update_metadata_from_file(results=results, metadata=metadata)
246
+
243
247
  metadata['job_url'] = job_url
244
248
  metadata['job_id'] = test_job.job_id
245
249
  metadata['config'] = urljoin(results.get('download_url') + '/', 'config')
@@ -296,10 +300,10 @@ class Backend(BaseBackend):
296
300
  if "download_url" in results:
297
301
  download_url = results["download_url"]
298
302
  try:
299
- test_metadata_response = self.fetch_url(download_url + '/' + 'metadata.json')
303
+ metadata_response = self.fetch_url(download_url + '/' + 'metadata.json')
300
304
  # If fetching the metadata file did not error, decode it as json
301
- if test_metadata_response.ok:
302
- metadata.update(test_metadata_response.json())
305
+ if metadata_response.ok:
306
+ metadata.update(metadata_response.json())
303
307
  except TemporaryFetchIssue:
304
308
  pass
305
309
 
@@ -328,7 +332,14 @@ class Backend(BaseBackend):
328
332
  test_job.name = ','.join(results['tests'])
329
333
 
330
334
  if results['results'] == {}:
331
- test_job.failure = 'build failed'
335
+ waiting_for = results.get('waiting_for')
336
+ if waiting_for is None:
337
+ test_job.failure = 'no results'
338
+ elif 'BUILD' in waiting_for:
339
+ test_job.failure = 'build failed'
340
+ else:
341
+ test_job.failure = 'sanity test failed'
342
+
332
343
  return status, completed, metadata, tests, metrics, logs
333
344
 
334
345
  # Fetch results even if the job fails, but has results
@@ -37,7 +37,7 @@
37
37
  {% for status in test %}
38
38
  <td class="{{status[0]}}"><a href="{{ test_history_url }}">{{status[0]}}{% if status[1] %} ({{status[1]}} %){% endif %}</a>
39
39
  {% if status[2] %}
40
- <a href='#' data-toggle="modal" data-target="#info_modal" data-status="{{ status[1] }}"><span data-toggle="tooltip" data-placement="right" title="{{ _('Show info') }}" class='fa fa-info-circle'></span></a>
40
+ <a href='#' data-toggle="modal" data-target="#info_modal" data-status="{{ status[2] }}"><span data-toggle="tooltip" data-placement="right" title="{{ _('Show info') }}" class='fa fa-info-circle'></span></a>
41
41
  {% endif %}
42
42
  </td>
43
43
  {% endfor %}
@@ -12,7 +12,7 @@ REGEX_NAME = 0
12
12
  REGEX_BODY = 1
13
13
 
14
14
  MULTILINERS = [
15
- ('check-kernel-exception', r'-+\[ cut here \]-+.*?-+\[ end trace \w* \]-+'),
15
+ ('check-kernel-exception', r'-+\[? cut here \]?-+.*?-+\[? end trace \w* \]?-+'),
16
16
  ('check-kernel-kasan', r'=+\n\[[\s\.\d]+\]\s+BUG: KASAN:.*?=+'),
17
17
  ('check-kernel-kfence', r'=+\n\[[\s\.\d]+\]\s+BUG: KFENCE:.*?=+'),
18
18
  ]
@@ -131,19 +131,6 @@ class Plugin(BasePlugin):
131
131
  matches = regex.findall(log)
132
132
  snippets = self.__join_matches(matches, REGEXES)
133
133
 
134
- # search onliners within multiliners
135
- multiline_matches = []
136
- for regex_id in range(len(MULTILINERS)):
137
- multiline_matches += snippets[regex_id]
138
-
139
- regex = self.__compile_regexes(ONELINERS)
140
- matches = regex.findall('\n'.join(multiline_matches))
141
- onliner_snippets = self.__join_matches(matches, ONELINERS)
142
-
143
- regex_id_offset = len(MULTILINERS)
144
- for regex_id in range(len(ONELINERS)):
145
- snippets[regex_id + regex_id_offset] += onliner_snippets[regex_id]
146
-
147
134
  for regex_id in range(len(REGEXES)):
148
135
  test_name = REGEXES[regex_id][REGEX_NAME]
149
136
  self.__create_tests(testrun, suite, test_name, snippets[regex_id])
squad/settings.py CHANGED
@@ -62,8 +62,7 @@ if find_spec('django_extensions'):
62
62
 
63
63
  django_toolbar = None
64
64
  django_toolbar_middleware = None
65
- django_toolbar_module_spec = find_spec('debug_toolbar')
66
- if django_toolbar_module_spec:
65
+ if find_spec('debug_toolbar'):
67
66
  DEBUG_TOOLBAR_CONFIG = {
68
67
  'JQUERY_URL': '',
69
68
  'SHOW_COLLAPSED': True,
@@ -76,11 +75,8 @@ if django_toolbar_module_spec:
76
75
 
77
76
 
78
77
  django_allauth_middleware = None
79
- try:
80
- import allauth.account.middleware # noqa: F401
78
+ if find_spec('allauth'):
81
79
  django_allauth_middleware = 'allauth.account.middleware.AccountMiddleware'
82
- except ImportError:
83
- pass
84
80
 
85
81
 
86
82
  __apps__ = [
squad/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = '1.86.3'
1
+ __version__ = '1.88'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: squad
3
- Version: 1.86.3
3
+ Version: 1.88
4
4
  Summary: Software Quality Dashboard
5
5
  Home-page: https://github.com/Linaro/squad
6
6
  Author: Antonio Terceiro
@@ -32,8 +32,10 @@ Requires-Dist: Markdown
32
32
  Requires-Dist: msgpack >=0.5.0
33
33
  Requires-Dist: python-dateutil
34
34
  Requires-Dist: PyYAML >=5.1
35
+ Requires-Dist: PyJWT
35
36
  Requires-Dist: pyzmq
36
37
  Requires-Dist: requests
38
+ Requires-Dist: setuptools
37
39
  Requires-Dist: sqlparse
38
40
  Requires-Dist: svgwrite
39
41
  Requires-Dist: whitenoise
@@ -7,10 +7,10 @@ squad/http.py,sha256=KuIKtpf3yOvf5fwc0T2MR0ul1l4AKxq3b0CLdk6KBhM,3667
7
7
  squad/jinja2.py,sha256=OKX-lzNz6qtTZL56HWv4UBMPuBl4WQXv0qFJztGp9zs,2541
8
8
  squad/mail.py,sha256=xH5wuIpD7u1fTN9vNOcbzByojleaffsKwp-9i3BeOD0,390
9
9
  squad/manage.py,sha256=Z-LXT67p0R-IzwJ9fLIAacEZmU0VUjqDOSg7j2ZSxJ4,1437
10
- squad/settings.py,sha256=YB2g6mHaa4sct04u7DHGr_RSLugxMTDGaMnZl69Yp7o,14652
10
+ squad/settings.py,sha256=CRmnXFDrfdspzXGUIlffRcKMQizJ4Wzyyg1cIRu-h-M,14535
11
11
  squad/socialaccount.py,sha256=vySqPwQ3qVVpahuJ-Snln8K--yzRL3bw4Nx27AsB39A,789
12
12
  squad/urls.py,sha256=JiEfVW8YlzLPE52c2aHzdn5kVVKK4o22w8h5KOA6QhQ,2776
13
- squad/version.py,sha256=Zroio3ZOXQsWya00gzHIk2KPUahZ7osQXHfabhsnwPw,23
13
+ squad/version.py,sha256=m_t8FsqIPiv-aD7WSt66lX1Px9if2ZNoqnlCXPf8Mh8,21
14
14
  squad/wsgi.py,sha256=SF8T0cQ0OPVyuYjO5YXBIQzvSXQHV0M2BTmd4gP1rPs,387
15
15
  squad/api/__init__.py,sha256=CJiVakfAlHVN5mIFRVQYZQfuNUhUgWVbsdYTME4tq7U,1349
16
16
  squad/api/apps.py,sha256=Trk72p-iV1uGn0o5mdJn5HARUoHGbfgO49jwXvpkmdQ,141
@@ -30,9 +30,9 @@ squad/ci/tasks.py,sha256=xoiOyh0HKLiKsAnQbolMRq4E9RcvP4xFgR0S9d_bgm4,3782
30
30
  squad/ci/utils.py,sha256=38zHpw8xkZDSFlkG-2BwSK6AkcddK9OkN9LXuQ3SHR0,97
31
31
  squad/ci/backend/__init__.py,sha256=yhpotXT9F4IdAOXvGQ3-17eOHAFwoaqf9SnMX17ab30,534
32
32
  squad/ci/backend/fake.py,sha256=9sPKndsGd5GDNPp35v-zfJWXZCbge-yXH3RBQGgTlPk,2340
33
- squad/ci/backend/lava.py,sha256=EXwEksjdOi_ZrUoMkBTyxVjqVOnJvEFNg_LWqUKaIgA,33607
33
+ squad/ci/backend/lava.py,sha256=BAReftlcRo7YkzwKbtwKpehQApN7cYnkwGmI_Nbs8D4,33791
34
34
  squad/ci/backend/null.py,sha256=0CVylWELIZw3JyzCROB4XXAjgQUi15YjQz5caRfTNBo,5434
35
- squad/ci/backend/tuxsuite.py,sha256=Gq4cbmCRKglKSFL2ltH4vNkUTigmZnIO_8FZH6OJnPg,17521
35
+ squad/ci/backend/tuxsuite.py,sha256=-A4p5HpUWnIC-61os0vdJOfAGoO81szoLkSgzyaUt6c,17901
36
36
  squad/ci/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  squad/ci/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  squad/ci/management/commands/create_tuxsuite_boot_tests.py,sha256=JvjNusebLX71eyz9d-kaeCyekYSpzc1eXoeIqWK9ygo,4045
@@ -397,7 +397,7 @@ squad/frontend/templates/squad/testjob.jinja2,sha256=hQLavgkYJ3qAKJMG7cHnmJGC1jd
397
397
  squad/frontend/templates/squad/testjobs.jinja2,sha256=a90ltfoIWORB4i1mubA3cfQzX1IoSMqhYpAUc38RZSk,9632
398
398
  squad/frontend/templates/squad/testjobs_progress.jinja2,sha256=4_o53GOdcClRdiNQxPHwvXPI9Ia07gTJRu5SGrCJ7s4,2638
399
399
  squad/frontend/templates/squad/tests-details-nav.jinja2,sha256=WDi4vf0ctRK1dK1Z3IirBuyn5Dq9_qg_9A1P3GrB31U,664
400
- squad/frontend/templates/squad/tests.jinja2,sha256=2AaEoCHJiCzXu_36XOq0ihiGqxh_2U2w88dheBlIwy8,4970
400
+ squad/frontend/templates/squad/tests.jinja2,sha256=8JvKe8GwLMGvoTSkofbl6aT-QBKDodMYN7RfKTzWF6U,4970
401
401
  squad/frontend/templates/squad/group_settings/advanced.jinja2,sha256=TbvNpZHK7fH3zx4Z_zwdmuhr8nev-jK8DhZ7_qQ7Osg,373
402
402
  squad/frontend/templates/squad/group_settings/base.jinja2,sha256=Mywqt3uLMNT7NyaUXiG4nDvdJULLuVX9sb6vYkgR1nQ,1437
403
403
  squad/frontend/templates/squad/group_settings/delete.jinja2,sha256=hO4mnNSph2D3qcAPUbffNgEdb-GsouSGxDRjcJ7NN8A,669
@@ -425,15 +425,15 @@ squad/plugins/__init__.py,sha256=9BSzy2jFIoDpWlhD7odPPrLdW4CC3btBhdFCvB651dM,152
425
425
  squad/plugins/example.py,sha256=BKpwd315lHRIuNXJPteibpwfnI6C5eXYHYdFYBtVmsI,89
426
426
  squad/plugins/gerrit.py,sha256=CqO2KnFQzu9utr_TQ-sGr1wg3ln0B-bS2-c0_i8T5-c,7009
427
427
  squad/plugins/github.py,sha256=pdtLZw_7xNuzkaFvY_zWi0f2rsMlalXjKm7sz0eADz4,2429
428
- squad/plugins/linux_log_parser.py,sha256=Dfcvh1-t5380QS_tvNIpzW_UD-4gptT9I4FUHVbb0PU,5503
428
+ squad/plugins/linux_log_parser.py,sha256=Ym0OBo6EurU0E_inPlf4-LwDryCtnazrTX7MaEZHRA0,4939
429
429
  squad/run/__init__.py,sha256=ssE8GPAGFiK6V0WpZYowav6Zqsd63dfDMMYasNa1sQg,1410
430
430
  squad/run/__main__.py,sha256=DOl8JOi4Yg7DdtwnUeGqtYBJ6P2k-D2psAEuYOjWr8w,66
431
431
  squad/run/listener.py,sha256=jBeOQhPGb4EdIREB1QsCzYuumsfJ-TqJPd3nR-0m59g,200
432
432
  squad/run/scheduler.py,sha256=CDJG3q5C0GuQuxwlMOfWTSSJpDdwbR6rzpbJfuA0xuw,277
433
433
  squad/run/worker.py,sha256=jtML0h5qKDuSbpJ6_rpWP4MT_rsGA7a24AhwGxBquzk,594
434
- squad-1.86.3.dist-info/COPYING,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
435
- squad-1.86.3.dist-info/METADATA,sha256=EnJrMFG-4ivsJncbuLs1S-_wOSjgR45ViaH0i6Og76E,1236
436
- squad-1.86.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
437
- squad-1.86.3.dist-info/entry_points.txt,sha256=apCDQydHZtvqV334ql6NhTJUAJeZRdtAm0TVcbbAi5Q,194
438
- squad-1.86.3.dist-info/top_level.txt,sha256=_x9uqE1XppiiytmVTl_qNgpnXus6Gsef69HqfliE7WI,6
439
- squad-1.86.3.dist-info/RECORD,,
434
+ squad-1.88.dist-info/COPYING,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
435
+ squad-1.88.dist-info/METADATA,sha256=AbK4kEcgX8XOcABHY9ENsLJt_J-ERLtgMJpPj-Q40GU,1281
436
+ squad-1.88.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
437
+ squad-1.88.dist-info/entry_points.txt,sha256=apCDQydHZtvqV334ql6NhTJUAJeZRdtAm0TVcbbAi5Q,194
438
+ squad-1.88.dist-info/top_level.txt,sha256=_x9uqE1XppiiytmVTl_qNgpnXus6Gsef69HqfliE7WI,6
439
+ squad-1.88.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (70.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
File without changes