Skip to main content
Glama
test_models.cpython-312-pytest-8.4.1.pyc22.5 kB
� ���h����dZddlZddlmcmZddlZddlmZm Z ddl m Z ddl m Z mZmZmZmZmZmZmZmZmZmZmZmZmZGd�d�ZGd�d �ZGd �d �ZGd �d �Zy)z$Unit tests for Pydantic data models.�N)�datetime�UTC)�uuid4)� JobStatus� BackgroundJob� JobSummary� ProcessOutput� ExecuteInput� ExecuteOutput� TailInput� StatusInput� StatusOutput� KillInput� KillOutput� OutputInput� InteractInput� ListOutputc��eZdZdZd�Zy)� TestJobStatuszTests for JobStatus enum.c��tj}d}||k(}|s�tjd|fd||f�dt j �vstj t�rtjt�ndtj|�tj|�d�z}dd|iz}ttj|���dx}x}}tj}d }||k(}|s�tjd|fd ||f�dt j �vstj t�rtjt�ndtj|�tj|�d�z}dd|iz}ttj|���dx}x}}tj}d }||k(}|s�tjd|fd ||f�dt j �vstj t�rtjt�ndtj|�tj|�d�z}dd|iz}ttj|���dx}x}}tj}d }||k(}|s�tjd|fd||f�dt j �vstj t�rtjt�ndtj|�tj|�d�z}dd|iz}ttj|���dx}x}}y)zTest JobStatus enum values.�running��==)z/%(py2)s {%(py2)s = %(py0)s.RUNNING } == %(py5)sr��py0�py2�py5�assert %(py7)s�py7N� completed)z1%(py2)s {%(py2)s = %(py0)s.COMPLETED } == %(py5)s�failed)z.%(py2)s {%(py2)s = %(py0)s.FAILED } == %(py5)s�killed)z.%(py2)s {%(py2)s = %(py0)s.KILLED } == %(py5)s) r�RUNNING� @pytest_ar�_call_reprcompare� @py_builtins�locals�_should_repr_global_name� _saferepr�AssertionError�_format_explanation� COMPLETED�FAILED�KILLED)�self� @py_assert1� @py_assert4� @py_assert3� @py_format6� @py_format8s �O/Users/dylan/Workspace/mcp/servers/mcp-background-job/tests/unit/test_models.py�test_job_status_valuesz$TestJobStatus.test_job_status_valuess���� � �-�I�-� �I�-�-�-�-� �I�-�-�-�-�-�-�y�-�-�-�y�-�-�-� �-�-�-�I�-�-�-�-�-�-�-��"�"�1�k�1�"�k�1�1�1�1�"�k�1�1�1�1�1�1�y�1�1�1�y�1�1�1�"�1�1�1�k�1�1�1�1�1�1�1����+�8�+��8�+�+�+�+��8�+�+�+�+�+�+�y�+�+�+�y�+�+�+��+�+�+�8�+�+�+�+�+�+�+����+�8�+��8�+�+�+�+��8�+�+�+�+�+�+�y�+�+�+�y�+�+�+��+�+�+�8�+�+�+�+�+�+�+�N)�__name__� __module__� __qualname__�__doc__r6�r7r5rrs ��#�,r7rc��eZdZdZd�Zd�Zy)�TestBackgroundJobzTests for BackgroundJob model.c�� �tt��}tjt�}t |dt j|d��}|j}||k(}|s�tjd|fd||f�dtj�vstj|�rtj|�ndtj|�dtj�vstj|�rtj|�ndd�z}d d |iz}ttj |���d x}}|j"}d}||k(}|s�tjd|fd ||f�dtj�vstj|�rtj|�ndtj|�tj|�d �z} dd| iz} ttj | ���d x}x}}|j$}t j} || k(}|s�tjd|fd|| f�dtj�vstj|�rtj|�ndtj|�dtj�vstjt �rtjt �ndtj| �d�z}dd|iz} ttj | ���d x}x}} |j&}||k(}|s�tjd|fd||f�dtj�vstj|�rtj|�ndtj|�dtj�vstj|�rtj|�ndd�z}d d |iz}ttj |���d x}}|j(}d }||u}|s�tjd|fd||f�dtj�vstj|�rtj|�ndtj|�tj|�d �z} dd| iz} ttj | ���d x}x}}|j*}d }||u}|s�tjd|fd||f�dtj�vstj|�rtj|�ndtj|�tj|�d �z} dd| iz} ttj | ���d x}x}}|j,}d}||k(}|s�tjd|fd||f�dtj�vstj|�rtj|�ndtj|�tj|�d �z} dd| iz} ttj | ���d x}x}}y )z'Test creating a BackgroundJob instance.� echo 'hello'��)�job_id�command�status�started�pidr�z.%(py2)s {%(py2)s = %(py0)s.job_id } == %(py4)s�jobrB�rr�py4�assert %(py6)s�py6N�z/%(py2)s {%(py2)s = %(py0)s.command } == %(py5)srrr)zK%(py2)s {%(py2)s = %(py0)s.status } == %(py6)s {%(py6)s = %(py4)s.RUNNING }r�rrrJrL�assert %(py8)s�py8)z/%(py2)s {%(py2)s = %(py0)s.started } == %(py4)srE)�is)z1%(py2)s {%(py2)s = %(py0)s.completed } is %(py5)s)z1%(py2)s {%(py2)s = %(py0)s.exit_code } is %(py5)s)z+%(py2)s {%(py2)s = %(py0)s.pid } == %(py5)s)�strrr�nowrrrr#rBr$r%r&r'r(r)r*r+rCrDrEr � exit_coderF) r/rBrErHr0r2� @py_format5� @py_format7r1r3r4� @py_assert5� @py_format9s r5�test_background_job_creationz.TestBackgroundJob.test_background_job_creation's|���U�W����,�,�s�#����"��$�$���  ���z�z�#�z�V�#�#�#�#�z�V�#�#�#�#�#�#�s�#�#�#�s�#�#�#�z�#�#�#�#�#�#�V�#�#�#�V�#�#�#�#�#�#�#��{�{�,�n�,�{�n�,�,�,�,�{�n�,�,�,�,�,�,�s�,�,�,�s�,�,�,�{�,�,�,�n�,�,�,�,�,�,�,��z�z�.�Y�.�.�.�z�.�.�.�.�.�z�.�.�.�.�.�.�.�s�.�.�.�s�.�.�.�z�.�.�.�.�.�.�Y�.�.�.�Y�.�.�.�.�.�.�.�.�.�.�.��{�{�%�{�g�%�%�%�%�{�g�%�%�%�%�%�%�s�%�%�%�s�%�%�%�{�%�%�%�%�%�%�g�%�%�%�g�%�%�%�%�%�%�%��}�}�$��$�}��$�$�$�$�}��$�$�$�$�$�$�s�$�$�$�s�$�$�$�}�$�$�$��$�$�$�$�$�$�$��}�}�$��$�}��$�$�$�$�}��$�$�$�$�$�$�s�$�$�$�s�$�$�$�}�$�$�$��$�$�$�$�$�$�$��w�w��$��w�$�����w�$�������s����s����w����$�������r7c �~�tt��}tjt�}tjt�}t |dt j||dd��}|j}t j}||k(}|s�tjd|fd||f�dtj�vstj|�rtj|�ndtj|�dtj�vstjt �rtjt �ndtj|�d �z}d d |iz} ttj | ���d x}x}}|j"}||k(}|s�tjd|fd ||f�dtj�vstj|�rtj|�ndtj|�dtj�vstj|�rtj|�ndd�z} dd| iz}ttj |���d x}}|j$}d} || k(}|s�tjd|fd|| f�dtj�vstj|�rtj|�ndtj|�tj| �d�z} dd| iz} ttj | ���d x}x}} y )z(Test BackgroundJob with completion data.r@rrA)rBrCrDrEr rTrFr)zM%(py2)s {%(py2)s = %(py0)s.status } == %(py6)s {%(py6)s = %(py4)s.COMPLETED }rHrrNrOrPN)z1%(py2)s {%(py2)s = %(py0)s.completed } == %(py4)sr rIrKrL)z1%(py2)s {%(py2)s = %(py0)s.exit_code } == %(py5)srrr)rRrrrSrrrr,rDr$r%r&r'r(r)r*r+r rT)r/rBrEr rHr0rWr2rVrXrUr1r3r4s r5�test_background_job_completedz/TestBackgroundJob.test_background_job_completed<s����U�W����,�,�s�#���L�L��%� ���"��&�&����� ���z�z�0�Y�0�0�0�z�0�0�0�0�0�z�0�0�0�0�0�0�0�s�0�0�0�s�0�0�0�z�0�0�0�0�0�0�Y�0�0�0�Y�0�0�0�0�0�0�0�0�0�0�0��}�}�)�}� �)�)�)�)�}� �)�)�)�)�)�)�s�)�)�)�s�)�)�)�}�)�)�)�)�)�)� �)�)�)� �)�)�)�)�)�)�)��}�}�!��!�}��!�!�!�!�}��!�!�!�!�!�!�s�!�!�!�s�!�!�!�}�!�!�!��!�!�!�!�!�!�!r7N)r8r9r:r;rYr[r<r7r5r>r>$s��(��*"r7r>c��eZdZdZd�Zy)�TestProcessOutputzTests for ProcessOutput model.c�>�tdd��}|j}d}||k(}|s�tjd|fd||f�dt j �vstj |�rtj|�ndtj|�tj|�d�z}dd |iz}ttj|���d x}x}}|j}d}||k(}|s�tjd|fd ||f�dt j �vstj |�rtj|�ndtj|�tj|�d�z}dd |iz}ttj|���d x}x}}y ) z%Test creating ProcessOutput instance.z Hello, world!zWarning: something)�stdout�stderrr)z.%(py2)s {%(py2)s = %(py0)s.stdout } == %(py5)s�outputrrrN)z.%(py2)s {%(py2)s = %(py0)s.stderr } == %(py5)s) r r_r$r%r&r'r(r)r*r+r`)r/rar0r1r2r3r4s r5�test_process_output_creationz.TestProcessOutput.test_process_output_creationTs����o�>R�S���}�}�/��/�}��/�/�/�/�}��/�/�/�/�/�/�v�/�/�/�v�/�/�/�}�/�/�/��/�/�/�/�/�/�/��}�}�4� 4�4�}� 4�4�4�4�4�}� 4�4�4�4�4�4�4�v�4�4�4�v�4�4�4�}�4�4�4� 4�4�4�4�4�4�4�4r7N)r8r9r:r;rbr<r7r5r]r]Qs ��(�5r7r]c�4�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z y) �TestToolModelsz#Tests for tool input/output models.c��td��}|j}d}||k(}|s�tjd|fd||f�dt j �vstj |�rtj|�ndtj|�tj|�d�z}dd|iz}ttj|���d x}x}}y ) zTest ExecuteInput model.z echo 'test')rCrrM� execute_inputrrrN) r rCr$r%r&r'r(r)r*r+)r/rfr0r1r2r3r4s r5�test_execute_inputz!TestToolModels.test_execute_input_s~��$�]�;� ��$�$�5� �5�$� �5�5�5�5�$� �5�5�5�5�5�5�}�5�5�5�}�5�5�5�$�5�5�5� �5�5�5�5�5�5�5r7c�$�tt��}t|��}|j}||k(}|s�t j d|fd||f�dt j�vst j|�rt j|�ndt j|�dt j�vst j|�rt j|�ndd�z}dd|iz}tt j|���d x}}y ) zTest ExecuteOutput model.�rBrrG�execute_outputrBrIrKrLN) rRrr rBr$r%r&r'r(r)r*r+)r/rBrjr0r2rUrVs r5�test_execute_outputz"TestToolModels.test_execute_outputds����U�W���&�f�5���$�$�.�$��.�.�.�.�$��.�.�.�.�.�.�~�.�.�.�~�.�.�.�$�.�.�.�.�.�.��.�.�.��.�.�.�.�.�.�.r7c��tt��}t|��}|j}||k(}|s�t j d|fd||f�dt j�vst j|�rt j|�ndt j|�dt j�vst j|�rt j|�ndd�z}dd|iz}tt j|���d x}}|j}d }||k(}|s�t j d|fd ||f�dt j�vst j|�rt j|�ndt j|�t j|�d �z}d d|iz} tt j| ���d x}x}}y )z#Test TailInput model with defaults.rirrG� tail_inputrBrIrKrLN�2�z-%(py2)s {%(py2)s = %(py0)s.lines } == %(py5)srrr) rRrr rBr$r%r&r'r(r)r*r+�lines) r/rBrmr0r2rUrVr1r3r4s r5�test_tail_input_defaultsz'TestToolModels.test_tail_input_defaultsjs ���U�W����f�-� �� � �*� �F�*�*�*�*� �F�*�*�*�*�*�*�z�*�*�*�z�*�*�*� �*�*�*�*�*�*�F�*�*�*�F�*�*�*�*�*�*�*����%�2�%��2�%�%�%�%��2�%�%�%�%�%�%�z�%�%�%�z�%�%�%��%�%�%�2�%�%�%�%�%�%�%r7c���tt��}t|d��}|j}d}||k(}|s�t j d|fd||f�dt j�vst j|�rt j|�ndt j|�t j|�d�z}dd|iz}tt j|���d x}x}}y ) z'Test TailInput model with custom lines.�d�rBrprrormrrrN) rRrr rpr$r%r&r'r(r)r*r+)r/rBrmr0r1r2r3r4s r5�test_tail_input_custom_linesz+TestToolModels.test_tail_input_custom_linesqs����U�W����f�C�8� ����&�3�&��3�&�&�&�&��3�&�&�&�&�&�&�z�&�&�&�z�&�&�&��&�&�&�3�&�&�&�&�&�&�&r7c�J�tt��}t|d��t|d��tjt �5t|d��ddd�tjt �5t|d��ddd�y#1swY�9xYw#1swYyxYw)zTest TailInput validation.�rti�rNi�)rRrr �pytest�raises� ValueError)r/rBs r5�test_tail_input_validationz)TestToolModels.test_tail_input_validationwsr���U�W��� ��q�)���t�,��]�]�:� &� �V�1� -�'��]�]�:� &� �V�4� 0�'� &�'� &��'� &�s�B �6B� B�B"c ��ttt��tjdt j t���ttt��tjdt j t���g}t|��}|j}t|�}d}||k(}|�s tjd|fd||f�dtj�vstj t�rtj"t�ndd tj�vstj |�rtj"|�nd tj"|�tj"|�tj"|�d �z}d d |iz}t%tj&|���d x}x}x}}|jd} | j(}tj}||k(}|s�tjd|fd||f�tj"| �tj"|�dtj�vstj t�rtj"t�ndtj"|�d�z} dd| iz} t%tj&| ���d x} x}x}}|jd} | j(}tj}||k(}|s�tjd|fd||f�tj"| �tj"|�dtj�vstj t�rtj"t�ndtj"|�d�z} dd| iz} t%tj&| ���d x} x}x}}y )zTest ListOutput model.z echo 'test1')rBrDrCrEz echo 'test2')�jobs�r)zJ%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.jobs }) } == %(py8)s�len� list_output)r�py1�py3rrPzassert %(py10)s�py10Nr)zK%(py3)s {%(py3)s = %(py1)s.status } == %(py7)s {%(py7)s = %(py5)s.RUNNING }r)r�r�rrzassert %(py9)s�py9rw)zM%(py3)s {%(py3)s = %(py1)s.status } == %(py7)s {%(py7)s = %(py5)s.COMPLETED })rrRrrr#rrSrr,rr}rr$r%r&r'r(r)r*r+rD) r/� job_summariesr�� @py_assert2r1� @py_assert7� @py_assert6rX� @py_format11� @py_assert0r4� @py_format10s r5�test_list_outputzTestToolModels.test_list_output�sC�� ��5�7�|� �(�(�&� � � �S�)�  � ��5�7�|� �*�*�&� � � �S�)�  �  � �!�m�4� ��#�#�)�s�#�$�)��)�$��)�)�)�)�$��)�)�)�)�)�)�s�)�)�)�s�)�)�)�)�)�)�;�)�)�)�;�)�)�)�#�)�)�)�$�)�)�)��)�)�)�)�)�)�)�����"�>�"�)�)�>�Y�->�->�>�)�->�>�>�>�>�)�->�>�>�>�"�>�>�>�)�>�>�>�>�>�>�Y�>�>�>�Y�>�>�>�->�>�>�>�>�>�>�>�����"�@�"�)�)�@�Y�-@�-@�@�)�-@�@�@�@�@�)�-@�@�@�@�"�@�@�@�)�@�@�@�@�@�@�Y�@�@�@�Y�@�@�@�-@�@�@�@�@�@�@�@r7N) r8r9r:r;rgrkrqrur{r�r<r7r5rdrd\s$��-�6� /� &�'� 1�Ar7rd)r;�builtinsr&�_pytest.assertion.rewrite� assertion�rewriter$rxrr�uuidr�mcp_background_job.modelsrrrr r r r r rrrrrrrr>r]rdr<r7r5�<module>r�sT��*��� �"������$,�,�*"�*"�Z5�5�>A�>Ar7

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dylan-gluck/mcp-background-job'

If you have feedback or need assistance with the MCP directory API, please join our Discord server