
    7j                        d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	  ej                  ddedd	       ej                  d
dddg d       ej                  ddddd       ej                  ddddd       ej                  ddddg d       ej                  dej                  j                  j                  rdnd      d                                           Zy)    N)DEVNULL)cli)	find_makeget_make_parallel_argsbuild_environmentz-jz
--parallel   z8Set the number of parallel make jobs; 0 means unlimited.)typedefaulthelpz-ez--envTappendzBSet a variable to be passed to make. May be passed multiple times.)arg_onlyactionr
   r   z-cz--clean
store_truez%Remove object files before compiling.)r   r   r   z-lz--listzList available tests.z-tz--testz[Test to run from the available list. Supports wildcard globs. May be passed multiple times.zQMK C Unit Tests.F)hiddenc                 b    | j                   t               ddg      }t        |j                  j	                         j                               }| j                  j                  rt        dj                  |            S t               }| j                  j                  D ]L  }t        j                  t        j                  |            }|t        t!        |j"                  |            z  }N |t        |      z
  D ]   }| j$                  j'                  d|        " t        t)        d |xs dg            }| j                  j*                  r|j-                  dd       t/        | j                  j0                        j3                         D ]  \  }}	|j5                  | d	|	         t               gt7        | j8                  j:                  j<                        |}
| j$                  j?                  d
dj                  |
              | j                   |
dt@              jB                  S )zRun native unit tests.
    z
list-testszSILENT=true
zInvalid test provided: c                     d|  S )Nztest: )xs    G/home/hanthebot/chat/keyboard/qmk_firmware/lib/python/qmk/cli/test/c.py<lambda>ztest_c.<locals>.<lambda>#   s    5     allr   clean=z Compiling tests with {fg_cyan}%s F)capture_outputstdin)"runr   sortedstdoutstripsplitargslistprintjoinsettestrecompilefnmatch	translatefiltermatchlogwarningmapr   insertr   envitemsr   r   configtest_cparallelinfor   
returncode)r   
list_testsavailable_testsfiltered_testsr)   regexinvalidtargetskeyvaluecommands              r   r7   r7   
   s    )+|]CDJZ..446<<>?O
xx}}TYY/00 UN D

7,,T23#fU[[/BCCD "C$88 =1';<= 3,n.GHIG
xx~~q'" (5;;= )
U#aw'() {Z3CJJ4E4E4N4NOZRYZGGGLL3SXXg5FG37775@KKKr   )r,   r*   
subprocessr   milcr   qmk.commandsr   r   r   argumentint
subcommandr6   user	developerr7   r   r   r   <module>rL      s     	   M M dLsA<vwdGd8R  OS  TdI\HopdHtLG^_dHtHb  Pm  n#SZZ__5N5NETXYL Z n ` q T xLr   