ó
;€ªPc           @   s—  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z y d d l	 Z
 Wn e k
 r• d d l
 Z
 n Xd d l Z e j e j Z e j e j Z d e f d „  ƒ  YZ e j d „  ƒ Z d „  Z d „  Z e d „ Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d e f d „  ƒ  YZ# e
 j$ e ƒ  d ƒ d e# e
 j% f d „  ƒ  Yƒ Z& e
 j$ e ƒ  d ƒ d e# e
 j% f d „  ƒ  Yƒ Z' e
 j$ e ƒ  d ƒ d e# e
 j% f d „  ƒ  Yƒ Z( d e f d „  ƒ  YZ) d e f d „  ƒ  YZ* d  e
 j% f d! „  ƒ  YZ+ e
 j$ e ƒ  oSe  ƒ  d" ƒ d# e
 j% f d$ „  ƒ  Yƒ Z, d% e# f d& „  ƒ  YZ- d' e- e
 j% f d( „  ƒ  YZ. e
 j$ e ƒ  d) ƒ d* e- e
 j% f d+ „  ƒ  Yƒ Z/ e
 j$ e ƒ  d, ƒ d- e- e
 j% f d. „  ƒ  Yƒ Z0 e
 j$ e! ƒ  d/ ƒ d0 e# e
 j% f d1 „  ƒ  Yƒ Z1 e
 j$ e" ƒ  d2 ƒ d3 e# e
 j% f d4 „  ƒ  Yƒ Z2 d5 „  Z3 e4 d6 k r“e
 j5 d7 d8 ƒ n  d S(9   sY   
test_backend.py

Test case for keyring basic function

created by Kang Zhang 2009-07-14
iÿÿÿÿNt   ImportKillerc           B   s>   e  Z d  Z d „  Z d d „ Z d „  Z d „  Z d „  Z RS(   s@   Context manager to make an import of a given name or names fail.c         G   s   | |  _  d  S(   N(   t   names(   t   selfR   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   __init__   s    c         C   s   | |  j  k r |  Sd  S(   N(   R   (   R   t   fullnamet   path(    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   find_module!   s    c         C   s%   | |  j  k s t ‚ t | ƒ ‚ d  S(   N(   R   t   AssertionErrort   ImportError(   R   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   load_module$   s    c         C   sM   i  |  _  x- |  j D]" } t j j | d  ƒ |  j  | <q Wt j j |  ƒ d  S(   N(   t   originalR   t   syst   modulest   popt   Nonet	   meta_patht   append(   R   t   name(    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt	   __enter__'   s    	 c         G   sP   t  j j |  ƒ x9 |  j j ƒ  D]( \ } } | d  k	 r  | t  j | <q  q  Wd  S(   N(   R   R   t   removeR
   t   itemsR   R   (   R   t   argst   keyt   value(    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   __exit__,   s    N(	   t   __name__t
   __module__t   __doc__R   R   R   R	   R   R   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR       s   			c         k   sº   i  } x\ | j  ƒ  D]N \ } } |  j | ƒ | | <| d k rW | |  k ra |  | =qa q | |  | <q Wd VxI | j  ƒ  D]; \ } } | d k r¨ | |  k r² |  | =q² qw | |  | <qw Wd S(   s¯   Helper context manager to make and unmake changes to a dict.

    A None is not a valid value for the destination, and so means that the
    associated name should be removed.N(   R   t   getR   (   t   destinationt   changesR
   R   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   NoNoneDictMutator3   s    c          K   s   t  t j |   S(   s6   A context manager to temporarily change the os.environ(   R   t   ost   environ(   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   EnvironJ   s    c          O   s4   x! |  D] } t  j | ƒ | | <q Wt t j |  S(   sD   A context manager to temporarily make it possible to import a module(   t   typest
   ModuleTypeR   R   R   (   R   R   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   ImportBlesserO   s    c         C   s7   d } x* t  d |  ƒ D] } | t j | ƒ 7} q W| S(   s2   Generate a random string with length <i>k</i>
    t    i    (   t   ranget   randomt   choice(   t   kt   sourcet   resultt   i(    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   random_stringV   s    c           C   sF   y t  d ƒ Wn t k
 r" t SXt j d k oE t j ƒ  d d k S(   Ns   keyring.backends.win32_cryptot   win32iþÿÿÿi   (   s   win32(   t
   __import__R   t   FalseR   t   platformt   getwindowsversion(    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   is_win32_crypto_supported_   s
    c           C   s   t  j d k S(   Nt   mact   darwin(   R5   s   darwin(   R   R2   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   is_osx_keychain_supportedf   s    c          C   s)   t  j j ƒ  j ƒ  }  |  d k r% t St S(   Niÿÿÿÿ(   t   keyringt   backendt
   KDEKWallett	   supportedR1   t   True(   R;   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   is_kwallet_supportedi   s    c           C   s;   y" t  d ƒ t  d ƒ t  d ƒ Wn t k
 r6 t SXt S(   Ns   Crypto.Cipher.AESs   Crypto.Protocol.KDFs   Crypto.Random(   R0   R   R1   R<   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   is_crypto_supportedo   s    

c          C   s)   t  j j ƒ  j ƒ  }  |  d k r% t St S(   Niÿÿÿÿ(   R8   R9   t   GnomeKeyringR;   R1   R<   (   R;   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   is_gnomekeyring_supportedx   s    c           C   s'   y t  d ƒ Wn t k
 r" t SXt S(   Ns   PyQt4.QtGui(   R0   R   R1   R<   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   is_qt4_supported~   s
    c          C   sV   y t  d ƒ t }  Wn t k
 r- t }  n Xt j d k oU t j ƒ  j d k oU |  S(   Nt	   win32credR/   i   (   s   win32(   R0   R<   R   R1   R   R2   R3   t   major(   t   has_pywin32(    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   is_winvault_supported…   s    


$c           C   s'   y t  d ƒ Wn t k
 r" t SXt S(   Nt   dbus(   R0   R   R1   R<   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   is_dbus_supported   s
    t   BackendBasicTestsc           B   sD   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   sI   Test for the keyring's basic funtions. password_set and password_get
    c         C   s   |  j  ƒ  |  _ t ƒ  |  _ d  S(   N(   t   init_keyringR8   t   sett   credentials_created(   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   setUp›   s    c         C   s0   |  j  j | | | ƒ |  j j | | f ƒ d  S(   N(   R8   t   set_passwordRK   t   add(   R   t   servicet   usernamet   password(    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRM   Ÿ   s    c         C   s‡   |  j  } |  j | j | | ƒ d  ƒ |  j | | | ƒ |  j | j | | ƒ | ƒ |  j | | d ƒ |  j | j | | ƒ d ƒ d  S(   NR&   (   R8   t   assertEqualt   get_passwordR   RM   (   R   RO   RP   RQ   R8   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   check_set_get¥   s    	c         C   s;   t  d ƒ } t  d ƒ } t  d ƒ } |  j | | | ƒ d  S(   Ni   (   R.   RT   (   R   RQ   RP   RO   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   test_password_set_get³   s    c         C   sD   t  d t ƒ } t  d t ƒ } t  d t ƒ } |  j | | | ƒ d  S(   Ni   (   R.   t   DIFFICULT_CHARSRT   (   R   RQ   RP   RO   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   test_difficult_chars¹   s    c         C   sš   |  j  } |  j d d d ƒ |  j d d d ƒ |  j | j d d ƒ d ƒ |  j | j d d ƒ d ƒ |  j d d d ƒ |  j | j d d ƒ d ƒ d	 S(
   s¥   
        Issue #47 reports that WinVault isn't storing passwords for
        multiple users. This test exercises that test for each of the
        backends.
        t   service1t   user1t	   password1t   user2t	   password2t   service2t   user3t	   password3N(   R8   RM   RR   RS   (   R   R8   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   test_different_user¿   s    	(	   R   R   R   RL   RM   RT   RU   RW   R`   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRH   —   s   					s	   Need OS Xt   OSXKeychainTestCasec           B   s   e  Z d  „  Z RS(   c         C   s   t  j j ƒ  S(   N(   R8   R9   t   OSXKeychain(   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRI   Õ   s    (   R   R   RI   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRa   Ñ   s   s   Need GnomeKeyringt   GnomeKeyringTestCasec           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  d d d d d d ƒ S(   Nt   GNOME_KEYRING_CONTROLt   1t   DISPLAYt   DBUS_SESSION_BUS_ADDRESS(   t   dict(   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR!   Ý   s    c         C   s   t  j j ƒ  } d | _ | S(   Nt   session(   R8   R9   R?   t   KEYRING_NAME(   R   R*   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRI   â   s    	c         C   sI   t  d ƒ 7 t |  j ƒ     |  j d |  j j ƒ  ƒ Wd  QXWd  QXd  S(   Nt   gnomekeyringi   (   R%   R"   R!   RR   R8   R;   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   test_supportedë   s    c         C   sI   t  d ƒ 7 t |  j ƒ     |  j d |  j j ƒ  ƒ Wd  QXWd  QXd  S(   NRk   iÿÿÿÿ(   R    R"   R!   RR   R8   R;   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   test_supported_no_moduleð   s    c         C   sY   t  d ƒ G |  j ƒ  } d  | d <t |    |  j d |  j j ƒ  ƒ Wd  QXWd  QXd  S(   NRk   Rd   i    (   R%   R!   R   R"   RR   R8   R;   (   R   R!   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   test_supported_no_keyringõ   s
    
c         C   sY   t  d ƒ G |  j ƒ  } d  | d <t |    |  j d |  j j ƒ  ƒ Wd  QXWd  QXd  S(   NRk   Rf   i    (   R%   R!   R   R"   RR   R8   R;   (   R   R!   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   test_supported_no_displayü   s
    
c         C   sY   t  d ƒ G |  j ƒ  } d  | d <t |    |  j d |  j j ƒ  ƒ Wd  QXWd  QXd  S(   NRk   Rg   i    (   R%   R!   R   R"   RR   R8   R;   (   R   R!   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   test_supported_no_session  s
    
(	   R   R   R!   RI   Rl   Rm   Rn   Ro   Rp   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRc   Ù   s   							s   Need KWallett   KDEKWalletTestCasec           B   s   e  Z d  „  Z RS(   c         C   s   t  j j ƒ  S(   N(   R8   R9   R:   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRI     s    (   R   R   RI   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRq     s   t   UnOpenableKWalletc           B   s&   e  Z d  Z d Z d „  Z d „  Z RS(   s7   A module-like object used to test KDE wallet fall-back.c         G   s   d  S(   N(   R   (   R   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt
   openWallet  s    c         C   s   d  S(   N(   R   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   NetworkWallet  s    N(   R   R   R   R   t   SynchronousRs   Rt   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRr     s   	t	   FauxQtGuic           B   sM   e  Z d  Z d d d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ RS(   sD   A fake module-like object used in testing the open_kwallet function.t   qAppc           B   s   e  Z e d  „  ƒ Z RS(   c           C   s   d  S(   N(    (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   instance#  s    (   R   R   t   staticmethodRx   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRw   "  s   t   QApplicationc           B   s   e  Z d  „  Z d „  Z RS(   c         G   s   d  S(   N(    (   R   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR   (  s    c         C   s   d  S(   N(    (   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   exit+  s    (   R   R   R   R{   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRz   '  s   	t   QWidgetc           B   s   e  Z d  „  Z d „  Z RS(   c         G   s   d  S(   N(    (   R   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR   /  s    c         C   s   d  S(   N(    (   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   winId2  s    (   R   R   R   R}   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR|   .  s   	(    (   R   R   R   Rw   t   objectRz   R|   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRv     s   t   KDEWalletCanceledTestCasec           B   s   e  Z d  „  Z RS(   c         C   s)   |  j  t j j t ƒ  t ƒ  ƒ d  ƒ d  S(   N(   RR   R8   R9   t   open_kwalletRr   Rv   R   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   test_user_canceled7  s    (   R   R   R   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR   5  s   s   Need KWallet and Qt4t   KDEKWalletInQApplicationc           B   s   e  Z d  „  Z RS(   c         C   s   y$ d d l  m } d d l m } Wn d  SX| g  ƒ } t j j ƒ  } |  j t | | j	 ƒ d d t
 | ƒ ƒ| j ƒ  d  S(   Niÿÿÿÿ(   t   KWallet(   Rz   t   msgs?   The object wallet should be type <KWallet.Wallet> but it is: %s(   t   PyKDE4.kdeuiRƒ   t   PyQt4.QtGuiRz   R8   R9   R€   t
   assertTruet
   isinstancet   Wallett   reprR{   (   R   Rƒ   Rz   t   appt   wallet(    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   test_QApplicationF  s    (   R   R   R   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR‚   B  s   t   FileKeyringTestsc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   sN   t  t |  ƒ j ƒ  |  j ƒ  |  _ t j j t j	 ƒ  d ƒ |  j _
 |  _ d  S(   Ns   test_pass.cfg(   t   superRŽ   RL   RI   R8   R    R   t   joint   tempfilet   mkdtempt	   file_patht   tmp_keyring_file(   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRL   W  s    	c         C   sC   y t  j |  j ƒ Wn( t k
 r> } | j d k r? ‚  q? n Xd  S(   Ni   (   R    t   unlinkR”   t   OSErrort   errno(   R   t   e(    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   tearDown]  s
    c         C   sM   t  d ƒ } | j d ƒ } |  j j | ƒ } |  j | |  j j | ƒ ƒ d  S(   Ni   s   utf-8(   R.   t   encodeR8   t   encryptRR   t   decrypt(   R   RQ   t	   encrypted(    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   test_encrypt_decryptd  s    (   R   R   RL   R™   Rž   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRŽ   U  s   		t   UncryptedFileKeyringTestCasec           B   s   e  Z d  „  Z RS(   c         C   s   t  j j ƒ  S(   N(   R8   R9   t   UncryptedFileKeyring(   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRI   o  s    (   R   R   RI   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRŸ   m  s   s   Need Crypto modulet   CryptedFileKeyringTestCasec           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s2   t  |  j |  ƒ j ƒ  t j |  _ d „  t _ d  S(   Nc          _   s   d S(   Nt   abcdef(    (   R   t   kwargs(    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   <lambda>{  s    (   R   t	   __class__RL   t   getpasst   getpass_orig(   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRL   w  s    c         C   s   |  j  t _ |  `  d  S(   N(   R§   R¦   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR™   }  s    c         C   s   t  j j ƒ  S(   N(   R8   R9   t   CryptedFileKeyring(   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRI     s    (   R   R   RL   R™   RI   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR¡   s  s   		s   Need Windowst   Win32CryptoKeyringTestCasec           B   s   e  Z d  „  Z RS(   c         C   s   t  j j ƒ  S(   N(   R8   R9   t   Win32CryptoKeyring(   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRI   ‰  s    (   R   R   RI   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR©   …  s   s   Need WinVaultt   WinVaultKeyringTestCasec           B   s   e  Z d  „  Z d „  Z RS(   c         C   sO   xH |  j  D]= } y |  j j | Œ  Wq
 t k
 rF } t j | IJq
 Xq
 Wd  S(   N(   RK   R8   t   delete_passwordt	   ExceptionR   t   stderr(   R   t   credR˜   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR™     s
    c         C   s   t  j j ƒ  S(   N(   R8   R9   t   WinVaultKeyring(   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRI   ˜  s    (   R   R   R™   RI   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR«     s   	s$   DBus needed for SecretServiceKeyringt   SecretServiceKeyringTestCasec           B   s)   e  Z e Z d  „  Z d „  Z d „  Z RS(   c         C   s   t  d d d d ƒ S(   NRf   Re   Rg   (   Rh   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR!      s    c         C   s   t  j d IJt j j ƒ  S(   NsM   Testing SecretServiceKeyring, following password prompts are for this keyring(   R   R®   R8   R9   t   SecretServiceKeyring(   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRI   ¤  s    c         C   sI   t  d ƒ 7 t |  j ƒ     |  j d |  j j ƒ  ƒ Wd  QXWd  QXd  S(   NRF   iÿÿÿÿ(   R    R"   R!   RR   R8   R;   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyRm   ¨  s    (   R   R   R<   t   __test__R!   RI   Rm   (    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyR±   ›  s   		c          C   sì   t  j ƒ  }  |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  j t  j t	 ƒ ƒ |  j t  j t
 ƒ ƒ |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  S(   N(   t   unittestt	   TestSuitet   addTestt	   makeSuiteRa   Rc   R±   R   Rq   R‚   RŸ   R¡   R©   R«   (   t   suite(    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt
   test_suite®  s    t   __main__t   defaultTestR¹   (6   R   t
   contextlibR    R(   t   stringR   R‘   R#   R¦   t	   unittest2R´   R   t   keyring.backendR8   t   ascii_letterst   digitst   ALPHABETt
   whitespacet   punctuationRV   R~   R    t   contextmanagerR   R"   R%   R.   R4   R7   R=   R>   R@   RA   RE   RG   RH   t
   skipUnlesst   TestCaseRa   Rc   Rq   Rr   Rv   R   R‚   RŽ   RŸ   R¡   R©   R«   R±   R¹   R   t   main(    (    (    s>   /usr/lib/python2.7/dist-packages/keyring/tests/test_backend.pyt   <module>   s|   												:		0							