guix_mirror_bot pushed a commit to branch master
in repository guix.

commit feff638ea499bb6a48447d20e26edac76a66be1c
Author: Sharlatan Hellseher <[email protected]>
AuthorDate: Mon Oct 20 23:00:11 2025 +0100

    gnu: python-moto: Fix tests, don't run in parallel.
    
    The project provides a mixture of thread save and threads untolerated
    test suites. Tests took 705.18s in a single thread while they were timed
    out when threading was enabled after 3827s. This change reworks skipped
    tests and run them in a single thread.
    
    * gnu/packages/python-xyz.scm (python-moto): Use G-Expressions.
    [arguments] <test-flags>: Rework skipped tests and run them in a single
    thread.
    <phases>: Remove 'compatibility as no longer required; add 'pre-check.
    [native-inputs]: Remove python-pytest-xdist and python-wheel; add
    python-pycognito and python-pyotp.
    
    Fixes: guix/guix#3678
    Change-Id: I735d035c31c29435ad5774c5e38b0e3f1a2e19bd
---
 gnu/packages/python-xyz.scm | 135 ++++++++++++++++++++------------------------
 1 file changed, 61 insertions(+), 74 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 57439bd9ba..45ced15aaa 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -20488,87 +20488,74 @@ text.")
     (build-system pyproject-build-system)
     (arguments
      (list
-      ;; tests: 10000 passed, 16 skipped, 2 xfailed, 42 warnings
+      ;; tests: 10230 passed, 39 skipped, 73 deselected, 2 xfailed, 4 warnings
       #:test-flags
-      '(list "-m" "not network and not requires_docker"
-             "--numprocesses" (number->string (min 8 (parallel-job-count)))
-             ;; This needs pycognito.
-             "--ignore-glob=tests/test_cognitoidp/*"
-             ;; This needs Internet access.
-             "--ignore=tests/test_core/test_request_passthrough.py"
-             "-k"
-             (string-append
-              ;; XXX: This test is timing sensitive and may
-              ;; fail non-deterministically.
-              "not test_cancel_pending_job"
-
-              ;; The error message is more detailed than expected.
-              " and not test_list_queue_tags_errors"
-
-              ;; Unknown failure: invalid length for parameter IpAdresses.
-              " and not test_route53resolver_bad_create_endpoint_subnets"
-              " and not test_route53resolver_invalid_create_endpoint_args"
-
-              ;; These tests require Docker.
-              " and not test_terminate_job"
-              " and not test_invoke_function_from_sqs_exception"
-              " and not 
test_create_custom_lambda_resource__verify_cfnresponse_failed"
-              " and not test_lambda_function"
-              " and not test_invoke_local_lambda_layers"
-
-              ;; These tests also require the network.
-              " and not test_s3_server_post_cors_multiple_origins"
-              " and not test_put_record_batch_http_destination"
-              " and not test_put_record_http_destination"
-              " and not test_with_custom_request_header"
-              " and not test_dependencies"
-              " and not test_cancel_running_job"
-              " and not test_container_overrides"
-
-              ;; TypeError: Got unexpected keyword argument
-              ;; 'account_id_endpoint_mode'
-              " and not test_dynamodb_with_account_id_routing"
-
-              ;; botocore.exceptions.ParamValidationError: Parameter
-              ;; validation failed
-              " and not test_create_firewall"
-              " and not test_describe_logging_configuration"
-              " and not test_update_logging_configuration"
-              " and not test_list_firewalls"
-              ;; AttributeError: 'TimestreamInfluxDB' object has no attribute
-              ;; 'list_db_clusters'
-
-              " and not test_create_db_cluster"
-              " and not test_get_db_cluster"
-              " and not test_list_db_clusters"
-
-              ;; XXX: misc
-              " and not test_list_objects_v2_checksum_algo"
-              " and not test_upload_file_with_checksum_algorithm"))
+      #~(list "-m" "not network and not requires_docker"
+              ;; Not all of the tests are thread save, see:
+              ;; <https://github.com/getmoto/moto/issues/7786>.
+              ;; "--numprocesses" (number->string (min 8 (parallel-job-count)))
+              "-k" (string-join
+                    ;; Outbound access to AWS servcies is required to reach
+                    ;; endpoint URLs:
+                    ;; "https://s3.amazonaws.com/";
+                    ;; "https://realbucket.s3.amazonaws.com/";
+                    ;; "https://s3.amazonaws.com/companyname_prod";
+                    (list "not test_passthrough_calls_for_entire_service"
+                          "test_passthrough_calls_for_specific_url"
+                          "test_passthrough_calls_for_wildcard_urls"
+                          ;; TypeError: Got unexpected keyword argument
+                          ;; 'account_id_endpoint_mode'
+                          "test_dynamodb_with_account_id_routing[disabled]"
+                          "test_dynamodb_with_account_id_routing[preferred]"
+                          "test_dynamodb_with_account_id_routing[required]"
+                          ;; botocore.exceptions.ParamValidationError:
+                          ;; Parameter validation failed: Missing required
+                          ;; parameter in input: "VpcId"; Missing required
+                          ;; parameter in input: "SubnetMappings"
+                          "test_create_firewall"
+                          "test_describe_logging_configuration"
+                          "test_list_firewalls"
+                          "test_update_logging_configuration"
+                          ;; RuntimeError: Firehose PutRecord(Batch) to HTTP
+                          ;; destination failed
+                          "test_put_record_http_destination"
+                          "test_put_record_batch_http_destination"
+                          ;; Timed out to connect to foo.localhost:5001
+                          "test_with_custom_request_header"
+                          ;; Timed out to connect to testcors.localhost:6789
+                          "test_s3_server_post_cors_multiple_origins"
+                          ;; AttributeError: 'TimestreamInfluxDB' object has
+                          ;; no attribute 'list_db_clusters'
+                          "test_list_db_clusters"
+                          "test_get_db_cluster"
+                          "test_create_db_cluster"
+                          ;; Checksum error
+                          "test_upload_file_with_checksum_algorithm"
+                          "test_list_objects_v2_checksum_algo")
+                    " and not ")
+              "tests")
       #:phases
-      '(modify-phases %standard-phases
-         (add-after 'unpack 'compatibility
-           (lambda _
-             ;; pyparsing 3.0.6 does not support the "min" argument for
-             ;; DelimitedList.
-             (substitute* "moto/glue/utils.py"
-               (("DelimitedList\\(literal, min=1\\)")
-                "DelimitedList(literal)"))))
-         (add-after 'unpack 'patch-hardcoded-executable-names
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((bash-exec (search-input-file inputs "/bin/sh")))
-               (substitute* "moto/batch/models.py"
-                 (("/bin/sh") bash-exec))
-               (substitute* (find-files "tests" "\\.py$")
-                 (("#!/bin/bash") (string-append "#!" bash-exec)))))))))
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-hardcoded-executable-names
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((bash-exec (search-input-file inputs "/bin/sh")))
+                (substitute* "moto/batch/models.py"
+                  (("/bin/sh") bash-exec))
+                (substitute* (find-files "tests" "\\.py$")
+                  (("#!/bin/bash") (string-append "#!" bash-exec))))))
+          (add-before 'check 'pre-check
+            (lambda _
+              (setenv "AWS_ACCESS_KEY_ID" "guix-access-key-id")
+              (setenv "AWS_SECRET_ACCESS_KEY" "guix-secret-access-key")
+              (setenv "TESTS_SKIP_REQUIRES_DOCKER" "true"))))))
     (native-inputs
      (list python-flask
            python-flask-cors
            python-freezegun
+           python-pycognito
+           python-pyotp
            python-pytest
-           python-pytest-xdist
-           python-setuptools
-           python-wheel))
+           python-setuptools))
     (inputs
      (list bash-minimal))
     (propagated-inputs

Reply via email to