ó
‹²,]c           @   s  d  Z  y d d l m Z Wn! e k
 r= d d l m Z n Xd d l Z d d l m Z d „  Z e j	 d „  ƒ Z
 e j	 d „  ƒ Z e j	 d „  ƒ Z e j	 d	 „  ƒ Z e j j d
 „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d k re j ƒ  n  d S(   s%   
Tests for EditorStack save methods.
iÿÿÿÿ(   t   MockN(   t   editorc         C   s°   |  j  j t ƒ |  j t ƒ  ƒ |  j t ƒ  ƒ |  j t ƒ  t ƒ  t ƒ  t ƒ  ƒ |  j d d d ƒ |  j d d d ƒ t t	 ƒ  } | j
 ƒ  } Wd  QX|  j t	 d | ƒ d  S(   Ns   foo.pys   utf-8s   a = 1
print(a)

x = 2s   secondtab.pys   print(spam)(   t   close_actiont
   setEnabledt   Falset   set_introspectorR    t   set_find_widgett   set_io_actionst   newt   opent   __file__t   read(   t   editorstackt   ft   text(    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt	   add_files   s    "c         C   s^   t  j d  g  ƒ } | j t ƒ  ƒ | j t ƒ  ƒ | j t ƒ  t ƒ  t ƒ  t ƒ  ƒ | |  f S(   N(   R   t   EditorStackt   NoneR   R    R   R   (   t   qtbott   editor_stack(    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt   base_editor_bot+   s
    "c         C   sQ   |  \ } } | j  j d ƒ } | r0 t | _ n  | j | ƒ t | ƒ | | f S(   s~   
    Set up EditorStack with CodeEditors containing some Python code.
    The cursor is at the empty line below the code.
    t   show_save_dialog(   t   nodet
   get_markert   Truet   save_dialog_on_testst	   addWidgetR   (   R   t   requestR   R   R   (    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt
   editor_bot4   s    
c         c   sL   t  j d t ƒ  g  d t ƒ} } |  j | ƒ | j ƒ  | V| j ƒ  d S(   s   Create editor splitter.t   firstN(   R   t   EditorSplitterR   R    R   R   t   showt   destroy(   R   t   est   editor_splitter(    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt   editor_splitter_botE   s
    "
c         C   s&   |  } t  | j j _ t  | j ƒ | S(   s+   Create editor splitter for testing layouts.(   R   t   plugint   clone_editorstackt   side_effectR   (   R#   R!   (    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt   editor_splitter_layout_botO   s    c         C   s+  |  \ } } | j  } | j j t j d ƒ | j j | d ƒ t | j _ | j d j j	 ƒ  j
 t ƒ | j d j j	 ƒ  j
 t ƒ | j d j j	 ƒ  j
 t ƒ | ƒ  t k s¶ t ‚ | j j sÉ t ‚ | j d j j	 ƒ  j
 t ƒ | j d j j	 ƒ  j
 t ƒ | j d j j	 ƒ  j
 t ƒ t j j t j j _ | d d d t ƒ t k sVt ‚ | j j sit ‚ | j j ƒ  d k s„t ‚ t j j t j j _ | d d d t ƒ t k sºt ‚ | j j sÌt ‚ | j j ƒ  t j j t j j _ | ƒ  t k st ‚ | j j d k st ‚ | j j ƒ  t j j t j j _ | d d d t ƒ t k s^t ‚ | j j sqt ‚ | j j ƒ  t j j t j j _ | ƒ  t k s¨t ‚ | j j s»t ‚ t j j j ƒ  | j t ƒ t | j _ | d d d t ƒ t k st ‚ | j j st ‚ t j j j ƒ  d	 S(
   s#   Test EditorStack.save_if_changed().t   exec_t   savei    i   i   t   indext
   cancelablei   N(   t   save_if_changedt   patcht   objectR   t   QMessageBoxR   R)   t   return_valuet   datat   documentt   setModifiedR   t   AssertionErrort   calledt   CancelR(   t   tabst   currentIndext   Yest
   reset_mockt   YesToAllt
   call_countt   Not   NoToAllt   set_tempfile_pathR
   t   assert_not_called(   R   t   mockerR   R   R,   (    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt   test_save_if_changed\   sL    	!!!!c         C   sè  |  \ } } | j  } | j j t j d ƒ | j j t j j d ƒ | j j t j d ƒ | j j | d ƒ | j } t	 ƒ  | _ d t j j
 _ | j d j j ƒ  j t ƒ t | j d _ | d d ƒ t k sÙ t ‚ t j j
 j sï t ‚ | j d j j ƒ  j t ƒ t t j j j _ d | j _ | d d ƒ d k sEt ‚ | j j d d ƒ t j j
 j snt ‚ t t j j j _ | d d d	 t ƒ s›t ‚ t j j
 j d
 k s¶t ‚ | j j j t t | ƒ ƒ d d ƒ | | _ d S(   s   Test EditorStack.save().R(   t   isfilet   writet   save_ass   utf-8i    R*   t   save_as_calledt   forcei   s   foo.pyN(   R)   R-   R.   R   R/   t   ost   patht   encodingt
   file_savedR    RD   R0   R1   R2   R3   R   t   newly_createdR   R4   R5   RC   RE   t   assert_called_witht   emitt   strt   id(   R   RA   R   R   R)   t   save_file_saved(    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt	   test_save•   s2    		
c         C   s±  |  } | j  ƒ  | j } | j d ƒ j } x: t d ƒ D], } | j | j | j | j k s8 t ‚ q8 W| j j ƒ  j	 d d ƒ | j d j | j d j k s§ t ‚ | j d j | j d j k sÍ t ‚ | j d j | j d j k só t ‚ | j
 | j d j | j d j ƒ | j
 | j d j | j d j ƒ | j d j | j d j k sat ‚ | j d j | j d j k s‡t ‚ | j d j | j d j k s­t ‚ d S(   s3   Test EditorStack.file_saved_in_other_editorstack().i   i   i    i   N(   t   splitR   t   widgett   rangeR1   t   filenameR4   R7   t   tabBart   moveTabt   file_saved_in_other_editorstack(   R'   R!   t   panel1t   panel2t   i(    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt$   test_file_saved_in_other_editorstack»   s"    
	*&&&&&c         C   s¼   |  \ } } | j  } | j j t d ƒ | j } t ƒ  | _ d t j _ | t ƒ d k sa t
 ‚ t d f t j _ | t ƒ t k s‹ t
 ‚ d t j _ | t ƒ d k s¯ t
 ‚ | | _ d S(   s#   Test EditorStack.select_savename().t   getsavefilenamet    s	   mytest.pyN(   R_   R_   (   s	   mytest.pyR_   (   t   select_savenameR-   R.   R   t   redirect_stdioR    R^   R0   R
   R   R4   (   R   RA   R   R   R`   t   save_redirect_stdio(    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt   test_select_savenameÛ   s    		c         C   së  |  \ } } | j  } | j j t j d ƒ | j j | d ƒ | j j | d ƒ | j j | d ƒ | j j | d ƒ | j j | d ƒ | j } t ƒ  | _ d t j j _ t	 | j
 _ d | j _ | ƒ  t k sÛ t ‚ | j
 j sî t ‚ d | j _ t | j _ | d	 d
 ƒ d k s!t ‚ | j
 j s4t ‚ t	 | j _ | d	 d
 ƒ t	 k s[t ‚ | j j d ƒ | j
 j s}t ‚ | j j t d d ƒ| j j j d k s®t ‚ | j
 j d k sÆt ‚ | j j d k sÞt ‚ | | _ d S(   s   Test EditorStack.save_as().RD   R)   t
   close_fileR`   t   rename_in_datat   refreshs   utf-8s   foo.pyR*   i   i    t   new_filenamei   N(   RE   R-   R.   R   RJ   t   file_renamed_in_dataR    RD   R0   R   R)   R   R`   R   R4   R5   Rd   RM   Re   R
   RN   Rf   (   R   RA   R   R   RE   t   save_file_renamed_in_data(    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt   test_save_asó   s:    		c         C   sw  |  \ } } | j  } | j j t j d ƒ | j j t j d ƒ | j j | d ƒ | j j | d ƒ | j } t ƒ  | _ d t j j _	 d
 | j _	 | ƒ  t k s¬ t ‚ t j j j sÂ t ‚ d | j _	 t | j _	 | d d ƒ d
 k sõ t ‚ t j j j st ‚ t | j _	 | d d ƒ t k s2t ‚ | j j d	 ƒ t j j j sWt ‚ | j j j d ƒ | | _ d
 S(   s    Test EditorStack.save_copy as().R(   RD   Rd   R`   s   utf-8s   foo.pyR*   i   i    N(   t   save_copy_asR-   R.   R   R/   RJ   t   plugin_loadR    RD   R0   R   R`   R   R4   R5   Rd   R   RM   RN   (   R   RA   R   R   Rk   t   save_plugin_load(    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt   test_save_copy_as  s,    		c         C   s­   |  \ } } | j  } | j j | d ƒ t | j _ | ƒ  | j j d k sS t ‚ | j j d ƒ | j j d ƒ | j j d ƒ t	 j
 t ƒ  | j j d ƒ Wd QXd S(   s   Test EditorStack.save_all().R)   i   i    i   i   N(   t   save_allR-   R.   R   R)   R0   R<   R4   t   assert_any_callt   pytestt   raises(   R   RA   R   R   Ro   (    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt   test_save_all?  s    	t   __main__(   t   __doc__t   unittest.mockR    t   ImportErrort   mockRq   t   spyder.widgetsR   R   t   fixtureR   R   R#   R'   t   markR   RB   RR   R]   Rc   Rj   Rn   Rs   t   __name__t   main(    (    (    s=   lib/python2.7/site-packages/spyder/widgets/tests/test_save.pyt   <module>	   s(   		
9	&	 		*	"	