~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/__init__.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-08-27 00:00:13 UTC
  • mfrom: (4650.1.5 test-speed)
  • Revision ID: pqm@pqm.ubuntu.com-20090827000013-8r81i76yo8tbfjxq
(robertc) A number of improvements to test_selftest and to test
        parameterisation performance. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
 
29
29
import atexit
30
30
import codecs
 
31
from copy import copy
31
32
from cStringIO import StringIO
32
33
import difflib
33
34
import doctest
2498
2499
        repository will also be accessed locally. Otherwise a lightweight
2499
2500
        checkout is created and returned.
2500
2501
 
 
2502
        We do this because we can't physically create a tree in the local
 
2503
        path, with a branch reference to the transport_factory url, and
 
2504
        a branch + repository in the vfs_transport, unless the vfs_transport
 
2505
        namespace is distinct from the local disk - the two branch objects
 
2506
        would collide. While we could construct a tree with its branch object
 
2507
        pointing at the transport_factory transport in memory, reopening it
 
2508
        would behaving unexpectedly, and has in the past caused testing bugs
 
2509
        when we tried to do it that way.
 
2510
 
2501
2511
        :param format: The BzrDirFormat.
2502
2512
        :returns: the WorkingTree.
2503
2513
        """
3477
3487
test_prefix_alias_registry.register('bp', 'bzrlib.plugins')
3478
3488
 
3479
3489
 
 
3490
def _test_suite_testmod_names():
 
3491
    """Return the standard list of test module names to test."""
 
3492
    return [
 
3493
        'bzrlib.doc',
 
3494
        'bzrlib.tests.blackbox',
 
3495
        'bzrlib.tests.commands',
 
3496
        'bzrlib.tests.per_branch',
 
3497
        'bzrlib.tests.per_bzrdir',
 
3498
        'bzrlib.tests.per_interrepository',
 
3499
        'bzrlib.tests.per_intertree',
 
3500
        'bzrlib.tests.per_inventory',
 
3501
        'bzrlib.tests.per_interbranch',
 
3502
        'bzrlib.tests.per_lock',
 
3503
        'bzrlib.tests.per_transport',
 
3504
        'bzrlib.tests.per_tree',
 
3505
        'bzrlib.tests.per_pack_repository',
 
3506
        'bzrlib.tests.per_repository',
 
3507
        'bzrlib.tests.per_repository_chk',
 
3508
        'bzrlib.tests.per_repository_reference',
 
3509
        'bzrlib.tests.per_versionedfile',
 
3510
        'bzrlib.tests.per_workingtree',
 
3511
        'bzrlib.tests.test__annotator',
 
3512
        'bzrlib.tests.test__chk_map',
 
3513
        'bzrlib.tests.test__dirstate_helpers',
 
3514
        'bzrlib.tests.test__groupcompress',
 
3515
        'bzrlib.tests.test__known_graph',
 
3516
        'bzrlib.tests.test__rio',
 
3517
        'bzrlib.tests.test__walkdirs_win32',
 
3518
        'bzrlib.tests.test_ancestry',
 
3519
        'bzrlib.tests.test_annotate',
 
3520
        'bzrlib.tests.test_api',
 
3521
        'bzrlib.tests.test_atomicfile',
 
3522
        'bzrlib.tests.test_bad_files',
 
3523
        'bzrlib.tests.test_bencode',
 
3524
        'bzrlib.tests.test_bisect_multi',
 
3525
        'bzrlib.tests.test_branch',
 
3526
        'bzrlib.tests.test_branchbuilder',
 
3527
        'bzrlib.tests.test_btree_index',
 
3528
        'bzrlib.tests.test_bugtracker',
 
3529
        'bzrlib.tests.test_bundle',
 
3530
        'bzrlib.tests.test_bzrdir',
 
3531
        'bzrlib.tests.test__chunks_to_lines',
 
3532
        'bzrlib.tests.test_cache_utf8',
 
3533
        'bzrlib.tests.test_chk_map',
 
3534
        'bzrlib.tests.test_chk_serializer',
 
3535
        'bzrlib.tests.test_chunk_writer',
 
3536
        'bzrlib.tests.test_clean_tree',
 
3537
        'bzrlib.tests.test_commands',
 
3538
        'bzrlib.tests.test_commit',
 
3539
        'bzrlib.tests.test_commit_merge',
 
3540
        'bzrlib.tests.test_config',
 
3541
        'bzrlib.tests.test_conflicts',
 
3542
        'bzrlib.tests.test_counted_lock',
 
3543
        'bzrlib.tests.test_crash',
 
3544
        'bzrlib.tests.test_decorators',
 
3545
        'bzrlib.tests.test_delta',
 
3546
        'bzrlib.tests.test_debug',
 
3547
        'bzrlib.tests.test_deprecated_graph',
 
3548
        'bzrlib.tests.test_diff',
 
3549
        'bzrlib.tests.test_directory_service',
 
3550
        'bzrlib.tests.test_dirstate',
 
3551
        'bzrlib.tests.test_email_message',
 
3552
        'bzrlib.tests.test_eol_filters',
 
3553
        'bzrlib.tests.test_errors',
 
3554
        'bzrlib.tests.test_export',
 
3555
        'bzrlib.tests.test_extract',
 
3556
        'bzrlib.tests.test_fetch',
 
3557
        'bzrlib.tests.test_fifo_cache',
 
3558
        'bzrlib.tests.test_filters',
 
3559
        'bzrlib.tests.test_ftp_transport',
 
3560
        'bzrlib.tests.test_foreign',
 
3561
        'bzrlib.tests.test_generate_docs',
 
3562
        'bzrlib.tests.test_generate_ids',
 
3563
        'bzrlib.tests.test_globbing',
 
3564
        'bzrlib.tests.test_gpg',
 
3565
        'bzrlib.tests.test_graph',
 
3566
        'bzrlib.tests.test_groupcompress',
 
3567
        'bzrlib.tests.test_hashcache',
 
3568
        'bzrlib.tests.test_help',
 
3569
        'bzrlib.tests.test_hooks',
 
3570
        'bzrlib.tests.test_http',
 
3571
        'bzrlib.tests.test_http_response',
 
3572
        'bzrlib.tests.test_https_ca_bundle',
 
3573
        'bzrlib.tests.test_identitymap',
 
3574
        'bzrlib.tests.test_ignores',
 
3575
        'bzrlib.tests.test_index',
 
3576
        'bzrlib.tests.test_info',
 
3577
        'bzrlib.tests.test_inv',
 
3578
        'bzrlib.tests.test_inventory_delta',
 
3579
        'bzrlib.tests.test_knit',
 
3580
        'bzrlib.tests.test_lazy_import',
 
3581
        'bzrlib.tests.test_lazy_regex',
 
3582
        'bzrlib.tests.test_lock',
 
3583
        'bzrlib.tests.test_lockable_files',
 
3584
        'bzrlib.tests.test_lockdir',
 
3585
        'bzrlib.tests.test_log',
 
3586
        'bzrlib.tests.test_lru_cache',
 
3587
        'bzrlib.tests.test_lsprof',
 
3588
        'bzrlib.tests.test_mail_client',
 
3589
        'bzrlib.tests.test_memorytree',
 
3590
        'bzrlib.tests.test_merge',
 
3591
        'bzrlib.tests.test_merge3',
 
3592
        'bzrlib.tests.test_merge_core',
 
3593
        'bzrlib.tests.test_merge_directive',
 
3594
        'bzrlib.tests.test_missing',
 
3595
        'bzrlib.tests.test_msgeditor',
 
3596
        'bzrlib.tests.test_multiparent',
 
3597
        'bzrlib.tests.test_mutabletree',
 
3598
        'bzrlib.tests.test_nonascii',
 
3599
        'bzrlib.tests.test_options',
 
3600
        'bzrlib.tests.test_osutils',
 
3601
        'bzrlib.tests.test_osutils_encodings',
 
3602
        'bzrlib.tests.test_pack',
 
3603
        'bzrlib.tests.test_patch',
 
3604
        'bzrlib.tests.test_patches',
 
3605
        'bzrlib.tests.test_permissions',
 
3606
        'bzrlib.tests.test_plugins',
 
3607
        'bzrlib.tests.test_progress',
 
3608
        'bzrlib.tests.test_read_bundle',
 
3609
        'bzrlib.tests.test_reconcile',
 
3610
        'bzrlib.tests.test_reconfigure',
 
3611
        'bzrlib.tests.test_registry',
 
3612
        'bzrlib.tests.test_remote',
 
3613
        'bzrlib.tests.test_rename_map',
 
3614
        'bzrlib.tests.test_repository',
 
3615
        'bzrlib.tests.test_revert',
 
3616
        'bzrlib.tests.test_revision',
 
3617
        'bzrlib.tests.test_revisionspec',
 
3618
        'bzrlib.tests.test_revisiontree',
 
3619
        'bzrlib.tests.test_rio',
 
3620
        'bzrlib.tests.test_rules',
 
3621
        'bzrlib.tests.test_sampler',
 
3622
        'bzrlib.tests.test_selftest',
 
3623
        'bzrlib.tests.test_serializer',
 
3624
        'bzrlib.tests.test_setup',
 
3625
        'bzrlib.tests.test_sftp_transport',
 
3626
        'bzrlib.tests.test_shelf',
 
3627
        'bzrlib.tests.test_shelf_ui',
 
3628
        'bzrlib.tests.test_smart',
 
3629
        'bzrlib.tests.test_smart_add',
 
3630
        'bzrlib.tests.test_smart_request',
 
3631
        'bzrlib.tests.test_smart_transport',
 
3632
        'bzrlib.tests.test_smtp_connection',
 
3633
        'bzrlib.tests.test_source',
 
3634
        'bzrlib.tests.test_ssh_transport',
 
3635
        'bzrlib.tests.test_status',
 
3636
        'bzrlib.tests.test_store',
 
3637
        'bzrlib.tests.test_strace',
 
3638
        'bzrlib.tests.test_subsume',
 
3639
        'bzrlib.tests.test_switch',
 
3640
        'bzrlib.tests.test_symbol_versioning',
 
3641
        'bzrlib.tests.test_tag',
 
3642
        'bzrlib.tests.test_testament',
 
3643
        'bzrlib.tests.test_textfile',
 
3644
        'bzrlib.tests.test_textmerge',
 
3645
        'bzrlib.tests.test_timestamp',
 
3646
        'bzrlib.tests.test_trace',
 
3647
        'bzrlib.tests.test_transactions',
 
3648
        'bzrlib.tests.test_transform',
 
3649
        'bzrlib.tests.test_transport',
 
3650
        'bzrlib.tests.test_transport_log',
 
3651
        'bzrlib.tests.test_tree',
 
3652
        'bzrlib.tests.test_treebuilder',
 
3653
        'bzrlib.tests.test_tsort',
 
3654
        'bzrlib.tests.test_tuned_gzip',
 
3655
        'bzrlib.tests.test_ui',
 
3656
        'bzrlib.tests.test_uncommit',
 
3657
        'bzrlib.tests.test_upgrade',
 
3658
        'bzrlib.tests.test_upgrade_stacked',
 
3659
        'bzrlib.tests.test_urlutils',
 
3660
        'bzrlib.tests.test_version',
 
3661
        'bzrlib.tests.test_version_info',
 
3662
        'bzrlib.tests.test_weave',
 
3663
        'bzrlib.tests.test_whitebox',
 
3664
        'bzrlib.tests.test_win32utils',
 
3665
        'bzrlib.tests.test_workingtree',
 
3666
        'bzrlib.tests.test_workingtree_4',
 
3667
        'bzrlib.tests.test_wsgi',
 
3668
        'bzrlib.tests.test_xml',
 
3669
        ]
 
3670
 
 
3671
 
 
3672
def _test_suite_modules_to_doctest():
 
3673
    """Return the list of modules to doctest."""   
 
3674
    return [
 
3675
        'bzrlib',
 
3676
        'bzrlib.branchbuilder',
 
3677
        'bzrlib.export',
 
3678
        'bzrlib.inventory',
 
3679
        'bzrlib.iterablefile',
 
3680
        'bzrlib.lockdir',
 
3681
        'bzrlib.merge3',
 
3682
        'bzrlib.option',
 
3683
        'bzrlib.symbol_versioning',
 
3684
        'bzrlib.tests',
 
3685
        'bzrlib.timestamp',
 
3686
        'bzrlib.version_info_formats.format_custom',
 
3687
        ]
 
3688
 
 
3689
 
3480
3690
def test_suite(keep_only=None, starting_with=None):
3481
3691
    """Build and return TestSuite for the whole of bzrlib.
3482
3692
 
3488
3698
    This function can be replaced if you need to change the default test
3489
3699
    suite on a global basis, but it is not encouraged.
3490
3700
    """
3491
 
    testmod_names = [
3492
 
                   'bzrlib.doc',
3493
 
                   'bzrlib.tests.blackbox',
3494
 
                   'bzrlib.tests.commands',
3495
 
                   'bzrlib.tests.per_branch',
3496
 
                   'bzrlib.tests.per_bzrdir',
3497
 
                   'bzrlib.tests.per_interrepository',
3498
 
                   'bzrlib.tests.per_intertree',
3499
 
                   'bzrlib.tests.per_inventory',
3500
 
                   'bzrlib.tests.per_interbranch',
3501
 
                   'bzrlib.tests.per_lock',
3502
 
                   'bzrlib.tests.per_transport',
3503
 
                   'bzrlib.tests.per_tree',
3504
 
                   'bzrlib.tests.per_pack_repository',
3505
 
                   'bzrlib.tests.per_repository',
3506
 
                   'bzrlib.tests.per_repository_chk',
3507
 
                   'bzrlib.tests.per_repository_reference',
3508
 
                   'bzrlib.tests.per_versionedfile',
3509
 
                   'bzrlib.tests.per_workingtree',
3510
 
                   'bzrlib.tests.test__annotator',
3511
 
                   'bzrlib.tests.test__chk_map',
3512
 
                   'bzrlib.tests.test__dirstate_helpers',
3513
 
                   'bzrlib.tests.test__groupcompress',
3514
 
                   'bzrlib.tests.test__known_graph',
3515
 
                   'bzrlib.tests.test__rio',
3516
 
                   'bzrlib.tests.test__walkdirs_win32',
3517
 
                   'bzrlib.tests.test_ancestry',
3518
 
                   'bzrlib.tests.test_annotate',
3519
 
                   'bzrlib.tests.test_api',
3520
 
                   'bzrlib.tests.test_atomicfile',
3521
 
                   'bzrlib.tests.test_bad_files',
3522
 
                   'bzrlib.tests.test_bencode',
3523
 
                   'bzrlib.tests.test_bisect_multi',
3524
 
                   'bzrlib.tests.test_branch',
3525
 
                   'bzrlib.tests.test_branchbuilder',
3526
 
                   'bzrlib.tests.test_btree_index',
3527
 
                   'bzrlib.tests.test_bugtracker',
3528
 
                   'bzrlib.tests.test_bundle',
3529
 
                   'bzrlib.tests.test_bzrdir',
3530
 
                   'bzrlib.tests.test__chunks_to_lines',
3531
 
                   'bzrlib.tests.test_cache_utf8',
3532
 
                   'bzrlib.tests.test_chk_map',
3533
 
                   'bzrlib.tests.test_chk_serializer',
3534
 
                   'bzrlib.tests.test_chunk_writer',
3535
 
                   'bzrlib.tests.test_clean_tree',
3536
 
                   'bzrlib.tests.test_commands',
3537
 
                   'bzrlib.tests.test_commit',
3538
 
                   'bzrlib.tests.test_commit_merge',
3539
 
                   'bzrlib.tests.test_config',
3540
 
                   'bzrlib.tests.test_conflicts',
3541
 
                   'bzrlib.tests.test_counted_lock',
3542
 
                   'bzrlib.tests.test_crash',
3543
 
                   'bzrlib.tests.test_decorators',
3544
 
                   'bzrlib.tests.test_delta',
3545
 
                   'bzrlib.tests.test_debug',
3546
 
                   'bzrlib.tests.test_deprecated_graph',
3547
 
                   'bzrlib.tests.test_diff',
3548
 
                   'bzrlib.tests.test_directory_service',
3549
 
                   'bzrlib.tests.test_dirstate',
3550
 
                   'bzrlib.tests.test_email_message',
3551
 
                   'bzrlib.tests.test_eol_filters',
3552
 
                   'bzrlib.tests.test_errors',
3553
 
                   'bzrlib.tests.test_export',
3554
 
                   'bzrlib.tests.test_extract',
3555
 
                   'bzrlib.tests.test_fetch',
3556
 
                   'bzrlib.tests.test_fifo_cache',
3557
 
                   'bzrlib.tests.test_filters',
3558
 
                   'bzrlib.tests.test_ftp_transport',
3559
 
                   'bzrlib.tests.test_foreign',
3560
 
                   'bzrlib.tests.test_generate_docs',
3561
 
                   'bzrlib.tests.test_generate_ids',
3562
 
                   'bzrlib.tests.test_globbing',
3563
 
                   'bzrlib.tests.test_gpg',
3564
 
                   'bzrlib.tests.test_graph',
3565
 
                   'bzrlib.tests.test_groupcompress',
3566
 
                   'bzrlib.tests.test_hashcache',
3567
 
                   'bzrlib.tests.test_help',
3568
 
                   'bzrlib.tests.test_hooks',
3569
 
                   'bzrlib.tests.test_http',
3570
 
                   'bzrlib.tests.test_http_response',
3571
 
                   'bzrlib.tests.test_https_ca_bundle',
3572
 
                   'bzrlib.tests.test_identitymap',
3573
 
                   'bzrlib.tests.test_ignores',
3574
 
                   'bzrlib.tests.test_index',
3575
 
                   'bzrlib.tests.test_info',
3576
 
                   'bzrlib.tests.test_inv',
3577
 
                   'bzrlib.tests.test_inventory_delta',
3578
 
                   'bzrlib.tests.test_knit',
3579
 
                   'bzrlib.tests.test_lazy_import',
3580
 
                   'bzrlib.tests.test_lazy_regex',
3581
 
                   'bzrlib.tests.test_lock',
3582
 
                   'bzrlib.tests.test_lockable_files',
3583
 
                   'bzrlib.tests.test_lockdir',
3584
 
                   'bzrlib.tests.test_log',
3585
 
                   'bzrlib.tests.test_lru_cache',
3586
 
                   'bzrlib.tests.test_lsprof',
3587
 
                   'bzrlib.tests.test_mail_client',
3588
 
                   'bzrlib.tests.test_memorytree',
3589
 
                   'bzrlib.tests.test_merge',
3590
 
                   'bzrlib.tests.test_merge3',
3591
 
                   'bzrlib.tests.test_merge_core',
3592
 
                   'bzrlib.tests.test_merge_directive',
3593
 
                   'bzrlib.tests.test_missing',
3594
 
                   'bzrlib.tests.test_msgeditor',
3595
 
                   'bzrlib.tests.test_multiparent',
3596
 
                   'bzrlib.tests.test_mutabletree',
3597
 
                   'bzrlib.tests.test_nonascii',
3598
 
                   'bzrlib.tests.test_options',
3599
 
                   'bzrlib.tests.test_osutils',
3600
 
                   'bzrlib.tests.test_osutils_encodings',
3601
 
                   'bzrlib.tests.test_pack',
3602
 
                   'bzrlib.tests.test_patch',
3603
 
                   'bzrlib.tests.test_patches',
3604
 
                   'bzrlib.tests.test_permissions',
3605
 
                   'bzrlib.tests.test_plugins',
3606
 
                   'bzrlib.tests.test_progress',
3607
 
                   'bzrlib.tests.test_read_bundle',
3608
 
                   'bzrlib.tests.test_reconcile',
3609
 
                   'bzrlib.tests.test_reconfigure',
3610
 
                   'bzrlib.tests.test_registry',
3611
 
                   'bzrlib.tests.test_remote',
3612
 
                   'bzrlib.tests.test_rename_map',
3613
 
                   'bzrlib.tests.test_repository',
3614
 
                   'bzrlib.tests.test_revert',
3615
 
                   'bzrlib.tests.test_revision',
3616
 
                   'bzrlib.tests.test_revisionspec',
3617
 
                   'bzrlib.tests.test_revisiontree',
3618
 
                   'bzrlib.tests.test_rio',
3619
 
                   'bzrlib.tests.test_rules',
3620
 
                   'bzrlib.tests.test_sampler',
3621
 
                   'bzrlib.tests.test_selftest',
3622
 
                   'bzrlib.tests.test_serializer',
3623
 
                   'bzrlib.tests.test_setup',
3624
 
                   'bzrlib.tests.test_sftp_transport',
3625
 
                   'bzrlib.tests.test_shelf',
3626
 
                   'bzrlib.tests.test_shelf_ui',
3627
 
                   'bzrlib.tests.test_smart',
3628
 
                   'bzrlib.tests.test_smart_add',
3629
 
                   'bzrlib.tests.test_smart_request',
3630
 
                   'bzrlib.tests.test_smart_transport',
3631
 
                   'bzrlib.tests.test_smtp_connection',
3632
 
                   'bzrlib.tests.test_source',
3633
 
                   'bzrlib.tests.test_ssh_transport',
3634
 
                   'bzrlib.tests.test_status',
3635
 
                   'bzrlib.tests.test_store',
3636
 
                   'bzrlib.tests.test_strace',
3637
 
                   'bzrlib.tests.test_subsume',
3638
 
                   'bzrlib.tests.test_switch',
3639
 
                   'bzrlib.tests.test_symbol_versioning',
3640
 
                   'bzrlib.tests.test_tag',
3641
 
                   'bzrlib.tests.test_testament',
3642
 
                   'bzrlib.tests.test_textfile',
3643
 
                   'bzrlib.tests.test_textmerge',
3644
 
                   'bzrlib.tests.test_timestamp',
3645
 
                   'bzrlib.tests.test_trace',
3646
 
                   'bzrlib.tests.test_transactions',
3647
 
                   'bzrlib.tests.test_transform',
3648
 
                   'bzrlib.tests.test_transport',
3649
 
                   'bzrlib.tests.test_transport_log',
3650
 
                   'bzrlib.tests.test_tree',
3651
 
                   'bzrlib.tests.test_treebuilder',
3652
 
                   'bzrlib.tests.test_tsort',
3653
 
                   'bzrlib.tests.test_tuned_gzip',
3654
 
                   'bzrlib.tests.test_ui',
3655
 
                   'bzrlib.tests.test_uncommit',
3656
 
                   'bzrlib.tests.test_upgrade',
3657
 
                   'bzrlib.tests.test_upgrade_stacked',
3658
 
                   'bzrlib.tests.test_urlutils',
3659
 
                   'bzrlib.tests.test_version',
3660
 
                   'bzrlib.tests.test_version_info',
3661
 
                   'bzrlib.tests.test_weave',
3662
 
                   'bzrlib.tests.test_whitebox',
3663
 
                   'bzrlib.tests.test_win32utils',
3664
 
                   'bzrlib.tests.test_workingtree',
3665
 
                   'bzrlib.tests.test_workingtree_4',
3666
 
                   'bzrlib.tests.test_wsgi',
3667
 
                   'bzrlib.tests.test_xml',
3668
 
                   ]
3669
3701
 
3670
3702
    loader = TestUtil.TestLoader()
3671
3703
 
3700
3732
    suite = loader.suiteClass()
3701
3733
 
3702
3734
    # modules building their suite with loadTestsFromModuleNames
3703
 
    suite.addTest(loader.loadTestsFromModuleNames(testmod_names))
3704
 
 
3705
 
    modules_to_doctest = [
3706
 
        'bzrlib',
3707
 
        'bzrlib.branchbuilder',
3708
 
        'bzrlib.export',
3709
 
        'bzrlib.inventory',
3710
 
        'bzrlib.iterablefile',
3711
 
        'bzrlib.lockdir',
3712
 
        'bzrlib.merge3',
3713
 
        'bzrlib.option',
3714
 
        'bzrlib.symbol_versioning',
3715
 
        'bzrlib.tests',
3716
 
        'bzrlib.timestamp',
3717
 
        'bzrlib.version_info_formats.format_custom',
3718
 
        ]
3719
 
 
3720
 
    for mod in modules_to_doctest:
 
3735
    suite.addTest(loader.loadTestsFromModuleNames(_test_suite_testmod_names()))
 
3736
 
 
3737
    for mod in _test_suite_modules_to_doctest():
3721
3738
        if not interesting_module(mod):
3722
3739
            # No tests to keep here, move along
3723
3740
            continue
3864
3881
    :param new_id: The id to assign to it.
3865
3882
    :return: The new test.
3866
3883
    """
3867
 
    from copy import deepcopy
3868
 
    new_test = deepcopy(test)
 
3884
    new_test = copy(test)
3869
3885
    new_test.id = lambda: new_id
3870
3886
    return new_test
3871
3887