Skip to content

Bug 2048352 - Migrate code-review bot to push to Github #3490

Draft
nahadji wants to merge 7 commits into
mozilla:masterfrom
nahadji:bug-2048352-git-push
Draft

Bug 2048352 - Migrate code-review bot to push to Github #3490
nahadji wants to merge 7 commits into
mozilla:masterfrom
nahadji:bug-2048352-git-push

Bug 2048352 - Import workflow lazily in tests to keep date mocking ef…

1fc32c7
Select commit
Loading
Failed to load commit list.
firefoxci-taskcluster / Code Review Bot checks: unit tests succeeded Jul 9, 2026 in 1m 8s

FirefoxCI (pull_request)

Check python code with pytest

Details

View task in Taskcluster | View logs in Taskcluster | View task group in Taskcluster

Task Status

Started: 2026-07-09T15:29:09.272Z
Resolved: 2026-07-09T15:30:17.783Z
Task Execution Time: 1 minute, 8 seconds, 511 milliseconds
Task Status: completed
Reason Resolved: completed
TaskId: GmC6jfW4T-S-FxginwdC0g
RunId: 0

Artifacts

- public/logs/live_backing.log
- public/logs/live.log


[taskcluster 2026-07-09T15:29:09.329Z] Worker Type (code-analysis-1/linux-gw-gcp) settings:
[taskcluster 2026-07-09T15:29:09.329Z]   {
[taskcluster 2026-07-09T15:29:09.329Z]     "config": {
[taskcluster 2026-07-09T15:29:09.329Z]       "deploymentId": ""
[taskcluster 2026-07-09T15:29:09.329Z]     },
[taskcluster 2026-07-09T15:29:09.329Z]     "generic-worker": {
[taskcluster 2026-07-09T15:29:09.329Z]       "engine": "multiuser",
[taskcluster 2026-07-09T15:29:09.329Z]       "go-arch": "amd64",
[taskcluster 2026-07-09T15:29:09.329Z]       "go-os": "linux",
[taskcluster 2026-07-09T15:29:09.329Z]       "go-version": "go1.22.2",
[taskcluster 2026-07-09T15:29:09.329Z]       "release": "https://github.com/taskcluster/taskcluster/releases/tag/v64.3.0",
[taskcluster 2026-07-09T15:29:09.329Z]       "revision": "b66b6614b9b79077f1bfc78f97afb8c25c0c4b30",
[taskcluster 2026-07-09T15:29:09.329Z]       "source": "https://github.com/taskcluster/taskcluster/commits/b66b6614b9b79077f1bfc78f97afb8c25c0c4b30",
[taskcluster 2026-07-09T15:29:09.329Z]       "version": "64.3.0"
[taskcluster 2026-07-09T15:29:09.329Z]     },
[taskcluster 2026-07-09T15:29:09.329Z]     "image": "projects/taskcluster-imaging/global/images/gw-fxci-gcp-l1-gui-googlecompute-2024-08-22t22-48-09z",
[taskcluster 2026-07-09T15:29:09.329Z]     "instance-id": "2040697157599757177",
[taskcluster 2026-07-09T15:29:09.329Z]     "instance-type": "projects/887720501152/machineTypes/c2-standard-4",
[taskcluster 2026-07-09T15:29:09.329Z]     "local-ipv4": "10.128.0.54",
[taskcluster 2026-07-09T15:29:09.329Z]     "project-id": "fxci-production-level1-workers",

...(883 lines hidden)...

tests/test_index.py::test_index_phabricator PASSED                       [ 36%]
tests/test_index.py::test_index_from_try PASSED                          [ 36%]
tests/test_index.py::test_github_index PASSED                            [ 37%]
tests/test_issues.py::test_allowed_paths PASSED                          [ 37%]
tests/test_issues.py::test_backend_publication PASSED                    [ 38%]
tests/test_lint.py::test_flake8_checks PASSED                            [ 39%]
tests/test_lint.py::test_as_text PASSED                                  [ 39%]
tests/test_lint.py::test_licence_payload PASSED                          [ 40%]
tests/test_mercurial.py::test_hg_run PASSED                              [ 40%]
tests/test_mercurial.py::test_robustcheckout PASSED                      [ 41%]
tests/test_mercurial.py::test_push_to_try PASSED                         [ 41%]
tests/test_mercurial.py::test_push_to_try_existing_rev PASSED            [ 42%]
tests/test_mercurial.py::test_dont_push_skippable_files_to_try PASSED    [ 43%]
tests/test_mercurial.py::test_treeherder_link PASSED                     [ 43%]
tests/test_mercurial.py::test_failure_general PASSED                     [ 44%]
tests/test_mercurial.py::test_failure_mercurial PASSED                   [ 44%]
tests/test_mercurial.py::test_push_to_try_nss PASSED                     [ 45%]
tests/test_mercurial.py::test_crash_utf8_author PASSED                   [ 45%]
tests/test_mercurial.py::test_unexpected_push_failure PASSED             [ 46%]
tests/test_mercurial.py::test_push_failure_max_retries PASSED            [ 47%]
tests/test_mercurial.py::test_push_closed_try PASSED                     [ 47%]
tests/test_mercurial.py::test_get_base_identifier PASSED                 [ 48%]
tests/test_mercurial.py::test_get_base_identifier_from_git PASSED        [ 48%]
tests/test_patch.py::test_publication PASSED                             [ 49%]
tests/test_phabricator.py::test_backoff PASSED                           [ 50%]
tests/test_phabricator_analysis.py::test_revision PASSED                 [ 50%]
tests/test_phabricator_analysis.py::test_workflow PASSED                 [ 51%]
tests/test_phabricator_analysis.py::test_publish_analysis_phabricator_duplicate_harbormaster_uri PASSED [ 51%]
tests/test_phabricator_analysis.py::test_publish_analysis_phabricator_reraises_other_conduit_errors PASSED [ 52%]
tests/test_phabricator_analysis.py::test_publish_analysis_phabricator_git_failure[False] PASSED [ 52%]
tests/test_phabricator_analysis.py::test_publish_analysis_phabricator_git_failure[True] PASSED [ 53%]
tests/test_phabricator_analysis.py::test_publish_analysis_lando_git_failure PASSED [ 54%]
tests/test_phabricator_analysis.py::test_repository_conf_repo_type PASSED [ 54%]
tests/test_phabricator_analysis.py::test_start_analysis_selects_backend[git-True-GitDeployKey] PASSED [ 55%]
tests/test_phabricator_analysis.py::test_start_analysis_selects_backend[git-True-None] PASSED [ 55%]
tests/test_phabricator_analysis.py::test_start_analysis_selects_backend[hg-False-None] PASSED [ 56%]
tests/test_remote.py::test_no_deps PASSED                                [ 56%]
tests/test_remote.py::test_baseline PASSED                               [ 57%]
tests/test_remote.py::test_no_failed PASSED                              [ 58%]
tests/test_remote.py::test_no_issues PASSED                              [ 58%]
tests/test_remote.py::test_build_status_fail_on_error PASSED             [ 59%]
tests/test_remote.py::test_build_status_pass_on_warning PASSED           [ 59%]
tests/test_remote.py::test_unsupported_analyzer PASSED                   [ 60%]
tests/test_remote.py::test_mozlint_task PASSED                           [ 60%]
tests/test_remote.py::test_clang_tidy_task PASSED                        [ 61%]
tests/test_remote.py::test_clang_format_task PASSED                      [ 62%]
tests/test_remote.py::test_no_tasks PASSED                               [ 62%]
tests/test_remote.py::test_zero_coverage_option PASSED                   [ 63%]
tests/test_remote.py::test_external_tidy_task PASSED                     [ 63%]
tests/test_reporter_builderrors.py::test_builderrors_taskcluster PASSED  [ 64%]
tests/test_reporter_builderrors.py::test_builderrors_github PASSED       [ 64%]
tests/test_reporter_debug.py::test_publication PASSED                    [ 65%]
tests/test_reporter_github.py::test_github_review PASSED                 [ 66%]
tests/test_reporter_github.py::test_github_review_cleanup PASSED         [ 66%]
tests/test_reporter_lando.py::test_lando PASSED                          [ 67%]
tests/test_reporter_mail.py::test_conf PASSED                            [ 67%]
tests/test_reporter_mail.py::test_mail PASSED                            [ 68%]
tests/test_reporter_phabricator.py::test_phabricator_clang_tidy PASSED   [ 68%]
tests/test_reporter_phabricator.py::test_phabricator_clang_format PASSED [ 69%]
tests/test_reporter_phabricator.py::test_phabricator_mozlint PASSED      [ 70%]
tests/test_reporter_phabricator.py::test_phabricator_coverage PASSED     [ 70%]
tests/test_reporter_phabricator.py::test_phabricator_no_coverage_on_deleted_file PASSED [ 71%]
tests/test_reporter_phabricator.py::test_phabricator_clang_tidy_and_coverage PASSED [ 71%]
tests/test_reporter_phabricator.py::test_phabricator_analyzers[analyzers_skipped0-valid_issues0-valid_patches0] PASSED [ 72%]
tests/test_reporter_phabricator.py::test_phabricator_analyzers[analyzers_skipped1-valid_issues1-valid_patches1] PASSED [ 72%]
tests/test_reporter_phabricator.py::test_phabricator_analyzers[analyzers_skipped2-valid_issues2-valid_patches2] PASSED [ 73%]
tests/test_reporter_phabricator.py::test_phabricator_clang_tidy_build_error PASSED [ 74%]
tests/test_reporter_phabricator.py::test_full_file PASSED                [ 74%]
tests/test_reporter_phabricator.py::test_task_failures PASSED            [ 75%]
tests/test_reporter_phabricator.py::test_extra_errors PASSED             [ 75%]
tests/test_reporter_phabricator.py::test_phabricator_notices PASSED      [ 76%]
tests/test_reporter_phabricator.py::test_phabricator_tgdiff PASSED       [ 77%]
tests/test_reporter_phabricator.py::test_phabricator_external_tidy PASSED [ 77%]
tests/test_reporter_phabricator.py::test_phabricator_newer_diff PASSED   [ 78%]
tests/test_reporter_phabricator.py::test_phabricator_former_diff_comparison PASSED [ 78%]
tests/test_reporter_phabricator.py::test_phabricator_before_after_comment PASSED [ 79%]
tests/test_revisions.py::test_phabricator PASSED                         [ 79%]
tests/test_revisions.py::test_autoland PASSED                            [ 80%]
tests/test_revisions.py::test_clang_files PASSED                         [ 81%]
tests/test_revisions.py::test_analyze_patch PASSED                       [ 81%]
tests/test_revisions.py::test_bugzilla_id PASSED                         [ 82%]
tests/test_revisions.py::test_revision_before_after PASSED               [ 82%]
tests/test_stats.py::test_base_stats PASSED                              [ 83%]
tests/test_tgdiff_task.py::test_load_artifacts_no_summary PASSED         [ 83%]
tests/test_tgdiff_task.py::test_load_artifacts_ok_summary PASSED         [ 84%]
tests/test_tgdiff_task.py::test_load_artifacts_warning_summary PASSED    [ 85%]
tests/test_tgdiff_task.py::test_load_artifacts_warning_summary_comm PASSED [ 85%]
tests/test_tools.py::test_taskcluster_service PASSED                     [ 86%]
tests/test_tools.py::test_remove_color_codes PASSED                      [ 86%]
tests/test_workflow.py::test_build_task[source-test-clang-tidy-ClangTidyTask-False] PASSED [ 87%]
tests/test_workflow.py::test_build_task[source-test-clang-tidy-ClangTidyTask-True] PASSED [ 87%]
tests/test_workflow.py::test_build_task[source-test-clang-external-ExternalTidyTask-False] PASSED [ 88%]
tests/test_workflow.py::test_build_task[source-test-clang-external-ExternalTidyTask-True] PASSED [ 89%]
tests/test_workflow.py::test_build_task[source-test-mozlint-eslint-MozLintTask-False] PASSED [ 89%]
tests/test_workflow.py::test_build_task[source-test-mozlint-eslint-MozLintTask-True] PASSED [ 90%]
tests/test_workflow.py::test_build_task[source-test-mozlint-whatever-MozLintTask-False] PASSED [ 90%]
tests/test_workflow.py::test_build_task[source-test-mozlint-whatever-MozLintTask-True] PASSED [ 91%]
tests/test_workflow.py::test_build_task[source-test-clang-format-ClangFormatTask-False] PASSED [ 91%]
tests/test_workflow.py::test_build_task[source-test-clang-format-ClangFormatTask-True] PASSED [ 92%]
tests/test_workflow.py::test_build_task[source-test-taskgraph-diff-TaskGraphDiffTask-False] PASSED [ 93%]
tests/test_workflow.py::test_build_task[source-test-taskgraph-diff-TaskGraphDiffTask-True] PASSED [ 93%]
tests/test_workflow.py::test_build_task[source-test-unsupported-None-False] PASSED [ 94%]
tests/test_workflow.py::test_build_task[source-test-unsupported-None-True] PASSED [ 94%]
tests/test_workflow.py::test_on_production PASSED                        [ 95%]
tests/test_workflow.py::test_before_after PASSED                         [ 95%]
tests/test_workflow.py::test_publish_link_duplicate_harbormaster_uri PASSED [ 96%]
tests/test_workflow.py::test_publish_link_reraises_other_conduit_errors PASSED [ 97%]
tests/test_workflow.py::test_publish_link PASSED                         [ 97%]
tools/test_validator.py::test_top_struct PASSED                          [ 98%]
tools/test_validator.py::test_dict_struct PASSED                         [ 98%]
tools/test_validator.py::test_paths PASSED                               [ 99%]
tools/test_validator.py::test_issues PASSED                              [100%]

=============================== warnings summary ===============================
../../usr/local/lib/python3.12/site-packages/code_review_bot/config.py:14
  /usr/local/lib/python3.12/site-packages/code_review_bot/config.py:14: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
    import pkg_resources

../../usr/local/lib/python3.12/site-packages/influxdb/line_protocol.py:16
  /usr/local/lib/python3.12/site-packages/influxdb/line_protocol.py:16: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
    EPOCH = UTC.localize(datetime.utcfromtimestamp(0))

tests/test_artifacts.py:10
  /src/bot/tests/test_artifacts.py:10: PytestCollectionWarning: cannot collect test class 'TestTask' because it has a __init__ constructor (from: bot/tests/test_artifacts.py)
    class TestTask(AnalysisTask):

bot/tests/test_default.py: 10 warnings
bot/tests/test_remote.py: 109 warnings
bot/tests/test_reporter_phabricator.py: 36 warnings
bot/tests/test_revisions.py: 2 warnings
bot/tests/test_stats.py: 1 warning
bot/tests/test_workflow.py: 2 warnings
  /usr/local/lib/python3.12/site-packages/code_review_bot/stats.py:56: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
    "time": datetime.utcnow().isoformat(),

bot/tests/test_index.py::test_taskcluster_index
bot/tests/test_index.py::test_index_autoland
bot/tests/test_index.py::test_index_phabricator
bot/tests/test_index.py::test_index_from_try
bot/tests/test_index.py::test_github_index
  /usr/local/lib/python3.12/site-packages/code_review_bot/workflow.py:495: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
    now = datetime.utcnow()

bot/tests/test_mercurial.py::test_unexpected_push_failure
bot/tests/test_mercurial.py::test_push_failure_max_retries
bot/tests/test_mercurial.py::test_push_failure_max_retries
bot/tests/test_mercurial.py::test_push_closed_try
  /usr/local/lib/python3.12/site-packages/code_review_bot/mercurial.py:572: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
    start = datetime.utcnow()

bot/tests/test_mercurial.py::test_push_closed_try
bot/tests/test_mercurial.py::test_push_closed_try
  /usr/local/lib/python3.12/site-packages/code_review_bot/mercurial.py:574: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
    if (datetime.utcnow() - start).seconds >= TRY_STATUS_MAX_WAIT:

bot/tests/test_phabricator_analysis.py::test_publish_analysis_phabricator_duplicate_harbormaster_uri
bot/tests/test_phabricator_analysis.py::test_publish_analysis_phabricator_reraises_other_conduit_errors
bot/tests/test_workflow.py::test_publish_link_duplicate_harbormaster_uri
bot/tests/test_workflow.py::test_publish_link_reraises_other_conduit_errors
  /usr/local/lib/python3.12/site-packages/libmozdata/phabricator.py:187: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
====================== 174 passed, 178 warnings in 13.36s ======================
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
2026-07-09 15:30:16 [info     ] Removed ssh key               
[taskcluster 2026-07-09T15:30:17.344Z]    Exit Code: 0
[taskcluster 2026-07-09T15:30:17.344Z]    User Time: 3.171156s
[taskcluster 2026-07-09T15:30:17.344Z]  Kernel Time: 1.0288s
[taskcluster 2026-07-09T15:30:17.344Z]    Wall Time: 1m6.987641103s
[taskcluster 2026-07-09T15:30:17.344Z]       Result: SUCCEEDED
[taskcluster 2026-07-09T15:30:17.344Z] === Task Finished ===
[taskcluster 2026-07-09T15:30:17.344Z] Task Duration: 1m6.988253393s
[taskcluster 2026-07-09T15:30:17.446Z] Uploading link artifact public/logs/live.log to artifact public/logs/live_backing.log with expiry 2027-07-09T16:25:42.178Z