
    i	                        d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
mZ ddlZddlZddlmZmZ ddlmZ  ej                    dd
            Z G d d          Z G d d          ZdS )zTests for Agent config loader.    )annotationsN)Path)load_agent_configload_agents)AgentConfigtmp_pathr   returnc                    dddd}| dz  }|                     t          j        |          d           dd	d
d}| dz  }|                     t          j        |          d           | S )z6Create a temporary agents directory with test configs.test_architectSoftware ArchitectzYou are an architect.)namerolesystem_prompttest_architect.jsonutf-8encodingtest_devopsDevOps EngineerzYou are a DevOps engineer.test_devops.yaml)
write_textjsondumpsyamldump)r   
agent_data	json_path	yaml_data	yaml_paths        ?/root/projects/multi-agents-meeting/tests/test_config_loader.py
agents_dirr!      s     !$0 J
 00IJ//'BBB !5 I
 --I9--@@@O    c                  2    e Zd ZdZddZddZdd	Zdd
ZdS )TestLoadAgentConfigz%Tests for load_agent_config function.r!   r   r	   Nonec                .   t          |dz            }|j        }d}||k    }|st          j        d|fd||f          dt	          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}|j
        }d	}||k    }|st          j        d|fd
||f          dt	          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}d S )Nr   r   ==z,%(py2)s
{%(py2)s = %(py0)s.name
} == %(py5)sconfigpy0py2py5assert %(py7)spy7r   z,%(py2)s
{%(py2)s = %(py0)s.role
} == %(py5)sr   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr   selfr!   r*   @py_assert1@py_assert4@py_assert3@py_format6@py_format8s           r    test_load_json_configz)TestLoadAgentConfig.test_load_json_config(   s   ":0E#EFF{...{...........{.............v.....v......{................................{222{22222222222{2222222222222v22222v222222{2222222222222222222222222222222222r"   c                .   t          |dz            }|j        }d}||k    }|st          j        d|fd||f          dt	          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}|j
        }d	}||k    }|st          j        d|fd
||f          dt	          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}d S )Nr   r   r'   r)   r*   r+   r/   r0   r   r1   r2   r;   s           r    test_load_yaml_configz)TestLoadAgentConfig.test_load_yaml_config-   s   ":0B#BCC{+m+{m++++++++++{m++++++++++++v+++++v++++++{++++m+++++++++++++++++++++++++++{///{///////////{/////////////v/////v//////{//////////////////////////////////r"   r   c                    t          j        t                    5  t          |dz             d d d            d S # 1 swxY w Y   d S )Nznonexistent.json)pytestraisesFileNotFoundErrorr   )r<   r   s     r    !test_load_nonexistent_file_raisesz5TestLoadAgentConfig.test_load_nonexistent_file_raises2   s    ],-- 	= 	=h);;<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   :>>c                    |dz  }|                     dd           t          j        t          d          5  t	          |           d d d            d S # 1 swxY w Y   d S )Nz	agent.txtz{}r   r   zUnsupported file formatmatch)r   rF   rG   
ValueErrorr   )r<   r   bad_files      r    &test_load_unsupported_extension_raisesz:TestLoadAgentConfig.test_load_unsupported_extension_raises6   s    k)D7333]:-FGGG 	( 	(h'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   AAANr!   r   r	   r%   )r   r   r	   r%   )__name__
__module____qualname____doc__rB   rD   rI   rO    r"   r    r$   r$   %   sj        //3 3 3 3
0 0 0 0
= = = =( ( ( ( ( (r"   r$   c                  "    e Zd ZdZd	dZd	dZdS )
TestLoadAgentszTests for load_agents function.r!   r   r	   r%   c                   t          ddg|          }d}||v }|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |          rt          j        |          nddz  }dd	|iz  }t          t          j        |                    d x}}d}||v }|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |          rt          j        |          nddz  }dd	|iz  }t          t          j        |                    d x}}|d         }t          |t                    }|sd
dt	          j                    v st          j        t                    rt          j        t                    ndt          j        |          dt	          j                    v st          j        t                    rt          j        t                    ndt          j        |          dz  }t          t          j        |                    d x}}d S )Nr   r   r!   )in)z%(py1)s in %(py3)sagents)py1py3zassert %(py5)sr.   z5assert %(py5)s
{%(py5)s = %(py0)s(%(py2)s, %(py3)s)
}
isinstancer   )r,   r-   r]   r.   )r   r3   r4   r8   r5   r6   r7   r9   r:   r^   r   )	r<   r!   r[   @py_assert0@py_assert2@py_format4r@   r=   r>   s	            r    test_load_multiple_agentsz(TestLoadAgents.test_load_multiple_agents@   s   .>:VVV)6))))))))))6))))))))))))))))6)))))6)))))))))))))))))))))))))))&}&&&&&&&&&&}&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& !12@z2K@@@@@@@@@@@@@@@z@@@@@z@@@@@@2@@@@@@@@@@@K@@@@@K@@@@@@@@@@@@@@@@@@@@@@@@@@@@r"   c                    t          j        t          d          5  t          dg|           d d d            d S # 1 swxY w Y   d S )Nnot_hererK   rY   )rF   rG   rH   r   )r<   r!   s     r    test_load_missing_agent_raisesz-TestLoadAgents.test_load_missing_agent_raisesF   s    ],J??? 	= 	=<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   <A A NrP   )rQ   rR   rS   rT   rb   re   rU   r"   r    rW   rW   =   sF        ))A A A A= = = = = =r"   rW   )r   r   r	   r   )rT   
__future__r   builtinsr5   _pytest.assertion.rewrite	assertionrewriter3   r   pathlibr   rF   r   src.config_loaderr   r   
src.modelsr   fixturer!   r$   rW   rU   r"   r    <module>ro      s   $ $ " " " " " "                       < < < < < < < < " " " " " "    *( ( ( ( ( ( ( (0= = = = = = = = = =r"   