B
    `
                 @   s   d dl mZmZmZ eZd dlZd dlZd dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZ e	de fd	d
Ze	dd ZG dd dejZdS )    )absolute_importdivisionprint_functionN)contextmanager)BytesIOStringIO)unittest)PY3)to_bytes c             c   s^   t j}t j}tr(t| }tt| |_ntt| }z|t _|t _dV  W d|t _|t _X dS )z\
    context manager that temporarily masks the test runner's values for stdin and argv
    N)sysstdinargvr	   r   r   r
   buffer)
stdin_dataZ	argv_dataZ
real_stdinZ	real_argvfake_stream r   e/home/dcms/DCMS/lib/python3.7/site-packages/ansible_collections/cisco/nxos/tests/unit/mock/procenv.pyswap_stdin_and_argv"   s    
r   c              c   s6   t j} trt }nt }z|t _|V  W d| t _X dS )z_
    context manager that temporarily replaces stdout for tests that need to verify output
    N)r   stdoutr	   r   r   )Z
old_stdoutr   r   r   r   swap_stdout:   s    
r   c               @   s   e Zd ZdddZdd ZdS )ModuleTestCaseNc             C   s<   |d krddd}t t|d}t|d| _| j  d S )Nz/tmpF)Z_ansible_remote_tmpZ_ansible_keep_remote_files)ZANSIBLE_MODULE_ARGS)r   )jsondumpsdictr   
stdin_swap	__enter__)selfZmodule_argsargsr   r   r   setUpO   s    zModuleTestCase.setUpc             C   s   | j d d d  d S )N)r   __exit__)r   r   r   r   tearDown\   s    zModuleTestCase.tearDown)N)__name__
__module____qualname__r   r!   r   r   r   r   r   N   s   
r   )
__future__r   r   r   type__metaclass__r   r   
contextlibr   ior   r   Z0ansible_collections.cisco.nxos.tests.unit.compatr   Zansible.module_utils.sixr	   Zansible.module_utils._textr
   tupler   r   ZTestCaser   r   r   r   r   <module>   s   