+
    üÐj]2  ã                   óf  € R t ^ RIt^ RIHt ^ RIHtHt ^ RIH	t	H
t
Ht ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIHt ^ R	IHt ^R
IHt ^RIHtHtHtHtHtHtHt R R lt ! R R]P@                  PB                  PD                  4      t# ! R R]P@                  PB                  PD                  4      t$R# )z3
Tests for L{twisted.application.runner._pidfile}.
N©Úwraps)ÚgetpidÚname)ÚAnyÚCallableÚOptional)ÚverifyObject)ÚNoReturn)ÚFilePath)Úplatform)ÚSkipTest)Ú_pidfile)ÚAlreadyRunningErrorÚInvalidPIDFileErrorÚIPIDFileÚNonePIDFileÚ
NoPIDFoundÚPIDFileÚStalePIDFileErrorc                ód   € V ^8„  d   QhR\         R\        3,          R\         R\        3,          /# )é   Úf.Úreturn)r   r   )Úformats   "ÚN/usr/lib/python3/dist-packages/twisted/application/runner/test/test_pidfile.pyÚ__annotate__r   !   s,   € ÷ #ñ #œ8 C¬ HÕ-ð #´(¸3Ä¸8Õ2Dñ #ó    c                ó6   a € \        S 4      R V 3R ll4       pV# )a  
Decorator for tests that are not expected to work on all platforms.

Calling L{PIDFile.isRunning} currently raises L{NotImplementedError} on
non-POSIX platforms.

On an unsupported platform, we expect to see any test that calls
L{PIDFile.isRunning} to raise either L{NotImplementedError}, L{SkipTest},
or C{self.failureException}.
(C{self.failureException} may occur in a test that checks for a specific
exception but it gets NotImplementedError instead.)

@param f: The test method to decorate.

@return: The wrapped callable.
c                óH   € V ^8„  d   QhR\         R\         R\         R\         /# )r   ÚselfÚargsÚkwargsr   )r   )r   s   "r   r   Ú)ifPlatformSupported.<locals>.__annotate__4   s.   € ÷ Wñ W”cð W¤#ð W´ð W¼ñ Wr   c                 ó<  <€ \         P                  ! 4       R 8H  pV'       d   S! V .VO5/ VB # V P                  ! \        \        V P
                  3SV .VO5/ VB p\        V\        4      '       d,   V P                  \        V4      P                  R4      4       R# R# )Úposixz isRunning is not implemented on N)
r   ÚgetTypeÚassertRaisesÚNotImplementedErrorr   ÚfailureExceptionÚ
isinstanceÚ
assertTrueÚstrÚ
startswith)r    r!   r"   Ú	supportedÚer   s   &*,  €r   ÚwrapperÚ$ifPlatformSupported.<locals>.wrapper3   s™   ø€ ä×$Ò$Ó&¨'Ñ1ˆ	çÙ�TÐ+˜DÒ+ FÑ+Ð+à×!Ò!Ü$¤h°×0EÑ0EÐFØØðð ò	ð
 ñˆAô ˜!Ô0×1Ò1Ø—‘¤ A£× 1Ñ 1Ð2TÓ UÖVñ 2r   r   )r   r0   s   f r   ÚifPlatformSupportedr2   !   s$   ø€ ô$ ˆ1ƒX÷Wó ðWð  €Nr   c                   ó  a € ] tR t^Gt o RtR0V 3R lR lltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR lt]V 3R lR l4       t]V 3R lR l4       t]V 3R lR  l4       t]V 3R! lR" l4       t]V 3R# lR$ l4       t]V 3R% lR& l4       tV 3R' lR( ltV 3R) lR* lt]V 3R+ lR, l4       t]V 3R- lR. l4       tR/tV tR# )1ÚPIDFileTestsz
Tests for L{PIDFile}.
Nc                óF   <€ V ^8„  d   QhRS[ S[,          RS[S[,          /# )r   Úcontentr   )r   Úbytesr   r,   )r   Ú__classdict__s   "€r   r   ÚPIDFileTests.__annotate__L   s#   ø€ ÷ ñ ¡©¥ð ¹8ÁC½=ñ r   c                ób   € \        V P                  4       4      pVe   VP                  V4       V# ©N)r   ÚmktempÚ
setContent)r    r6   ÚfilePaths   && r   r>   ÚPIDFileTests.filePathL   s+   € Ü˜DŸK™K›MÓ*ˆØÒØ×Ñ Ô(Øˆr   c                ó   <€ V ^8„  d   QhRR/# ©r   r   N© )r   r8   s   "€r   r   r9   R   ó   ø€ ÷ (ñ ( ñ (r   c                óX   € \        V P                  4       4      p\        \        V4       R# )z%
L{PIDFile} conforms to L{IPIDFile}.
N)r   r>   r	   r   ©r    ÚpidFiles   & r   Útest_interfaceÚPIDFileTests.test_interfaceR   s   € ô ˜$Ÿ-™-›/Ó*ˆÜ”X˜wÖ'r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   Y   s   ø€ ÷ ?ñ ? Dñ ?r   c                óT   € V P                  \        P                  ! RR7      R4       R# )zB
L{PIDFile._format} returns the expected format when given a PID.
é9  ©Úpids   1337
N)ÚassertEqualr   Ú_format)r    s   &r   Útest_formatWithPIDÚPIDFileTests.test_formatWithPIDY   s   € ð 	×ÑœŸš¨TÔ2°IÖ>r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   _   s   ø€ ÷ .ñ . $ñ .r   c                ó¦   € Rp\        V P                  \         P                  ! VR7      4      4      pV P                  WP	                  4       4       R# )z;
L{PIDFile.read} returns the PID from the given file path.
rK   rL   N)r   r>   rO   rN   Úread©r    rM   rF   s   &  r   Útest_readWithPIDÚPIDFileTests.test_readWithPID_   s9   € ð ˆä˜$Ÿ-™-¬¯ª¸CÔ(@ÓAÓBˆà×Ñ˜Ÿl™l›nÖ-r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   i   s   ø€ ÷ 	Uñ 	U 4ñ 	Ur   c                ó¼   € Rp\        V P                  R4      4      pV P                  \        VP                  4      pV P                  \        V4      RV: 24       R# )úN
L{PIDFile.read} raises L{InvalidPIDFileError} when given an empty file
path.
r   ú#non-integer PID value in PID file: N©r   r>   r'   r   rT   rN   r,   ©r    ÚpidValuerF   r/   s   &   r   Útest_readEmptyPIDÚPIDFileTests.test_readEmptyPIDi   sO   € ð
 ˆÜ˜$Ÿ-™-¨Ó,Ó-ˆà×ÑÔ1°7·<±<Ó@ˆØ×Ñœ˜Q›Ð#FÀxÁlÐ!SÖTr   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   t   s   ø€ ÷ 	Uñ 	U tñ 	Ur   c                ó¼   € Rp\        V P                  V4      4      pV P                  \        VP                  4      pV P                  \        V4      RV: 24       R# )rZ   s   $foo!r[   Nr\   r]   s   &   r   Útest_readWithBogusPIDÚ"PIDFileTests.test_readWithBogusPIDt   sO   € ð
 ˆÜ˜$Ÿ-™-¨Ó1Ó2ˆà×ÑÔ1°7·<±<Ó@ˆØ×Ñœ˜Q›Ð#FÀxÁlÐ!SÖTr   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9      s   ø€ ÷ <ñ < dñ <r   c                ó®   € \        V P                  4       4      pV P                  \        VP                  4      pV P                  \        V4      R4       R# )zK
L{PIDFile.read} raises L{NoPIDFound} when given a non-existing file
path.
úPID file does not existN)r   r>   r'   r   rT   rN   r,   ©r    rF   r/   s   &  r   Útest_readDoesntExistÚ!PIDFileTests.test_readDoesntExist   s?   € ô
 ˜$Ÿ-™-›/Ó*ˆà×Ñœj¨'¯,©,Ó7ˆØ×Ñœ˜Q›Ð!:Ö;r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   ‰   s   ø€ ÷ 1ñ 1°Tñ 1r   c                ó
  € RR R llpV P                  \        RV4       \        V P                  4       4      pV P	                  \
        VP                  4      pV P                  VP                  \        P                  4       R# )zi
L{PIDFile.read} re-raises L{OSError} if the associated C{errno} is
anything other than L{errno.ENOENT}.
c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úmoder   )r,   r
   )r   s   "r   r   ÚFPIDFileTests.test_readOpenRaisesOSErrorNotENOENT.<locals>.__annotate__�   s   € ÷ 	2ñ 	2”sð 	2¤Xñ 	2r   c                 ó6   € \        \        P                  R 4      h)z	I/O error)ÚOSErrorÚerrnoÚEIO)rn   s   &r   ÚoopsÚ>PIDFileTests.test_readOpenRaisesOSErrorNotENOENT.<locals>.oops�   s   € Üœ%Ÿ)™) [Ó1Ð1r   ÚopenN)Úr)
Úpatchr   r   r>   r'   rq   rT   rN   rr   rs   )r    rt   rF   Úerrors   &   r   Ú#test_readOpenRaisesOSErrorNotENOENTÚ0PIDFileTests.test_readOpenRaisesOSErrorNotENOENT‰   sW   € ÷	2ð 	�
‰
”8˜V TÔ*ä˜$Ÿ-™-›/Ó*ˆà×!Ñ!¤'¨7¯<©<Ó8ˆØ×Ñ˜Ÿ™¤e§i¡iÖ0r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   ™   s   ø€ ÷ 	.ñ 	.˜tñ 	.r   c                óž   € Rp\        V P                  4       4      pVP                  V4       V P                  VP	                  4       V4       R# )z)
L{PIDFile._write} stores the given PID.
iË  N)r   r>   Ú_writerN   rT   rU   s   &  r   Útest_writePIDÚPIDFileTests.test_writePID™   s;   € ð ˆä˜$Ÿ-™-›/Ó*ˆØ�‰�sÔà×Ñ˜Ÿ™›¨Ö-r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   ¤   s   ø€ ÷ >ñ > dñ >r   c                óz   € \        V P                  4       4      pV P                  \        VP                  R4       R# )zC
L{PIDFile._write} raises L{ValueError} when given an invalid PID.
ÚburpN)r   r>   r'   Ú
ValueErrorr~   rE   s   & r   Útest_writePIDInvalidÚ!PIDFileTests.test_writePIDInvalid¤   s*   € ô ˜$Ÿ-™-›/Ó*ˆà×Ñœ* g§n¡n°fÖ=r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   ¬   s   ø€ ÷ 3ñ 3 dñ 3r   c                ó¨   € \        V P                  4       4      pVP                  4        V P                  VP	                  4       \        4       4       R# )zD
L{PIDFile.writeRunningPID} stores the PID for the current process.
N)r   r>   ÚwriteRunningPIDrN   rT   r   rE   s   & r   Útest_writeRunningPIDÚ!PIDFileTests.test_writeRunningPID¬   s8   € ô ˜$Ÿ-™-›/Ó*ˆØ×ÑÔ!à×Ñ˜Ÿ™›¬«Ö2r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   µ   s   ø€ ÷ 4ñ 4˜Tñ 4r   c                óþ   € \        V P                  R4      4      pV P                  VP                  P                  4       4       VP	                  4        V P                  VP                  P                  4       4       R# )z)
L{PIDFile.remove} removes the PID file.
r   N)r   r>   r+   ÚexistsÚremoveÚassertFalserE   s   & r   Útest_removeÚPIDFileTests.test_removeµ   sY   € ô ˜$Ÿ-™-¨Ó,Ó-ˆØ�‰˜×(Ñ(×/Ñ/Ó1Ô2à�‰ÔØ×Ñ˜×)Ñ)×0Ñ0Ó2Ö3r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   À   s   ø€ ÷ -ñ -¨ñ -r   c                óÒ   € \        V P                  4       4      pVP                  R4       R R lpV P                  \        RV4       V P                  VP                  4       4       R# )zB
L{PIDFile.isRunning} returns true for a process that does exist.
rK   c                ó4   € V ^8„  d   QhR\         R\         RR/# ©r   rM   Úsignalr   N©Úint)r   s   "r   r   Ú:PIDFileTests.test_isRunningDoesExist.<locals>.__annotate__Ç   ó!   € ÷ 	ñ 	”cð 	¤3ð 	¨4ñ 	r   c                 ó   € R # r;   rB   ©rM   r—   s   &&r   ÚkillÚ2PIDFileTests.test_isRunningDoesExist.<locals>.killÇ   ó   € Ùr   rž   N©r   r>   r~   rx   r   r+   Ú	isRunning©r    rF   rž   s   &  r   Útest_isRunningDoesExistÚ$PIDFileTests.test_isRunningDoesExist¿   sL   € ô
 ˜$Ÿ-™-›/Ó*ˆØ�‰�tÔõ	ð 	�
‰
”8˜V TÔ*à�‰˜×)Ñ)Ó+Ö,r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   Ï   s   ø€ ÷ -ñ - Dñ -r   c                ó–   € \        V P                  4       4      pVP                  4        V P                  VP	                  4       4       R# )a  
L{PIDFile.isRunning} returns true for this process (which is running).

@note: This differs from L{PIDFileTests.test_isRunningDoesExist} in
that it actually invokes the C{kill} system call, which is useful for
testing of our chosen method for probing the existence of a process.
N)r   r>   r‰   r+   r¢   rE   s   & r   Útest_isRunningThisÚPIDFileTests.test_isRunningThisÎ   s5   € ô ˜$Ÿ-™-›/Ó*ˆØ×ÑÔ!à�‰˜×)Ñ)Ó+Ö,r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   Ý   s   ø€ ÷ @ñ @¨Dñ @r   c                óÔ   € \        V P                  4       4      pVP                  R4       R R lpV P                  \        RV4       V P                  \        VP                  4       R# )zc
L{PIDFile.isRunning} raises L{StalePIDFileError} for a process that
does not exist (errno=ESRCH).
rK   c                ó4   € V ^8„  d   QhR\         R\         RR/# r–   r˜   )r   s   "r   r   Ú=PIDFileTests.test_isRunningDoesNotExist.<locals>.__annotate__å   ó!   € ÷ 	:ñ 	:”cð 	:¤3ð 	:¨4ñ 	:r   c                 ó6   € \        \        P                  R 4      h©zNo such process©rq   rr   ÚESRCHr�   s   &&r   rž   Ú5PIDFileTests.test_isRunningDoesNotExist.<locals>.killå   ó   € Üœ%Ÿ+™+Ð'8Ó9Ð9r   rž   N)r   r>   r~   rx   r   r'   r   r¢   r£   s   &  r   Útest_isRunningDoesNotExistÚ'PIDFileTests.test_isRunningDoesNotExistÜ   sN   € ô ˜$Ÿ-™-›/Ó*ˆØ�‰�tÔõ	:ð 	�
‰
”8˜V TÔ*à×ÑÔ+¨W×->Ñ->Ö?r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   í   s   ø€ ÷ -ñ -¨$ñ -r   c                óÒ   € \        V P                  4       4      pVP                  R4       R R lpV P                  \        RV4       V P                  VP                  4       4       R# )z`
L{PIDFile.isRunning} returns true for a process that we are not allowed
to kill (errno=EPERM).
rK   c                ó4   € V ^8„  d   QhR\         R\         RR/# r–   r˜   )r   s   "r   r   Ú;PIDFileTests.test_isRunningNotAllowed.<locals>.__annotate__õ   s&   € ÷ 	Bñ 	B”cð 	B¤3ð 	B¨4ñ 	Br   c                 ó6   € \        \        P                  R 4      h)zOperation not permitted)rq   rr   ÚEPERMr�   s   &&r   rž   Ú3PIDFileTests.test_isRunningNotAllowed.<locals>.killõ   s   € Üœ%Ÿ+™+Ð'@ÓAÐAr   rž   Nr¡   r£   s   &  r   Útest_isRunningNotAllowedÚ%PIDFileTests.test_isRunningNotAllowedì   sM   € ô ˜$Ÿ-™-›/Ó*ˆØ�‰�tÔõ	Bð 	�
‰
”8˜V TÔ*à�‰˜×)Ñ)Ó+Ö,r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   ý   s   ø€ ÷ -ñ - Dñ -r   c                óÄ   € \         R8w  d   \        R4      h\        V P                  4       4      pVP	                  ^4       V P                  VP                  4       4       R# )a  
L{PIDFile.isRunning} returns true for a process that we are not allowed
to kill (errno=EPERM).

@note: This differs from L{PIDFileTests.test_isRunningNotAllowed} in
that it actually invokes the C{kill} system call, which is useful for
testing of our chosen method for probing the existence of a process
that we are not allowed to kill.

@note: In this case, we try killing C{init}, which is process #1 on
POSIX systems, so this test is not portable.  C{init} should always be
running and should not be killable by non-root users.
r%   zThis test assumes POSIXN)ÚSYSTEM_NAMEr   r   r>   r~   r+   r¢   rE   s   & r   Útest_isRunningInitÚPIDFileTests.test_isRunningInitü   sI   € ô ˜'Ô!ÜÐ4Ó5Ð5ä˜$Ÿ-™-›/Ó*ˆØ�‰�qÔà�‰˜×)Ñ)Ó+Ö,r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9     s   ø€ ÷ 6ñ 6¨Dñ 6r   c                óÒ   € \        V P                  4       4      pVP                  4        R R lpV P                  \        RV4       V P                  \        VP                  4       R# )zr
L{PIDFile.isRunning} re-raises L{OSError} if the attached C{errno}
value from L{os.kill} is not an expected one.
c                ó4   € V ^8„  d   QhR\         R\         RR/# r–   r˜   )r   s   "r   r   Ú=PIDFileTests.test_isRunningUnknownErrno.<locals>.__annotate__  s!   € ÷ 	7ñ 	7”cð 	7¤3ð 	7¨4ñ 	7r   c                 ó6   € \        \        P                  R 4      h)zFile exists)rq   rr   ÚEEXISTr�   s   &&r   rž   Ú5PIDFileTests.test_isRunningUnknownErrno.<locals>.kill  s   € Üœ%Ÿ,™,¨Ó6Ð6r   rž   N)r   r>   r‰   rx   r   r'   rq   r¢   r£   s   &  r   Útest_isRunningUnknownErrnoÚ'PIDFileTests.test_isRunningUnknownErrno  sM   € ô ˜$Ÿ-™-›/Ó*ˆØ×ÑÔ!õ	7ð 	�
‰
”8˜V TÔ*à×Ñœ' 7×#4Ñ#4Ö5r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   #  s   ø€ ÷ .ñ .¨ñ .r   c                óv   € \        V P                  4       4      pV P                  VP                  4       4       R# )zC
L{PIDFile.isRunning} returns false if the PID file doesn't exist.
N)r   r>   r�   r¢   rE   s   & r   Útest_isRunningNoPIDFileÚ$PIDFileTests.test_isRunningNoPIDFile#  s+   € ô ˜$Ÿ-™-›/Ó*ˆà×Ñ˜×*Ñ*Ó,Ö-r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   +  s   ø€ ÷ 4ñ 4 Tñ 4r   c                óÊ  € \        V P                  4       4      pV P                  VP                  P                  4       4       V;_uu_ 4        V P	                  VP                  P                  4       4       V P                  VP                  4       \        4       4       RRR4       V P                  VP                  P                  4       4       R#   + '       g   i     L;; i)zv
When used as a context manager, a L{PIDFile} will store the current pid
on entry, then removes the PID file on exit.
N)r   r>   r�   rŽ   r+   rN   rT   r   rE   s   & r   Útest_contextManagerÚ PIDFileTests.test_contextManager+  s•   € ô
 ˜$Ÿ-™-›/Ó*ˆØ×Ñ˜×)Ñ)×0Ñ0Ó2Ô3çŠWØ�O‰O˜G×,Ñ,×3Ñ3Ó5Ô6Ø×Ñ˜WŸ\™\›^¬V«XÔ6÷ ð 	×Ñ˜×)Ñ)×0Ñ0Ó2Ö3÷	 �Wús   ÁACÃC"	c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   :  s   ø€ ÷ 7ñ 7°ñ 7r   c                ó¨  € \        V P                  4       4      pVP                  R4       R R lpV P                  \        RV4       V P                  \        VP                  4      pV P                  \        V4      R4       V;_uu_ 4        V P                  VP                  4       \        4       4       RRR4       R#   + '       g   i     R# ; i)z¿
When used as a context manager, a L{PIDFile} will replace the
underlying PIDFile rather than raising L{AlreadyRunningError} if the
contained PID file exists but refers to a non-running PID.
rK   c                ó4   € V ^8„  d   QhR\         R\         RR/# r–   r˜   )r   s   "r   r   ÚAPIDFileTests.test_contextManagerDoesntExist.<locals>.__annotate__C  r®   r   c                 ó6   € \        \        P                  R 4      hr°   r±   r�   s   &&r   rž   Ú9PIDFileTests.test_contextManagerDoesntExist.<locals>.killC  r´   r   rž   z'PID file refers to non-existing processN)r   r>   r~   rx   r   r'   r   r¢   rN   r,   rT   r   )r    rF   rž   r/   s   &   r   Útest_contextManagerDoesntExistÚ+PIDFileTests.test_contextManagerDoesntExist9  sŽ   € ô ˜$Ÿ-™-›/Ó*ˆØ�‰�tÔõ	:ð 	�
‰
”8˜V TÔ*à×ÑÔ/°×1BÑ1BÓCˆØ×Ñœ˜Q›Ð!JÔKçŠWØ×Ñ˜WŸ\™\›^¬V«XÔ6÷ �W�WŠWús   Â)C Ã C	c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   r9   O  s   ø€ ÷ Bñ B°4ñ Br   c                ó  € \        V P                  4       4      pVP                  R4       R R lpV P                  \        RV4       V P                  VP                  4       4       V P                  \        VP                  4       R# )z’
When used as a context manager, a L{PIDFile} will raise
L{AlreadyRunningError} if the there is already a running process with
the contained PID.
rK   c                ó4   € V ^8„  d   QhR\         R\         RR/# r–   r˜   )r   s   "r   r   ÚDPIDFileTests.test_contextManagerAlreadyRunning.<locals>.__annotate__X  r›   r   c                 ó   € R # r;   rB   r�   s   &&r   rž   Ú<PIDFileTests.test_contextManagerAlreadyRunning.<locals>.killX  r    r   rž   N)
r   r>   r~   rx   r   r+   r¢   r'   r   Ú	__enter__r£   s   &  r   Ú!test_contextManagerAlreadyRunningÚ.PIDFileTests.test_contextManagerAlreadyRunningN  sc   € ô ˜$Ÿ-™-›/Ó*ˆØ�‰�tÔõ	ð 	�
‰
”8˜V TÔ*à�‰˜×)Ñ)Ó+Ô,à×ÑÔ-¨w×/@Ñ/@ÖAr   rB   r;   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r>   rG   rP   rV   r_   rc   ri   rz   r   r…   rŠ   r‘   r2   r¤   r¨   rµ   r¾   rÃ   rÌ   rÐ   rÔ   rÜ   rå   Ú__static_attributes__Ú__classdictcell__©r8   s   @r   r4   r4   G   s>  ø‡ € ñ÷ò ÷(ð (÷?ð ?÷.ð .÷	Uð 	U÷	Uð 	U÷<ð <÷1ð 1÷ 	.ð 	.÷>ð >÷3ð 3÷4ð 4ð ÷-ó ð-ð ÷-ó ð-ð ÷@ó ð@ð ÷-ó ð-ð ÷-ó ð-ð, ÷6ó ð6÷.ð .÷4ð 4ð ÷7ó ð7ð( ÷Bó öBr   r4   c                   ó¢   a € ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	V 3R lR lt
V 3R lR ltRtV tR# )ÚNonePIDFileTestsib  z
Tests for L{NonePIDFile}.
c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   ÚNonePIDFileTests.__annotate__g  rC   r   c                ó:   € \        4       p\        \        V4       R# )z)
L{NonePIDFile} conforms to L{IPIDFile}.
N)r   r	   r   rE   s   & r   rG   ÚNonePIDFileTests.test_interfaceg  s   € ô “-ˆÜ”X˜wÖ'r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   rò   n  s   ø€ ÷ <ñ <˜4ñ <r   c                ó�   € \        4       pV P                  \        VP                  4      pV P	                  \        V4      R4       R# )z+
L{NonePIDFile.read} raises L{NoPIDFound}.
rg   N)r   r'   r   rT   rN   r,   rh   s   &  r   Ú	test_readÚNonePIDFileTests.test_readn  s6   € ô “-ˆà×Ñœj¨'¯,©,Ó7ˆØ×Ñœ˜Q›Ð!:Ö;r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   rò   w  s   ø€ ÷ 3ñ 3˜Dñ 3r   c                ó°   € \        4       pV P                  \        VP                  ^ 4      pV P	                  VP
                  \
        P                  4       R# )zJ
L{NonePIDFile._write} raises L{OSError} with an errno of L{errno.EPERM}.
N)r   r'   rq   r~   rN   rr   r¼   ©r    rF   ry   s   &  r   Ú
test_writeÚNonePIDFileTests.test_writew  s;   € ô “-ˆà×!Ñ!¤'¨7¯>©>¸1Ó=ˆØ×Ñ˜Ÿ™¤e§k¡kÖ2r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   rò   €  s   ø€ ÷ 3ñ 3 dñ 3r   c                ó®   € \        4       pV P                  \        VP                  4      pV P	                  VP
                  \
        P                  4       R# )zS
L{NonePIDFile.writeRunningPID} raises L{OSError} with an errno of
L{errno.EPERM}.
N)r   r'   rq   r‰   rN   rr   r¼   rû   s   &  r   rŠ   Ú%NonePIDFileTests.test_writeRunningPID€  s;   € ô
 “-ˆà×!Ñ!¤'¨7×+BÑ+BÓCˆØ×Ñ˜Ÿ™¤e§k¡kÖ2r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   rò   Š  s   ø€ ÷ 4ñ 4˜Tñ 4r   c                ó®   € \        4       pV P                  \        VP                  4      pV P	                  VP
                  \
        P                  4       R# )zJ
L{NonePIDFile.remove} raises L{OSError} with an errno of L{errno.EPERM}.
N)r   r'   rq   r�   rN   rr   ÚENOENTrû   s   &  r   r‘   ÚNonePIDFileTests.test_removeŠ  s9   € ô “-ˆà×!Ñ!¤'¨7¯>©>Ó:ˆØ×Ñ˜Ÿ™¤e§l¡lÖ3r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   rò   “  s   ø€ ÷ 5ñ 5 ñ 5r   c                óZ   € \        4       pV P                  VP                  4       R4       R# )z,
L{NonePIDFile.isRunning} returns L{False}.
FN)r   rN   r¢   rE   s   & r   Útest_isRunningÚNonePIDFileTests.test_isRunning“  s$   € ô “-ˆà×Ñ˜×*Ñ*Ó,¨eÖ4r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   r8   s   "€r   r   rò   ›  s   ø€ ÷ ñ  Tñ r   c                ój   € \        4       pV;_uu_ 4         RRR4       R#   + '       g   i     R# ; i)zW
When used as a context manager, a L{NonePIDFile} doesn't raise, despite
not existing.
N)r   rE   s   & r   rÔ   Ú$NonePIDFileTests.test_contextManager›  s   € ô
 “-ˆçŠWØ÷ �W�WŠWús   •!¡2	rB   N)rç   rè   ré   rê   rë   rG   r÷   rü   rŠ   r‘   r  rÔ   rì   rí   rî   s   @r   rð   rð   b  sP   ø‡ € ñ÷(ð (÷<ð <÷3ð 3÷3ð 3÷4ð 4÷5ð 5÷ö r   rð   )%rë   rr   Ú	functoolsr   Úosr   r   rÂ   Útypingr   r   r   Úzope.interface.verifyr	   r
   Útwisted.trial.unittestÚtwistedÚtwisted.python.filepathr   Útwisted.python.runtimer   r   Úrunnerr   r   r   r   r   r   r   r   r2   ÚtrialÚunittestÚTestCaser4   rð   rB   r   r   Ú<module>r     s„   ðñó Ý ß *ß *Ñ *å .å ã Ý ,Ý +Ý +Ý ÷÷ ñ õ#ôLXB�7—=‘=×)Ñ)×2Ñ2ô XBôvA�w—}‘}×-Ñ-×6Ñ6ö Ar   