squad 1.93.2__tar.gz → 1.93.5__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (669) hide show
  1. {squad-1.93.2 → squad-1.93.5}/CHANGELOG.md +15 -1
  2. squad-1.93.5/Dockerfile +67 -0
  3. squad-1.93.5/PKG-INFO +55 -0
  4. {squad-1.93.2 → squad-1.93.5}/dev-docker +9 -14
  5. squad-1.93.2/squad.egg-info/requires.txt → squad-1.93.5/requirements.txt +2 -4
  6. {squad-1.93.2 → squad-1.93.5}/scripts/build +1 -1
  7. {squad-1.93.2 → squad-1.93.5}/scripts/git-build +1 -1
  8. {squad-1.93.2 → squad-1.93.5}/squad/ci/backend/fake.py +2 -1
  9. {squad-1.93.2 → squad-1.93.5}/squad/ci/backend/lava.py +2 -1
  10. {squad-1.93.2 → squad-1.93.5}/squad/ci/backend/null.py +3 -2
  11. {squad-1.93.2 → squad-1.93.5}/squad/ci/backend/tuxsuite.py +24 -6
  12. {squad-1.93.2 → squad-1.93.5}/squad/ci/models.py +2 -1
  13. {squad-1.93.2 → squad-1.93.5}/squad/core/tasks/__init__.py +109 -26
  14. {squad-1.93.2 → squad-1.93.5}/squad/settings.py +1 -1
  15. squad-1.93.5/squad/version.py +1 -0
  16. squad-1.93.5/squad.egg-info/PKG-INFO +55 -0
  17. {squad-1.93.2 → squad-1.93.5}/squad.egg-info/entry_points.txt +0 -1
  18. squad-1.93.2/requirements.txt → squad-1.93.5/squad.egg-info/requires.txt +5 -1
  19. {squad-1.93.2 → squad-1.93.5}/test/ci/backend/test_fake.py +1 -1
  20. {squad-1.93.2 → squad-1.93.5}/test/ci/backend/test_lava.py +17 -17
  21. {squad-1.93.2 → squad-1.93.5}/test/ci/backend/test_tuxsuite.py +150 -18
  22. {squad-1.93.2 → squad-1.93.5}/test/ci/test_models.py +20 -11
  23. {squad-1.93.2 → squad-1.93.5}/test/ci/test_tasks.py +6 -3
  24. {squad-1.93.2 → squad-1.93.5}/test/core/test_build.py +2 -2
  25. {squad-1.93.2 → squad-1.93.5}/test/core/test_tasks.py +24 -0
  26. {squad-1.93.2 → squad-1.93.5}/test/integration/test_build_notification_from_ci.py +2 -1
  27. squad-1.93.2/Dockerfile +0 -83
  28. squad-1.93.2/PKG-INFO +0 -14
  29. squad-1.93.2/squad/version.py +0 -1
  30. squad-1.93.2/squad.egg-info/PKG-INFO +0 -14
  31. {squad-1.93.2 → squad-1.93.5}/.ackrc +0 -0
  32. {squad-1.93.2 → squad-1.93.5}/.coveragerc +0 -0
  33. {squad-1.93.2 → squad-1.93.5}/.ctags +0 -0
  34. {squad-1.93.2 → squad-1.93.5}/.dockerignore +0 -0
  35. {squad-1.93.2 → squad-1.93.5}/.gitignore +0 -0
  36. {squad-1.93.2 → squad-1.93.5}/.mailmap +0 -0
  37. {squad-1.93.2 → squad-1.93.5}/.readthedocs.yml +0 -0
  38. {squad-1.93.2 → squad-1.93.5}/.reuse/dep5 +0 -0
  39. {squad-1.93.2 → squad-1.93.5}/COPYING +0 -0
  40. {squad-1.93.2 → squad-1.93.5}/COPYRIGHTS +0 -0
  41. {squad-1.93.2 → squad-1.93.5}/LICENSES/GPL-3.0-or-later.txt +0 -0
  42. {squad-1.93.2 → squad-1.93.5}/LICENSES/MIT.txt +0 -0
  43. {squad-1.93.2 → squad-1.93.5}/LICENSES/OFL-1.1.txt +0 -0
  44. {squad-1.93.2 → squad-1.93.5}/MANIFEST.in +0 -0
  45. {squad-1.93.2 → squad-1.93.5}/Procfile +0 -0
  46. {squad-1.93.2 → squad-1.93.5}/README.rst +0 -0
  47. {squad-1.93.2 → squad-1.93.5}/babel.cfg +0 -0
  48. {squad-1.93.2 → squad-1.93.5}/doc/.gitignore +0 -0
  49. {squad-1.93.2 → squad-1.93.5}/doc/Makefile +0 -0
  50. {squad-1.93.2 → squad-1.93.5}/doc/api.rst +0 -0
  51. {squad-1.93.2 → squad-1.93.5}/doc/ci.rst +0 -0
  52. {squad-1.93.2 → squad-1.93.5}/doc/conf.py +0 -0
  53. {squad-1.93.2 → squad-1.93.5}/doc/hacking.rst +0 -0
  54. {squad-1.93.2 → squad-1.93.5}/doc/index.rst +0 -0
  55. {squad-1.93.2 → squad-1.93.5}/doc/install.rst +0 -0
  56. {squad-1.93.2 → squad-1.93.5}/doc/intro.rst +0 -0
  57. {squad-1.93.2 → squad-1.93.5}/doc/lava_usecase.rst +0 -0
  58. {squad-1.93.2 → squad-1.93.5}/doc/plugins.rst +0 -0
  59. {squad-1.93.2 → squad-1.93.5}/doc/quickstart.rst +0 -0
  60. {squad-1.93.2 → squad-1.93.5}/doc/translating.rst +0 -0
  61. {squad-1.93.2 → squad-1.93.5}/doc/tuxsuite_usecase.rst +0 -0
  62. {squad-1.93.2 → squad-1.93.5}/docker/db-dumped +0 -0
  63. {squad-1.93.2 → squad-1.93.5}/docker/db-to-be-restored +0 -0
  64. {squad-1.93.2 → squad-1.93.5}/docker/docker-compose.yml +0 -0
  65. {squad-1.93.2 → squad-1.93.5}/docker/extra_settings.py +0 -0
  66. {squad-1.93.2 → squad-1.93.5}/docker/init-db.sh +0 -0
  67. {squad-1.93.2 → squad-1.93.5}/docker/rabbitmq.config +0 -0
  68. {squad-1.93.2 → squad-1.93.5}/docker/squad-apache.conf +0 -0
  69. {squad-1.93.2 → squad-1.93.5}/docker-compose.yaml +0 -0
  70. {squad-1.93.2 → squad-1.93.5}/manage.py +0 -0
  71. {squad-1.93.2 → squad-1.93.5}/package-lock.json +0 -0
  72. {squad-1.93.2 → squad-1.93.5}/package.json +0 -0
  73. {squad-1.93.2 → squad-1.93.5}/pytest.ini +0 -0
  74. {squad-1.93.2 → squad-1.93.5}/requirements-dev.txt +0 -0
  75. {squad-1.93.2 → squad-1.93.5}/scripts/check-ci +0 -0
  76. {squad-1.93.2 → squad-1.93.5}/scripts/check-ignore +0 -0
  77. {squad-1.93.2 → squad-1.93.5}/scripts/community_connector/main.js +0 -0
  78. {squad-1.93.2 → squad-1.93.5}/scripts/community_connector/manifest.json +0 -0
  79. {squad-1.93.2 → squad-1.93.5}/scripts/dogfood +0 -0
  80. {squad-1.93.2 → squad-1.93.5}/scripts/get-metrics +0 -0
  81. {squad-1.93.2 → squad-1.93.5}/scripts/get-tests +0 -0
  82. {squad-1.93.2 → squad-1.93.5}/scripts/pytest +0 -0
  83. {squad-1.93.2 → squad-1.93.5}/scripts/rabbitmq-server +0 -0
  84. {squad-1.93.2 → squad-1.93.5}/scripts/release +0 -0
  85. {squad-1.93.2 → squad-1.93.5}/scripts/release-docker +0 -0
  86. {squad-1.93.2 → squad-1.93.5}/scripts/squad-config +0 -0
  87. {squad-1.93.2 → squad-1.93.5}/scripts/test-ci +0 -0
  88. {squad-1.93.2 → squad-1.93.5}/scripts/test-docker +0 -0
  89. {squad-1.93.2 → squad-1.93.5}/scripts/testdata/gen-ci-jobs +0 -0
  90. {squad-1.93.2 → squad-1.93.5}/scripts/testdata/gen-metrics +0 -0
  91. {squad-1.93.2 → squad-1.93.5}/scripts/testdata/gen-test-data +0 -0
  92. {squad-1.93.2 → squad-1.93.5}/scripts/testdata/gen-tests +0 -0
  93. {squad-1.93.2 → squad-1.93.5}/scripts/testdata/setup-dev +0 -0
  94. {squad-1.93.2 → squad-1.93.5}/scripts/testdata/submit-ci-jobs +0 -0
  95. {squad-1.93.2 → squad-1.93.5}/scripts/testdata/submit-test-data +0 -0
  96. {squad-1.93.2 → squad-1.93.5}/scripts/translate +0 -0
  97. {squad-1.93.2 → squad-1.93.5}/scripts/travis-lava +0 -0
  98. {squad-1.93.2 → squad-1.93.5}/scripts/update-translation-files +0 -0
  99. {squad-1.93.2 → squad-1.93.5}/setup.cfg +0 -0
  100. {squad-1.93.2 → squad-1.93.5}/setup.py +0 -0
  101. {squad-1.93.2 → squad-1.93.5}/squad/__init__.py +0 -0
  102. {squad-1.93.2 → squad-1.93.5}/squad/admin.py +0 -0
  103. {squad-1.93.2 → squad-1.93.5}/squad/api/__init__.py +0 -0
  104. {squad-1.93.2 → squad-1.93.5}/squad/api/apps.py +0 -0
  105. {squad-1.93.2 → squad-1.93.5}/squad/api/ci.py +0 -0
  106. {squad-1.93.2 → squad-1.93.5}/squad/api/data.py +0 -0
  107. {squad-1.93.2 → squad-1.93.5}/squad/api/filters.py +0 -0
  108. {squad-1.93.2 → squad-1.93.5}/squad/api/prometheus.py +0 -0
  109. {squad-1.93.2 → squad-1.93.5}/squad/api/rest.py +0 -0
  110. {squad-1.93.2 → squad-1.93.5}/squad/api/urls.py +0 -0
  111. {squad-1.93.2 → squad-1.93.5}/squad/api/utils.py +0 -0
  112. {squad-1.93.2 → squad-1.93.5}/squad/api/views.py +0 -0
  113. {squad-1.93.2 → squad-1.93.5}/squad/celery.py +0 -0
  114. {squad-1.93.2 → squad-1.93.5}/squad/ci/__init__.py +0 -0
  115. {squad-1.93.2 → squad-1.93.5}/squad/ci/admin.py +0 -0
  116. {squad-1.93.2 → squad-1.93.5}/squad/ci/apps.py +0 -0
  117. {squad-1.93.2 → squad-1.93.5}/squad/ci/backend/__init__.py +0 -0
  118. {squad-1.93.2 → squad-1.93.5}/squad/ci/exceptions.py +0 -0
  119. {squad-1.93.2 → squad-1.93.5}/squad/ci/management/__init__.py +0 -0
  120. {squad-1.93.2 → squad-1.93.5}/squad/ci/management/commands/__init__.py +0 -0
  121. {squad-1.93.2 → squad-1.93.5}/squad/ci/management/commands/create_tuxsuite_boot_tests.py +0 -0
  122. {squad-1.93.2 → squad-1.93.5}/squad/ci/management/commands/listen.py +0 -0
  123. {squad-1.93.2 → squad-1.93.5}/squad/ci/management/commands/testfetch.py +0 -0
  124. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0001_initial.py +0 -0
  125. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0002_auto_20170406_1252.py +0 -0
  126. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0003_backend_name.py +0 -0
  127. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0004_testjob_failure.py +0 -0
  128. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0005_remove_listener_data.py +0 -0
  129. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0006_simplify_backend_loading.py +0 -0
  130. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0007_auto_20170517_1736.py +0 -0
  131. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0008_testjob_testrun.py +0 -0
  132. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0009_slug_pattern.py +0 -0
  133. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0010_testjob_can_resubmit.py +0 -0
  134. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0011_testjob_resubmitted_count.py +0 -0
  135. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0012_testjob_build.py +0 -0
  136. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0013_testjob_name.py +0 -0
  137. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0014_testjob_target_build.py +0 -0
  138. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0015_testjob_populate_target_build.py +0 -0
  139. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0016_backend_max_fetch_attempts.py +0 -0
  140. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0017_testjob_fetch_attempts.py +0 -0
  141. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0018_testjob_dates.py +0 -0
  142. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0019_add_fake_backend.py +0 -0
  143. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0020_backend_settings_field.py +0 -0
  144. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0021_testjob_parent_job.py +0 -0
  145. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0022_backend_poll_enabled.py +0 -0
  146. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0023_remove_testjob_build.py +0 -0
  147. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0024_fix_testjob_environment_validation.py +0 -0
  148. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0025_backend_listen_enabled.py +0 -0
  149. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0026_job_start_end_time.py +0 -0
  150. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0027_add_tuxsuite_implementation_type.py +0 -0
  151. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0028_create_testjob_indexes.py +0 -0
  152. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0029_create_testjob_results_input.py +0 -0
  153. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0030_testjob_subtasks_count.py +0 -0
  154. {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/__init__.py +0 -0
  155. {squad-1.93.2 → squad-1.93.5}/squad/ci/tasks.py +0 -0
  156. {squad-1.93.2 → squad-1.93.5}/squad/ci/templates/squad/ci/testjob_resubmit.html.jinja2 +0 -0
  157. {squad-1.93.2 → squad-1.93.5}/squad/ci/templates/squad/ci/testjob_resubmit.txt.jinja2 +0 -0
  158. {squad-1.93.2 → squad-1.93.5}/squad/ci/templatetags/__init__.py +0 -0
  159. {squad-1.93.2 → squad-1.93.5}/squad/ci/templatetags/filter_jobs.py +0 -0
  160. {squad-1.93.2 → squad-1.93.5}/squad/ci/utils.py +0 -0
  161. {squad-1.93.2 → squad-1.93.5}/squad/compat.py +0 -0
  162. {squad-1.93.2 → squad-1.93.5}/squad/container_settings.py +0 -0
  163. {squad-1.93.2 → squad-1.93.5}/squad/core/__init__.py +0 -0
  164. {squad-1.93.2 → squad-1.93.5}/squad/core/admin.py +0 -0
  165. {squad-1.93.2 → squad-1.93.5}/squad/core/apps.py +0 -0
  166. {squad-1.93.2 → squad-1.93.5}/squad/core/callback.py +0 -0
  167. {squad-1.93.2 → squad-1.93.5}/squad/core/comparison.py +0 -0
  168. {squad-1.93.2 → squad-1.93.5}/squad/core/data.py +0 -0
  169. {squad-1.93.2 → squad-1.93.5}/squad/core/failures.py +0 -0
  170. {squad-1.93.2 → squad-1.93.5}/squad/core/history.py +0 -0
  171. {squad-1.93.2 → squad-1.93.5}/squad/core/locale/django.pot +0 -0
  172. {squad-1.93.2 → squad-1.93.5}/squad/core/locale/es_MX/LC_MESSAGES/django.po +0 -0
  173. {squad-1.93.2 → squad-1.93.5}/squad/core/locale/pl/LC_MESSAGES/django.po +0 -0
  174. {squad-1.93.2 → squad-1.93.5}/squad/core/locale/pt/LC_MESSAGES/django.po +0 -0
  175. {squad-1.93.2 → squad-1.93.5}/squad/core/locale/pt_BR/LC_MESSAGES/django.po +0 -0
  176. {squad-1.93.2 → squad-1.93.5}/squad/core/management/__init__.py +0 -0
  177. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/__init__.py +0 -0
  178. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/compute_build_summaries.py +0 -0
  179. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/compute_project_statuses.py +0 -0
  180. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/fill_test_metadata.py +0 -0
  181. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/fix_squadplugin_data.py +0 -0
  182. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/import_data.py +0 -0
  183. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/import_data.rst +0 -0
  184. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/migrate_test_runs.py +0 -0
  185. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/populate_metric_build_and_environment.py +0 -0
  186. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/populate_test_build_and_environment.py +0 -0
  187. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/prepdump.py +0 -0
  188. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/run_log_parser.py +0 -0
  189. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/send-email.py +0 -0
  190. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/update_project_statuses.py +0 -0
  191. {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/users.py +0 -0
  192. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0001_initial.py +0 -0
  193. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0002_auto_20160525_1403.py +0 -0
  194. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0003_testrun_log_file.py +0 -0
  195. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0004_group_user_groups.py +0 -0
  196. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0005_token.py +0 -0
  197. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0006_auto_20160826_2242.py +0 -0
  198. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0007_testrun_data_processed.py +0 -0
  199. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0008_status.py +0 -0
  200. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0009_testrun_status_recorded.py +0 -0
  201. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0010_testrun_datetime.py +0 -0
  202. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0011_testrun_metadata_fields.py +0 -0
  203. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0012_build_datetime.py +0 -0
  204. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0013_testrun_resubmit_url.py +0 -0
  205. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0014_testrun_metadata_file.py +0 -0
  206. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0015_attachment.py +0 -0
  207. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0016_project_is_public.py +0 -0
  208. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0017_slug_validator.py +0 -0
  209. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0018_build_name.py +0 -0
  210. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0019_build_version.py +0 -0
  211. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0020_build_ordering.py +0 -0
  212. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0021_global_tokens.py +0 -0
  213. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0022_projectstatus.py +0 -0
  214. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0023_subscription.py +0 -0
  215. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0024_project_build_completion_threshold.py +0 -0
  216. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0025_unique_testrun_job_id.py +0 -0
  217. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0026_testrun_result_accept_null.py +0 -0
  218. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0027_project_notification_strategy.py +0 -0
  219. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0028_suite_and_test_name_length.py +0 -0
  220. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0029_subscription_email_formats.py +0 -0
  221. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0030_remove_project_build_completion_threshold.py +0 -0
  222. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0031_environment_expected_test_runs.py +0 -0
  223. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0032_testrun_completed.py +0 -0
  224. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0033_drop_debversion.py +0 -0
  225. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0034_prepare_to_remove_build_name.py +0 -0
  226. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0035_remove_build_name.py +0 -0
  227. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0036_status_tests_skip.py +0 -0
  228. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0037_project_status_test_summary_fields.py +0 -0
  229. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0038_populate_project_status_cache.py +0 -0
  230. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0039_orderings.py +0 -0
  231. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0040_remove_subscription_html.py +0 -0
  232. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0041_projectstatus_notified.py +0 -0
  233. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0042_set_projectstatus_notified.py +0 -0
  234. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0043_project_status_build.py +0 -0
  235. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0044_project_html_mail.py +0 -0
  236. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0045_adminsubscription.py +0 -0
  237. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0046_projectstatus_last_updated.py +0 -0
  238. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0047_populate_projectstatus_last_updated.py +0 -0
  239. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0048_moderate_notifications.py +0 -0
  240. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0049_projectstatus_plural.py +0 -0
  241. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0050_projectstatus_finished.py +0 -0
  242. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0051_build_status.py +0 -0
  243. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0052_recreate_projectstatus_data.py +0 -0
  244. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0053_remove_projectstatus_previous.py +0 -0
  245. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0054_custom_email_template.py +0 -0
  246. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0055_emailtemplate_subject.py +0 -0
  247. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0056_project_description.py +0 -0
  248. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0057_projectstatus_has_metrics.py +0 -0
  249. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0058_populate_projectstatus_has_metrics.py +0 -0
  250. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0059_project_important_metadata_keys.py +0 -0
  251. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0060_test_log.py +0 -0
  252. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0061_project_enabled_plugins_list.py +0 -0
  253. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0062_project_allow_empty_enabled_plugin_list.py +0 -0
  254. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0063_project_wait_before_notification.py +0 -0
  255. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0064_project_notification_timeout.py +0 -0
  256. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0065_projectstatus_notified_on_timeout.py +0 -0
  257. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0066_environment_description.py +0 -0
  258. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0067_accept_blank_suite_name.py +0 -0
  259. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0068_suite_version.py +0 -0
  260. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0069_suite_metadata.py +0 -0
  261. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0070_create_suite_test_and_metric_metadata.py +0 -0
  262. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0071_migrate_old_tokens.py +0 -0
  263. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0072_group_description.py +0 -0
  264. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0073_auto_20180420_1643.py +0 -0
  265. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0074_add_indexes.py +0 -0
  266. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0075_update_project_enabled_plugin_list.py +0 -0
  267. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0076_patch_builds.py +0 -0
  268. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0077_knownissue.py +0 -0
  269. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0078_cache_test_run_counts.py +0 -0
  270. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0079_init_cache_test_run_counts.py +0 -0
  271. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0080_auto_20180810_0047.py +0 -0
  272. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0081_status_has_metrics.py +0 -0
  273. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0082_populate_status_has_metrics.py +0 -0
  274. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0083_rename_knownissue_environments.py +0 -0
  275. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0084_projectstatus_regressions_fixes.py +0 -0
  276. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0085_projectstatus_defaults.py +0 -0
  277. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0086_xfail.py +0 -0
  278. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0087_test_known_issues.py +0 -0
  279. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0088_user_subscriptions.py +0 -0
  280. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0089_test_has_known_issues.py +0 -0
  281. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0090_populate_test_has_known_issues.py +0 -0
  282. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0091_notification_delivery_remove_unique_status.py +0 -0
  283. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0092_annotation.py +0 -0
  284. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0093_historicalemailtemplate.py +0 -0
  285. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0094_populatehistoricalemailtemplate.py +0 -0
  286. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0095_project_data_retention_days.py +0 -0
  287. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0096_build_keep_data.py +0 -0
  288. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0097_build_placeholder.py +0 -0
  289. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0098_blank_annotation.py +0 -0
  290. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0099_metricthreshold.py +0 -0
  291. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0100_metric_is_outlier.py +0 -0
  292. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0101_project_project_settings.py +0 -0
  293. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0102_projectstatus_null_metric_summary.py +0 -0
  294. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0103_populate_project_status.py +0 -0
  295. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0104_delayedreport.py +0 -0
  296. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0105_delayed_report_error_message.py +0 -0
  297. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0106_delayedreport_output_subject.py +0 -0
  298. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0107_move_notification_strategy.py +0 -0
  299. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0108_add_email_template_validator.py +0 -0
  300. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0109_group_member.py +0 -0
  301. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0110_move_users_from_django_groups_to_squad_groups.py +0 -0
  302. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0111_remove_group_user_groups.py +0 -0
  303. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0112_user_namespaces.py +0 -0
  304. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0113_group_project_blank_name_and_description.py +0 -0
  305. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0114_project_enabled_plugin_list_can_be_blank.py +0 -0
  306. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0115_fix_slug_validation.py +0 -0
  307. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0116_make_group_membership_unique.py +0 -0
  308. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0117_drop_obsolete_token_model.py +0 -0
  309. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0118_project_is_archived.py +0 -0
  310. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0119_i18n.py +0 -0
  311. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0120_buildsummary.py +0 -0
  312. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0121_add_password_patchsource.py +0 -0
  313. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0122_fix_patchsource_url_and_token.py +0 -0
  314. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0123_django_upgrade_missing_migrations.py +0 -0
  315. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0124_set_default_expected_test_runs_to_zero.py +0 -0
  316. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0125_fix_missing_status_has_metrics_for_testruns.py +0 -0
  317. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0126_metricthreshold_environment.py +0 -0
  318. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0127_metric_thresholds_migrate_data.py +0 -0
  319. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0128_metric_thresholds_remove_proj_col.py +0 -0
  320. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0129_projectstatus_nullable_notified_on_timeout.py +0 -0
  321. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0130_project_status_baseline_next.py +0 -0
  322. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0131_create_squad_auth_group_and_add_users.py +0 -0
  323. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0132_attachment_mimetype.py +0 -0
  324. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0133_append_project_permissions_to_squad_auth_group.py +0 -0
  325. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0134_longer_metric_name.py +0 -0
  326. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0135_add_privileged_access_level.py +0 -0
  327. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0136_migrate_submitters_to_privileged.py +0 -0
  328. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0137_patchsource_token_null.py +0 -0
  329. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0138_metric_unit.py +0 -0
  330. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0139_nullable_test_name.py +0 -0
  331. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0140_increase_gerrit_password_length.py +0 -0
  332. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0141_remove_test_name.py +0 -0
  333. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0142_add_testrun_file_storage.py +0 -0
  334. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0143_attachment_storage.py +0 -0
  335. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0144_attachment_data_null.py +0 -0
  336. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0145_pluginscratch.py +0 -0
  337. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0146_deprecate_testrun_and_attachment_data_fields.py +0 -0
  338. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0147_add_build_and_environment_to_test.py +0 -0
  339. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0148_remove_legacy_storage_fields.py +0 -0
  340. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0149_build_patch_url.py +0 -0
  341. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0150_add_new_notification_strategy.py +0 -0
  342. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0151_callback.py +0 -0
  343. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0152_add_build_patch_notified.py +0 -0
  344. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0153_callback_make_response_content_blob.py +0 -0
  345. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0154_project_add_force_finishing_builds_field.py +0 -0
  346. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0155_add_build_and_environment_to_metric.py +0 -0
  347. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0156_nullable_metric_name.py +0 -0
  348. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0157_remove_metric_name.py +0 -0
  349. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0158_add_metric_comparison_to_projectstatus.py +0 -0
  350. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0159_nullable_metricthreshold_value.py +0 -0
  351. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0160_add_project_to_metricthreshold.py +0 -0
  352. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0161_add_metricthreshold_perm_to_squad_group.py +0 -0
  353. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0162_project_add_build_confidence_settings.py +0 -0
  354. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0163_hirtoricalemailtemplate_update.py +0 -0
  355. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0164_django_update.py +0 -0
  356. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0165_buildsummary_uniqueness.py +0 -0
  357. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0166_build_is_release.py +0 -0
  358. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0167_add_project_datetime.py +0 -0
  359. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0168_add_group_settings.py +0 -0
  360. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0169_userpreferences.py +0 -0
  361. {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/__init__.py +0 -0
  362. {squad-1.93.2 → squad-1.93.5}/squad/core/models.py +0 -0
  363. {squad-1.93.2 → squad-1.93.5}/squad/core/notification.py +0 -0
  364. {squad-1.93.2 → squad-1.93.5}/squad/core/plugins.py +0 -0
  365. {squad-1.93.2 → squad-1.93.5}/squad/core/queries.py +0 -0
  366. {squad-1.93.2 → squad-1.93.5}/squad/core/statistics.py +0 -0
  367. {squad-1.93.2 → squad-1.93.5}/squad/core/tasks/exceptions.py +0 -0
  368. {squad-1.93.2 → squad-1.93.5}/squad/core/tasks/notification.py +0 -0
  369. {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/base.jinja2 +0 -0
  370. {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/diff.html.jinja2 +0 -0
  371. {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/diff.txt.jinja2 +0 -0
  372. {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/failed_test_jobs.html.jinja2 +0 -0
  373. {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/failed_test_jobs.txt.jinja2 +0 -0
  374. {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/moderation.html.jinja2 +0 -0
  375. {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/moderation.txt.jinja2 +0 -0
  376. {squad-1.93.2 → squad-1.93.5}/squad/core/templatetags/__init__.py +0 -0
  377. {squad-1.93.2 → squad-1.93.5}/squad/core/templatetags/squad_notification.py +0 -0
  378. {squad-1.93.2 → squad-1.93.5}/squad/core/utils.py +0 -0
  379. {squad-1.93.2 → squad-1.93.5}/squad/frontend/__init__.py +0 -0
  380. {squad-1.93.2 → squad-1.93.5}/squad/frontend/__main__.py +0 -0
  381. {squad-1.93.2 → squad-1.93.5}/squad/frontend/admin.py +0 -0
  382. {squad-1.93.2 → squad-1.93.5}/squad/frontend/apps.py +0 -0
  383. {squad-1.93.2 → squad-1.93.5}/squad/frontend/badges.py +0 -0
  384. {squad-1.93.2 → squad-1.93.5}/squad/frontend/build_settings.py +0 -0
  385. {squad-1.93.2 → squad-1.93.5}/squad/frontend/ci.py +0 -0
  386. {squad-1.93.2 → squad-1.93.5}/squad/frontend/comparison.py +0 -0
  387. {squad-1.93.2 → squad-1.93.5}/squad/frontend/extract.py +0 -0
  388. {squad-1.93.2 → squad-1.93.5}/squad/frontend/forms.py +0 -0
  389. {squad-1.93.2 → squad-1.93.5}/squad/frontend/group_settings.py +0 -0
  390. {squad-1.93.2 → squad-1.93.5}/squad/frontend/locale/django.pot +0 -0
  391. {squad-1.93.2 → squad-1.93.5}/squad/frontend/locale/pl/LC_MESSAGES/django.po +0 -0
  392. {squad-1.93.2 → squad-1.93.5}/squad/frontend/locale/pt/LC_MESSAGES/django.po +0 -0
  393. {squad-1.93.2 → squad-1.93.5}/squad/frontend/locale/pt_BR/LC_MESSAGES/django.po +0 -0
  394. {squad-1.93.2 → squad-1.93.5}/squad/frontend/management/__init__.py +0 -0
  395. {squad-1.93.2 → squad-1.93.5}/squad/frontend/management/commands/__init__.py +0 -0
  396. {squad-1.93.2 → squad-1.93.5}/squad/frontend/management/commands/get_token.py +0 -0
  397. {squad-1.93.2 → squad-1.93.5}/squad/frontend/metrics.py +0 -0
  398. {squad-1.93.2 → squad-1.93.5}/squad/frontend/project_settings.py +0 -0
  399. {squad-1.93.2 → squad-1.93.5}/squad/frontend/queries.py +0 -0
  400. {squad-1.93.2 → squad-1.93.5}/squad/frontend/setup.py +0 -0
  401. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/compare.css +0 -0
  402. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/download +0 -0
  403. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/download.conf +0 -0
  404. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/favicon.ico +0 -0
  405. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/main.css +0 -0
  406. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/attach_select2.js +0 -0
  407. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/build.js +0 -0
  408. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/build_compare.js +0 -0
  409. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/build_list.js +0 -0
  410. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/charts.js +0 -0
  411. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/common.js +0 -0
  412. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/compare.js +0 -0
  413. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/config.js +0 -0
  414. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/annotation.js +0 -0
  415. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/build_compare.js +0 -0
  416. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/build_list_compare.js +0 -0
  417. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/build_release.js +0 -0
  418. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/cancel.js +0 -0
  419. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/charts.js +0 -0
  420. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/compare.js +0 -0
  421. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/fetch.js +0 -0
  422. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/filter.js +0 -0
  423. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/metricThreshold.js +0 -0
  424. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/project_compare.js +0 -0
  425. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/resubmit.js +0 -0
  426. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/testjobs_progress.js +0 -0
  427. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/metric.threshold.js +0 -0
  428. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/project_compare.js +0 -0
  429. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/showHide.js +0 -0
  430. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/table.js +0 -0
  431. {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad_sign.svg +0 -0
  432. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/401.jinja2 +0 -0
  433. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/404.jinja2 +0 -0
  434. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/django/rest_framework/api.html +0 -0
  435. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/django/squad/_user_menu.html +0 -0
  436. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_builds_table.jinja2 +0 -0
  437. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_env_suite_data.jinja2 +0 -0
  438. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_metadata.jinja2 +0 -0
  439. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_pagination.jinja2 +0 -0
  440. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_permissions.jinja2 +0 -0
  441. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_project_list.jinja2 +0 -0
  442. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_regressions_and_fixes.jinja2 +0 -0
  443. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_results_table.jinja2 +0 -0
  444. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_results_transitions_filter.jinja2 +0 -0
  445. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_subscribe.jinja2 +0 -0
  446. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_test_results_envbox.jinja2 +0 -0
  447. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_test_results_suitebox.jinja2 +0 -0
  448. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_test_results_summary.jinja2 +0 -0
  449. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_test_results_table.jinja2 +0 -0
  450. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_test_run_metric.jinja2 +0 -0
  451. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_test_run_test.jinja2 +0 -0
  452. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_unfinished_build.jinja2 +0 -0
  453. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_user_menu.jinja2 +0 -0
  454. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/base.jinja2 +0 -0
  455. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/build-nav.jinja2 +0 -0
  456. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/build.jinja2 +0 -0
  457. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/build_callbacks.jinja2 +0 -0
  458. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/build_metadata.jinja2 +0 -0
  459. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/build_metrics.jinja2 +0 -0
  460. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/build_settings.jinja2 +0 -0
  461. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/builds.jinja2 +0 -0
  462. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/compare.jinja2 +0 -0
  463. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/compare_builds.jinja2 +0 -0
  464. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/compare_projects.jinja2 +0 -0
  465. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group-nav.jinja2 +0 -0
  466. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group.jinja2 +0 -0
  467. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/advanced.jinja2 +0 -0
  468. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/base.jinja2 +0 -0
  469. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/delete.jinja2 +0 -0
  470. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/index.jinja2 +0 -0
  471. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/members.jinja2 +0 -0
  472. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/new_group.jinja2 +0 -0
  473. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/new_project.jinja2 +0 -0
  474. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/index.jinja2 +0 -0
  475. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/knownissues.jinja2 +0 -0
  476. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/login.jinja2 +0 -0
  477. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/metrics.jinja2 +0 -0
  478. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project-nav.jinja2 +0 -0
  479. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project.jinja2 +0 -0
  480. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/_threshold_table.jinja2 +0 -0
  481. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/advanced.jinja2 +0 -0
  482. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/base.jinja2 +0 -0
  483. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/build_confidence.jinja2 +0 -0
  484. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/delete.jinja2 +0 -0
  485. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/environments.jinja2 +0 -0
  486. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/index.jinja2 +0 -0
  487. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/thresholds.jinja2 +0 -0
  488. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/test_history.jinja2 +0 -0
  489. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/test_run.jinja2 +0 -0
  490. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/test_run_suite_metrics.jinja2 +0 -0
  491. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/test_run_suite_test_details.jinja2 +0 -0
  492. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/test_run_suite_tests.jinja2 +0 -0
  493. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/testjob.jinja2 +0 -0
  494. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/testjobs.jinja2 +0 -0
  495. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/testjobs_progress.jinja2 +0 -0
  496. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/tests-details-nav.jinja2 +0 -0
  497. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/tests.jinja2 +0 -0
  498. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/user_settings/api_token.jinja2 +0 -0
  499. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/user_settings/base.jinja2 +0 -0
  500. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/user_settings/profile.jinja2 +0 -0
  501. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/user_settings/projects.jinja2 +0 -0
  502. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/user_settings/subscriptions.jinja2 +0 -0
  503. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/user_settings/user_preferences.jinja2 +0 -0
  504. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templatetags/__init__.py +0 -0
  505. {squad-1.93.2 → squad-1.93.5}/squad/frontend/templatetags/squad.py +0 -0
  506. {squad-1.93.2 → squad-1.93.5}/squad/frontend/tests.py +0 -0
  507. {squad-1.93.2 → squad-1.93.5}/squad/frontend/urls.py +0 -0
  508. {squad-1.93.2 → squad-1.93.5}/squad/frontend/user_settings.py +0 -0
  509. {squad-1.93.2 → squad-1.93.5}/squad/frontend/utils.py +0 -0
  510. {squad-1.93.2 → squad-1.93.5}/squad/frontend/views.py +0 -0
  511. {squad-1.93.2 → squad-1.93.5}/squad/http.py +0 -0
  512. {squad-1.93.2 → squad-1.93.5}/squad/jinja2.py +0 -0
  513. {squad-1.93.2 → squad-1.93.5}/squad/mail.py +0 -0
  514. {squad-1.93.2 → squad-1.93.5}/squad/manage.py +0 -0
  515. {squad-1.93.2 → squad-1.93.5}/squad/plugins/__init__.py +0 -0
  516. {squad-1.93.2 → squad-1.93.5}/squad/plugins/example.py +0 -0
  517. {squad-1.93.2 → squad-1.93.5}/squad/plugins/gerrit.py +0 -0
  518. {squad-1.93.2 → squad-1.93.5}/squad/plugins/github.py +0 -0
  519. {squad-1.93.2 → squad-1.93.5}/squad/plugins/lib/__init__.py +0 -0
  520. {squad-1.93.2 → squad-1.93.5}/squad/plugins/lib/base_log_parser.py +0 -0
  521. {squad-1.93.2 → squad-1.93.5}/squad/plugins/linux_log_parser.py +0 -0
  522. {squad-1.93.2 → squad-1.93.5}/squad/plugins/linux_log_parser_build.py +0 -0
  523. {squad-1.93.2 → squad-1.93.5}/squad/run/__init__.py +0 -0
  524. {squad-1.93.2 → squad-1.93.5}/squad/run/__main__.py +0 -0
  525. {squad-1.93.2 → squad-1.93.5}/squad/run/listener.py +0 -0
  526. {squad-1.93.2 → squad-1.93.5}/squad/run/scheduler.py +0 -0
  527. {squad-1.93.2 → squad-1.93.5}/squad/run/worker.py +0 -0
  528. {squad-1.93.2 → squad-1.93.5}/squad/socialaccount.py +0 -0
  529. {squad-1.93.2 → squad-1.93.5}/squad/urls.py +0 -0
  530. {squad-1.93.2 → squad-1.93.5}/squad/wsgi.py +0 -0
  531. {squad-1.93.2 → squad-1.93.5}/squad.egg-info/SOURCES.txt +0 -0
  532. {squad-1.93.2 → squad-1.93.5}/squad.egg-info/dependency_links.txt +0 -0
  533. {squad-1.93.2 → squad-1.93.5}/squad.egg-info/top_level.txt +0 -0
  534. {squad-1.93.2 → squad-1.93.5}/squad.svg +0 -0
  535. {squad-1.93.2 → squad-1.93.5}/test/__init__.py +0 -0
  536. {squad-1.93.2 → squad-1.93.5}/test/api/__init__.py +0 -0
  537. {squad-1.93.2 → squad-1.93.5}/test/api/benchmarks.csv +0 -0
  538. {squad-1.93.2 → squad-1.93.5}/test/api/benchmarks.json +0 -0
  539. {squad-1.93.2 → squad-1.93.5}/test/api/definition.yaml +0 -0
  540. {squad-1.93.2 → squad-1.93.5}/test/api/metadata.json +0 -0
  541. {squad-1.93.2 → squad-1.93.5}/test/api/test_ci.py +0 -0
  542. {squad-1.93.2 → squad-1.93.5}/test/api/test_data.py +0 -0
  543. {squad-1.93.2 → squad-1.93.5}/test/api/test_rest.py +0 -0
  544. {squad-1.93.2 → squad-1.93.5}/test/api/test_run.log +0 -0
  545. {squad-1.93.2 → squad-1.93.5}/test/api/tests.csv +0 -0
  546. {squad-1.93.2 → squad-1.93.5}/test/api/tests.json +0 -0
  547. {squad-1.93.2 → squad-1.93.5}/test/api/tests.py +0 -0
  548. {squad-1.93.2 → squad-1.93.5}/test/api/tests_log.json +0 -0
  549. {squad-1.93.2 → squad-1.93.5}/test/api/tests_two.json +0 -0
  550. {squad-1.93.2 → squad-1.93.5}/test/api/twoline_definition.yaml +0 -0
  551. {squad-1.93.2 → squad-1.93.5}/test/ci/__init__.py +0 -0
  552. {squad-1.93.2 → squad-1.93.5}/test/ci/backend/__init__.py +0 -0
  553. {squad-1.93.2 → squad-1.93.5}/test/ci/backend/example-broken-log.yaml +0 -0
  554. {squad-1.93.2 → squad-1.93.5}/test/ci/backend/example-lava-log.yaml +0 -0
  555. {squad-1.93.2 → squad-1.93.5}/test/ci/backend/lava.json +0 -0
  556. {squad-1.93.2 → squad-1.93.5}/test/ci/backend/test_real_lava.py +0 -0
  557. {squad-1.93.2 → squad-1.93.5}/test/ci/backend/tuxsuite_test_failed_result_sample.json +0 -0
  558. {squad-1.93.2 → squad-1.93.5}/test/ci/backend/tuxsuite_test_result_sample.json +0 -0
  559. {squad-1.93.2 → squad-1.93.5}/test/ci/test_listen.py +0 -0
  560. {squad-1.93.2 → squad-1.93.5}/test/core/__init__.py +0 -0
  561. {squad-1.93.2 → squad-1.93.5}/test/core/test_attachment.py +0 -0
  562. {squad-1.93.2 → squad-1.93.5}/test/core/test_build_summary.py +0 -0
  563. {squad-1.93.2 → squad-1.93.5}/test/core/test_callback.py +0 -0
  564. {squad-1.93.2 → squad-1.93.5}/test/core/test_emailtemplate.py +0 -0
  565. {squad-1.93.2 → squad-1.93.5}/test/core/test_failures.py +0 -0
  566. {squad-1.93.2 → squad-1.93.5}/test/core/test_group.py +0 -0
  567. {squad-1.93.2 → squad-1.93.5}/test/core/test_historical_emailtemplate.py +0 -0
  568. {squad-1.93.2 → squad-1.93.5}/test/core/test_history.py +0 -0
  569. {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data.py +0 -0
  570. {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_input/1/default/1/metadata.json +0 -0
  571. {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_input/1/default/1/metrics.json +0 -0
  572. {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_input/2/default/2/metadata.json +0 -0
  573. {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_input/2/default/2/metrics.json +0 -0
  574. {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_input/2/default/2/screenshot.png +0 -0
  575. {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_input/2/default/2/tests.json +0 -0
  576. {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_missing_metadata/1/1/tests.json +0 -0
  577. {squad-1.93.2 → squad-1.93.5}/test/core/test_known_issues.py +0 -0
  578. {squad-1.93.2 → squad-1.93.5}/test/core/test_metric.py +0 -0
  579. {squad-1.93.2 → squad-1.93.5}/test/core/test_metric_comparison.py +0 -0
  580. {squad-1.93.2 → squad-1.93.5}/test/core/test_metric_threshold.py +0 -0
  581. {squad-1.93.2 → squad-1.93.5}/test/core/test_metrics_data.py +0 -0
  582. {squad-1.93.2 → squad-1.93.5}/test/core/test_metrics_summary.py +0 -0
  583. {squad-1.93.2 → squad-1.93.5}/test/core/test_notification.py +0 -0
  584. {squad-1.93.2 → squad-1.93.5}/test/core/test_notification_delivery.py +0 -0
  585. {squad-1.93.2 → squad-1.93.5}/test/core/test_patch_source.py +0 -0
  586. {squad-1.93.2 → squad-1.93.5}/test/core/test_project.py +0 -0
  587. {squad-1.93.2 → squad-1.93.5}/test/core/test_project_status.py +0 -0
  588. {squad-1.93.2 → squad-1.93.5}/test/core/test_statistics.py +0 -0
  589. {squad-1.93.2 → squad-1.93.5}/test/core/test_tasks_notification.py +0 -0
  590. {squad-1.93.2 → squad-1.93.5}/test/core/test_test.py +0 -0
  591. {squad-1.93.2 → squad-1.93.5}/test/core/test_test_comparison.py +0 -0
  592. {squad-1.93.2 → squad-1.93.5}/test/core/test_test_data.py +0 -0
  593. {squad-1.93.2 → squad-1.93.5}/test/core/test_test_run.py +0 -0
  594. {squad-1.93.2 → squad-1.93.5}/test/core/test_test_summary.py +0 -0
  595. {squad-1.93.2 → squad-1.93.5}/test/core/test_update_project_statuses.py +0 -0
  596. {squad-1.93.2 → squad-1.93.5}/test/core/test_user_namespace.py +0 -0
  597. {squad-1.93.2 → squad-1.93.5}/test/core/test_utils.py +0 -0
  598. {squad-1.93.2 → squad-1.93.5}/test/frontend/__init__.py +0 -0
  599. {squad-1.93.2 → squad-1.93.5}/test/frontend/test_basics.py +0 -0
  600. {squad-1.93.2 → squad-1.93.5}/test/frontend/test_comparison.py +0 -0
  601. {squad-1.93.2 → squad-1.93.5}/test/frontend/test_get_token_command.py +0 -0
  602. {squad-1.93.2 → squad-1.93.5}/test/frontend/test_group_settings.py +0 -0
  603. {squad-1.93.2 → squad-1.93.5}/test/frontend/test_history.py +0 -0
  604. {squad-1.93.2 → squad-1.93.5}/test/frontend/test_template_tags.py +0 -0
  605. {squad-1.93.2 → squad-1.93.5}/test/frontend/test_test_job.py +0 -0
  606. {squad-1.93.2 → squad-1.93.5}/test/frontend/test_tests.py +0 -0
  607. {squad-1.93.2 → squad-1.93.5}/test/frontend/test_utils.py +0 -0
  608. {squad-1.93.2 → squad-1.93.5}/test/integration/__init__.py +0 -0
  609. {squad-1.93.2 → squad-1.93.5}/test/integration/plugins/test_tradefed.py +0 -0
  610. {squad-1.93.2 → squad-1.93.5}/test/integration/plugins/tradefed-output-20220608105250.tar.xz +0 -0
  611. {squad-1.93.2 → squad-1.93.5}/test/javascript.py +0 -0
  612. {squad-1.93.2 → squad-1.93.5}/test/karma.conf.js +0 -0
  613. {squad-1.93.2 → squad-1.93.5}/test/mock.py +0 -0
  614. {squad-1.93.2 → squad-1.93.5}/test/performance.py +0 -0
  615. {squad-1.93.2 → squad-1.93.5}/test/plugins/__init__.py +0 -0
  616. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/different-numbers-in-function-name-oops.log +0 -0
  617. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/duplicated-oops.log +0 -0
  618. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/internal-error-oops.log +0 -0
  619. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kasan.log +0 -0
  620. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kcsan_full_log.log +0 -0
  621. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kcsan_simple.log +0 -0
  622. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kernel_bug_and_invalid_opcode.log +0 -0
  623. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kernelexceptiontrace.log +0 -0
  624. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kernelexceptiontrace_without_squarebraces.log +0 -0
  625. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kernelpanic-multiline.log +0 -0
  626. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kernelpanic-single-and-multiline.log +0 -0
  627. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kfence.log +0 -0
  628. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/multiple_issues_dmesg.log +0 -0
  629. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/oops.log +0 -0
  630. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/rcu_warning.log +0 -0
  631. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_arm64_25103120.log +0 -0
  632. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_arm_24958120.log +0 -0
  633. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_arm_26001178.log +0 -0
  634. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_i386_25043392.log +0 -0
  635. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_i386_25431539.log +0 -0
  636. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_riscv_24688299.log +0 -0
  637. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_x86_64_25086964.log +0 -0
  638. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_x86_64_26103794.log +0 -0
  639. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_arm64_24934206.log +0 -0
  640. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_arm_24951924.log +0 -0
  641. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_arm_25044425.log +0 -0
  642. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_arm_25078650.log +0 -0
  643. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_i386_25044475.log +0 -0
  644. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_riscv_24715191.log +0 -0
  645. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_s390_26103313.log +0 -0
  646. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_sh_26103296.log +0 -0
  647. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_x86_64_24932905.log +0 -0
  648. {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_x86_64_26103833.log +0 -0
  649. {squad-1.93.2 → squad-1.93.5}/test/plugins/log_parser_base/kfence-seconds-expected.log +0 -0
  650. {squad-1.93.2 → squad-1.93.5}/test/plugins/log_parser_base/kfence-seconds.log +0 -0
  651. {squad-1.93.2 → squad-1.93.5}/test/plugins/test_gerrit.py +0 -0
  652. {squad-1.93.2 → squad-1.93.5}/test/plugins/test_github.py +0 -0
  653. {squad-1.93.2 → squad-1.93.5}/test/plugins/test_linux_log_parser.py +0 -0
  654. {squad-1.93.2 → squad-1.93.5}/test/plugins/test_linux_log_parser_build.py +0 -0
  655. {squad-1.93.2 → squad-1.93.5}/test/plugins/test_log_parser_base.py +0 -0
  656. {squad-1.93.2 → squad-1.93.5}/test/plugins/test_plugin.py +0 -0
  657. {squad-1.93.2 → squad-1.93.5}/test/settings.py +0 -0
  658. {squad-1.93.2 → squad-1.93.5}/test/test_architecture.py +0 -0
  659. {squad-1.93.2 → squad-1.93.5}/test/test_code_quality.py +0 -0
  660. {squad-1.93.2 → squad-1.93.5}/test/test_cors.py +0 -0
  661. {squad-1.93.2 → squad-1.93.5}/test/test_i18n.py +0 -0
  662. {squad-1.93.2 → squad-1.93.5}/test/test_mail.py +0 -0
  663. {squad-1.93.2 → squad-1.93.5}/test/test_pending_migrations.py +0 -0
  664. {squad-1.93.2 → squad-1.93.5}/test/unit/test_annotation.js +0 -0
  665. {squad-1.93.2 → squad-1.93.5}/test/unit/test_cancel.js +0 -0
  666. {squad-1.93.2 → squad-1.93.5}/test/unit/test_charts.js +0 -0
  667. {squad-1.93.2 → squad-1.93.5}/test/unit/test_compare.js +0 -0
  668. {squad-1.93.2 → squad-1.93.5}/test/unit/test_filter.js +0 -0
  669. {squad-1.93.2 → squad-1.93.5}/test/unit/test_resubmit.js +0 -0
@@ -1,3 +1,17 @@
1
+ # 1.93.5
2
+
3
+ This release adds a bugfix on BuildPlaceHolder.
4
+
5
+ # 1.93.4
6
+
7
+ This 1.93.4 release adds a hotfix for a bug added in 1.93.3.
8
+
9
+ # 1.93.3
10
+
11
+ This 1.93.3 release adds performance improvement when fetching test results.
12
+
13
+ Also it bumps SQUAD's Python version to 3.11.
14
+
1
15
  # 1.93.2
2
16
 
3
17
  This 1.93.2 release add minor bug fixes in the linux log parser plugin.
@@ -17,7 +31,7 @@ This 1.92 release avoids an extra retry when fetching errored builds/tests in Tu
17
31
 
18
32
  # 1.91
19
33
 
20
- This 1.91 release brings a few changes worth pointing out separately:
34
+ his 1.91 release brings a few changes worth pointing out separately:
21
35
 
22
36
  * Tuxsuite backend: add support for changing environment name if "test_name" is present. Artificial boot tests
23
37
  when jobs fail or get canceled. Also checks if the testjob's project contains a token allowing authenticated
@@ -0,0 +1,67 @@
1
+ FROM debian:bookworm
2
+
3
+ ENV DEBIAN_FRONTEND=noninteractive
4
+ COPY requirements.txt /requirements.txt
5
+
6
+ RUN apt-get update -q=2 && \
7
+ apt-get -qq install --no-install-recommends iproute2 auto-apt-proxy >/dev/null && \
8
+ apt-get -qq install --no-install-recommends >/dev/null \
9
+ fail2ban \
10
+ gettext \
11
+ gcc \
12
+ git \
13
+ libdbd-pg-perl \
14
+ libldap2-dev \
15
+ libpq-dev \
16
+ libsasl2-dev \
17
+ libyaml-dev \
18
+ moreutils \
19
+ openssh-client \
20
+ postgresql-client \
21
+ python3-dev \
22
+ python3-pip \
23
+ python3-psycopg2 \
24
+ python3-venv \
25
+ unzip \
26
+ wget && \
27
+ python3 -m venv /venv/ && . /venv/bin/activate && \
28
+ pip install -r /requirements.txt && \
29
+ pip install \
30
+ build \
31
+ django-auth-ldap \
32
+ django-storages[s3] \
33
+ sentry-sdk[django] && \
34
+ pip install --no-dependencies squad-linaro-plugins
35
+
36
+ # Make sure python virtual environment is always on
37
+ ENV PATH="/venv/bin:$PATH"
38
+
39
+ # Prepare the environment
40
+ COPY . /squad-build/
41
+
42
+ ENV SQUAD_STATIC_DIR=/app/static
43
+
44
+ RUN cd /squad-build && ./scripts/git-build && \
45
+ pip3 install --no-dependencies ./dist/squad*.whl && \
46
+ mkdir -p /app/static && \
47
+ useradd -d /app squad && \
48
+ python3 -m squad.frontend && \
49
+ squad-admin collectstatic --noinput --verbosity 0 && \
50
+ chown -R squad:squad /app && \
51
+ cd /app
52
+
53
+ # Clean environment
54
+ RUN rm -rf /squad-build && \
55
+ apt-get remove -y \
56
+ gcc \
57
+ git \
58
+ libpq-dev \
59
+ libsasl2-dev \
60
+ libyaml-dev \
61
+ python3-dev \
62
+ libsasl2-dev && \
63
+ apt-get clean && \
64
+ apt-get autoremove -y && \
65
+ . /venv/bin/activate && pip uninstall -y build && pip cache purge
66
+
67
+ USER squad
squad-1.93.5/PKG-INFO ADDED
@@ -0,0 +1,55 @@
1
+ Metadata-Version: 2.2
2
+ Name: squad
3
+ Version: 1.93.5
4
+ Summary: Software Quality Dashboard
5
+ Home-page: https://github.com/Linaro/squad
6
+ Author: Antonio Terceiro
7
+ Author-email: antonio.terceiro@linaro.org
8
+ License: GPLv3+
9
+ Platform: any
10
+ License-File: COPYING
11
+ Requires-Dist: aiohttp
12
+ Requires-Dist: celery
13
+ Requires-Dist: cryptography
14
+ Requires-Dist: coreapi
15
+ Requires-Dist: django_crispy_forms==1.14.0
16
+ Requires-Dist: Django<5,>=3
17
+ Requires-Dist: django-allauth
18
+ Requires-Dist: django-bootstrap3
19
+ Requires-Dist: django-celery-results
20
+ Requires-Dist: django-cors-headers
21
+ Requires-Dist: django-debug-toolbar
22
+ Requires-Dist: django-simple-history>3.0
23
+ Requires-Dist: django_filter>=2.0
24
+ Requires-Dist: djangorestframework>=3.9.2
25
+ Requires-Dist: djangorestframework-filters>=1.0.0.dev0
26
+ Requires-Dist: drf-extensions
27
+ Requires-Dist: future
28
+ Requires-Dist: gunicorn
29
+ Requires-Dist: importlib-metadata>3
30
+ Requires-Dist: Jinja2==3.0.3
31
+ Requires-Dist: Markdown
32
+ Requires-Dist: msgpack>=0.5.0
33
+ Requires-Dist: psycopg2-binary
34
+ Requires-Dist: python_dateutil
35
+ Requires-Dist: PyYAML>=5.1
36
+ Requires-Dist: PyJWT
37
+ Requires-Dist: pyzmq
38
+ Requires-Dist: requests
39
+ Requires-Dist: setuptools
40
+ Requires-Dist: sqlparse
41
+ Requires-Dist: svgwrite
42
+ Requires-Dist: whitenoise
43
+ Provides-Extra: postgres
44
+ Requires-Dist: psycopg2-binary; extra == "postgres"
45
+ Dynamic: author
46
+ Dynamic: author-email
47
+ Dynamic: description
48
+ Dynamic: home-page
49
+ Dynamic: license
50
+ Dynamic: platform
51
+ Dynamic: provides-extra
52
+ Dynamic: requires-dist
53
+ Dynamic: summary
54
+
55
+ Software Quality Dashboard
@@ -25,21 +25,16 @@ fi
25
25
  dockerfile="$datadir"/../Dockerfile.dev
26
26
  (
27
27
  sed -e '1,/# Prepare the environment/!d' "$basedir"/Dockerfile
28
- echo 'RUN apt-get update -q2 && \
28
+ echo 'COPY requirements-dev.txt /app/requirements-dev.txt'
29
+ echo 'RUN sed -i "1d" /app/requirements-dev.txt && \
30
+ pip install -r /app/requirements-dev.txt && \
29
31
  apt-get install -q2 \
30
- tmux \
31
- flake8 \
32
- python3-django-extensions \
33
- python3-pytest \
34
- python3-pytest-django \
35
- python3-requests-mock \
36
- ipython3 \
37
- rabbitmq-server \
38
- chromium \
39
- nodejs \
40
- ruby-foreman \
41
- procps && \'
42
- echo " pip3 install --no-dependencies django-bootstrap3"
32
+ tmux \
33
+ rabbitmq-server \
34
+ chromium \
35
+ nodejs \
36
+ ruby-foreman \
37
+ procps'
43
38
 
44
39
  if [ ! -z "${has_input}" ]
45
40
  then
@@ -3,7 +3,7 @@ celery
3
3
  cryptography
4
4
  coreapi
5
5
  django_crispy_forms==1.14.0
6
- Django>=3
6
+ Django<5,>=3
7
7
  django-allauth
8
8
  django-bootstrap3
9
9
  django-celery-results
@@ -20,6 +20,7 @@ importlib-metadata>3
20
20
  Jinja2==3.0.3
21
21
  Markdown
22
22
  msgpack>=0.5.0
23
+ psycopg2-binary
23
24
  python_dateutil
24
25
  PyYAML>=5.1
25
26
  PyJWT
@@ -29,6 +30,3 @@ setuptools
29
30
  sqlparse
30
31
  svgwrite
31
32
  whitenoise
32
-
33
- [postgres]
34
- psycopg2-binary
@@ -11,7 +11,7 @@ local_settings=$(ls -1 squad/local_settings.py 2>/dev/null || true)
11
11
  if [ -n "$local_settings" ]; then
12
12
  mv "$local_settings" "$local_settings".off
13
13
  fi
14
- python3 setup.py sdist bdist_wheel
14
+ python3 -m build
15
15
 
16
16
  # test
17
17
  tar=$(mktemp tar.XXXXXXXXX)
@@ -23,6 +23,6 @@ for po in $(find squad/*/locale -name \*.po); do
23
23
  chronic msgfmt -o ${po%.po}.mo ${po}
24
24
  done
25
25
 
26
- SQUAD_RELEASE=1 chronic python3 setup.py bdist_wheel
26
+ SQUAD_RELEASE=1 chronic python3 -m build
27
27
 
28
28
  echo "$v" > dist/LASTBUILD
@@ -42,7 +42,8 @@ class Backend(object):
42
42
  tests = {test: (random.randint(1, 10) <= 8) and "pass" or 'fail' for test in TESTS}
43
43
  metrics = {metric: random.random() for metric in METRICS}
44
44
  logs = "a fake log file\ndate: " + time.strftime('%c') + "\n"
45
- return (status, completed, metadata, tests, metrics, logs)
45
+ attachments = {}
46
+ return (status, completed, metadata, tests, metrics, logs, attachments)
46
47
 
47
48
  def listen(self):
48
49
  max_id = 0
@@ -718,7 +718,8 @@ class Backend(BaseBackend):
718
718
  # automatically resubmit in some cases
719
719
  if error_type in ['Infrastructure', 'Job', 'Test']:
720
720
  self.__resubmit_job__(test_job, metadata)
721
- return (data[status_key], completed, job_metadata, results, metrics, self.__parse_log__(raw_logs))
721
+ attachments = {}
722
+ return (data[status_key], completed, job_metadata, results, metrics, self.__parse_log__(raw_logs), attachments)
722
723
 
723
724
  def __resubmit_job__(self, test_job, metadata):
724
725
  infra_messages_re_list = []
@@ -70,8 +70,9 @@ class Backend:
70
70
  proper id.
71
71
 
72
72
  The return value must be a tuple (status, completed, metadata, tests,
73
- metrics, logs), where status and logs are strings, metadata, tests and
74
- metrics are dictionaries, and completed is a boolean.
73
+ metrics, logs, attachments), where status and logs are strings,
74
+ metadata, tests and metrics are dictionaries, and completed is a
75
+ boolean.
75
76
 
76
77
  On errors, implementations can raise two classes of exceptions:
77
78
  * squad.ci.exceptions.FetchIssue, when there is an unrecoverable
@@ -17,6 +17,8 @@ from cryptography.hazmat.primitives import (
17
17
  serialization,
18
18
  )
19
19
 
20
+ from django.core.files.base import ContentFile
21
+
20
22
  from squad.ci.backend.null import Backend as BaseBackend
21
23
  from squad.ci.exceptions import FetchIssue, TemporaryFetchIssue
22
24
  from squad.ci.models import TestJob
@@ -284,7 +286,14 @@ class Backend(BaseBackend):
284
286
  except KeyError:
285
287
  raise FetchIssue('Missing duration from build results')
286
288
 
287
- return status, completed, metadata, tests, metrics, logs
289
+ attachment_list = ["config", "tuxmake_reproducer.sh", "tux_plan.yaml"]
290
+ attachments = {}
291
+ for name in attachment_list:
292
+ response = self.fetch_url(results['download_url'], name)
293
+ if response.ok:
294
+ attachments[name] = ContentFile(response.content)
295
+
296
+ return status, completed, metadata, tests, metrics, logs, attachments
288
297
 
289
298
  def parse_oebuild_results(self, test_job, job_url, results, settings):
290
299
  required_keys = ['download_url', 'result']
@@ -301,6 +310,7 @@ class Backend(BaseBackend):
301
310
  metadata['sources'] = sources
302
311
 
303
312
  # Create tests and metrics
313
+ attachments = {}
304
314
  tests = {}
305
315
  metrics = {}
306
316
  completed = True
@@ -308,7 +318,7 @@ class Backend(BaseBackend):
308
318
  tests['build/build'] = 'pass' if results['result'] == 'pass' else 'fail'
309
319
  logs = self.fetch_url(results['download_url'], 'build.log').text
310
320
 
311
- return status, completed, metadata, tests, metrics, logs
321
+ return status, completed, metadata, tests, metrics, logs, attachments
312
322
 
313
323
  def update_metadata_from_file(self, results, metadata):
314
324
  if "download_url" in results:
@@ -327,6 +337,7 @@ class Backend(BaseBackend):
327
337
  tests = {}
328
338
  metrics = {}
329
339
  logs = ''
340
+ attachments = {}
330
341
 
331
342
  # Pick up some metadata from results
332
343
  metadata_keys = settings.get('TEST_METADATA_KEYS', [])
@@ -361,7 +372,7 @@ class Backend(BaseBackend):
361
372
 
362
373
  self.add_skip_boot_test(tests, metadata)
363
374
 
364
- return status, completed, metadata, tests, metrics, logs
375
+ return status, completed, metadata, tests, metrics, logs, attachments
365
376
 
366
377
  # Fetch results even if the job fails, but has results
367
378
  if results['result'] == 'fail':
@@ -370,12 +381,12 @@ class Backend(BaseBackend):
370
381
  elif results['result'] == 'error':
371
382
  test_job.failure = 'tuxsuite infrastructure error'
372
383
  self.add_skip_boot_test(tests, metadata)
373
- return 'Incomplete', completed, metadata, tests, metrics, logs
384
+ return 'Incomplete', completed, metadata, tests, metrics, logs, attachments
374
385
 
375
386
  elif results['result'] == 'canceled':
376
387
  test_job.failure = 'tuxsuite job canceled'
377
388
  self.add_skip_boot_test(tests, metadata)
378
- return 'Canceled', completed, metadata, tests, metrics, logs
389
+ return 'Canceled', completed, metadata, tests, metrics, logs, attachments
379
390
 
380
391
  # If boot result is unkown, a retry is needed, otherwise, it either passed or failed
381
392
  if 'unknown' == results['results']['boot']:
@@ -384,6 +395,13 @@ class Backend(BaseBackend):
384
395
  # Retrieve TuxRun log
385
396
  logs = self.fetch_url(job_url + '/', 'logs?format=txt').text
386
397
 
398
+ attachment_list = ["reproducer", "tux_plan.yaml"]
399
+ attachments = {}
400
+ for name in attachment_list:
401
+ response = self.fetch_url(job_url + '/', name)
402
+ if response.ok:
403
+ attachments[name] = ContentFile(response.content)
404
+
387
405
  # Follow up the chain and retrieve build name
388
406
  self.set_build_name(test_job, job_url, results, metadata, settings)
389
407
 
@@ -407,7 +425,7 @@ class Backend(BaseBackend):
407
425
  # test_log = self.get_test_log(log_dict, test)
408
426
  tests[test_name] = result
409
427
 
410
- return status, completed, metadata, tests, metrics, logs
428
+ return status, completed, metadata, tests, metrics, logs, attachments
411
429
 
412
430
  def fetch(self, test_job):
413
431
  url = self.job_url(test_job)
@@ -109,7 +109,7 @@ class Backend(models.Model):
109
109
  test_job.fetched_at = timezone.now()
110
110
  test_job.save()
111
111
 
112
- status, completed, metadata, tests, metrics, logs = results
112
+ status, completed, metadata, tests, metrics, logs, attachments = results
113
113
 
114
114
  if not completed:
115
115
  tests = {}
@@ -136,6 +136,7 @@ class Backend(models.Model):
136
136
  metrics_file=json.dumps(metrics),
137
137
  log_file=logs,
138
138
  completed=completed,
139
+ attachments=attachments,
139
140
  )
140
141
  test_job.testrun = testrun
141
142
  except (DuplicatedTestJob, InvalidMetadata) as exception:
@@ -36,7 +36,7 @@ from squad.core.data import JSONTestDataParser, JSONMetricDataParser
36
36
  from squad.core.statistics import geomean
37
37
  from squad.core.notification import Notification
38
38
  from squad.core.plugins import apply_plugins
39
- from squad.core.utils import join_name
39
+ from squad.core.utils import join_name, split_dict
40
40
  from rest_framework import status
41
41
  from jinja2 import TemplateSyntaxError
42
42
  from . import exceptions
@@ -46,7 +46,6 @@ from .notification import maybe_notify_project_status
46
46
  from .notification import notify_patch_build_created
47
47
  from .notification import notify_delayed_report_callback, notify_delayed_report_email
48
48
 
49
-
50
49
  test_parser = JSONTestDataParser
51
50
  metric_parser = JSONMetricDataParser
52
51
 
@@ -213,50 +212,131 @@ def get_suite(test_run, suite_name):
213
212
 
214
213
  class ParseTestRunData(object):
215
214
 
215
+ @staticmethod
216
+ def create_suites(project, suites_slugs):
217
+ # Insert/Get all suites at once, not likely to be a big list
218
+ SuiteMetadata.objects.bulk_create([
219
+ SuiteMetadata(
220
+ kind='suite',
221
+ suite=suite,
222
+ name='-',
223
+ ) for suite in suites_slugs
224
+ ], ignore_conflicts=True)
225
+
226
+ suites_metadata_ids = {
227
+ m.suite: m.id for m in SuiteMetadata.objects.filter(kind='suite', name='-', suite__in=suites_slugs)
228
+ }
229
+
230
+ Suite.objects.bulk_create([
231
+ Suite(
232
+ project=project,
233
+ slug=suite,
234
+ metadata_id=suites_metadata_ids[suite],
235
+ ) for suite in suites_slugs
236
+ ], ignore_conflicts=True)
237
+
238
+ return {s.slug: s.id for s in project.suites.filter(slug__in=suites_slugs)}
239
+
240
+ @staticmethod
241
+ def create_tests_batch(testrun, tests_batch, issues_by_full_name, suites_ids):
242
+
243
+ # Create SuiteMetadata in bulk
244
+ SuiteMetadata.objects.bulk_create([
245
+ SuiteMetadata(
246
+ suite=test['suite_slug'],
247
+ name=test['test_name'],
248
+ kind='test',
249
+ ) for test in tests_batch.values()
250
+ ], ignore_conflicts=True)
251
+
252
+ # We need the extra SELECT due to `ignore_conflicts=True` above
253
+ metadata_ids = {}
254
+ metadata_names = {}
255
+ metadatas = SuiteMetadata.objects.filter(
256
+ kind='test',
257
+ name__in=[
258
+ t['test_name'] for t in tests_batch.values()
259
+ ]
260
+ ).all()
261
+
262
+ for metadata in metadatas:
263
+ full_name = join_name(metadata.suite, metadata.name)
264
+ metadata_ids[full_name] = metadata.id
265
+ metadata_names[metadata.id] = full_name
266
+
267
+ # Create tests in batch
268
+ created_tests = Test.objects.bulk_create([
269
+ Test(
270
+ test_run=testrun,
271
+ suite_id=suites_ids[test['suite_slug']],
272
+ metadata_id=metadata_ids[full_name],
273
+ result=test['result'],
274
+ log=test['log'],
275
+ has_known_issues=test['has_known_issues'],
276
+ build_id=testrun.build_id,
277
+ environment_id=testrun.environment_id,
278
+ ) for full_name, test in tests_batch.items()
279
+ ])
280
+
281
+ # Attach known issues, if any
282
+ for test in created_tests:
283
+ test_full_name = metadata_names[test.metadata_id]
284
+ test_full_name = join_name(metadata.suite, metadata.name)
285
+ issues = issues_by_full_name.get(test_full_name, [])
286
+ if len(issues) > 0:
287
+ test.known_issues.add(*issues)
288
+
216
289
  @staticmethod
217
290
  def __call__(test_run):
218
291
  if test_run.data_processed:
219
292
  return
220
293
 
221
- issues = {}
222
- for issue in KnownIssue.active_by_environment(test_run.environment):
223
- issues.setdefault(issue.test_name, [])
224
- issues[issue.test_name].append(issue)
294
+ project = test_run.build.project
225
295
 
226
296
  # Issues' test_name should be interpreted as regexes
227
297
  # so compile them prior to matching against test names
228
298
  # The * character should be replaced by .*?, which is regex for "everything"
299
+ issues = defaultdict(list)
229
300
  issues_regex = {}
301
+ for issue in KnownIssue.active_by_environment(test_run.environment):
302
+ issues[issue.test_name].append(issue)
303
+
230
304
  for test_name_regex in issues.keys():
231
305
  pattern = re.escape(test_name_regex).replace('\\*', '.*?')
232
306
  regex = re.compile(pattern)
233
307
  issues_regex[regex] = issues[test_name_regex]
234
308
 
309
+ tests_details = {}
310
+ suites_slugs = set()
311
+ issues_by_full_name = {}
235
312
  for test in test_parser()(test_run.tests_file):
236
313
  # TODO: remove check below when test_name size changes in the schema
237
314
  if len(test['test_name']) > 256:
238
315
  continue
239
- suite = get_suite(
240
- test_run,
241
- test['group_name']
242
- )
243
- metadata, _ = SuiteMetadata.objects.get_or_create(suite=suite.slug, name=test['test_name'], kind='test')
244
- full_name = join_name(suite.slug, test['test_name'])
245
316
 
246
- test_issues = list(itertools.chain(*[issue for regex, issue in issues_regex.items() if regex.match(full_name)]))
317
+ full_name = join_name(test['group_name'], test['test_name'])
318
+ test_issues = list(itertools.chain(*[
319
+ issue for regex, issue in issues_regex.items()
320
+ if regex.match(full_name)
321
+ ]))
247
322
 
248
- test_obj = Test.objects.create(
249
- test_run=test_run,
250
- suite=suite,
251
- metadata=metadata,
252
- result=test['pass'],
253
- log=test['log'],
254
- has_known_issues=bool(test_issues),
255
- build=test_run.build,
256
- environment=test_run.environment,
257
- )
258
- for issue in test_issues:
259
- test_obj.known_issues.add(issue)
323
+ suites_slugs.add(test['group_name'])
324
+ tests_details[full_name] = {
325
+ 'suite_slug': test['group_name'],
326
+ 'test_name': test['test_name'],
327
+ 'result': test['pass'],
328
+ 'log': test['log'],
329
+ 'has_known_issues': bool(test_issues),
330
+ }
331
+
332
+ issues_by_full_name[full_name] = test_issues
333
+
334
+ suites_ids = ParseTestRunData.create_suites(project, suites_slugs)
335
+
336
+ # Insert tests in batches
337
+ batch_size = 1000
338
+ for batch in split_dict(tests_details, batch_size):
339
+ ParseTestRunData.create_tests_batch(test_run, batch, issues_by_full_name, suites_ids)
260
340
 
261
341
  for metric in metric_parser()(test_run.metrics_file):
262
342
  # TODO: remove check below when test_name size changes in the schema
@@ -534,7 +614,10 @@ def remove_delayed_reports():
534
614
  @transaction.atomic
535
615
  def cleanup_build(build_id):
536
616
  build = Build.objects.get(pk=build_id)
537
- BuildPlaceholder.objects.create(project=build.project, version=build.version)
617
+ build_placeholder, created = BuildPlaceholder.objects.get_or_create(project=build.project, version=build.version)
618
+ if not created: # Update build deletion date when placeholder already exists
619
+ build_placeholder.build_deleted_at = timezone.now()
620
+ build_placeholder.save()
538
621
  build.delete()
539
622
 
540
623
 
@@ -263,7 +263,7 @@ USE_TZ = True
263
263
  # http://whitenoise.evans.io/en/stable/django.html
264
264
  STATIC_URL = '/static/'
265
265
  STATIC_ROOT = os.getenv('SQUAD_STATIC_DIR', os.path.join(DATA_DIR, 'static'))
266
- STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
266
+ STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'
267
267
 
268
268
  # Squad default storage directory
269
269
  MEDIA_ROOT = os.getenv('SQUAD_STORAGE_DIR', 'storage')
@@ -0,0 +1 @@
1
+ __version__ = '1.93.5'
@@ -0,0 +1,55 @@
1
+ Metadata-Version: 2.2
2
+ Name: squad
3
+ Version: 1.93.5
4
+ Summary: Software Quality Dashboard
5
+ Home-page: https://github.com/Linaro/squad
6
+ Author: Antonio Terceiro
7
+ Author-email: antonio.terceiro@linaro.org
8
+ License: GPLv3+
9
+ Platform: any
10
+ License-File: COPYING
11
+ Requires-Dist: aiohttp
12
+ Requires-Dist: celery
13
+ Requires-Dist: cryptography
14
+ Requires-Dist: coreapi
15
+ Requires-Dist: django_crispy_forms==1.14.0
16
+ Requires-Dist: Django<5,>=3
17
+ Requires-Dist: django-allauth
18
+ Requires-Dist: django-bootstrap3
19
+ Requires-Dist: django-celery-results
20
+ Requires-Dist: django-cors-headers
21
+ Requires-Dist: django-debug-toolbar
22
+ Requires-Dist: django-simple-history>3.0
23
+ Requires-Dist: django_filter>=2.0
24
+ Requires-Dist: djangorestframework>=3.9.2
25
+ Requires-Dist: djangorestframework-filters>=1.0.0.dev0
26
+ Requires-Dist: drf-extensions
27
+ Requires-Dist: future
28
+ Requires-Dist: gunicorn
29
+ Requires-Dist: importlib-metadata>3
30
+ Requires-Dist: Jinja2==3.0.3
31
+ Requires-Dist: Markdown
32
+ Requires-Dist: msgpack>=0.5.0
33
+ Requires-Dist: psycopg2-binary
34
+ Requires-Dist: python_dateutil
35
+ Requires-Dist: PyYAML>=5.1
36
+ Requires-Dist: PyJWT
37
+ Requires-Dist: pyzmq
38
+ Requires-Dist: requests
39
+ Requires-Dist: setuptools
40
+ Requires-Dist: sqlparse
41
+ Requires-Dist: svgwrite
42
+ Requires-Dist: whitenoise
43
+ Provides-Extra: postgres
44
+ Requires-Dist: psycopg2-binary; extra == "postgres"
45
+ Dynamic: author
46
+ Dynamic: author-email
47
+ Dynamic: description
48
+ Dynamic: home-page
49
+ Dynamic: license
50
+ Dynamic: platform
51
+ Dynamic: provides-extra
52
+ Dynamic: requires-dist
53
+ Dynamic: summary
54
+
55
+ Software Quality Dashboard
@@ -4,4 +4,3 @@ squad-admin = squad.manage:main
4
4
  squad-listener = squad.run.listener:main
5
5
  squad-scheduler = squad.run.scheduler:main
6
6
  squad-worker = squad.run.worker:main
7
-
@@ -3,7 +3,7 @@ celery
3
3
  cryptography
4
4
  coreapi
5
5
  django_crispy_forms==1.14.0
6
- Django>=3
6
+ Django<5,>=3
7
7
  django-allauth
8
8
  django-bootstrap3
9
9
  django-celery-results
@@ -20,6 +20,7 @@ importlib-metadata>3
20
20
  Jinja2==3.0.3
21
21
  Markdown
22
22
  msgpack>=0.5.0
23
+ psycopg2-binary
23
24
  python_dateutil
24
25
  PyYAML>=5.1
25
26
  PyJWT
@@ -29,3 +30,6 @@ setuptools
29
30
  sqlparse
30
31
  svgwrite
31
32
  whitenoise
33
+
34
+ [postgres]
35
+ psycopg2-binary
@@ -48,7 +48,7 @@ class FakeBackendTest(TestCase):
48
48
  def test_fetch(self):
49
49
  job = TestJob.objects.create(backend=self.backend, target=self.project)
50
50
  impl = FakeBackend(self.backend)
51
- (status, completed, metadata, tests, metrics, logs) = impl.fetch(job)
51
+ (status, completed, metadata, tests, metrics, logs, attachments) = impl.fetch(job)
52
52
  self.assertIsInstance(status, str)
53
53
  self.assertIsInstance(completed, bool)
54
54
  self.assertIsInstance(metadata, dict)