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.
- {squad-1.93.2 → squad-1.93.5}/CHANGELOG.md +15 -1
- squad-1.93.5/Dockerfile +67 -0
- squad-1.93.5/PKG-INFO +55 -0
- {squad-1.93.2 → squad-1.93.5}/dev-docker +9 -14
- squad-1.93.2/squad.egg-info/requires.txt → squad-1.93.5/requirements.txt +2 -4
- {squad-1.93.2 → squad-1.93.5}/scripts/build +1 -1
- {squad-1.93.2 → squad-1.93.5}/scripts/git-build +1 -1
- {squad-1.93.2 → squad-1.93.5}/squad/ci/backend/fake.py +2 -1
- {squad-1.93.2 → squad-1.93.5}/squad/ci/backend/lava.py +2 -1
- {squad-1.93.2 → squad-1.93.5}/squad/ci/backend/null.py +3 -2
- {squad-1.93.2 → squad-1.93.5}/squad/ci/backend/tuxsuite.py +24 -6
- {squad-1.93.2 → squad-1.93.5}/squad/ci/models.py +2 -1
- {squad-1.93.2 → squad-1.93.5}/squad/core/tasks/__init__.py +109 -26
- {squad-1.93.2 → squad-1.93.5}/squad/settings.py +1 -1
- squad-1.93.5/squad/version.py +1 -0
- squad-1.93.5/squad.egg-info/PKG-INFO +55 -0
- {squad-1.93.2 → squad-1.93.5}/squad.egg-info/entry_points.txt +0 -1
- squad-1.93.2/requirements.txt → squad-1.93.5/squad.egg-info/requires.txt +5 -1
- {squad-1.93.2 → squad-1.93.5}/test/ci/backend/test_fake.py +1 -1
- {squad-1.93.2 → squad-1.93.5}/test/ci/backend/test_lava.py +17 -17
- {squad-1.93.2 → squad-1.93.5}/test/ci/backend/test_tuxsuite.py +150 -18
- {squad-1.93.2 → squad-1.93.5}/test/ci/test_models.py +20 -11
- {squad-1.93.2 → squad-1.93.5}/test/ci/test_tasks.py +6 -3
- {squad-1.93.2 → squad-1.93.5}/test/core/test_build.py +2 -2
- {squad-1.93.2 → squad-1.93.5}/test/core/test_tasks.py +24 -0
- {squad-1.93.2 → squad-1.93.5}/test/integration/test_build_notification_from_ci.py +2 -1
- squad-1.93.2/Dockerfile +0 -83
- squad-1.93.2/PKG-INFO +0 -14
- squad-1.93.2/squad/version.py +0 -1
- squad-1.93.2/squad.egg-info/PKG-INFO +0 -14
- {squad-1.93.2 → squad-1.93.5}/.ackrc +0 -0
- {squad-1.93.2 → squad-1.93.5}/.coveragerc +0 -0
- {squad-1.93.2 → squad-1.93.5}/.ctags +0 -0
- {squad-1.93.2 → squad-1.93.5}/.dockerignore +0 -0
- {squad-1.93.2 → squad-1.93.5}/.gitignore +0 -0
- {squad-1.93.2 → squad-1.93.5}/.mailmap +0 -0
- {squad-1.93.2 → squad-1.93.5}/.readthedocs.yml +0 -0
- {squad-1.93.2 → squad-1.93.5}/.reuse/dep5 +0 -0
- {squad-1.93.2 → squad-1.93.5}/COPYING +0 -0
- {squad-1.93.2 → squad-1.93.5}/COPYRIGHTS +0 -0
- {squad-1.93.2 → squad-1.93.5}/LICENSES/GPL-3.0-or-later.txt +0 -0
- {squad-1.93.2 → squad-1.93.5}/LICENSES/MIT.txt +0 -0
- {squad-1.93.2 → squad-1.93.5}/LICENSES/OFL-1.1.txt +0 -0
- {squad-1.93.2 → squad-1.93.5}/MANIFEST.in +0 -0
- {squad-1.93.2 → squad-1.93.5}/Procfile +0 -0
- {squad-1.93.2 → squad-1.93.5}/README.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/babel.cfg +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/.gitignore +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/Makefile +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/api.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/ci.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/conf.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/hacking.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/index.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/install.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/intro.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/lava_usecase.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/plugins.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/quickstart.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/translating.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/doc/tuxsuite_usecase.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/docker/db-dumped +0 -0
- {squad-1.93.2 → squad-1.93.5}/docker/db-to-be-restored +0 -0
- {squad-1.93.2 → squad-1.93.5}/docker/docker-compose.yml +0 -0
- {squad-1.93.2 → squad-1.93.5}/docker/extra_settings.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/docker/init-db.sh +0 -0
- {squad-1.93.2 → squad-1.93.5}/docker/rabbitmq.config +0 -0
- {squad-1.93.2 → squad-1.93.5}/docker/squad-apache.conf +0 -0
- {squad-1.93.2 → squad-1.93.5}/docker-compose.yaml +0 -0
- {squad-1.93.2 → squad-1.93.5}/manage.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/package-lock.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/package.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/pytest.ini +0 -0
- {squad-1.93.2 → squad-1.93.5}/requirements-dev.txt +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/check-ci +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/check-ignore +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/community_connector/main.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/community_connector/manifest.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/dogfood +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/get-metrics +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/get-tests +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/pytest +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/rabbitmq-server +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/release +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/release-docker +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/squad-config +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/test-ci +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/test-docker +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/testdata/gen-ci-jobs +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/testdata/gen-metrics +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/testdata/gen-test-data +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/testdata/gen-tests +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/testdata/setup-dev +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/testdata/submit-ci-jobs +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/testdata/submit-test-data +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/translate +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/travis-lava +0 -0
- {squad-1.93.2 → squad-1.93.5}/scripts/update-translation-files +0 -0
- {squad-1.93.2 → squad-1.93.5}/setup.cfg +0 -0
- {squad-1.93.2 → squad-1.93.5}/setup.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/admin.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/api/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/api/apps.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/api/ci.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/api/data.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/api/filters.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/api/prometheus.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/api/rest.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/api/urls.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/api/utils.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/api/views.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/celery.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/admin.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/apps.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/backend/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/exceptions.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/management/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/management/commands/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/management/commands/create_tuxsuite_boot_tests.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/management/commands/listen.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/management/commands/testfetch.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0001_initial.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0002_auto_20170406_1252.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0003_backend_name.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0004_testjob_failure.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0005_remove_listener_data.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0006_simplify_backend_loading.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0007_auto_20170517_1736.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0008_testjob_testrun.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0009_slug_pattern.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0010_testjob_can_resubmit.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0011_testjob_resubmitted_count.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0012_testjob_build.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0013_testjob_name.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0014_testjob_target_build.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0015_testjob_populate_target_build.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0016_backend_max_fetch_attempts.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0017_testjob_fetch_attempts.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0018_testjob_dates.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0019_add_fake_backend.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0020_backend_settings_field.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0021_testjob_parent_job.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0022_backend_poll_enabled.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0023_remove_testjob_build.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0024_fix_testjob_environment_validation.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0025_backend_listen_enabled.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0026_job_start_end_time.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0027_add_tuxsuite_implementation_type.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0028_create_testjob_indexes.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0029_create_testjob_results_input.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/0030_testjob_subtasks_count.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/migrations/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/tasks.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/templates/squad/ci/testjob_resubmit.html.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/templates/squad/ci/testjob_resubmit.txt.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/templatetags/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/templatetags/filter_jobs.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/ci/utils.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/compat.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/container_settings.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/admin.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/apps.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/callback.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/comparison.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/data.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/failures.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/history.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/locale/django.pot +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/locale/es_MX/LC_MESSAGES/django.po +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/locale/pl/LC_MESSAGES/django.po +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/locale/pt/LC_MESSAGES/django.po +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/locale/pt_BR/LC_MESSAGES/django.po +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/compute_build_summaries.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/compute_project_statuses.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/fill_test_metadata.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/fix_squadplugin_data.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/import_data.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/import_data.rst +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/migrate_test_runs.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/populate_metric_build_and_environment.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/populate_test_build_and_environment.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/prepdump.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/run_log_parser.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/send-email.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/update_project_statuses.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/management/commands/users.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0001_initial.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0002_auto_20160525_1403.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0003_testrun_log_file.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0004_group_user_groups.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0005_token.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0006_auto_20160826_2242.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0007_testrun_data_processed.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0008_status.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0009_testrun_status_recorded.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0010_testrun_datetime.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0011_testrun_metadata_fields.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0012_build_datetime.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0013_testrun_resubmit_url.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0014_testrun_metadata_file.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0015_attachment.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0016_project_is_public.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0017_slug_validator.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0018_build_name.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0019_build_version.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0020_build_ordering.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0021_global_tokens.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0022_projectstatus.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0023_subscription.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0024_project_build_completion_threshold.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0025_unique_testrun_job_id.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0026_testrun_result_accept_null.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0027_project_notification_strategy.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0028_suite_and_test_name_length.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0029_subscription_email_formats.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0030_remove_project_build_completion_threshold.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0031_environment_expected_test_runs.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0032_testrun_completed.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0033_drop_debversion.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0034_prepare_to_remove_build_name.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0035_remove_build_name.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0036_status_tests_skip.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0037_project_status_test_summary_fields.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0038_populate_project_status_cache.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0039_orderings.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0040_remove_subscription_html.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0041_projectstatus_notified.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0042_set_projectstatus_notified.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0043_project_status_build.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0044_project_html_mail.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0045_adminsubscription.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0046_projectstatus_last_updated.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0047_populate_projectstatus_last_updated.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0048_moderate_notifications.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0049_projectstatus_plural.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0050_projectstatus_finished.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0051_build_status.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0052_recreate_projectstatus_data.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0053_remove_projectstatus_previous.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0054_custom_email_template.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0055_emailtemplate_subject.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0056_project_description.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0057_projectstatus_has_metrics.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0058_populate_projectstatus_has_metrics.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0059_project_important_metadata_keys.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0060_test_log.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0061_project_enabled_plugins_list.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0062_project_allow_empty_enabled_plugin_list.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0063_project_wait_before_notification.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0064_project_notification_timeout.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0065_projectstatus_notified_on_timeout.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0066_environment_description.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0067_accept_blank_suite_name.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0068_suite_version.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0069_suite_metadata.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0070_create_suite_test_and_metric_metadata.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0071_migrate_old_tokens.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0072_group_description.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0073_auto_20180420_1643.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0074_add_indexes.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0075_update_project_enabled_plugin_list.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0076_patch_builds.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0077_knownissue.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0078_cache_test_run_counts.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0079_init_cache_test_run_counts.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0080_auto_20180810_0047.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0081_status_has_metrics.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0082_populate_status_has_metrics.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0083_rename_knownissue_environments.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0084_projectstatus_regressions_fixes.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0085_projectstatus_defaults.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0086_xfail.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0087_test_known_issues.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0088_user_subscriptions.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0089_test_has_known_issues.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0090_populate_test_has_known_issues.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0091_notification_delivery_remove_unique_status.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0092_annotation.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0093_historicalemailtemplate.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0094_populatehistoricalemailtemplate.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0095_project_data_retention_days.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0096_build_keep_data.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0097_build_placeholder.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0098_blank_annotation.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0099_metricthreshold.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0100_metric_is_outlier.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0101_project_project_settings.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0102_projectstatus_null_metric_summary.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0103_populate_project_status.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0104_delayedreport.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0105_delayed_report_error_message.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0106_delayedreport_output_subject.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0107_move_notification_strategy.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0108_add_email_template_validator.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0109_group_member.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0110_move_users_from_django_groups_to_squad_groups.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0111_remove_group_user_groups.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0112_user_namespaces.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0113_group_project_blank_name_and_description.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0114_project_enabled_plugin_list_can_be_blank.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0115_fix_slug_validation.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0116_make_group_membership_unique.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0117_drop_obsolete_token_model.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0118_project_is_archived.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0119_i18n.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0120_buildsummary.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0121_add_password_patchsource.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0122_fix_patchsource_url_and_token.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0123_django_upgrade_missing_migrations.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0124_set_default_expected_test_runs_to_zero.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0125_fix_missing_status_has_metrics_for_testruns.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0126_metricthreshold_environment.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0127_metric_thresholds_migrate_data.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0128_metric_thresholds_remove_proj_col.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0129_projectstatus_nullable_notified_on_timeout.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0130_project_status_baseline_next.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0131_create_squad_auth_group_and_add_users.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0132_attachment_mimetype.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0133_append_project_permissions_to_squad_auth_group.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0134_longer_metric_name.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0135_add_privileged_access_level.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0136_migrate_submitters_to_privileged.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0137_patchsource_token_null.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0138_metric_unit.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0139_nullable_test_name.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0140_increase_gerrit_password_length.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0141_remove_test_name.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0142_add_testrun_file_storage.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0143_attachment_storage.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0144_attachment_data_null.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0145_pluginscratch.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0146_deprecate_testrun_and_attachment_data_fields.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0147_add_build_and_environment_to_test.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0148_remove_legacy_storage_fields.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0149_build_patch_url.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0150_add_new_notification_strategy.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0151_callback.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0152_add_build_patch_notified.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0153_callback_make_response_content_blob.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0154_project_add_force_finishing_builds_field.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0155_add_build_and_environment_to_metric.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0156_nullable_metric_name.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0157_remove_metric_name.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0158_add_metric_comparison_to_projectstatus.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0159_nullable_metricthreshold_value.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0160_add_project_to_metricthreshold.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0161_add_metricthreshold_perm_to_squad_group.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0162_project_add_build_confidence_settings.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0163_hirtoricalemailtemplate_update.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0164_django_update.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0165_buildsummary_uniqueness.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0166_build_is_release.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0167_add_project_datetime.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0168_add_group_settings.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/0169_userpreferences.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/migrations/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/models.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/notification.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/plugins.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/queries.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/statistics.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/tasks/exceptions.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/tasks/notification.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/base.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/diff.html.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/diff.txt.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/failed_test_jobs.html.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/failed_test_jobs.txt.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/moderation.html.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/templates/squad/notification/moderation.txt.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/templatetags/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/templatetags/squad_notification.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/core/utils.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/__main__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/admin.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/apps.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/badges.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/build_settings.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/ci.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/comparison.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/extract.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/forms.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/group_settings.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/locale/django.pot +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/locale/pl/LC_MESSAGES/django.po +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/locale/pt/LC_MESSAGES/django.po +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/locale/pt_BR/LC_MESSAGES/django.po +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/management/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/management/commands/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/management/commands/get_token.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/metrics.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/project_settings.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/queries.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/setup.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/compare.css +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/download +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/download.conf +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/favicon.ico +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/main.css +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/attach_select2.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/build.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/build_compare.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/build_list.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/charts.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/common.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/compare.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/config.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/annotation.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/build_compare.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/build_list_compare.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/build_release.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/cancel.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/charts.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/compare.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/fetch.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/filter.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/metricThreshold.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/project_compare.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/resubmit.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/controllers/testjobs_progress.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/metric.threshold.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/project_compare.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/showHide.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad/table.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/static/squad_sign.svg +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/401.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/404.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/django/rest_framework/api.html +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/django/squad/_user_menu.html +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_builds_table.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_env_suite_data.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_metadata.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_pagination.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_permissions.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_project_list.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_regressions_and_fixes.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_results_table.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_results_transitions_filter.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_subscribe.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_test_results_envbox.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_test_results_suitebox.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_test_results_summary.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_test_results_table.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_test_run_metric.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_test_run_test.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_unfinished_build.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/_user_menu.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/base.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/build-nav.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/build.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/build_callbacks.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/build_metadata.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/build_metrics.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/build_settings.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/builds.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/compare.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/compare_builds.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/compare_projects.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group-nav.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/advanced.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/base.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/delete.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/index.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/members.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/new_group.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/group_settings/new_project.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/index.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/knownissues.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/login.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/metrics.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project-nav.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/_threshold_table.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/advanced.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/base.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/build_confidence.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/delete.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/environments.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/index.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/project_settings/thresholds.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/test_history.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/test_run.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/test_run_suite_metrics.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/test_run_suite_test_details.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/test_run_suite_tests.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/testjob.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/testjobs.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/testjobs_progress.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/tests-details-nav.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/tests.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/user_settings/api_token.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/user_settings/base.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/user_settings/profile.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/user_settings/projects.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/user_settings/subscriptions.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templates/squad/user_settings/user_preferences.jinja2 +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templatetags/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/templatetags/squad.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/tests.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/urls.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/user_settings.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/utils.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/frontend/views.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/http.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/jinja2.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/mail.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/manage.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/plugins/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/plugins/example.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/plugins/gerrit.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/plugins/github.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/plugins/lib/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/plugins/lib/base_log_parser.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/plugins/linux_log_parser.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/plugins/linux_log_parser_build.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/run/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/run/__main__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/run/listener.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/run/scheduler.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/run/worker.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/socialaccount.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/urls.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad/wsgi.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad.egg-info/SOURCES.txt +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad.egg-info/dependency_links.txt +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad.egg-info/top_level.txt +0 -0
- {squad-1.93.2 → squad-1.93.5}/squad.svg +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/benchmarks.csv +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/benchmarks.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/definition.yaml +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/metadata.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/test_ci.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/test_data.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/test_rest.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/test_run.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/tests.csv +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/tests.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/tests.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/tests_log.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/tests_two.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/api/twoline_definition.yaml +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/ci/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/ci/backend/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/ci/backend/example-broken-log.yaml +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/ci/backend/example-lava-log.yaml +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/ci/backend/lava.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/ci/backend/test_real_lava.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/ci/backend/tuxsuite_test_failed_result_sample.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/ci/backend/tuxsuite_test_result_sample.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/ci/test_listen.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_attachment.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_build_summary.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_callback.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_emailtemplate.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_failures.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_group.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_historical_emailtemplate.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_history.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_input/1/default/1/metadata.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_input/1/default/1/metrics.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_input/2/default/2/metadata.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_input/2/default/2/metrics.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_input/2/default/2/screenshot.png +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_input/2/default/2/tests.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_import_data_missing_metadata/1/1/tests.json +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_known_issues.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_metric.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_metric_comparison.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_metric_threshold.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_metrics_data.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_metrics_summary.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_notification.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_notification_delivery.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_patch_source.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_project.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_project_status.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_statistics.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_tasks_notification.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_test.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_test_comparison.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_test_data.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_test_run.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_test_summary.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_update_project_statuses.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_user_namespace.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/core/test_utils.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/frontend/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/frontend/test_basics.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/frontend/test_comparison.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/frontend/test_get_token_command.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/frontend/test_group_settings.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/frontend/test_history.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/frontend/test_template_tags.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/frontend/test_test_job.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/frontend/test_tests.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/frontend/test_utils.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/integration/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/integration/plugins/test_tradefed.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/integration/plugins/tradefed-output-20220608105250.tar.xz +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/javascript.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/karma.conf.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/mock.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/performance.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/__init__.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/different-numbers-in-function-name-oops.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/duplicated-oops.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/internal-error-oops.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kasan.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kcsan_full_log.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kcsan_simple.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kernel_bug_and_invalid_opcode.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kernelexceptiontrace.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kernelexceptiontrace_without_squarebraces.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kernelpanic-multiline.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kernelpanic-single-and-multiline.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/kfence.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/multiple_issues_dmesg.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/oops.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser/rcu_warning.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_arm64_25103120.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_arm_24958120.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_arm_26001178.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_i386_25043392.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_i386_25431539.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_riscv_24688299.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_x86_64_25086964.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/clang_x86_64_26103794.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_arm64_24934206.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_arm_24951924.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_arm_25044425.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_arm_25078650.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_i386_25044475.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_riscv_24715191.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_s390_26103313.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_sh_26103296.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_x86_64_24932905.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/linux_log_parser_build/gcc_x86_64_26103833.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/log_parser_base/kfence-seconds-expected.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/log_parser_base/kfence-seconds.log +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/test_gerrit.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/test_github.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/test_linux_log_parser.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/test_linux_log_parser_build.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/test_log_parser_base.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/plugins/test_plugin.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/settings.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/test_architecture.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/test_code_quality.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/test_cors.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/test_i18n.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/test_mail.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/test_pending_migrations.py +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/unit/test_annotation.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/unit/test_cancel.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/unit/test_charts.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/unit/test_compare.js +0 -0
- {squad-1.93.2 → squad-1.93.5}/test/unit/test_filter.js +0 -0
- {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
|
-
|
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
|
squad-1.93.5/Dockerfile
ADDED
@@ -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 '
|
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
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|
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
|
@@ -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
|
-
|
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
|
-
|
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,
|
74
|
-
metrics are dictionaries, and completed is a
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
result
|
253
|
-
log
|
254
|
-
has_known_issues
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
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.
|
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.
|
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
|
@@ -3,7 +3,7 @@ celery
|
|
3
3
|
cryptography
|
4
4
|
coreapi
|
5
5
|
django_crispy_forms==1.14.0
|
6
|
-
Django
|
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)
|