Changeset 134:9ae0c002f903

Show
Ignore:
Timestamp:
31/01/10 11:34:44 (2 years ago)
Author:
Mark Hammond <mhammond@…>
Branch:
default
Message:

make livetest work with gmail

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • livetest.py

    r131 r134  
    1414 
    1515SIMPLE_MESSAGE = 'Subject: something\r\n\r\nFoo\r\n' 
     16 
     17def is_gmail(client): 
     18    return client._imap.host == 'imap.gmail.com' 
     19 
     20def extract_folder_names(dat): 
     21    ret = [] 
     22    for _, _, folder_name in dat: 
     23        # gmail's "special" folders start with '[' 
     24        if not folder_name.startswith('['): 
     25            ret.append(folder_name) 
     26    return ret 
    1627 
    1728def test_capabilities(client): 
     
    2940        client.create_folder(name) 
    3041 
    31     folders = client.list_folders() 
     42    folders = extract_folder_names(client.list_folders()) 
    3243    assert len(folders) > 0, 'No folders visible on server' 
    3344    assert 'INBOX' in [f.upper() for f in folders], 'INBOX not returned' 
     
    3748    #TODO: test wildcards 
    3849 
     50    caps = client.capabilities() 
     51    if is_gmail(client): 
     52        assert "XLIST" in caps, caps 
     53    if 'XLIST' in caps: 
     54        info = client.xlist_folders() 
     55        folders = extract_folder_names(info) 
     56        assert len(folders) > 0, 'No folders visible on server' 
     57        for flags, _, _  in info: 
     58            if '\\INBOX' in [flag.upper() for flag in flags]: 
     59                break 
     60        else: 
     61            raise AssertionError('INBOX not returned', info) 
     62 
     63    for name in some_folders: 
     64        assert name in folders 
     65         
    3966 
    4067def test_select_and_close(client): 
     
    5279    clear_folders(client) 
    5380 
    54     for folder in client.list_sub_folders(): 
     81    for folder in extract_folder_names(client.list_sub_folders()): 
    5582        client.unsubscribe_folder(folder) 
    5683 
     
    6289        client.create_folder(folder) 
    6390 
    64     all_folders = sorted(client.list_folders()) 
     91    all_folders = sorted(extract_folder_names(client.list_folders())) 
    6592 
    6693    for folder in all_folders: 
    6794        client.subscribe_folder(folder) 
    6895 
    69     assert all_folders == sorted(client.list_sub_folders()) 
     96    assert all_folders == sorted(extract_folder_names(client.list_sub_folders())) 
    7097 
    7198    for folder in all_folders: 
    7299        client.unsubscribe_folder(folder) 
    73     assert client.list_sub_folders() == [] 
     100    assert extract_folder_names(client.list_sub_folders()) == [] 
    74101 
    75102    assert_raises(imapclient.IMAPClient.Error, 
     
    96123 
    97124        assert client.folder_exists(folder) 
    98         assert folder in client.list_folders() 
     125        assert folder in extract_folder_names(client.list_folders()) 
    99126 
    100127        client.select_folder(folder) 
     
    115142    try: 
    116143        status = client.folder_status(new_folder) 
    117         assert status['MESSAGES'] == 0 
    118         assert status['RECENT'] == 0 
    119         assert status['UNSEEN'] == 0 
     144        assert status['MESSAGES'] == 0, status 
     145        assert status['RECENT'] == 0, status 
     146        assert status['UNSEEN'] == 0, status 
    120147 
    121148        # Add a message to the folder, it should show up now. 
     
    123150 
    124151        status = client.folder_status(new_folder) 
    125         assert status['MESSAGES'] == 1 
    126         assert status['RECENT'] == 1 
    127         assert status['UNSEEN'] == 1 
     152        assert status['MESSAGES'] == 1, status 
     153        if not is_gmail(client): 
     154            assert status['RECENT'] == 1, status 
     155        assert status['UNSEEN'] == 1, status 
    128156 
    129157    finally: 
     
    207235 
    208236    messages_all = client.search('ALL') 
    209     assert len(messages_all) == len(subjects)   # Check we see all messages 
     237    if is_gmail(client): 
     238        # gmail seems to never return deleted items. 
     239        assert len(messages_all) == len(subjects)-1   # Check we see all messages 
     240    else: 
     241        assert len(messages_all) == len(subjects)   # Check we see all messages 
    210242    assert client.search() == messages_all      # Check default 
    211243 
    212244    # Single criteria 
    213     assert len(client.search('DELETED')) == 1 
    214     assert len(client.search('NOT DELETED')) == len(subjects) - 1 
     245    if not is_gmail(client): 
     246        assert len(client.search('DELETED')) == 1 
     247        assert len(client.search('NOT DELETED')) == len(subjects) - 1 
    215248    assert client.search('NOT DELETED') == client.search(['NOT DELETED']) 
    216249 
     
    274307def clear_folders(client): 
    275308    client.folder_encode = False 
    276     for folder in client.list_folders(): 
     309    for folder in extract_folder_names(client.list_folders()): 
    277310        if folder.upper() != 'INBOX': 
    278311            client.delete_folder(folder)