M'=V0dZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlmZddlmZddlmZddl mZmZddlZddlZddlmZmZddlmZdd lmZmZmZmZdd l m!Z!e j"d krdd l#m$Z$m%Z%ej&Z'Gd deZ(GddeZ)GddejZ*Gdde*Z+Gdde*Z,GddejZ-Gdde*Z.ddl/Z0Gdde*Z1Gdde*Z2Gdd ejZ3Gd!d"ejZ4Gd#d$ejZ5Gd%d&ejZ6Gd'd(ejZ7Gd)d*Z8Gd+d,ejZ9Gd-d.e jZ:Gd/d0ejZ;Gd1d2ejZ<Gd3d4ejZ=Gd5d6e jZ>Gd7d8ejZ?Gd9d:e jZ@Gd;dejZCe j"d krGd?d@ejZDGdAdBeZEGdCdDejZFdEZGe jHe j"dFkdGGdHdIejZIGdJdKejZJe jHe jKdLkdMGdNdOejZLe jHe j"dFkdPGdQdRejZMGdSdTejZNe jHe j"dFkdPGdUdVejZOePdWkre jQdSdS)XzL Test the :py:class`pyfakefs.fake_filesystem_unittest.TestCase` base class. N)redirect_stdout)StringIO)Path)TestCasemock)fake_filesystem_unittestfake_filesystem)OSType)PatcherPausepatchfs PatchMode)module_with_attributes) ) copy_tree remove_treec6eZdZdZedZdZdZdS) TestPatcherc2t5}|jddtdd5}|}dddn #1swxYwY|d|ddddS#1swxYwYdSN/foo/bartestcontentsutf8encoding)r fs create_fileopenread assertEqual)selfpatcherfrs ~/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/pyfakefs/tests/fake_filesystem_unittest_test.pytest_context_managerz TestPatcher.test_context_manager<s YY /' J " ": " ? ? ?j6222 $a6688 $ $ $ $ $ $ $ $ $ $ $ $ $ $ $   VX . . .  / / / / / / / / / / / / / / / / / /s4.B A B A" "B %A" &B  BBc|ddtdd5}|}dddn #1swxYwY|d|dSr)r r!r"r#)r$fake_fsr&rs r'test_context_decoratorz"TestPatcher.test_context_decoratorCsJ888 *v . . . !vvxxH                *****A  AAcxt5}|jdd||jdt5}||jd|jdd||jddddn #1swxYwY||jdddddS#1swxYwYdS)Nrrrz/foo/baz)r rr assertTrueexists)r$r%patcher1s r'test_nested_invocationz"TestPatcher.test_nested_invocationJs YY ;' J " ": " ? ? ? OOGJ--j99 : : : @h 2 2: > >??? '' V'DDD 2 2: > >??? @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ OOGJ--j99 : : : ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s7AD/'A7C* D/*C. .D/1C. 20D//D36D3cDt5}|jdd|td5td5 dddn #1swxYwYdddn #1swxYwYddddS#1swxYwYdS)Nrrrz8Nested fake filesystem invocation using custom argumentsFallow_root_user)r rr assertWarnsRegex UserWarningr$r%s r' test_nested_invocation_with_argsz,TestPatcher.test_nested_invocation_with_argsTsd YY ' J " ": " ? ? ?&&W  U333                                 sY8BA=A& A=&A* *A=-A* .A=1 B=B BB BBBN)__name__ __module__ __qualname__r(r r+r1r8r'rr;s\/// ++ W+ ;;;r=rceZdZeejddZejdedZdS)TestPatchfsArgumentOrderz os.systemc,|ddtdd5}|}dddn #1swxYwY|d|t jd|ddSNrrrrrfoor r!r"r#ossystemassert_called_with)r$r*patched_systemr&rs r'test_argument_order1z-TestPatchfsArgumentOrder.test_argument_order1_ J888 *v . . . !vvxxH                *** %))%00000r,c,|ddtdd5}|}dddn #1swxYwY|d|t jd|ddSrArC)r$rGr*r&rs r'test_argument_order2z-TestPatchfsArgumentOrder.test_argument_order2irIr,N)r9r:r;r rpatchrHrKr<r=r'r?r?^sv TZ 11 W1TZ  11 W111r=r?ceZdZdZdS)TestPyfakefsUnittestBasec.|dS)Set up the fake file systemN setUpPyfakefsr$s r'setUpzTestPyfakefsUnittestBase.setUpus r=N)r9r:r;rTr<r=r'rNrNts#r=rNc6eZdZdZdZdZdZdZdZdZ dS) TestPyfakefsUnittestzATest the `pyfakefs.fake_filesystem_unittest.TestCase` base class.c|tjdt ddd5}|ddddn #1swxYwY||jdt dd5}|}dddn #1swxYwY| d|dS)zFake `open()` function is bound/fake_file.txtwrrz6This test file was created using the open() function. N) assertFalserDpathr/r!writer.rr"r#r$r&contents r' test_openzTestPyfakefsUnittest.test_open}sl (899::: "C& 9 9 9 OQ GGM N N N O O O O O O O O O O O O O O O '788999 "V 4 4 4 ffhhG                 E      $A''A+.A+0CCCc|tjdt ddd5}|ddddn #1swxYwY||jdtdd5}| }dddn #1swxYwY| d|dS)zFake io module is boundrXrYrrz9This test file was created using the io.open() function. N) rZrDr[r/io_openr\r.rr!r"r#r]s r' test_io_openz!TestPyfakefsUnittest.test_io_opensl (899::: %sV < < < R GGP Q Q Q R R R R R R R R R R R R R R R '788999 "V 4 4 4 ffhhG                 H      r`c||jdtjd||jddS)zFake os module is boundz/test/dir1/dir2N)rZrr/rDmakedirsr.rSs r'test_oszTestPyfakefsUnittest.test_oss] (9::;;; %&&& '899:::::r=c0tjd}|gt jd|jdt jd}|r|dg|n|dg||jdtt jd}|r|ddg|dS|ddg|dS)zFake glob module is boundwinz/test/dir1/dir*/test/dir1/dir2az/test/dir1\dir2a/test/dir1/dir2bz/test/dir1\dir2bN)sysplatform startswithr#globr create_dirsorted)r$ is_windowsmatching_pathss r' test_globzTestPyfakefsUnittest.test_globs\,,U33  TY'899::: -...#455  C   12N C C C C   01> B B B -... *; < <==  W   13FG X X X X X   02DE~ V V V V Vr=c|jd|jd||jd||jdt jd||jddS)zFake shutil module is boundrirjz /test/dir1N)rror.r/shutilrmtreerZrSs r' test_shutilz TestPyfakefsUnittest.test_shutils -... -... '9::;;; '9::;;; l###  5566666r=ctjd}|dd5}|ddddn #1swxYwYtjd}|r/||j ddS||j ddS)NrXrYrrtextrhz\fake_file.txt) pathlibrr!r\rkrlrmr.rr/)r$pr&rqs r'test_fakepathlibz%TestPyfakefsUnittest.test_fakepathlibs L) * * VVC&V ) ) Q GGFOOO               \,,U33  > OODGNN+<== > > > > > OODGNN+;<< = = = = =sAAAN) r9r:r;__doc__r_rcrfrsrwr|r<r=r'rVrVzswKK        ;;; WWW"777>>>>>r=rVc\eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdS)TestPatchingImportscd}|j|||j||tjj|dS)N /foo/bar/baz)rr r.r/pyfakefstestsimport_as_examplecheck_if_exists1r$ file_paths r'test_import_as_other_namez-TestPatchingImports.test_import_as_other_namesh"  I&&& y11222 8II)TTUUUUUr=cd}|j|||j||tjj|dS)z/Make sure `from os import path` patches `path`.rN)rr r.r/rrrcheck_if_exists2rs r'test_import_path_from_osz,TestPatchingImports.test_import_path_from_ossh"  I&&& y11222 8II)TTUUUUUr=cd}|j||tjj|dSNr)rror.rrrcheck_if_exists3rs r'test_import_path_from_pathlibz1TestPatchingImports.test_import_path_from_pathlibH  9%%% 8II)TTUUUUUr=cd}|j||tjj|dSr)rror.rrrcheck_if_exists5rs r'test_import_exists_from_os_pathz3TestPatchingImports.test_import_exists_from_os_pathrr=cd}|j||tjj|dSr)rr r.rrrcheck_if_isfilers r'test_import_isfile_from_os_pathz3TestPatchingImports.test_import_isfile_from_os_pathsH  I&&& 8HHSSTTTTTr=cd}|j||tjj|dSr)rror.rrrcheck_if_isdirrs r'test_import_isdir_from_os_pathz2TestPatchingImports.test_import_isdir_from_os_pathsH  9%%% 8GG RRSSSSSr=cd}d}|j||j|||tjj|dS)Nrz /foo/link)rr create_symlinkr.rrrcheck_if_islink)r$r link_paths r'test_import_islink_from_os_pathz3TestPatchingImports.test_import_islink_from_os_pathse   I&&& y)444 8HHSSTTTTTr=cd}|j||tjj|dSr)rror.rrrcheck_if_exists6rs r'/test_import_function_from_os_path_as_other_namezCTestPatchingImports.test_import_function_from_os_path_as_other_namerr=cd}|j||tjj|dSr)rror.rrrcheck_if_exists7rs r'test_import_pathlib_pathz,TestPatchingImports.test_import_pathlib_pathrr=cd}|j|dtjj|}|d|jdSNrabcrr)rr rrr file_stat1r#st_sizer$r stat_results r'test_import_function_from_osz0TestPatchingImports.test_import_function_from_osY  I777n6AA)LL  K/00000r=cd}|j|dtjj|}|d|jdSr)rr rrr file_stat2r#rrs r'*test_import_function_from_os_as_other_namez>TestPatchingImports.test_import_function_from_os_as_other_namerr=cd}|j|dtjj|}|d|dSNrrrabc)rr rrrfile_contents1r#r$rrs r'test_import_open_as_other_namez2TestPatchingImports.test_import_open_as_other_nameV  I777>3BB9MM )))))r=cd}|j|dtjj|}|d|dSr)rr rrrfile_contents2r#rs r'!test_import_io_open_as_other_namez5TestPatchingImports.test_import_io_open_as_other_namerr=N)r9r:r;rrrrrrrrrrrrrr<r=r'rrsVVV VVVVVV VVV UUU TTT UUUVVV VVV 111 111 *** *****r=rc&eZdZdZdZdZdZdS)TestPatchingDefaultArgsc2|ddS)NT)patch_default_argsrQrSs r'rTzTestPatchingDefaultArgs.setUps d33333r=cd}|j||tjj|dSr)rror.rrrcheck_if_exists4rs r'+test_path_exists_as_default_arg_in_functionzCTestPatchingDefaultArgs.test_path_exists_as_default_arg_in_functionrr=cd}|j|tjj}|||dSr)rrorrrTestDefaultArgr.check_if_exists)r$rsuts r')test_path_exists_as_default_arg_in_methodzATestPatchingDefaultArgs.test_path_exists_as_default_arg_in_methodsY  9%%%n.==?? ++I6677777r=c|jd|tjjddSNrB)rr r.rrrrrSs r'test_fake_path_exists4z.TestPatchingDefaultArgs.test_fake_path_exists4C E""" 8II%PPQQQQQr=N)r9r:r;rTrrrr<r=r'rrsX444VVV 888 RRRRRr=rceZdZdZdZdS)!TestAttributesWithFakeModuleNameszXTest that module attributes with names like `path` or `io` are not stubbed out. cF|tjd|tjd|tjd|tjd|tjddS)z/Attributes of module under test are not patchedzos attribute valuezpath attribute valuezpathlib attribute valuezshutil attribute valuezio attribute valueN)r#rrDr[rzruiorSs r'test_attributesz1TestAttributesWithFakeModuleNames.test_attributes(s /24HIII /46LMMM /79RSSS /68PQQQ /24HIIIIIr=N)r9r:r;r}rr<r=r'rr#s2JJJJJr=rceZdZdZdZdS)TestPathNotPatchedIfNotOsPathzTests that `path` is not patched if it is not `os.path`. An own path module (in this case an alias to math) can be imported and used. cV|dtjddS)Ng@)r#r[floorrSs r'test_own_path_modulez2TestPathNotPatchedIfNotOsPath.test_own_path_module:s& DJsOO,,,,,r=N)r9r:r;r}rr<r=r'rr4s- -----r=rc2eZdZdZejdZdS)FailedPatchingTestzNegative tests: make sure the tests for `modules_to_reload` and `modules_to_patch` fail if not providing the arguments. cd}|j|d|dtjj|jdSNrstestrrr r#rrr system_statrrs r'test_system_statz#FailedPatchingTest.test_system_statCs_  I888  x~/;;IFFN     r=N)r9r:r;r}unittestexpectedFailurerr<r=r'rr>s=     r=rceZdZdZdZdS)ReloadModuleTest`Make sure that reloading a module allows patching of classes not patched automatically. cR|tjjgdS)rP)modules_to_reloadNrRrrrrSs r'rTzReloadModuleTest.setUpQs' hn.N-OPPPPPr=N)r9r:r;r}rTr<r=r'rrLs2QQQQQr=rcNeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d S) NoSkipNamesTestzdReference test for additional_skip_names tests: make sure that the module is patched by default.c.|dSNrQrSs r'rTzNoSkipNamesTest.setUpZ r=cr|tjjdSr)rZrrrexists_this_filerSs r'test_path_existsz NoSkipNamesTest.test_path_exists]s- 9JJLLMMMMMr=c|jd|tjjddSr)rr r.rrrrrSs r'test_fake_path_exists1z&NoSkipNamesTest.test_fake_path_exists1`rr=c|jd|tjjddSr)rr r.rrrrrSs r'test_fake_path_exists2z&NoSkipNamesTest.test_fake_path_exists2drr=c|jd|tjjddSr)rr r.rrrrrSs r'test_fake_path_exists3z&NoSkipNamesTest.test_fake_path_exists3hrr=c|jd|tjjddSr)rr r.rrrrrSs r'test_fake_path_exists5z&NoSkipNamesTest.test_fake_path_exists5lrr=c|jd|tjjddSr)rr r.rrrrrSs r'test_fake_path_exists6z&NoSkipNamesTest.test_fake_path_exists6prr=c|jd|tjjddSr)rr r.rrrrrSs r'test_fake_path_exists7z&NoSkipNamesTest.test_fake_path_exists7trr=c|t5tjjddddS#1swxYwYdSr) assertRaisesOSErrorrrropen_this_filerSs r'test_open_failszNoSkipNamesTest.test_open_failsxs   w ' ' > > N , ; ; = = = > > > > > > > > > > > > > > > > > >s$A  AAcd}|j|dtjj|}|d|dS)Nrrr)rr rrlogsio file_contentsr#rs r'*test_open_patched_in_module_ending_with_ioz:NoSkipNamesTest.test_open_patched_in_module_ending_with_io|sV  I777>(66yAA *****r=N)r9r:r;r}rTrrrrrrrrrr<r=r'rrVs88NNNRRRRRRRRRRRRRRRRRR>>>+++++r=rcTeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd S)AdditionalSkipNamesTestzsMake sure that modules in additional_skip_names are not patched. Passes module name to `additional_skip_names`.c4|dgdS)N pyfakefs.tests.import_as_exampleadditional_skip_namesrQrSs r'rTzAdditionalSkipNamesTest.setUps# 2T1UVVVVVr=cr|tjjdSrr.rrrrrSs r'rz(AdditionalSkipNamesTest.test_path_exists+ 8IIKKLLLLLr=c|jd|tjjddSrrr rZrrrrrSs r'test_fake_path_does_not_exist1z6AdditionalSkipNamesTest.test_fake_path_does_not_exist1E E""" 9JJ5QQRRRRRr=c|jd|tjjddSrrr rZrrrrrSs r'test_fake_path_does_not_exist2z6AdditionalSkipNamesTest.test_fake_path_does_not_exist2rr=c|jd|tjjddSrrr rZrrrrrSs r'test_fake_path_does_not_exist3z6AdditionalSkipNamesTest.test_fake_path_does_not_exist3rr=c|jd|tjjddSrrr rZrrrrrSs r'test_fake_path_does_not_exist4z6AdditionalSkipNamesTest.test_fake_path_does_not_exist4rr=c|jd|tjjddSrrr rZrrrrrSs r'test_fake_path_does_not_exist5z6AdditionalSkipNamesTest.test_fake_path_does_not_exist5rr=c|jd|tjjddSrrr rZrrrrrSs r'test_fake_path_does_not_exist6z6AdditionalSkipNamesTest.test_fake_path_does_not_exist6rr=c|jd|tjjddSrrr rZrrrrrSs r'test_fake_path_does_not_exist7z6AdditionalSkipNamesTest.test_fake_path_does_not_exist7rr=cLtjjdSrrrrrrSs r'test_open_succeedsz*AdditionalSkipNamesTest.test_open_succeeds(7799999r=cLtjjdSrrrrreturn_this_file_pathrSs r'test_path_succeedsz*AdditionalSkipNamesTest.test_path_succeeds(>>@@@@@r=Nr9r:r;r}rTrrrrrrrr!r$r)r<r=r'rrs66WWWMMMSSSSSSSSSSSSSSSSSSSSS:::AAAAAr=rcTeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd S)AdditionalSkipNamesModuleTestznMake sure that modules in additional_skip_names are not patched. Passes module to `additional_skip_names`.cR|tjjgdS)NrrrSs r'rTz#AdditionalSkipNamesModuleTest.setUps' (.2R1STTTTTr=cr|tjjdSrr rSs r'rz.AdditionalSkipNamesModuleTest.test_path_existsr r=c|jd|tjjddSrr rSs r'rz3L   !!!00000r=rEceZdZdZdZdZdS)PatchModuleTestrc@|dtidS)rPrmodules_to_patchN)rRrErSs r'rTzPatchModuleTest.setUps2 @BST      r=cd}|j|d|dtjj|jdSrrrs r'rz PatchModuleTest.test_system_stats_  I888  x~/;;IFFN     r=N)r9r:r;r}rTrr<r=r'rRrR s<        r=rRcpeZdZdZeejdZedeidZ dS)PatchModuleTestUsingDecoratorzMake sure that reloading a module allows patching of classes not patched automatically - use patchfs decorator with parameter. cd}||d|dtjj|jdSrr r#rrrrrr$r*rs r'test_system_stat_failingz6PatchModuleTestUsingDecorator.test_system_stat_failing%s_ I888  x~/;;IFFN     r=rrTcd}||d|dtjj|jdSrrZr[s r'rz.PatchModuleTestUsingDecorator.test_system_stat.s] I888  x~/;;IFFN     r=N) r9r:r;r}r rrr\rErr<r=r'rXrX sx     W  WACTUVVV  WV   r=rXceZdZdZdZdZdS)NoRootUserTestz/Test allow_root_user argument to setUpPyfakefs.c2|ddS)NFr3rQrSs r'rTzNoRootUserTest.setUp:s 511111r=cd|j_d}|j|d|dz}|t5|j|dddn #1swxYwYd}|j|t j|d|t5t|d d ddddS#1swxYwYdS) zYCheck that fs behaves as non-root user regardless of actual user rights. Frim) perm_bitsbazNz/bazrYrr) r is_windows_fsrorrr rDchmodr!)r$dir_pathrs r'test_non_root_behaviorz%NoRootUserTest.test_non_root_behavior=ss!& 8u555u$   w ' ' + + G   * * * + + + + + + + + + + + + + + +  I&&& E"""   w ' ' 2 2 C& 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s$ A11A58A5C''C+.C+N)r9r:r;r}rTrhr<r=r'r_r_7s89922222222r=r_c8eZdZdZdZdZdZdZdZdZ dS) PauseResumeTestc.|dSrrQrSs r'rTzPauseResumeTest.setUpPrr=cltj}||j|j|t j|j|||j|j| t j|jtj}| |j|j|t j|j| | t j|j|t j|j|| | dSr) tempfileNamedTemporaryFiler.rr/rOrDr[pauserZresumecloser$fake_temp_filereal_temp_files r'test_pause_resumez!PauseResumeTest.test_pause_resumeSs!466 ~':;;<<< ~':;;<<<  ~':;;<<< (;<<===!466 (;<<=== ~':;;<<<  (;<<=== ~':;;<<<  r=c8tj}||j|j|t j|j|j|t j|j|j ||j|j| t j|jtj}| |j|j|t j|j|j | |j|j|t j|j|j| t j|j|t j|j|j | |jdSr) rmrnr.rr/rOrDr[rprorZrqrrs r'test_pause_resume_fsz$PauseResumeTest.test_pause_resume_fsds"!466 ~':;;<<< ~':;;<<<  ~':;;<<<   ~':;;<<< (;<<===!466 (;<<=== ~':;;<<<   (;<<=== ~':;;<<<  (;<<=== ~':;;<<<   r=ctj}||j|j|t j|jt|5||j|j| t j|jtj}| |j|j|t j|j| dddn #1swxYwY| t j|j|t j|jdSr rmrnr.rr/rOrDr[r rZrqrrs r' test_pause_resume_contextmanagerz0PauseResumeTest.test_pause_resume_contextmanager|s!466 ~':;;<<< ~':;;<<< 4[[ # # OODGNN>+>?? @ @ @   RW^^N,?@@ A A A%8::N   TW^^N,?@@ A A A OOBGNN>+>?? @ @ @  " " "  # # # # # # # # # # # # # # # (;<<=== ~':;;<<<<+>?? @ @ @   RW^^N,?@@ A A A%8::N   TW^^N,?@@ A A A OOBGNN>+>?? @ @ @  " " "  # # # # # # # # # # # # # # # (;<<=== ~':;;<<<<+>?? @ @ @ GGIII OOADKK(;<< = = =   RW^^N,?@@ A A A%8::N   QT[[)<== > > > OOBGNN>+>?? @ @ @ HHJJJ   RW^^N,?@@ A A A OOBGNN>+>?? @ @ @  " " " GGIII  " " " HHJJJ!                  sII$$I(+I(ct5}tj}||j|j|tj|jt|5||j|j| tj|jtj}| |j|j|tj|j| dddn #1swxYwY| tj|j|tj|j| ddddS#1swxYwYdSr) r rmrnr.rr/rOrDr[r rZrqrs r'rzz7PauseResumePatcherTest.test_pause_resume_contextmanagers. YY #!%8::N OOADKK(;<< = = = OOBGNN>+>?? @ @ @q ' ' N,? @ @AAA  0C!D!DEEE!)!!>  ^-@!A!ABBB~/B C CDDD$$&&&  ' ' ' ' ' ' ' ' ' ' ' ' ' ' '   RW^^N,?@@ A A A OOBGNN>+>?? @ @ @  " " " # # # # # # # # # # # # # # # # # #s8B H;C:F! H;!F% %H;(F% )BH;;H?H?N)r9r:r;rurzr<r=r'rrs2&#####r=rceZdZdZdZdS)TestPyfakefsTestCasecVGddtj}|d|_dS)NceZdZdZdS)0TestPyfakefsTestCase.setUp..TestTestCasecdSrr<rSs r'runTestz8TestPyfakefsTestCase.setUp..TestTestCase.runTestsr=N)r9r:r;rr<r=r' TestTestCasers#     r=rr)rr test_case)r$rs r'rTzTestPyfakefsTestCase.setUpsG     3<   &i00r=c||jtj||jtjdSr)assertIsInstancerrrr TestCaseMixinrSs r'test_test_case_typez(TestPyfakefsTestCase.test_test_case_types? dnh.?@@@ dn.F.TUUUUUr=N)r9r:r;rTrr<r=r'rrs7111VVVVVr=rcdeZdZdZdZdZejej dkddZ dS)TestTempDirCreationz2Test that the temp directory exists at test start.c.|dSrrQrSs r'rTzTestTempDirCreation.setUprr=c|tjt jdSr)r.rDr[r/rm gettempdirrSs r'test_tempdir_existsz'TestTempDirCreation.test_tempdir_existss1 x':'<'<==>>>>>r=win32zPOSIX only testcj|tjddS)Nz/tmp)r.rDr[r/rSs r'test_tmp_existsz#TestTempDirCreation.test_tmp_existss* v../////r=N) r9r:r;r}rTrrskipIfrkrlrr<r=r'rrsk<<???X_S\W,.?@@00A@000r=rceZdZdZdZdZdS)TestTempFileReloadzbRegression test for #356 to make sure that reloading the tempfile does not affect other tests.ct5}|jddddddS#1swxYwYdS)Nz /mytempfileabcdr)r rr r7s r' test_fakefszTestTempFileReload.test_fakefss YY C' J " "=6 " B B B C C C C C C C C C C C C C C C C C Cs 9==cftjdd}||jddS)NIr)multiprocessingValuer#value)r$vs r' test_valuezTestTempFileReload.test_values2  !#q ) ) !$$$$$r=N)r9r:r;r}rrr<r=r'rrs?$$CCC%%%%%r=rceZdZdZdS)TestPyfakefsTestCaseMixinc||t|d||jt jdS)Nr)rRr.hasattrrrr r~rSs r'test_set_up_pyfakefsz.TestPyfakefsTestCaseMixin.test_set_up_pyfakefssQ  d++,,, dg'EFFFFFr=N)r9r:r;rr<r=r'rrs(GGGGGr=rc$eZdZdZdZdZdZdS)TestShutilWithZipfilezRegression test for #427.cb||jddS)Nfoo/bar)rRrr rSs r'rTzTestShutilWithZipfile.setUps0  I&&&&&r=c4tjddddSNarchiveziprB)root_dirru make_archiverSs r'test_azTestShutilWithZipfile.test_as Iuu======r=c4tjddddSrrrSs r'test_bzTestShutilWithZipfile.test_bs Iuu======r=N)r9r:r;r}rTrrr<r=r'rrsG##'''>>>>>>>>r=rc$eZdZdZdZdZdZdS)TestDistutilsCopyTreezRegression test for #501.c||jd|jd|jddS)Nz./test/subdir/z./test/subdir2/./test2/subdir/1.txt)rRrror rSs r'rTzTestDistutilsCopyTree.setUps_    G  / 0 0 0 G  0 1 1 1 G   6 7 7 7 7 7r=c tddtd|tjd|tjddS)N./test2/./test/./test/subdir/1.txt)rrr.rDr[isfilerZisdirrSs r'test_file_copiedz&TestDistutilsCopyTree.test_file_copiedsi j) , , ,  # # # OOBGNN+@AA B B B   RW]]:66 7 7 7 7 7r=cp|tjdt ddt d|tjd|tjddS)Nrrrr)r.rDr[rrrrZrrSs r'test_file_copied_againz,TestDistutilsCopyTree.test_file_copied_agains OOBGNN+ABB C C C j) , , ,  # # # OOBGNN+@AA B B B   RW]]:66 7 7 7 7 7r=N)r9r:r;r}rTrrr<r=r'rrsG'' 8 8 8  8 8 8 8 8 8 8 8r=rc(eZdZdZedZdS) PathlibTestzRegression test for #527ctjd}|rdtjjzntjj}||ttj tj d }||t|| | dS)z4Make sure fake file system is used for os in pathlibrhC:.N)rkrlrmrDr[sepr#strrzrcwdabsoluter.r/)r$rrqrdot_abss r'test_cwdzPathlibTest.test_cwd-s\,,U33 )3D4"'+%% 3w|'7'7'9'9#:#:;;;,s##,,.. 3w<<000 (()))))r=N)r9r:r;r}r rr<r=r'rr*s3"" ** W***r=rceZdZdZdS)TestDeprecationSuppressioncddlm}tjd5}tjdt ||dt|ddddS#1swxYwYdS)zaEnsures that deprecation warnings are suppressed during module lookup, see #542. r)DeprecationTestT)recorderrorN) +pyfakefs.tests.fixtures.deprecated_propertyrwarningscatch_warnings simplefilterDeprecationWarningrRr#len)r$rrYs r'test_no_deprecation_warningz6TestDeprecationSuppression.test_no_deprecation_warning9s        $D 1 1 1 (Q  !'+= > > >      QA ' ' ' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (sAA;;A?A?N)r9r:r;rr<r=r'rr8s# ( ( ( ( (r=rcg}|D]R}t|dkr&|dddkr|tj|z };|tj|z }S|S)z@Helper code for patching open_code in auto mode, see issue #554.rNz.py)rrunpyrun_path run_module)configsretvalconfigs r' load_configsrHsi F// v;;??vbcc{e33 enV,, ,FF e&v.. .FF Mr=)rzopen_code new in Python 3.8c<eZdZdZdZdZdZdZdZdZ dZ d S) AutoPatchOpenCodeTestCasez5Test patching open_code in auto mode, see issue #554.c|tjd|_|j|jdd|_dS)Npatch_open_codez configpy.pyzconfigurable_value='yup'rz%pyfakefs.tests.fixtures.config_module)rRrAUTOconfigpyrr config_modulerSs r'rTzAutoPatchOpenCodeTestCase.setUpWsN 9>:::%  DM4NOOODr=c<t|j|jgdSr)rrrrSs r' test_bothz#AutoPatchOpenCodeTestCase.test_both^s dmT%7899999r=c0t|jgdSr)rrrSs r' test_run_pathz'AutoPatchOpenCodeTestCase.test_run_pathasdm_%%%%%r=c0t|jgdSr)rrrSs r'test_run_modulez)AutoPatchOpenCodeTestCase.test_run_moduledsd()*****r=ctjdd}tj|}|j|dS)Nbar /foo/bar.py) importlibutilspec_from_file_locationmodule_from_specloader exec_module)r$specmods r' import_fooz$AutoPatchOpenCodeTestCase.import_foogsJ~55e]KKn--d33 $$$$$r=c|jddtt5}|dddn #1swxYwY|dksJdS)Nrzprint('hello')rzhello )rr rrrgetvalue)r$stdouts r'test_exec_module_in_fake_fsz5AutoPatchOpenCodeTestCase.test_exec_module_in_fake_fsls M4DEEE XZZ ( ( F OO                    I------sAA Ac|jd|jddtjddddl}dS)Nz/foo.pyz/bar.pyz import foorr)rr rkr[insertrB)r$rBs r'test_dynamic_importz-AutoPatchOpenCodeTestCase.test_dynamic_importrsV I&&& I === 2 r=N) r9r:r;r}rTrrrrr rr<r=r'rrSs??EEE:::&&&+++%%% ... r=rceZdZdZejejddidZ dZ dZ dZ dZ ejejd kd d Zd S) TestOtherFSc.|dSrrQrSs r'rTzTestOtherFS.setUp{rr=HOMEz /home/johncLtjdk|j_|jjr d|j_|jt tt d5}|| dddn #1swxYwYtj }tj |tt d5}|| ddddS#1swxYwYdS)zRegression test for #558ntFrrN) rDrOrreis_macos add_real_file__file__r!r.r"rhomechdir)r$r&rs r'test_real_file_with_homez$TestOtherFS.test_real_file_with_home~sf!#4 7  %$DG  h''' (V , , , & OOAFFHH % % % & & & & & & & & & & & & & & &y{{  (V , , , & OOAFFHH % % % & & & & & & & & & & & & & & & & & &s$((BB #B $(DD Dcntj|j_d}||tjddd|dtj||j|| tj || tj |j | tj d| tj d|dtj |dtjj |d tj|d tj|d tj|d tjdS) Nz C:\foo\barzC:\rBr)rz\foo\barz \\share\foor\/;z NUL)r WINDOWSrrDr#r[join splitdriver r.r/upperismountraltseppathseplinesepdevnullr$r[s r' test_windowszTestOtherFS.test_windowss^  rw||FE5AABBB ,bg.@.@.F.FGGG D!!! t,,--- ztz||44555 77888 ../// rv&&& rw{+++ bi((( bj))) ,,,  +++++r=cntj|j_d}||tjddd|dtjd|j|| tj || tj |j | tj d| tj d|dtj|dtjj|dtj|dtj|d tj|d tjdS NrrrBr)r  C:/foo/barr-z //share/foo: z /dev/null)r LINUXrrDr#r[r!r"r r.r/rZr#r$rr%r&r'r(r)s r' test_linuxzTestOtherFS.test_linuxs\  rw||C>>??? +RW-?-? -M-MNNN D!!! t,,---   55666 ,,--- 77888 bf%%% bgk*** ry))) bj))) rz*** bj11111r=cntj|j_d}||tjddd|dtjd|j|| tj || tj |j | tj d| tj d|dtj|dtjj|dtj|dtj|d tj|d tjdSr,)r MACOSrrDr#r[r!r"r r.r/r#r$rZrr%r&r'r(r)s r' test_macoszTestOtherFS.test_macoss\  rw||C>>??? +RW-?-? -M-MNNN D!!! t,,--- ztz||44555 ,,--- 77888 bf%%% bgk*** ry))) bj))) rz*** bj11111r=c tj|j_t d}|dz }|jd|tj|| tj t| |dS)Nz/testz C:/testfileT)parents)r r0rrDrparentmkdirtouchrr.r[r/r relative_to)r$folderrs r'test_drivelike_pathzTestOtherFS.test_drivelike_paths\ g]* t,,,  s9+@+@+H+H'I'IJJKKKKKr=rzWindows-specific testc`tj|j_t j}|sJdSr)r r0rrDrm TemporaryFile)r$tmp_files r'test_tempfile_accessz TestOtherFS.test_tempfile_accesss*\ )++xr=N)r9r:r;rTrrLdictrDenvironrr*r1r4r<rrrkrlr@r<r=r'rrzs Z__RZ&,!788 & &98 &,,,"222"222"LLLX_S\W,.EFFGFr=rrzWindows-specific behaviorc$eZdZedZdS)TestAbsolutePathOnWindowsc|tjddS)Nr)r.rzrr is_absoluterGs r'test_is_absolutez*TestAbsolutePathOnWindows.test_is_absolutes>  S))2244@@BBCCCCCr=N)r9r:r;r rGr<r=r'rDrDs2 DD WDDDr=rDzNot available before Python 3.8c0eZdZedZdZdZdS)TestClassSetupc||dddS)Nrrr)setUpClassPyfakefsr*r )clss r' setUpClasszTestClassSetup.setUpClasss;     !!)f!=====r=c|tjdt dd5}|}dddn #1swxYwY|d|dS)Nrrrr)r.rDr[r/r!r"r#)r$r&rs r'test_using_fs_functionsz&TestClassSetup.test_using_fs_functionss y11222 )f - - - vvxxH                *****sA%%A),A)c||jd|jd}|d|jdS)Nrr)r.rr/ get_objectr#r)r$r&s r'test_using_fakefsz TestClassSetup.test_using_fakefssU y11222 G  y ) ) ,,,,,r=N)r9r:r; classmethodrMrOrRr<r=r'rIrIsK>>[>+++ -----r=rIc0eZdZdZdZdZdZdZdZdS)TestTempPathCreationztRegression test for #965. Checks that the temp file system is properly created with a root-owned root path. c.|dSrrQrSs r'rTzTestTempPathCreation.setUprr=c||j_tjdddtjddt jd5}|ddksJ ddddS#1swxYwYdS)Nrriwbsfoor)rrDchownrfrmr>r\)r$os_typer&s r'check_write_tmp_after_resetz0TestTempPathCreation.check_write_tmp_after_resets  a m$$$  #D ) ) (Q776??a''''' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s A66A:=A:cD|tjdSr)r[r r0rSs r'test_write_tmp_linuxz)TestTempPathCreation.test_write_tmp_linux ((66666r=cD|tjdSr)r[r r3rSs r'test_write_tmp_macosz)TestTempPathCreation.test_write_tmp_macosr^r=cD|tjdSr)r[r r rSs r'test_write_tmp_windowsz+TestTempPathCreation.test_write_tmp_windowss ((88888r=N) r9r:r;r}rTr[r]r`rbr<r=r'rUrUsi(((77777799999r=rUc*eZdZdZdZdZdZdZdS)FakeImportTestz=Checks that a fake module can be imported in AUTO patch mode.cF|tjdS)Nr)rRrrrSs r'rTzFakeImportTest.setUp s! 9>:::::r=cBtddz dz }|j|dtjdt |jtj d}tjd=|j dksJ|j dksJdS) Nr site-packagesfake_module.py number = 42rr fake_module* rrr rkr[r rr7r import_moduler9numberr$fake_module_pathmodules r'test_simple_fake_importz&FakeImportTest.test_simple_fake_import s9969II ,}EEE 3/677888(77 HQK-////}""""""r=ctddz }|j|dz dz |dz dz }|j|dtjdt |tjd }tjd=|j d ksJ|j d ksJdS) Nrrgfakepkgz __init__.pyrhrirrzfakepkg.fake_modulerk) rrr rkr[r rrrmr9rn)r$ fake_pkg_pathrprqs r'test_fake_import_dotted_modulez-FakeImportTest.test_fake_import_dotted_modulesS O3  MI5 EFFF(947GG ,}EEE 3}--...()>?? HQK"77777}""""""r=c<tddz }|j|dtjdt |jtj d}tjd=|j dksJ|j dksJdS)Nrgrhrirrrjrkrlros r'test_fake_relative_importz(FakeImportTest.test_fake_relative_import s003CC ,}EEE 3/677888(77 HQK-////}""""""r=N)r9r:r;r}rTrrrvrxr<r=r'rdrdsVGG;;;### # # ######r=rd__main__)Rr}rnimportlib.utilrrrrDrzrrurkrmrr contextlibrrrrr pyfakefs.tests.import_as_examplerpyfakefs.tests.logsiorr pyfakefs.fake_filesystemr !pyfakefs.fake_filesystem_unittestr r r rpyfakefs.tests.fixturesr version_infodistutils.dir_utilrrr!rbrr?rNrVrrrmathr[rrrrrr-r:rErRrXr_rjrrrrrrrrrrrrrrrlrDrIrUrdr9mainr<r=r'rs"    &&&&&&########''''>>>>>>>>++++++ ;:::::g99999999 '     (   F11111x111,7@ F>F>F>F>F>3F>F>F>RI*I*I*I*I*2I*I*I*XRRRRR6?RRR( J J J J J(@ J J J-----$<---      1    QQQQQ/8QQQ++++++++++.7++++++\*A*A*A*A*A6?*A*A*AZ*A*A*A*A*A$<$E*A*A*AZSSSSS4=SSS<00000000"     .7   &     H$5   .22222-62220SSSSS.7SSSl"#"#"#"#"#5>"#"#"#J V V V V V8, V V V 0 0 0 0 02; 0 0 0 % % % % %* % % %GGGGG /=GGG > > > > >4= > > >g88888 8 A8886 * * * * *( * * * ( ( ( ( (!9!B ( ( ( !F*,IJJ##### 8 A##KJ#LSSSSS*3SSSl(*EFFDDDDD 8 ADDGFD!F*,MNN------6--ON-$999993<9994!F*,MNN!#!#!#!#!#-6!#!#ON!#H zHMOOOOOr=