squad 1.79__tar.gz → 1.80__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {squad-1.79 → squad-1.80}/CHANGELOG.md +9 -0
- {squad-1.79 → squad-1.80}/PKG-INFO +1 -1
- {squad-1.79 → squad-1.80}/squad/ci/backend/tuxsuite.py +15 -0
- {squad-1.79 → squad-1.80}/squad/ci/models.py +11 -10
- {squad-1.79 → squad-1.80}/squad/ci/tasks.py +22 -0
- {squad-1.79 → squad-1.80}/squad/settings.py +1 -0
- squad-1.80/squad/version.py +1 -0
- {squad-1.79 → squad-1.80}/squad.egg-info/PKG-INFO +1 -1
- {squad-1.79 → squad-1.80}/test/ci/backend/test_tuxsuite.py +84 -0
- {squad-1.79 → squad-1.80}/test/ci/test_models.py +2 -2
- squad-1.79/squad/version.py +0 -1
- {squad-1.79 → squad-1.80}/.ackrc +0 -0
- {squad-1.79 → squad-1.80}/.coveragerc +0 -0
- {squad-1.79 → squad-1.80}/.ctags +0 -0
- {squad-1.79 → squad-1.80}/.dockerignore +0 -0
- {squad-1.79 → squad-1.80}/.github/workflows/release.yml +0 -0
- {squad-1.79 → squad-1.80}/.github/workflows/test.yml +0 -0
- {squad-1.79 → squad-1.80}/.gitignore +0 -0
- {squad-1.79 → squad-1.80}/.mailmap +0 -0
- {squad-1.79 → squad-1.80}/.readthedocs.yml +0 -0
- {squad-1.79 → squad-1.80}/.reuse/dep5 +0 -0
- {squad-1.79 → squad-1.80}/COPYING +0 -0
- {squad-1.79 → squad-1.80}/COPYRIGHTS +0 -0
- {squad-1.79 → squad-1.80}/Dockerfile +0 -0
- {squad-1.79 → squad-1.80}/LICENSES/GPL-3.0-or-later.txt +0 -0
- {squad-1.79 → squad-1.80}/LICENSES/MIT.txt +0 -0
- {squad-1.79 → squad-1.80}/LICENSES/OFL-1.1.txt +0 -0
- {squad-1.79 → squad-1.80}/MANIFEST.in +0 -0
- {squad-1.79 → squad-1.80}/Procfile +0 -0
- {squad-1.79 → squad-1.80}/README.rst +0 -0
- {squad-1.79 → squad-1.80}/babel.cfg +0 -0
- {squad-1.79 → squad-1.80}/dev-docker +0 -0
- {squad-1.79 → squad-1.80}/doc/.gitignore +0 -0
- {squad-1.79 → squad-1.80}/doc/Makefile +0 -0
- {squad-1.79 → squad-1.80}/doc/api.rst +0 -0
- {squad-1.79 → squad-1.80}/doc/ci.rst +0 -0
- {squad-1.79 → squad-1.80}/doc/conf.py +0 -0
- {squad-1.79 → squad-1.80}/doc/hacking.rst +0 -0
- {squad-1.79 → squad-1.80}/doc/index.rst +0 -0
- {squad-1.79 → squad-1.80}/doc/install.rst +0 -0
- {squad-1.79 → squad-1.80}/doc/intro.rst +0 -0
- {squad-1.79 → squad-1.80}/doc/lava_usecase.rst +0 -0
- {squad-1.79 → squad-1.80}/doc/plugins.rst +0 -0
- {squad-1.79 → squad-1.80}/doc/quickstart.rst +0 -0
- {squad-1.79 → squad-1.80}/doc/translating.rst +0 -0
- {squad-1.79 → squad-1.80}/doc/tuxsuite_usecase.rst +0 -0
- {squad-1.79 → squad-1.80}/docker-compose.yaml +0 -0
- {squad-1.79 → squad-1.80}/manage.py +0 -0
- {squad-1.79 → squad-1.80}/package-lock.json +0 -0
- {squad-1.79 → squad-1.80}/package.json +0 -0
- {squad-1.79 → squad-1.80}/pytest.ini +0 -0
- {squad-1.79 → squad-1.80}/requirements-dev.txt +0 -0
- {squad-1.79 → squad-1.80}/requirements.txt +0 -0
- {squad-1.79 → squad-1.80}/scripts/build +0 -0
- {squad-1.79 → squad-1.80}/scripts/check-ci +0 -0
- {squad-1.79 → squad-1.80}/scripts/check-ignore +0 -0
- {squad-1.79 → squad-1.80}/scripts/community_connector/main.js +0 -0
- {squad-1.79 → squad-1.80}/scripts/community_connector/manifest.json +0 -0
- {squad-1.79 → squad-1.80}/scripts/dogfood +0 -0
- {squad-1.79 → squad-1.80}/scripts/get-metrics +0 -0
- {squad-1.79 → squad-1.80}/scripts/get-tests +0 -0
- {squad-1.79 → squad-1.80}/scripts/git-build +0 -0
- {squad-1.79 → squad-1.80}/scripts/pytest +0 -0
- {squad-1.79 → squad-1.80}/scripts/rabbitmq-server +0 -0
- {squad-1.79 → squad-1.80}/scripts/release +0 -0
- {squad-1.79 → squad-1.80}/scripts/release-docker +0 -0
- {squad-1.79 → squad-1.80}/scripts/squad-config +0 -0
- {squad-1.79 → squad-1.80}/scripts/test-ci +0 -0
- {squad-1.79 → squad-1.80}/scripts/test-docker +0 -0
- {squad-1.79 → squad-1.80}/scripts/testdata/gen-ci-jobs +0 -0
- {squad-1.79 → squad-1.80}/scripts/testdata/gen-metrics +0 -0
- {squad-1.79 → squad-1.80}/scripts/testdata/gen-test-data +0 -0
- {squad-1.79 → squad-1.80}/scripts/testdata/gen-tests +0 -0
- {squad-1.79 → squad-1.80}/scripts/testdata/setup-dev +0 -0
- {squad-1.79 → squad-1.80}/scripts/testdata/submit-ci-jobs +0 -0
- {squad-1.79 → squad-1.80}/scripts/testdata/submit-test-data +0 -0
- {squad-1.79 → squad-1.80}/scripts/translate +0 -0
- {squad-1.79 → squad-1.80}/scripts/travis-lava +0 -0
- {squad-1.79 → squad-1.80}/scripts/update-translation-files +0 -0
- {squad-1.79 → squad-1.80}/scripts/upload +0 -0
- {squad-1.79 → squad-1.80}/setup.cfg +0 -0
- {squad-1.79 → squad-1.80}/setup.py +0 -0
- {squad-1.79 → squad-1.80}/squad/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/admin.py +0 -0
- {squad-1.79 → squad-1.80}/squad/api/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/api/apps.py +0 -0
- {squad-1.79 → squad-1.80}/squad/api/ci.py +0 -0
- {squad-1.79 → squad-1.80}/squad/api/data.py +0 -0
- {squad-1.79 → squad-1.80}/squad/api/filters.py +0 -0
- {squad-1.79 → squad-1.80}/squad/api/rest.py +0 -0
- {squad-1.79 → squad-1.80}/squad/api/urls.py +0 -0
- {squad-1.79 → squad-1.80}/squad/api/utils.py +0 -0
- {squad-1.79 → squad-1.80}/squad/api/views.py +0 -0
- {squad-1.79 → squad-1.80}/squad/celery.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/admin.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/apps.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/backend/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/backend/fake.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/backend/lava.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/backend/null.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/exceptions.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/management/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/management/commands/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/management/commands/create_tuxsuite_boot_tests.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/management/commands/listen.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/management/commands/testfetch.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0001_initial.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0002_auto_20170406_1252.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0003_backend_name.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0004_testjob_failure.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0005_remove_listener_data.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0006_simplify_backend_loading.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0007_auto_20170517_1736.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0008_testjob_testrun.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0009_slug_pattern.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0010_testjob_can_resubmit.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0011_testjob_resubmitted_count.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0012_testjob_build.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0013_testjob_name.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0014_testjob_target_build.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0015_testjob_populate_target_build.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0016_backend_max_fetch_attempts.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0017_testjob_fetch_attempts.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0018_testjob_dates.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0019_add_fake_backend.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0020_backend_settings_field.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0021_testjob_parent_job.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0022_backend_poll_enabled.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0023_remove_testjob_build.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0024_fix_testjob_environment_validation.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0025_backend_listen_enabled.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0026_job_start_end_time.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0027_add_tuxsuite_implementation_type.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0028_create_testjob_indexes.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/0029_create_testjob_results_input.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/migrations/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/templates/squad/ci/testjob_resubmit.html.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/templates/squad/ci/testjob_resubmit.txt.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/templatetags/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/templatetags/filter_jobs.py +0 -0
- {squad-1.79 → squad-1.80}/squad/ci/utils.py +0 -0
- {squad-1.79 → squad-1.80}/squad/compat.py +0 -0
- {squad-1.79 → squad-1.80}/squad/container_settings.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/admin.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/apps.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/callback.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/comparison.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/data.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/failures.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/history.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/locale/django.pot +0 -0
- {squad-1.79 → squad-1.80}/squad/core/locale/es_MX/LC_MESSAGES/django.po +0 -0
- {squad-1.79 → squad-1.80}/squad/core/locale/pl/LC_MESSAGES/django.po +0 -0
- {squad-1.79 → squad-1.80}/squad/core/locale/pt/LC_MESSAGES/django.po +0 -0
- {squad-1.79 → squad-1.80}/squad/core/locale/pt_BR/LC_MESSAGES/django.po +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/compute_build_summaries.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/compute_project_statuses.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/fill_test_metadata.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/fix_squadplugin_data.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/import_data.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/import_data.rst +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/migrate_test_runs.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/populate_metric_build_and_environment.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/populate_test_build_and_environment.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/prepdump.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/send-email.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/update_project_statuses.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/management/commands/users.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0001_initial.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0002_auto_20160525_1403.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0003_testrun_log_file.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0004_group_user_groups.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0005_token.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0006_auto_20160826_2242.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0007_testrun_data_processed.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0008_status.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0009_testrun_status_recorded.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0010_testrun_datetime.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0011_testrun_metadata_fields.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0012_build_datetime.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0013_testrun_resubmit_url.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0014_testrun_metadata_file.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0015_attachment.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0016_project_is_public.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0017_slug_validator.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0018_build_name.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0019_build_version.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0020_build_ordering.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0021_global_tokens.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0022_projectstatus.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0023_subscription.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0024_project_build_completion_threshold.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0025_unique_testrun_job_id.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0026_testrun_result_accept_null.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0027_project_notification_strategy.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0028_suite_and_test_name_length.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0029_subscription_email_formats.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0030_remove_project_build_completion_threshold.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0031_environment_expected_test_runs.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0032_testrun_completed.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0033_drop_debversion.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0034_prepare_to_remove_build_name.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0035_remove_build_name.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0036_status_tests_skip.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0037_project_status_test_summary_fields.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0038_populate_project_status_cache.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0039_orderings.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0040_remove_subscription_html.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0041_projectstatus_notified.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0042_set_projectstatus_notified.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0043_project_status_build.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0044_project_html_mail.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0045_adminsubscription.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0046_projectstatus_last_updated.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0047_populate_projectstatus_last_updated.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0048_moderate_notifications.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0049_projectstatus_plural.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0050_projectstatus_finished.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0051_build_status.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0052_recreate_projectstatus_data.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0053_remove_projectstatus_previous.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0054_custom_email_template.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0055_emailtemplate_subject.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0056_project_description.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0057_projectstatus_has_metrics.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0058_populate_projectstatus_has_metrics.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0059_project_important_metadata_keys.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0060_test_log.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0061_project_enabled_plugins_list.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0062_project_allow_empty_enabled_plugin_list.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0063_project_wait_before_notification.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0064_project_notification_timeout.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0065_projectstatus_notified_on_timeout.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0066_environment_description.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0067_accept_blank_suite_name.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0068_suite_version.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0069_suite_metadata.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0070_create_suite_test_and_metric_metadata.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0071_migrate_old_tokens.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0072_group_description.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0073_auto_20180420_1643.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0074_add_indexes.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0075_update_project_enabled_plugin_list.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0076_patch_builds.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0077_knownissue.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0078_cache_test_run_counts.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0079_init_cache_test_run_counts.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0080_auto_20180810_0047.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0081_status_has_metrics.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0082_populate_status_has_metrics.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0083_rename_knownissue_environments.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0084_projectstatus_regressions_fixes.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0085_projectstatus_defaults.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0086_xfail.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0087_test_known_issues.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0088_user_subscriptions.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0089_test_has_known_issues.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0090_populate_test_has_known_issues.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0091_notification_delivery_remove_unique_status.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0092_annotation.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0093_historicalemailtemplate.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0094_populatehistoricalemailtemplate.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0095_project_data_retention_days.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0096_build_keep_data.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0097_build_placeholder.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0098_blank_annotation.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0099_metricthreshold.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0100_metric_is_outlier.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0101_project_project_settings.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0102_projectstatus_null_metric_summary.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0103_populate_project_status.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0104_delayedreport.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0105_delayed_report_error_message.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0106_delayedreport_output_subject.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0107_move_notification_strategy.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0108_add_email_template_validator.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0109_group_member.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0110_move_users_from_django_groups_to_squad_groups.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0111_remove_group_user_groups.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0112_user_namespaces.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0113_group_project_blank_name_and_description.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0114_project_enabled_plugin_list_can_be_blank.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0115_fix_slug_validation.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0116_make_group_membership_unique.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0117_drop_obsolete_token_model.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0118_project_is_archived.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0119_i18n.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0120_buildsummary.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0121_add_password_patchsource.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0122_fix_patchsource_url_and_token.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0123_django_upgrade_missing_migrations.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0124_set_default_expected_test_runs_to_zero.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0125_fix_missing_status_has_metrics_for_testruns.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0126_metricthreshold_environment.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0127_metric_thresholds_migrate_data.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0128_metric_thresholds_remove_proj_col.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0129_projectstatus_nullable_notified_on_timeout.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0130_project_status_baseline_next.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0131_create_squad_auth_group_and_add_users.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0132_attachment_mimetype.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0133_append_project_permissions_to_squad_auth_group.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0134_longer_metric_name.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0135_add_privileged_access_level.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0136_migrate_submitters_to_privileged.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0137_patchsource_token_null.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0138_metric_unit.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0139_nullable_test_name.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0140_increase_gerrit_password_length.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0141_remove_test_name.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0142_add_testrun_file_storage.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0143_attachment_storage.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0144_attachment_data_null.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0145_pluginscratch.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0146_deprecate_testrun_and_attachment_data_fields.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0147_add_build_and_environment_to_test.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0148_remove_legacy_storage_fields.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0149_build_patch_url.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0150_add_new_notification_strategy.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0151_callback.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0152_add_build_patch_notified.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0153_callback_make_response_content_blob.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0154_project_add_force_finishing_builds_field.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0155_add_build_and_environment_to_metric.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0156_nullable_metric_name.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0157_remove_metric_name.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0158_add_metric_comparison_to_projectstatus.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0159_nullable_metricthreshold_value.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0160_add_project_to_metricthreshold.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0161_add_metricthreshold_perm_to_squad_group.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0162_project_add_build_confidence_settings.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0163_hirtoricalemailtemplate_update.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0164_django_update.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0165_buildsummary_uniqueness.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0166_build_is_release.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0167_add_project_datetime.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0168_add_group_settings.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/0169_userpreferences.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/migrations/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/models.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/notification.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/plugins.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/queries.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/statistics.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/tasks/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/tasks/exceptions.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/tasks/notification.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/templates/squad/notification/base.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/core/templates/squad/notification/diff.html.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/core/templates/squad/notification/diff.txt.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/core/templates/squad/notification/failed_test_jobs.html.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/core/templates/squad/notification/failed_test_jobs.txt.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/core/templates/squad/notification/moderation.html.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/core/templates/squad/notification/moderation.txt.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/core/templatetags/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/templatetags/squad_notification.py +0 -0
- {squad-1.79 → squad-1.80}/squad/core/utils.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/__main__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/admin.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/apps.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/badges.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/build_settings.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/ci.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/comparison.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/extract.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/forms.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/group_settings.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/locale/django.pot +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/locale/pl/LC_MESSAGES/django.po +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/locale/pt/LC_MESSAGES/django.po +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/locale/pt_BR/LC_MESSAGES/django.po +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/management/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/management/commands/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/management/commands/get_token.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/metrics.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/project_settings.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/queries.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/setup.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/compare.css +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/download +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/download.conf +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/favicon.ico +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/main.css +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/attach_select2.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/build.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/build_compare.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/build_list.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/charts.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/common.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/compare.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/config.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/annotation.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/build_compare.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/build_list_compare.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/build_release.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/cancel.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/charts.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/compare.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/fetch.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/filter.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/metricThreshold.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/project_compare.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/resubmit.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/controllers/testjobs_progress.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/metric.threshold.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/project_compare.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/showHide.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad/table.js +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/static/squad_sign.svg +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/401.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/404.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/django/rest_framework/api.html +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/django/squad/_user_menu.html +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_builds_table.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_env_suite_data.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_metadata.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_pagination.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_permissions.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_project_list.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_regressions_and_fixes.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_results_table.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_results_transitions_filter.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_subscribe.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_test_results_envbox.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_test_results_suitebox.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_test_results_summary.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_test_results_table.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_test_run_metric.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_test_run_test.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_unfinished_build.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/_user_menu.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/base.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/build-nav.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/build.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/build_callbacks.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/build_metadata.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/build_metrics.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/build_settings.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/builds.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/compare.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/compare_builds.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/compare_projects.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/group-nav.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/group.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/group_settings/advanced.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/group_settings/base.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/group_settings/delete.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/group_settings/index.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/group_settings/members.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/group_settings/new_group.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/group_settings/new_project.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/index.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/knownissues.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/login.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/metrics.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/project-nav.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/project.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/project_settings/_threshold_table.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/project_settings/advanced.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/project_settings/base.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/project_settings/build_confidence.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/project_settings/delete.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/project_settings/environments.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/project_settings/index.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/project_settings/thresholds.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/test_history.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/test_run.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/test_run_suite_metrics.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/test_run_suite_test_details.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/test_run_suite_tests.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/testjob.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/testjobs.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/testjobs_progress.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/tests-details-nav.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/tests.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/user_settings/api_token.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/user_settings/base.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/user_settings/profile.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/user_settings/projects.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/user_settings/subscriptions.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templates/squad/user_settings/user_preferences.jinja2 +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templatetags/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/templatetags/squad.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/tests.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/urls.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/user_settings.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/utils.py +0 -0
- {squad-1.79 → squad-1.80}/squad/frontend/views.py +0 -0
- {squad-1.79 → squad-1.80}/squad/http.py +0 -0
- {squad-1.79 → squad-1.80}/squad/jinja2.py +0 -0
- {squad-1.79 → squad-1.80}/squad/mail.py +0 -0
- {squad-1.79 → squad-1.80}/squad/manage.py +0 -0
- {squad-1.79 → squad-1.80}/squad/plugins/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/plugins/example.py +0 -0
- {squad-1.79 → squad-1.80}/squad/plugins/gerrit.py +0 -0
- {squad-1.79 → squad-1.80}/squad/plugins/github.py +0 -0
- {squad-1.79 → squad-1.80}/squad/plugins/linux_log_parser.py +0 -0
- {squad-1.79 → squad-1.80}/squad/run/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/run/__main__.py +0 -0
- {squad-1.79 → squad-1.80}/squad/run/listener.py +0 -0
- {squad-1.79 → squad-1.80}/squad/run/scheduler.py +0 -0
- {squad-1.79 → squad-1.80}/squad/run/worker.py +0 -0
- {squad-1.79 → squad-1.80}/squad/socialaccount.py +0 -0
- {squad-1.79 → squad-1.80}/squad/urls.py +0 -0
- {squad-1.79 → squad-1.80}/squad/wsgi.py +0 -0
- {squad-1.79 → squad-1.80}/squad.egg-info/SOURCES.txt +0 -0
- {squad-1.79 → squad-1.80}/squad.egg-info/dependency_links.txt +0 -0
- {squad-1.79 → squad-1.80}/squad.egg-info/entry_points.txt +0 -0
- {squad-1.79 → squad-1.80}/squad.egg-info/requires.txt +0 -0
- {squad-1.79 → squad-1.80}/squad.egg-info/top_level.txt +0 -0
- {squad-1.79 → squad-1.80}/squad.svg +0 -0
- {squad-1.79 → squad-1.80}/test/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/test/api/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/test/api/benchmarks.csv +0 -0
- {squad-1.79 → squad-1.80}/test/api/benchmarks.json +0 -0
- {squad-1.79 → squad-1.80}/test/api/definition.yaml +0 -0
- {squad-1.79 → squad-1.80}/test/api/metadata.json +0 -0
- {squad-1.79 → squad-1.80}/test/api/test_ci.py +0 -0
- {squad-1.79 → squad-1.80}/test/api/test_data.py +0 -0
- {squad-1.79 → squad-1.80}/test/api/test_rest.py +0 -0
- {squad-1.79 → squad-1.80}/test/api/test_run.log +0 -0
- {squad-1.79 → squad-1.80}/test/api/tests.csv +0 -0
- {squad-1.79 → squad-1.80}/test/api/tests.json +0 -0
- {squad-1.79 → squad-1.80}/test/api/tests.py +0 -0
- {squad-1.79 → squad-1.80}/test/api/tests_log.json +0 -0
- {squad-1.79 → squad-1.80}/test/api/tests_two.json +0 -0
- {squad-1.79 → squad-1.80}/test/api/twoline_definition.yaml +0 -0
- {squad-1.79 → squad-1.80}/test/ci/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/test/ci/backend/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/test/ci/backend/example-broken-log.yaml +0 -0
- {squad-1.79 → squad-1.80}/test/ci/backend/example-lava-log.yaml +0 -0
- {squad-1.79 → squad-1.80}/test/ci/backend/lava.json +0 -0
- {squad-1.79 → squad-1.80}/test/ci/backend/test_fake.py +0 -0
- {squad-1.79 → squad-1.80}/test/ci/backend/test_lava.py +0 -0
- {squad-1.79 → squad-1.80}/test/ci/backend/test_real_lava.py +0 -0
- {squad-1.79 → squad-1.80}/test/ci/backend/tuxsuite_test_failed_result_sample.json +0 -0
- {squad-1.79 → squad-1.80}/test/ci/backend/tuxsuite_test_result_sample.json +0 -0
- {squad-1.79 → squad-1.80}/test/ci/test_listen.py +0 -0
- {squad-1.79 → squad-1.80}/test/ci/test_tasks.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_attachment.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_build.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_build_summary.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_callback.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_emailtemplate.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_failures.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_group.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_historical_emailtemplate.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_history.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_import_data.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_import_data_input/1/default/1/metadata.json +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_import_data_input/1/default/1/metrics.json +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_import_data_input/2/default/2/metadata.json +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_import_data_input/2/default/2/metrics.json +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_import_data_input/2/default/2/screenshot.png +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_import_data_input/2/default/2/tests.json +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_import_data_missing_metadata/1/1/tests.json +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_known_issues.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_metric.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_metric_comparison.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_metric_threshold.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_metrics_data.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_metrics_summary.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_notification.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_notification_delivery.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_patch_source.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_project.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_project_status.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_statistics.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_tasks.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_tasks_notification.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_test.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_test_comparison.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_test_data.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_test_run.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_test_summary.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_update_project_statuses.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_user_namespace.py +0 -0
- {squad-1.79 → squad-1.80}/test/core/test_utils.py +0 -0
- {squad-1.79 → squad-1.80}/test/frontend/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/test/frontend/test_basics.py +0 -0
- {squad-1.79 → squad-1.80}/test/frontend/test_comparison.py +0 -0
- {squad-1.79 → squad-1.80}/test/frontend/test_get_token_command.py +0 -0
- {squad-1.79 → squad-1.80}/test/frontend/test_group_settings.py +0 -0
- {squad-1.79 → squad-1.80}/test/frontend/test_history.py +0 -0
- {squad-1.79 → squad-1.80}/test/frontend/test_template_tags.py +0 -0
- {squad-1.79 → squad-1.80}/test/frontend/test_test_job.py +0 -0
- {squad-1.79 → squad-1.80}/test/frontend/test_tests.py +0 -0
- {squad-1.79 → squad-1.80}/test/frontend/test_utils.py +0 -0
- {squad-1.79 → squad-1.80}/test/integration/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/test/integration/plugins/test_tradefed.py +0 -0
- {squad-1.79 → squad-1.80}/test/integration/plugins/tradefed-output-20220608105250.tar.xz +0 -0
- {squad-1.79 → squad-1.80}/test/integration/test_build_notification_from_ci.py +0 -0
- {squad-1.79 → squad-1.80}/test/javascript.py +0 -0
- {squad-1.79 → squad-1.80}/test/karma.conf.js +0 -0
- {squad-1.79 → squad-1.80}/test/mock.py +0 -0
- {squad-1.79 → squad-1.80}/test/performance.py +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/__init__.py +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/linux_log_parser/kasan.log +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/linux_log_parser/kernel_bug_and_invalid_opcode.log +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/linux_log_parser/kernelexceptiontrace.log +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/linux_log_parser/kernelpanic.log +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/linux_log_parser/kfence.log +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/linux_log_parser/multiple_issues_dmesg.log +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/linux_log_parser/oops.log +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/linux_log_parser/rcu_warning.log +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/test_gerrit.py +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/test_github.py +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/test_linux_log_parser.py +0 -0
- {squad-1.79 → squad-1.80}/test/plugins/test_plugin.py +0 -0
- {squad-1.79 → squad-1.80}/test/settings.py +0 -0
- {squad-1.79 → squad-1.80}/test/test_architecture.py +0 -0
- {squad-1.79 → squad-1.80}/test/test_code_quality.py +0 -0
- {squad-1.79 → squad-1.80}/test/test_cors.py +0 -0
- {squad-1.79 → squad-1.80}/test/test_i18n.py +0 -0
- {squad-1.79 → squad-1.80}/test/test_mail.py +0 -0
- {squad-1.79 → squad-1.80}/test/test_pending_migrations.py +0 -0
- {squad-1.79 → squad-1.80}/test/unit/test_annotation.js +0 -0
- {squad-1.79 → squad-1.80}/test/unit/test_cancel.js +0 -0
- {squad-1.79 → squad-1.80}/test/unit/test_charts.js +0 -0
- {squad-1.79 → squad-1.80}/test/unit/test_compare.js +0 -0
- {squad-1.79 → squad-1.80}/test/unit/test_filter.js +0 -0
- {squad-1.79 → squad-1.80}/test/unit/test_resubmit.js +0 -0
@@ -1,3 +1,12 @@
|
|
1
|
+
# 1.80
|
2
|
+
|
3
|
+
This 1.80 release adds Tuxsuite new metadata when fetching tests.
|
4
|
+
|
5
|
+
The release also changes a bit how SQUAD does postprocessing of testjobs.
|
6
|
+
There was a bug in SQUAD that would cause inconsistencies if SQUAD was deployed
|
7
|
+
in a auto-scalable environment. The bug is resolved by creating a separate
|
8
|
+
queue called "ci_fetch_postprocess" to be consumed by a persistent worker.
|
9
|
+
|
1
10
|
# 1.79
|
2
11
|
|
3
12
|
This 1.79 release expands the Tuxsuite backend regex to accept groups and projects
|
@@ -287,6 +287,17 @@ class Backend(BaseBackend):
|
|
287
287
|
|
288
288
|
return status, completed, metadata, tests, metrics, logs
|
289
289
|
|
290
|
+
def update_metadata_from_file(self, results, metadata):
|
291
|
+
if "download_url" in results:
|
292
|
+
download_url = results["download_url"]
|
293
|
+
try:
|
294
|
+
test_metadata_response = self.fetch_url(download_url + '/' + 'metadata.json')
|
295
|
+
# If fetching the metadata file did not error, decode it as json
|
296
|
+
if test_metadata_response.ok:
|
297
|
+
metadata.update(test_metadata_response.json())
|
298
|
+
except TemporaryFetchIssue:
|
299
|
+
pass
|
300
|
+
|
290
301
|
def parse_test_results(self, test_job, job_url, results, settings):
|
291
302
|
status = 'Complete'
|
292
303
|
completed = True
|
@@ -297,6 +308,10 @@ class Backend(BaseBackend):
|
|
297
308
|
# Pick up some metadata from results
|
298
309
|
metadata_keys = settings.get('TEST_METADATA_KEYS', [])
|
299
310
|
metadata = {k: results.get(k) for k in metadata_keys}
|
311
|
+
|
312
|
+
# Add extra metadata from metadata file if it exists
|
313
|
+
self.update_metadata_from_file(results=results, metadata=metadata)
|
314
|
+
|
300
315
|
metadata['job_url'] = job_url
|
301
316
|
metadata['job_id'] = test_job.job_id
|
302
317
|
|
@@ -143,17 +143,18 @@ class Backend(models.Model):
|
|
143
143
|
except DuplicatedTestJob as exception:
|
144
144
|
logger.error('Failed to fetch test_job(%d): "%s"' % (test_job.id, str(exception)))
|
145
145
|
|
146
|
-
if test_job.testrun:
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
146
|
+
if test_job.testrun and test_job.target.enabled_plugins and any(test_job.target.enabled_plugins):
|
147
|
+
# Avoids cyclic import errors
|
148
|
+
from squad.ci.tasks import postprocess_testjob
|
149
|
+
test_job.save()
|
150
|
+
postprocess_testjob.delay(test_job.id, status)
|
151
|
+
else:
|
152
|
+
# Remove the 'Fetching' job_status only after all work is done
|
153
|
+
test_job.job_status = status
|
154
|
+
test_job.save()
|
154
155
|
|
155
|
-
|
156
|
-
|
156
|
+
if test_job.testrun:
|
157
|
+
UpdateProjectStatus()(test_job.testrun)
|
157
158
|
|
158
159
|
def __postprocess_testjob__(self, test_job):
|
159
160
|
project = test_job.target
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from squad.celery import app as celery
|
2
|
+
from squad.core.tasks import UpdateProjectStatus
|
2
3
|
from squad.ci.models import Backend, TestJob
|
3
4
|
from squad.ci.exceptions import SubmissionIssue
|
4
5
|
from squad.ci.utils import task_id
|
@@ -89,3 +90,24 @@ def send_testjob_resubmit_admin_email(job_id, resubmitted_job_id):
|
|
89
90
|
if test_job.target.html_mail:
|
90
91
|
message.attach_alternative(html_message, "text/html")
|
91
92
|
message.send()
|
93
|
+
|
94
|
+
|
95
|
+
@celery.task
|
96
|
+
def postprocess_testjob(job_id, status):
|
97
|
+
logger.info("postprocessing %s" % job_id)
|
98
|
+
testjob = TestJob.objects.get(pk=job_id)
|
99
|
+
backend = testjob.backend
|
100
|
+
backend.__postprocess_testjob__(testjob)
|
101
|
+
|
102
|
+
# Some plugins, like tradefed, can still trigger sub-tasks creating tests,
|
103
|
+
# ending the current thread, thus triggering build-finished events
|
104
|
+
# we need a way to tell the plugins to wait for all sub-tasks to be finished
|
105
|
+
|
106
|
+
# Remove the 'Fetching' job_status only after eventual plugins
|
107
|
+
# are finished, this garantees extra tests and metadata to
|
108
|
+
# be in SQUAD before the build is considered finished
|
109
|
+
testjob.job_status = status
|
110
|
+
testjob.save()
|
111
|
+
|
112
|
+
if testjob.testrun:
|
113
|
+
UpdateProjectStatus()(testjob.testrun)
|
@@ -384,6 +384,7 @@ CELERY_TASK_ROUTES = {
|
|
384
384
|
'squad.core.tasks.notification.*': {'queue': 'core_notification'},
|
385
385
|
'squad.ci.tasks.poll': {'queue': 'ci_poll'},
|
386
386
|
'squad.ci.tasks.fetch': {'queue': 'ci_fetch'},
|
387
|
+
'squad.ci.tasks.postprocess_testjob': {'queue': 'ci_fetch_postprocess'},
|
387
388
|
'squad.ci.tasks.submit': {'queue': 'ci_quick'},
|
388
389
|
'squad.ci.tasks.send_testjob_resubmit_admin_email': {'queue': 'ci_quick'},
|
389
390
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = '1.80'
|
@@ -138,6 +138,85 @@ class TuxSuiteTest(TestCase):
|
|
138
138
|
expected = urljoin(TUXSUITE_URL, endpoint)
|
139
139
|
self.assertEqual(expected, self.tuxsuite.job_url(testjob))
|
140
140
|
|
141
|
+
def test_parse_test_no_metadata(self):
|
142
|
+
results = {
|
143
|
+
'download_url': 'http://builds.tuxbuild.com/123',
|
144
|
+
}
|
145
|
+
|
146
|
+
metadata = dict()
|
147
|
+
expected = dict()
|
148
|
+
with requests_mock.Mocker() as fake_request:
|
149
|
+
fake_request.get(results['download_url'] + '/' + 'metadata.json', status_code=404)
|
150
|
+
self.tuxsuite.update_metadata_from_file(results=results, metadata=metadata)
|
151
|
+
|
152
|
+
self.assertEqual(expected, metadata)
|
153
|
+
|
154
|
+
def test_parse_test_metadata(self):
|
155
|
+
results = {
|
156
|
+
'download_url': 'http://builds.tuxbuild.com/123',
|
157
|
+
}
|
158
|
+
|
159
|
+
metadata = {
|
160
|
+
"example_metadata": "blah",
|
161
|
+
}
|
162
|
+
|
163
|
+
metadata_file = {
|
164
|
+
"arch": "arm64",
|
165
|
+
"host_arch": "amd64",
|
166
|
+
"qemu_version": "1:8.1.2+ds-1",
|
167
|
+
"artefacts": {
|
168
|
+
"rootfs": {
|
169
|
+
"url": "https://storage.tuxboot.com/debian/bookworm/arm64/rootfs.ext4.xz",
|
170
|
+
"sha256sum": "5e0a9ec562ffea3d9705834677df1cd43ff1ba44228b46734e10a5e990c2c169",
|
171
|
+
},
|
172
|
+
"kernel": {
|
173
|
+
"url": "https://storage.tuxsuite.com/public/linaro/lkft/builds/2ZPQut79EaVwA8ANRJp7xaAVkpP/Image.gz",
|
174
|
+
"sha256sum": "ab5d2ef97d7a7da95032899c3ee9233dcdf75a4091ec03d7ae2d53f05d24e114",
|
175
|
+
},
|
176
|
+
"modules": {
|
177
|
+
"url": "https://storage.tuxsuite.com/public/linaro/lkft/builds/2ZPQut79EaVwA8ANRJp7xaAVkpP/modules.tar.xz",
|
178
|
+
"sha256sum": "1602a287bb54f43e9d4e589c9a773cbd7b9d1bee336501792092a25d76d0f3fc",
|
179
|
+
},
|
180
|
+
"overlay-00": {
|
181
|
+
"url": "https://storage.tuxboot.com/overlays/debian/bookworm/arm64/ltp/20230929/ltp.tar.xz",
|
182
|
+
"sha256sum": "94ff90b59487ceb765b09a53d6642ce0e39deaa92062687355a99de3652130e0",
|
183
|
+
},
|
184
|
+
},
|
185
|
+
"durations": {"tests": {"ltp-controllers": "4250.66", "boot": "62.69"}},
|
186
|
+
}
|
187
|
+
|
188
|
+
expected = {
|
189
|
+
"example_metadata": "blah",
|
190
|
+
"arch": "arm64",
|
191
|
+
"host_arch": "amd64",
|
192
|
+
"qemu_version": "1:8.1.2+ds-1",
|
193
|
+
"artefacts": {
|
194
|
+
"rootfs": {
|
195
|
+
"url": "https://storage.tuxboot.com/debian/bookworm/arm64/rootfs.ext4.xz",
|
196
|
+
"sha256sum": "5e0a9ec562ffea3d9705834677df1cd43ff1ba44228b46734e10a5e990c2c169",
|
197
|
+
},
|
198
|
+
"kernel": {
|
199
|
+
"url": "https://storage.tuxsuite.com/public/linaro/lkft/builds/2ZPQut79EaVwA8ANRJp7xaAVkpP/Image.gz",
|
200
|
+
"sha256sum": "ab5d2ef97d7a7da95032899c3ee9233dcdf75a4091ec03d7ae2d53f05d24e114",
|
201
|
+
},
|
202
|
+
"modules": {
|
203
|
+
"url": "https://storage.tuxsuite.com/public/linaro/lkft/builds/2ZPQut79EaVwA8ANRJp7xaAVkpP/modules.tar.xz",
|
204
|
+
"sha256sum": "1602a287bb54f43e9d4e589c9a773cbd7b9d1bee336501792092a25d76d0f3fc",
|
205
|
+
},
|
206
|
+
"overlay-00": {
|
207
|
+
"url": "https://storage.tuxboot.com/overlays/debian/bookworm/arm64/ltp/20230929/ltp.tar.xz",
|
208
|
+
"sha256sum": "94ff90b59487ceb765b09a53d6642ce0e39deaa92062687355a99de3652130e0",
|
209
|
+
},
|
210
|
+
},
|
211
|
+
"durations": {"tests": {"ltp-controllers": "4250.66", "boot": "62.69"}},
|
212
|
+
}
|
213
|
+
|
214
|
+
with requests_mock.Mocker() as fake_request:
|
215
|
+
fake_request.get(results["download_url"] + '/' + 'metadata.json', json=metadata_file)
|
216
|
+
self.tuxsuite.update_metadata_from_file(results=results, metadata=metadata)
|
217
|
+
|
218
|
+
self.assertEqual(expected, metadata)
|
219
|
+
|
141
220
|
def test_fetch_url(self):
|
142
221
|
expected_logs = 'dummy build log'
|
143
222
|
|
@@ -602,6 +681,10 @@ class TuxSuiteTest(TestCase):
|
|
602
681
|
'ltp-smoke/ping602': 'skip'
|
603
682
|
}
|
604
683
|
|
684
|
+
job_data = {
|
685
|
+
'download_url': 'http://storage.tuxapi.com/mystorage'
|
686
|
+
}
|
687
|
+
|
605
688
|
expected_metrics = {}
|
606
689
|
|
607
690
|
testjob.input = json.dumps(test_results)
|
@@ -609,6 +692,7 @@ class TuxSuiteTest(TestCase):
|
|
609
692
|
fake_request.get(build_url, json=build_results)
|
610
693
|
fake_request.get(urljoin(test_url + '/', 'logs'), text=test_logs)
|
611
694
|
fake_request.get(urljoin(test_url + '/', 'results'), json=test_results_json)
|
695
|
+
fake_request.get(test_url, json=job_data)
|
612
696
|
|
613
697
|
status, completed, metadata, tests, metrics, logs = self.tuxsuite.fetch(testjob)
|
614
698
|
self.assertEqual('Complete', status)
|
@@ -35,7 +35,7 @@ class BackendTestBase(TestCase):
|
|
35
35
|
|
36
36
|
def setUp(self):
|
37
37
|
self.group = core_models.Group.objects.create(slug='mygroup')
|
38
|
-
self.project = self.group.projects.create(slug='myproject')
|
38
|
+
self.project = self.group.projects.create(slug='myproject', enabled_plugins_list=['linux-log-parser'])
|
39
39
|
self.backend = models.Backend.objects.create()
|
40
40
|
self.build = self.project.builds.create(version='1')
|
41
41
|
|
@@ -430,7 +430,7 @@ class BackendFetchTest(BackendTestBase):
|
|
430
430
|
test_job.refresh_from_db()
|
431
431
|
self.assertIsNotNone(test_job.fetched_at)
|
432
432
|
|
433
|
-
@patch.
|
433
|
+
@patch('squad.ci.models.Backend.__postprocess_testjob__')
|
434
434
|
@patch('squad.ci.backend.null.Backend.job_url', return_value="http://example.com/123")
|
435
435
|
@patch('squad.ci.backend.null.Backend.fetch')
|
436
436
|
@patch('squad.ci.models.ReceiveTestRun.__call__')
|
squad-1.79/squad/version.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = '1.79'
|
{squad-1.79 → squad-1.80}/.ackrc
RENAMED
File without changes
|
File without changes
|
{squad-1.79 → squad-1.80}/.ctags
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|