squad 1.94.1__tar.gz → 1.96__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {squad-1.94.1 → squad-1.96}/CHANGELOG.md +9 -0
- {squad-1.94.1/squad.egg-info → squad-1.96}/PKG-INFO +3 -3
- {squad-1.94.1 → squad-1.96}/doc/api.rst +1 -1
- {squad-1.94.1 → squad-1.96}/requirements-dev.txt +0 -1
- {squad-1.94.1 → squad-1.96}/requirements.txt +0 -1
- {squad-1.94.1 → squad-1.96}/scripts/rabbitmq-server +1 -1
- {squad-1.94.1 → squad-1.96}/squad/ci/backend/tuxsuite.py +14 -8
- {squad-1.94.1 → squad-1.96}/squad/ci/management/commands/listen.py +4 -1
- {squad-1.94.1 → squad-1.96}/squad/core/models.py +56 -30
- {squad-1.94.1 → squad-1.96}/squad/jinja2.py +1 -1
- squad-1.96/squad/version.py +1 -0
- {squad-1.94.1 → squad-1.96/squad.egg-info}/PKG-INFO +3 -3
- {squad-1.94.1 → squad-1.96}/squad.egg-info/SOURCES.txt +0 -2
- {squad-1.94.1 → squad-1.96}/squad.egg-info/requires.txt +0 -1
- {squad-1.94.1 → squad-1.96}/test/ci/backend/test_tuxsuite.py +14 -7
- {squad-1.94.1 → squad-1.96}/test/core/test_build.py +4 -1
- squad-1.94.1/squad/version.py +0 -1
- squad-1.94.1/test/integration/plugins/test_tradefed.py +0 -161
- squad-1.94.1/test/integration/plugins/tradefed-output-20220608105250.tar.xz +0 -0
- {squad-1.94.1 → squad-1.96}/.ackrc +0 -0
- {squad-1.94.1 → squad-1.96}/.coveragerc +0 -0
- {squad-1.94.1 → squad-1.96}/.ctags +0 -0
- {squad-1.94.1 → squad-1.96}/.dockerignore +0 -0
- {squad-1.94.1 → squad-1.96}/.gitignore +0 -0
- {squad-1.94.1 → squad-1.96}/.mailmap +0 -0
- {squad-1.94.1 → squad-1.96}/.readthedocs.yml +0 -0
- {squad-1.94.1 → squad-1.96}/.reuse/dep5 +0 -0
- {squad-1.94.1 → squad-1.96}/COPYING +0 -0
- {squad-1.94.1 → squad-1.96}/COPYRIGHTS +0 -0
- {squad-1.94.1 → squad-1.96}/Dockerfile +0 -0
- {squad-1.94.1 → squad-1.96}/LICENSES/GPL-3.0-or-later.txt +0 -0
- {squad-1.94.1 → squad-1.96}/LICENSES/MIT.txt +0 -0
- {squad-1.94.1 → squad-1.96}/LICENSES/OFL-1.1.txt +0 -0
- {squad-1.94.1 → squad-1.96}/MANIFEST.in +0 -0
- {squad-1.94.1 → squad-1.96}/Procfile +0 -0
- {squad-1.94.1 → squad-1.96}/README.rst +0 -0
- {squad-1.94.1 → squad-1.96}/babel.cfg +0 -0
- {squad-1.94.1 → squad-1.96}/dev-docker +0 -0
- {squad-1.94.1 → squad-1.96}/doc/.gitignore +0 -0
- {squad-1.94.1 → squad-1.96}/doc/Makefile +0 -0
- {squad-1.94.1 → squad-1.96}/doc/ci.rst +0 -0
- {squad-1.94.1 → squad-1.96}/doc/conf.py +0 -0
- {squad-1.94.1 → squad-1.96}/doc/hacking.rst +0 -0
- {squad-1.94.1 → squad-1.96}/doc/index.rst +0 -0
- {squad-1.94.1 → squad-1.96}/doc/install.rst +0 -0
- {squad-1.94.1 → squad-1.96}/doc/intro.rst +0 -0
- {squad-1.94.1 → squad-1.96}/doc/lava_usecase.rst +0 -0
- {squad-1.94.1 → squad-1.96}/doc/plugins.rst +0 -0
- {squad-1.94.1 → squad-1.96}/doc/quickstart.rst +0 -0
- {squad-1.94.1 → squad-1.96}/doc/translating.rst +0 -0
- {squad-1.94.1 → squad-1.96}/doc/tuxsuite_usecase.rst +0 -0
- {squad-1.94.1 → squad-1.96}/docker/db-dumped +0 -0
- {squad-1.94.1 → squad-1.96}/docker/db-to-be-restored +0 -0
- {squad-1.94.1 → squad-1.96}/docker/docker-compose.yml +0 -0
- {squad-1.94.1 → squad-1.96}/docker/extra_settings.py +0 -0
- {squad-1.94.1 → squad-1.96}/docker/init-db.sh +0 -0
- {squad-1.94.1 → squad-1.96}/docker/rabbitmq.config +0 -0
- {squad-1.94.1 → squad-1.96}/docker/squad-apache.conf +0 -0
- {squad-1.94.1 → squad-1.96}/docker-compose.yaml +0 -0
- {squad-1.94.1 → squad-1.96}/manage.py +0 -0
- {squad-1.94.1 → squad-1.96}/package-lock.json +0 -0
- {squad-1.94.1 → squad-1.96}/package.json +0 -0
- {squad-1.94.1 → squad-1.96}/pytest.ini +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/build +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/check-ci +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/check-ignore +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/community_connector/main.js +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/community_connector/manifest.json +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/dogfood +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/get-metrics +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/get-tests +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/git-build +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/pytest +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/release +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/release-docker +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/squad-config +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/test-ci +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/test-docker +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/testdata/gen-ci-jobs +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/testdata/gen-metrics +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/testdata/gen-test-data +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/testdata/gen-tests +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/testdata/setup-dev +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/testdata/submit-ci-jobs +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/testdata/submit-test-data +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/translate +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/travis-lava +0 -0
- {squad-1.94.1 → squad-1.96}/scripts/update-translation-files +0 -0
- {squad-1.94.1 → squad-1.96}/setup.cfg +0 -0
- {squad-1.94.1 → squad-1.96}/setup.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/admin.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/api/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/api/apps.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/api/ci.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/api/data.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/api/filters.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/api/prometheus.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/api/rest.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/api/urls.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/api/utils.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/api/views.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/celery.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/admin.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/apps.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/backend/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/backend/fake.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/backend/lava.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/backend/null.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/exceptions.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/management/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/management/commands/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/management/commands/create_tuxsuite_boot_tests.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/management/commands/testfetch.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0001_initial.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0002_auto_20170406_1252.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0003_backend_name.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0004_testjob_failure.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0005_remove_listener_data.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0006_simplify_backend_loading.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0007_auto_20170517_1736.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0008_testjob_testrun.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0009_slug_pattern.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0010_testjob_can_resubmit.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0011_testjob_resubmitted_count.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0012_testjob_build.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0013_testjob_name.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0014_testjob_target_build.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0015_testjob_populate_target_build.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0016_backend_max_fetch_attempts.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0017_testjob_fetch_attempts.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0018_testjob_dates.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0019_add_fake_backend.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0020_backend_settings_field.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0021_testjob_parent_job.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0022_backend_poll_enabled.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0023_remove_testjob_build.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0024_fix_testjob_environment_validation.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0025_backend_listen_enabled.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0026_job_start_end_time.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0027_add_tuxsuite_implementation_type.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0028_create_testjob_indexes.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0029_create_testjob_results_input.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/0030_testjob_subtasks_count.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/migrations/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/models.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/tasks.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/templates/squad/ci/testjob_resubmit.html.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/templates/squad/ci/testjob_resubmit.txt.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/templatetags/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/templatetags/filter_jobs.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/ci/utils.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/compat.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/container_settings.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/admin.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/apps.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/callback.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/comparison.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/data.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/failures.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/history.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/locale/django.pot +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/locale/es_MX/LC_MESSAGES/django.po +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/locale/pl/LC_MESSAGES/django.po +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/locale/pt/LC_MESSAGES/django.po +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/locale/pt_BR/LC_MESSAGES/django.po +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/compute_build_summaries.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/compute_project_statuses.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/fill_test_metadata.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/fix_squadplugin_data.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/import_data.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/import_data.rst +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/migrate_test_runs.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/populate_metric_build_and_environment.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/populate_test_build_and_environment.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/prepdump.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/run_log_parser.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/send-email.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/update_project_statuses.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/management/commands/users.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0001_initial.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0002_auto_20160525_1403.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0003_testrun_log_file.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0004_group_user_groups.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0005_token.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0006_auto_20160826_2242.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0007_testrun_data_processed.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0008_status.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0009_testrun_status_recorded.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0010_testrun_datetime.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0011_testrun_metadata_fields.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0012_build_datetime.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0013_testrun_resubmit_url.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0014_testrun_metadata_file.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0015_attachment.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0016_project_is_public.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0017_slug_validator.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0018_build_name.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0019_build_version.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0020_build_ordering.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0021_global_tokens.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0022_projectstatus.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0023_subscription.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0024_project_build_completion_threshold.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0025_unique_testrun_job_id.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0026_testrun_result_accept_null.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0027_project_notification_strategy.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0028_suite_and_test_name_length.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0029_subscription_email_formats.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0030_remove_project_build_completion_threshold.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0031_environment_expected_test_runs.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0032_testrun_completed.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0033_drop_debversion.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0034_prepare_to_remove_build_name.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0035_remove_build_name.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0036_status_tests_skip.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0037_project_status_test_summary_fields.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0038_populate_project_status_cache.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0039_orderings.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0040_remove_subscription_html.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0041_projectstatus_notified.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0042_set_projectstatus_notified.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0043_project_status_build.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0044_project_html_mail.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0045_adminsubscription.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0046_projectstatus_last_updated.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0047_populate_projectstatus_last_updated.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0048_moderate_notifications.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0049_projectstatus_plural.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0050_projectstatus_finished.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0051_build_status.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0052_recreate_projectstatus_data.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0053_remove_projectstatus_previous.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0054_custom_email_template.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0055_emailtemplate_subject.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0056_project_description.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0057_projectstatus_has_metrics.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0058_populate_projectstatus_has_metrics.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0059_project_important_metadata_keys.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0060_test_log.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0061_project_enabled_plugins_list.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0062_project_allow_empty_enabled_plugin_list.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0063_project_wait_before_notification.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0064_project_notification_timeout.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0065_projectstatus_notified_on_timeout.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0066_environment_description.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0067_accept_blank_suite_name.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0068_suite_version.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0069_suite_metadata.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0070_create_suite_test_and_metric_metadata.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0071_migrate_old_tokens.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0072_group_description.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0073_auto_20180420_1643.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0074_add_indexes.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0075_update_project_enabled_plugin_list.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0076_patch_builds.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0077_knownissue.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0078_cache_test_run_counts.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0079_init_cache_test_run_counts.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0080_auto_20180810_0047.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0081_status_has_metrics.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0082_populate_status_has_metrics.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0083_rename_knownissue_environments.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0084_projectstatus_regressions_fixes.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0085_projectstatus_defaults.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0086_xfail.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0087_test_known_issues.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0088_user_subscriptions.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0089_test_has_known_issues.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0090_populate_test_has_known_issues.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0091_notification_delivery_remove_unique_status.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0092_annotation.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0093_historicalemailtemplate.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0094_populatehistoricalemailtemplate.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0095_project_data_retention_days.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0096_build_keep_data.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0097_build_placeholder.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0098_blank_annotation.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0099_metricthreshold.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0100_metric_is_outlier.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0101_project_project_settings.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0102_projectstatus_null_metric_summary.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0103_populate_project_status.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0104_delayedreport.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0105_delayed_report_error_message.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0106_delayedreport_output_subject.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0107_move_notification_strategy.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0108_add_email_template_validator.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0109_group_member.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0110_move_users_from_django_groups_to_squad_groups.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0111_remove_group_user_groups.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0112_user_namespaces.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0113_group_project_blank_name_and_description.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0114_project_enabled_plugin_list_can_be_blank.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0115_fix_slug_validation.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0116_make_group_membership_unique.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0117_drop_obsolete_token_model.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0118_project_is_archived.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0119_i18n.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0120_buildsummary.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0121_add_password_patchsource.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0122_fix_patchsource_url_and_token.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0123_django_upgrade_missing_migrations.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0124_set_default_expected_test_runs_to_zero.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0125_fix_missing_status_has_metrics_for_testruns.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0126_metricthreshold_environment.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0127_metric_thresholds_migrate_data.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0128_metric_thresholds_remove_proj_col.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0129_projectstatus_nullable_notified_on_timeout.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0130_project_status_baseline_next.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0131_create_squad_auth_group_and_add_users.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0132_attachment_mimetype.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0133_append_project_permissions_to_squad_auth_group.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0134_longer_metric_name.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0135_add_privileged_access_level.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0136_migrate_submitters_to_privileged.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0137_patchsource_token_null.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0138_metric_unit.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0139_nullable_test_name.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0140_increase_gerrit_password_length.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0141_remove_test_name.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0142_add_testrun_file_storage.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0143_attachment_storage.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0144_attachment_data_null.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0145_pluginscratch.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0146_deprecate_testrun_and_attachment_data_fields.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0147_add_build_and_environment_to_test.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0148_remove_legacy_storage_fields.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0149_build_patch_url.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0150_add_new_notification_strategy.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0151_callback.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0152_add_build_patch_notified.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0153_callback_make_response_content_blob.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0154_project_add_force_finishing_builds_field.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0155_add_build_and_environment_to_metric.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0156_nullable_metric_name.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0157_remove_metric_name.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0158_add_metric_comparison_to_projectstatus.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0159_nullable_metricthreshold_value.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0160_add_project_to_metricthreshold.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0161_add_metricthreshold_perm_to_squad_group.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0162_project_add_build_confidence_settings.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0163_hirtoricalemailtemplate_update.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0164_django_update.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0165_buildsummary_uniqueness.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0166_build_is_release.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0167_add_project_datetime.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0168_add_group_settings.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/0169_userpreferences.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/migrations/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/notification.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/plugins.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/queries.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/statistics.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/tasks/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/tasks/exceptions.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/tasks/notification.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/templates/squad/notification/base.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/templates/squad/notification/diff.html.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/templates/squad/notification/diff.txt.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/templates/squad/notification/failed_test_jobs.html.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/templates/squad/notification/failed_test_jobs.txt.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/templates/squad/notification/moderation.html.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/templates/squad/notification/moderation.txt.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/templatetags/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/templatetags/squad_notification.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/core/utils.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/__main__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/admin.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/apps.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/badges.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/build_settings.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/ci.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/comparison.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/extract.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/forms.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/group_settings.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/locale/django.pot +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/locale/pl/LC_MESSAGES/django.po +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/locale/pt/LC_MESSAGES/django.po +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/locale/pt_BR/LC_MESSAGES/django.po +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/management/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/management/commands/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/management/commands/get_token.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/metrics.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/project_settings.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/queries.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/setup.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/compare.css +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/download +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/download.conf +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/favicon.ico +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/main.css +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/attach_select2.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/build.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/build_compare.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/build_list.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/charts.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/common.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/compare.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/config.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/annotation.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/build_compare.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/build_list_compare.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/build_release.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/cancel.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/charts.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/compare.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/fetch.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/filter.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/metricThreshold.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/project_compare.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/resubmit.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/controllers/testjobs_progress.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/metric.threshold.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/project_compare.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/showHide.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad/table.js +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/static/squad_sign.svg +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/401.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/404.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/django/rest_framework/api.html +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/django/squad/_user_menu.html +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_builds_table.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_env_suite_data.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_metadata.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_pagination.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_permissions.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_project_list.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_regressions_and_fixes.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_results_table.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_results_transitions_filter.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_subscribe.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_test_results_envbox.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_test_results_suitebox.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_test_results_summary.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_test_results_table.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_test_run_metric.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_test_run_test.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_unfinished_build.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/_user_menu.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/base.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/build-nav.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/build.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/build_callbacks.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/build_metadata.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/build_metrics.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/build_settings.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/builds.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/compare.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/compare_builds.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/compare_projects.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/group-nav.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/group.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/group_settings/advanced.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/group_settings/base.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/group_settings/delete.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/group_settings/index.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/group_settings/members.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/group_settings/new_group.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/group_settings/new_project.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/index.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/knownissues.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/login.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/metrics.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/project-nav.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/project.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/project_settings/_threshold_table.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/project_settings/advanced.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/project_settings/base.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/project_settings/build_confidence.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/project_settings/delete.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/project_settings/environments.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/project_settings/index.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/project_settings/thresholds.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/test_history.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/test_run.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/test_run_suite_metrics.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/test_run_suite_test_details.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/test_run_suite_tests.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/testjob.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/testjobs.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/testjobs_progress.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/tests-details-nav.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/tests.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/user_settings/api_token.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/user_settings/base.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/user_settings/profile.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/user_settings/projects.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/user_settings/subscriptions.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templates/squad/user_settings/user_preferences.jinja2 +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templatetags/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/templatetags/squad.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/tests.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/urls.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/user_settings.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/utils.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/frontend/views.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/http.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/mail.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/manage.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/plugins/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/plugins/example.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/plugins/gerrit.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/plugins/github.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/plugins/lib/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/plugins/lib/base_log_parser.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/plugins/linux_log_parser.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/plugins/linux_log_parser_build.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/run/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/run/__main__.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/run/listener.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/run/scheduler.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/run/worker.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/settings.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/socialaccount.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/urls.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad/wsgi.py +0 -0
- {squad-1.94.1 → squad-1.96}/squad.egg-info/dependency_links.txt +0 -0
- {squad-1.94.1 → squad-1.96}/squad.egg-info/entry_points.txt +0 -0
- {squad-1.94.1 → squad-1.96}/squad.egg-info/top_level.txt +0 -0
- {squad-1.94.1 → squad-1.96}/squad.svg +0 -0
- {squad-1.94.1 → squad-1.96}/test/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/benchmarks.csv +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/benchmarks.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/definition.yaml +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/metadata.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/test_ci.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/test_data.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/test_rest.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/test_run.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/tests.csv +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/tests.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/tests.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/tests_log.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/tests_two.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/api/twoline_definition.yaml +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/backend/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/backend/example-broken-log.yaml +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/backend/example-lava-log.yaml +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/backend/lava.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/backend/test_fake.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/backend/test_lava.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/backend/test_real_lava.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/backend/tuxsuite_test_failed_result_sample.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/backend/tuxsuite_test_result_sample.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/test_listen.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/test_models.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/ci/test_tasks.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_attachment.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_build_summary.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_callback.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_emailtemplate.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_failures.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_group.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_historical_emailtemplate.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_history.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_import_data.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_import_data_input/1/default/1/metadata.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_import_data_input/1/default/1/metrics.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_import_data_input/2/default/2/metadata.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_import_data_input/2/default/2/metrics.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_import_data_input/2/default/2/screenshot.png +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_import_data_input/2/default/2/tests.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_import_data_missing_metadata/1/1/tests.json +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_known_issues.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_metric.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_metric_comparison.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_metric_threshold.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_metrics_data.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_metrics_summary.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_notification.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_notification_delivery.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_patch_source.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_project.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_project_status.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_statistics.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_tasks.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_tasks_notification.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_test.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_test_comparison.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_test_data.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_test_run.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_test_summary.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_update_project_statuses.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_user_namespace.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/core/test_utils.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/frontend/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/frontend/test_basics.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/frontend/test_comparison.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/frontend/test_get_token_command.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/frontend/test_group_settings.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/frontend/test_history.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/frontend/test_template_tags.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/frontend/test_test_job.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/frontend/test_tests.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/frontend/test_utils.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/integration/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/integration/test_build_notification_from_ci.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/javascript.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/karma.conf.js +0 -0
- {squad-1.94.1 → squad-1.96}/test/mock.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/performance.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/__init__.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/different-numbers-in-function-name-oops.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/duplicated-oops.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/internal-error-oops.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/kasan.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/kcsan_full_log.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/kcsan_simple.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/kernel_bug_and_invalid_opcode.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/kernelexceptiontrace.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/kernelexceptiontrace_without_squarebraces.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/kernelpanic-multiline.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/kernelpanic-single-and-multiline.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/kfence.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/multiple_issues_dmesg.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/oops.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser/rcu_warning.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/clang_arm64_25103120.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/clang_arm64_2957859.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/clang_arm_24958120.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/clang_arm_26001178.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/clang_i386_25043392.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/clang_i386_25431539.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/clang_riscv_24688299.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/clang_x86_64_25086964.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/clang_x86_64_26103794.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/gcc_arm64_24934206.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/gcc_arm_24951924.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/gcc_arm_25044425.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/gcc_arm_25078650.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/gcc_i386_25044475.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/gcc_riscv_24715191.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/gcc_s390_26103313.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/gcc_sh_26103296.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/gcc_x86_64_24932905.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/gcc_x86_64_26103833.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/gcc_x86_64_26788931.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/linux_log_parser_build/gcc_x86_64_26861563.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/log_parser_base/kfence-seconds-expected.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/log_parser_base/kfence-seconds.log +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/test_gerrit.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/test_github.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/test_linux_log_parser.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/test_linux_log_parser_build.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/test_log_parser_base.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/plugins/test_plugin.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/settings.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/test_architecture.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/test_code_quality.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/test_cors.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/test_i18n.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/test_mail.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/test_pending_migrations.py +0 -0
- {squad-1.94.1 → squad-1.96}/test/unit/test_annotation.js +0 -0
- {squad-1.94.1 → squad-1.96}/test/unit/test_cancel.js +0 -0
- {squad-1.94.1 → squad-1.96}/test/unit/test_charts.js +0 -0
- {squad-1.94.1 → squad-1.96}/test/unit/test_compare.js +0 -0
- {squad-1.94.1 → squad-1.96}/test/unit/test_filter.js +0 -0
- {squad-1.94.1 → squad-1.96}/test/unit/test_resubmit.js +0 -0
@@ -1,3 +1,12 @@
|
|
1
|
+
# 1.96
|
2
|
+
|
3
|
+
This release takes in LAVA logs in Tuxsuite.
|
4
|
+
The release also fixes a long-running query by reusing pre-calculated suite statuses.
|
5
|
+
|
6
|
+
# 1.95
|
7
|
+
|
8
|
+
This release collects log snippets for Tuxsuite backend.
|
9
|
+
|
1
10
|
# 1.94.1
|
2
11
|
|
3
12
|
This release adds a minor performance improvement fix.
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: squad
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.96
|
4
4
|
Summary: Software Quality Dashboard
|
5
5
|
Home-page: https://gitlab.com/Linaro/squad/squad
|
6
6
|
Author: Antonio Terceiro
|
@@ -11,7 +11,6 @@ License-File: COPYING
|
|
11
11
|
Requires-Dist: aiohttp
|
12
12
|
Requires-Dist: celery
|
13
13
|
Requires-Dist: cryptography
|
14
|
-
Requires-Dist: coreapi
|
15
14
|
Requires-Dist: django_crispy_forms==1.14.0
|
16
15
|
Requires-Dist: Django<5,>=3
|
17
16
|
Requires-Dist: django-allauth
|
@@ -48,6 +47,7 @@ Dynamic: author-email
|
|
48
47
|
Dynamic: description
|
49
48
|
Dynamic: home-page
|
50
49
|
Dynamic: license
|
50
|
+
Dynamic: license-file
|
51
51
|
Dynamic: platform
|
52
52
|
Dynamic: provides-extra
|
53
53
|
Dynamic: requires-dist
|
@@ -419,7 +419,7 @@ built and it's available at /api/schema URL. Example usage with coreapi-cli:
|
|
419
419
|
More details about coreapi can be found on coreapi website and DRF website:
|
420
420
|
|
421
421
|
* http://www.coreapi.org/
|
422
|
-
* https://www.django-rest-framework.org/
|
422
|
+
* https://www.django-rest-framework.org/community/mozilla-grant/#client-libraries
|
423
423
|
|
424
424
|
SQUAD-Client
|
425
425
|
-------------------------
|
@@ -4,7 +4,7 @@ set -eu
|
|
4
4
|
|
5
5
|
# Starts a local rabbitmq server if there is none running already
|
6
6
|
|
7
|
-
if pgrep -fa
|
7
|
+
if pgrep -fa erlang.*rabbitmq >/dev/null; then
|
8
8
|
echo "rabbitmq-server already running, no need for a new one"
|
9
9
|
exec sleep infinity
|
10
10
|
fi
|
@@ -394,6 +394,7 @@ class Backend(BaseBackend):
|
|
394
394
|
|
395
395
|
# Retrieve TuxRun log
|
396
396
|
logs = self.fetch_url(job_url + '/', 'logs?format=txt').text
|
397
|
+
log_lines = logs.splitlines()
|
397
398
|
|
398
399
|
attachment_list = ["reproducer", "tux_plan.yaml"]
|
399
400
|
attachments = {}
|
@@ -407,23 +408,28 @@ class Backend(BaseBackend):
|
|
407
408
|
|
408
409
|
# Create a boot test
|
409
410
|
boot_test_name = 'boot/' + (metadata.get('build_name') or 'boot')
|
410
|
-
tests[boot_test_name] = results['results']['boot']
|
411
|
+
tests[boot_test_name] = {'result': results['results']['boot']}
|
411
412
|
|
412
413
|
# Really fetch test results
|
413
414
|
tests_results = self.fetch_url(job_url + '/', 'results').json()
|
414
415
|
if tests_results.get('error', None) is None:
|
415
416
|
for suite, suite_tests in tests_results.items():
|
416
|
-
if suite == 'lava':
|
417
|
-
continue
|
418
|
-
|
419
417
|
suite_name = re.sub(r'^[0-9]+_', '', suite)
|
420
418
|
for name, test_data in suite_tests.items():
|
421
419
|
test_name = f'{suite_name}/{name}'
|
422
420
|
result = test_data['result']
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
421
|
+
if "starttc" in test_data:
|
422
|
+
starttc = test_data["starttc"] - 1 # LAVA data counts from 1, we count from 0
|
423
|
+
if "endtc" in test_data:
|
424
|
+
# no -1 as the second index of the slice needs to be
|
425
|
+
# greater than the first to get at least one item.
|
426
|
+
endtc = test_data["endtc"]
|
427
|
+
else:
|
428
|
+
endtc = starttc + 2
|
429
|
+
log_snippet = "\n".join(log_lines[starttc:endtc])
|
430
|
+
else:
|
431
|
+
log_snippet = None
|
432
|
+
tests[test_name] = {"result": result, "log": log_snippet}
|
427
433
|
|
428
434
|
return status, completed, metadata, tests, metrics, logs, attachments
|
429
435
|
|
@@ -138,6 +138,9 @@ class Command(BaseCommand):
|
|
138
138
|
backend_name = options.get("BACKEND")
|
139
139
|
if backend_name:
|
140
140
|
backend = Backend.objects.get(name=backend_name)
|
141
|
-
|
141
|
+
try:
|
142
|
+
Listener(backend).run()
|
143
|
+
except NotImplementedError:
|
144
|
+
logger.info('Backend %s: does not implement a listener' % backend.name)
|
142
145
|
else:
|
143
146
|
ListenerManager().run()
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import json
|
2
2
|
import yaml
|
3
3
|
import logging
|
4
|
-
from collections import
|
4
|
+
from collections import Counter, defaultdict
|
5
5
|
from hashlib import sha1
|
6
6
|
from itertools import groupby
|
7
7
|
import re
|
@@ -676,36 +676,62 @@ class Build(models.Model):
|
|
676
676
|
|
677
677
|
@property
|
678
678
|
def test_suites_by_environment(self):
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
679
|
+
"""
|
680
|
+
Return a sorted dictionary like
|
681
|
+
{
|
682
|
+
"env1": [
|
683
|
+
("suite1", {"fail": 0, "pass": 0, "skip": 0, "xfail": 0}),
|
684
|
+
("suite2", {"fail": 0, "pass": 0, "skip": 0, "xfail": 0}),
|
685
|
+
...
|
686
|
+
],
|
687
|
+
"env2": [
|
688
|
+
("suite1", {"fail": 0, "pass": 0, "skip": 0, "xfail": 0}),
|
689
|
+
("suite2", {"fail": 0, "pass": 0, "skip": 0, "xfail": 0}),
|
690
|
+
...
|
691
|
+
],
|
692
|
+
...
|
693
|
+
}
|
694
|
+
|
695
|
+
Sorted by env slug, and then by suite slug
|
696
|
+
"""
|
697
|
+
|
698
|
+
tmp_results = defaultdict(
|
699
|
+
lambda: defaultdict(
|
700
|
+
lambda: {
|
701
|
+
"fail": 0,
|
702
|
+
"pass": 0,
|
703
|
+
"skip": 0,
|
704
|
+
"xfail": 0,
|
705
|
+
}
|
706
|
+
)
|
683
707
|
)
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
708
|
+
|
709
|
+
statuses = Status.objects.filter(
|
710
|
+
test_run__build=self,
|
711
|
+
suite__isnull=False
|
712
|
+
).prefetch_related(
|
713
|
+
'test_run__environment',
|
714
|
+
'suite',
|
715
|
+
).order_by(
|
716
|
+
'test_run__environment__slug',
|
717
|
+
'suite__slug',
|
718
|
+
)
|
719
|
+
|
720
|
+
for status in statuses:
|
721
|
+
env = status.test_run.environment
|
722
|
+
suite = status.suite
|
723
|
+
|
724
|
+
tmp_results[env][suite]['fail'] += status.tests_fail
|
725
|
+
tmp_results[env][suite]['pass'] += status.tests_pass
|
726
|
+
tmp_results[env][suite]['skip'] += status.tests_skip
|
727
|
+
tmp_results[env][suite]['xfail'] += status.tests_xfail
|
728
|
+
|
729
|
+
results = defaultdict(list)
|
730
|
+
for env, suites in tmp_results.items():
|
731
|
+
for suite, status in suites.items():
|
732
|
+
results[env].append((suite, status))
|
733
|
+
|
734
|
+
return results
|
709
735
|
|
710
736
|
def test_jobs_summary(self, per_environment=False):
|
711
737
|
testjobs = self.test_jobs.only('environment', 'job_status', 'target_build').order_by('environment')
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = '1.96'
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: squad
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.96
|
4
4
|
Summary: Software Quality Dashboard
|
5
5
|
Home-page: https://gitlab.com/Linaro/squad/squad
|
6
6
|
Author: Antonio Terceiro
|
@@ -11,7 +11,6 @@ License-File: COPYING
|
|
11
11
|
Requires-Dist: aiohttp
|
12
12
|
Requires-Dist: celery
|
13
13
|
Requires-Dist: cryptography
|
14
|
-
Requires-Dist: coreapi
|
15
14
|
Requires-Dist: django_crispy_forms==1.14.0
|
16
15
|
Requires-Dist: Django<5,>=3
|
17
16
|
Requires-Dist: django-allauth
|
@@ -48,6 +47,7 @@ Dynamic: author-email
|
|
48
47
|
Dynamic: description
|
49
48
|
Dynamic: home-page
|
50
49
|
Dynamic: license
|
50
|
+
Dynamic: license-file
|
51
51
|
Dynamic: platform
|
52
52
|
Dynamic: provides-extra
|
53
53
|
Dynamic: requires-dist
|
@@ -612,8 +612,6 @@ test/frontend/test_tests.py
|
|
612
612
|
test/frontend/test_utils.py
|
613
613
|
test/integration/__init__.py
|
614
614
|
test/integration/test_build_notification_from_ci.py
|
615
|
-
test/integration/plugins/test_tradefed.py
|
616
|
-
test/integration/plugins/tradefed-output-20220608105250.tar.xz
|
617
615
|
test/plugins/__init__.py
|
618
616
|
test/plugins/test_gerrit.py
|
619
617
|
test/plugins/test_github.py
|
@@ -900,7 +900,7 @@ class TuxSuiteTest(TestCase):
|
|
900
900
|
results = self.tuxsuite.fetch(testjob)
|
901
901
|
self.assertEqual(None, results)
|
902
902
|
|
903
|
-
test_logs =
|
903
|
+
test_logs = "\n".join([f"line {i}" for i in range(1, 1000)])
|
904
904
|
test_results = {
|
905
905
|
'project': 'tuxgroup/tuxproject',
|
906
906
|
'device': 'qemu-armv7',
|
@@ -979,12 +979,14 @@ class TuxSuiteTest(TestCase):
|
|
979
979
|
fake_request.get(urljoin(test_url + '/', 'tux_plan.yaml'), text='tux_plan.yaml contents')
|
980
980
|
|
981
981
|
status, completed, metadata, tests, metrics, logs, attachments = self.tuxsuite.fetch(testjob)
|
982
|
+
tests_results = {k: v["result"] for k, v in tests.items() if not k.startswith("lava/")}
|
982
983
|
self.assertEqual('Complete', status)
|
983
984
|
self.assertTrue(completed)
|
984
985
|
self.assertEqual(sorted(expected_metadata.items()), sorted(metadata.items()))
|
985
|
-
self.assertEqual(sorted(expected_tests.items()), sorted(
|
986
|
+
self.assertEqual(sorted(expected_tests.items()), sorted(tests_results.items()))
|
986
987
|
self.assertEqual(sorted(expected_metrics.items()), sorted(metrics.items()))
|
987
988
|
self.assertEqual(test_logs, logs)
|
989
|
+
self.assertEqual("line 958", tests["ltp-smoke/access01"]["log"])
|
988
990
|
|
989
991
|
self.assertEqual('ltp-smoke', testjob.name)
|
990
992
|
|
@@ -1080,10 +1082,11 @@ class TuxSuiteTest(TestCase):
|
|
1080
1082
|
fake_request.get(urljoin(test_url + '/', 'tux_plan.yaml'), text='tux_plan.yaml contents')
|
1081
1083
|
|
1082
1084
|
status, completed, metadata, tests, metrics, logs, attachments = self.tuxsuite.fetch(testjob)
|
1085
|
+
tests_results = {k: v["result"] for k, v in tests.items() if not k.startswith("lava/")}
|
1083
1086
|
self.assertEqual('Complete', status)
|
1084
1087
|
self.assertTrue(completed)
|
1085
1088
|
self.assertEqual(sorted(expected_metadata.items()), sorted(metadata.items()))
|
1086
|
-
self.assertEqual(sorted(expected_tests.items()), sorted(
|
1089
|
+
self.assertEqual(sorted(expected_tests.items()), sorted(tests_results.items()))
|
1087
1090
|
self.assertEqual(sorted(expected_metrics.items()), sorted(metrics.items()))
|
1088
1091
|
self.assertEqual(test_logs, logs)
|
1089
1092
|
self.assertEqual('new-env-name', testjob.environment)
|
@@ -1165,10 +1168,11 @@ class TuxSuiteTest(TestCase):
|
|
1165
1168
|
fake_request.get(urljoin(test_url + '/', 'tux_plan.yaml'), text='tux_plan.yaml contents')
|
1166
1169
|
|
1167
1170
|
status, completed, metadata, tests, metrics, logs, attachments = self.tuxsuite.fetch(testjob)
|
1171
|
+
tests_results = {k: v["result"] for k, v in tests.items() if not k.startswith("lava/")}
|
1168
1172
|
self.assertEqual('Complete', status)
|
1169
1173
|
self.assertTrue(completed)
|
1170
1174
|
self.assertEqual(sorted(expected_metadata.items()), sorted(metadata.items()))
|
1171
|
-
self.assertEqual(sorted(expected_tests.items()), sorted(
|
1175
|
+
self.assertEqual(sorted(expected_tests.items()), sorted(tests_results.items()))
|
1172
1176
|
self.assertEqual(sorted(expected_metrics.items()), sorted(metrics.items()))
|
1173
1177
|
self.assertEqual(test_logs, logs)
|
1174
1178
|
|
@@ -1264,10 +1268,11 @@ class TuxSuiteTest(TestCase):
|
|
1264
1268
|
fake_request.get(test_url, json=job_data)
|
1265
1269
|
|
1266
1270
|
status, completed, metadata, tests, metrics, logs, attachments = self.tuxsuite.fetch(testjob)
|
1271
|
+
tests_results = {k: v["result"] for k, v in tests.items() if not k.startswith("lava/")}
|
1267
1272
|
self.assertEqual('Complete', status)
|
1268
1273
|
self.assertTrue(completed)
|
1269
1274
|
self.assertEqual(sorted(expected_metadata.items()), sorted(metadata.items()))
|
1270
|
-
self.assertEqual(sorted(expected_tests.items()), sorted(
|
1275
|
+
self.assertEqual(sorted(expected_tests.items()), sorted(tests_results.items()))
|
1271
1276
|
self.assertEqual(sorted(expected_metrics.items()), sorted(metrics.items()))
|
1272
1277
|
self.assertEqual(test_logs, logs)
|
1273
1278
|
|
@@ -1365,10 +1370,11 @@ class TuxSuiteTest(TestCase):
|
|
1365
1370
|
fake_request.get(urljoin(test_url + '/', 'tux_plan.yaml'), text='tux_plan.yaml contents')
|
1366
1371
|
|
1367
1372
|
status, completed, metadata, tests, metrics, logs, attachments = self.tuxsuite.fetch(testjob)
|
1373
|
+
tests_results = {k: v["result"] for k, v in tests.items() if not k.startswith("lava/")}
|
1368
1374
|
self.assertEqual('Complete', status)
|
1369
1375
|
self.assertTrue(completed)
|
1370
1376
|
self.assertEqual(sorted(expected_metadata.items()), sorted(metadata.items()))
|
1371
|
-
self.assertEqual(sorted(expected_tests.items()), sorted(
|
1377
|
+
self.assertEqual(sorted(expected_tests.items()), sorted(tests_results.items()))
|
1372
1378
|
self.assertEqual(sorted(expected_metrics.items()), sorted(metrics.items()))
|
1373
1379
|
self.assertEqual(test_logs, logs)
|
1374
1380
|
|
@@ -1645,10 +1651,11 @@ class TuxSuiteTest(TestCase):
|
|
1645
1651
|
fake_request.get(urljoin(test_url + '/', 'tux_plan.yaml'), text='tux_plan.yaml contents')
|
1646
1652
|
|
1647
1653
|
status, completed, metadata, tests, metrics, logs, attachments = self.tuxsuite.fetch(testjob)
|
1654
|
+
tests_results = {k: v["result"] for k, v in tests.items() if not k.startswith("lava/")}
|
1648
1655
|
self.assertEqual('Complete', status)
|
1649
1656
|
self.assertTrue(completed)
|
1650
1657
|
self.assertEqual(sorted(expected_metadata.items()), sorted(metadata.items()))
|
1651
|
-
self.assertEqual(sorted(expected_tests.items()), sorted(
|
1658
|
+
self.assertEqual(sorted(expected_tests.items()), sorted(tests_results.items()))
|
1652
1659
|
self.assertEqual(sorted(expected_metrics.items()), sorted(metrics.items()))
|
1653
1660
|
self.assertEqual(test_logs, logs)
|
1654
1661
|
|
@@ -3,8 +3,8 @@ from django.test import TestCase
|
|
3
3
|
from django.utils import timezone
|
4
4
|
from unittest.mock import patch
|
5
5
|
|
6
|
-
|
7
6
|
from squad.core.models import Group, Project, Build, KnownIssue, SuiteMetadata
|
7
|
+
from squad.core.tasks import RecordTestRunStatus
|
8
8
|
from squad.ci.models import TestJob, Backend
|
9
9
|
|
10
10
|
|
@@ -227,7 +227,10 @@ class BuildTest(TestCase):
|
|
227
227
|
testrun1.tests.create(build=testrun1.build, environment=testrun1.environment, suite=foo, metadata=foo_test1_metadata, result=True)
|
228
228
|
testrun1.tests.create(build=testrun1.build, environment=testrun1.environment, suite=foo, metadata=foo_pla_metadata, result=True)
|
229
229
|
testrun1.tests.create(build=testrun1.build, environment=testrun1.environment, suite=bar, metadata=bar_test1_metadata, result=False)
|
230
|
+
RecordTestRunStatus()(testrun1)
|
231
|
+
|
230
232
|
testrun2.tests.create(build=testrun2.build, environment=testrun2.environment, suite=foo, metadata=foo_test1_metadata, result=True)
|
233
|
+
RecordTestRunStatus()(testrun2)
|
231
234
|
|
232
235
|
# make sure 'xfail' is covered by test
|
233
236
|
issue = KnownIssue.objects.create(title='pla is broken', test_name='qux')
|
squad-1.94.1/squad/version.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = '1.94.1'
|
@@ -1,161 +0,0 @@
|
|
1
|
-
from django.test import TestCase
|
2
|
-
import requests_mock
|
3
|
-
|
4
|
-
|
5
|
-
from squad.core.models import Group, Status
|
6
|
-
from squad.ci.models import Backend
|
7
|
-
|
8
|
-
from squad.core.plugins import get_plugin_instance
|
9
|
-
|
10
|
-
"""
|
11
|
-
This tests SQUAD's compatibility with the Tradefed plugin that might
|
12
|
-
be enabled in projects.
|
13
|
-
|
14
|
-
In order to be closer to a real execution of tradefed, there's a sample
|
15
|
-
of a tradefed tar ball adjusted from one of the jobs in LAVA. The only difference
|
16
|
-
is in size. The actual file is over 100MB, and since we're keeping it
|
17
|
-
in the repository, it wouldn't be convenient to store that. The file
|
18
|
-
was striped in a file of 0.5MB.
|
19
|
-
|
20
|
-
The most important file is `test_results.xml`, which contains a list of all
|
21
|
-
passing an failing tests, along with logs. The one located in the tar ball has
|
22
|
-
the following pattern:
|
23
|
-
|
24
|
-
<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
|
25
|
-
<?xml-stylesheet type="text/xsl" href="compatibility_result.xsl"?>
|
26
|
-
<Result ...>
|
27
|
-
<Build ...>
|
28
|
-
<Summary pass="972406" failed="5" modules_done="1" modules_total="1" />
|
29
|
-
<Module name="CtsDeqpTestCases" abi="arm64-v8a" runtime="4310214" done="true" pass="972406" total_tests="972411">
|
30
|
-
<TestCase name="dEQP-EGL.info">
|
31
|
-
<Test result="pass" name="version" />
|
32
|
-
<Test result="pass" name="vendor" />
|
33
|
-
<Test result="pass" name="client_apis" />
|
34
|
-
<Test result="pass" name="extensions" />
|
35
|
-
<Test result="pass" name="configs" />
|
36
|
-
</TestCase>
|
37
|
-
</Module>
|
38
|
-
</Build>
|
39
|
-
</Result>
|
40
|
-
|
41
|
-
There are
|
42
|
-
* 1 Module tag
|
43
|
-
* 285 TestCase tags
|
44
|
-
* 6273 Test tags
|
45
|
-
* 6272 passes
|
46
|
-
* 1 fail
|
47
|
-
"""
|
48
|
-
|
49
|
-
|
50
|
-
definition = """
|
51
|
-
actions:
|
52
|
-
- test:
|
53
|
-
docker:
|
54
|
-
image: yongqinliu/linaro-android-docker:0.1
|
55
|
-
timeout:
|
56
|
-
minutes: 5
|
57
|
-
definitions:
|
58
|
-
- from: inline
|
59
|
-
path: format-metatdata.yaml
|
60
|
-
name: format-metatdata
|
61
|
-
repository:
|
62
|
-
metadata:
|
63
|
-
format: Lava-Test Test Definition 1.0
|
64
|
-
name: format-metatdata
|
65
|
-
description: format-metatdata
|
66
|
-
run:
|
67
|
-
steps:
|
68
|
-
- lava-test-case "format-metadata" --shell fastboot format:ext4 metadata
|
69
|
-
- test:
|
70
|
-
docker:
|
71
|
-
image: yongqinliu/linaro-android-docker:0.1
|
72
|
-
timeout:
|
73
|
-
minutes: 900
|
74
|
-
definitions:
|
75
|
-
- repository: https://github.com/Linaro/test-definitions.git
|
76
|
-
from: git
|
77
|
-
path: automated/android/noninteractive-tradefed/tradefed.yaml
|
78
|
-
params:
|
79
|
-
TEST_PARAMS: cts-presubmit --abi arm64-v8a -m CtsDeqpTestCases --disable-reboot
|
80
|
-
TEST_URL: http://testdata.linaro.org/lkft/aosp-stable/android/lkft/lkft-aosp-android12-cts/332/android-cts.zip
|
81
|
-
TEST_PATH: android-cts
|
82
|
-
RESULTS_FORMAT: aggregated
|
83
|
-
ANDROID_VERSION: aosp-android12
|
84
|
-
name: cts-lkft
|
85
|
-
"""
|
86
|
-
|
87
|
-
job_suites = {
|
88
|
-
'count': 1,
|
89
|
-
'next': None,
|
90
|
-
'previous': None,
|
91
|
-
'results': [
|
92
|
-
{
|
93
|
-
'id': 1,
|
94
|
-
'resource_uri': 'http://lava.server/api/v0.2/jobs/5149627/suites/12261981/',
|
95
|
-
'name': '3_cts-lkft',
|
96
|
-
'job': 5149627
|
97
|
-
},
|
98
|
-
],
|
99
|
-
}
|
100
|
-
|
101
|
-
suite_attachments = {
|
102
|
-
'count': 1,
|
103
|
-
'next': None,
|
104
|
-
'previous': None,
|
105
|
-
'results': [
|
106
|
-
{
|
107
|
-
'id': 789133853,
|
108
|
-
'result': 'pass',
|
109
|
-
'resource_uri': 'http://lava.server/api/v0.2/jobs/5149627/suites/12261981/tests/789133853/',
|
110
|
-
'unit': '',
|
111
|
-
'name': 'test-attachment',
|
112
|
-
'measurement': None,
|
113
|
-
'metadata': "{case: test-attachment, definition: 3_cts-lkft, reference: 'http://attachment.server/artifacts/team/qa/2022/06/08/10/55/tradefed-output-20220608105250.tar.xz',\n result: pass}\n",
|
114
|
-
'start_log_line': None,
|
115
|
-
'end_log_line': None,
|
116
|
-
'logged': '2022-06-08T10:55:14.655858Z',
|
117
|
-
'suite': 12261981,
|
118
|
-
'test_set': None
|
119
|
-
}
|
120
|
-
]
|
121
|
-
}
|
122
|
-
|
123
|
-
with open('test/integration/plugins/tradefed-output-20220608105250.tar.xz', 'rb') as f:
|
124
|
-
tar_contents = f.read()
|
125
|
-
|
126
|
-
|
127
|
-
class TestTradefed(TestCase):
|
128
|
-
|
129
|
-
def setUp(self):
|
130
|
-
self.group = Group.objects.create(slug="mygroup")
|
131
|
-
self.project = self.group.projects.create(slug="myproject", project_settings="PLUGINS_TRADEFED_EXTRACT_AGGREGATED: True")
|
132
|
-
self.build = self.project.builds.create(version="tradefed-build")
|
133
|
-
self.env = self.project.environments.create(slug="myenv")
|
134
|
-
self.testrun = self.build.test_runs.create(environment=self.env)
|
135
|
-
self.backend = Backend.objects.create(url="http://lava.server/api/v0.2/", name="tradefed-backend", implementation_type="lava")
|
136
|
-
self.testjob = self.build.test_jobs.create(definition=definition, target=self.project, backend=self.backend, job_id="123", testrun=self.testrun)
|
137
|
-
self.tradefed = get_plugin_instance('tradefed')
|
138
|
-
|
139
|
-
def test_parse_cts_results(self):
|
140
|
-
|
141
|
-
with requests_mock.Mocker() as m:
|
142
|
-
m.get('http://lava.server/api/v0.2/jobs/123/suites/', json=job_suites)
|
143
|
-
m.get('http://lava.server/api/v0.2/jobs/123/suites/1/tests/', json=suite_attachments)
|
144
|
-
m.get('http://attachment.server/artifacts/team/qa/2022/06/08/10/55/tradefed-output-20220608105250.tar.xz', content=tar_contents)
|
145
|
-
self.tradefed.postprocess_testjob(self.testjob)
|
146
|
-
|
147
|
-
self.testrun.refresh_from_db()
|
148
|
-
|
149
|
-
# Check that the status has been recorded
|
150
|
-
self.assertTrue(self.testrun.status_recorded)
|
151
|
-
status = Status.objects.get(test_run=self.testrun, suite=None)
|
152
|
-
self.assertEqual(6272, status.tests_pass)
|
153
|
-
self.assertEqual(1, status.tests_fail)
|
154
|
-
|
155
|
-
# Check that the failed test contain the proper log
|
156
|
-
failed_test = self.testrun.tests.filter(result=False).first()
|
157
|
-
expected_log = 'with config {glformat=rgba8888d24s8ms0,rotation=unspecified,surfacetype=window,required=true}'
|
158
|
-
self.assertIn(expected_log, failed_test.log)
|
159
|
-
|
160
|
-
# Check that the attachment was saved to the testrun
|
161
|
-
self.assertTrue(self.testrun.attachments.count() > 0)
|
Binary file
|
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
|