bg2dZddlZddlZddlZddlZddlZddlmZmZm Z m Z ddl m Z m Z mZmZddlmZmZmZmZddlmZmZmZddlmZmZGdd eZGd d eZGd d eZGddeZGddeZ GddeZ!GddeZ"Gdde"Z#GddeZ$Gdde$Z%GddeZ&GddeZ'ej(e d Gd!d"eZ)Gd#d$e)Z*Gd%d&e)Z+Gd'd(e+Z,ej(ej-d)ej(ed*Gd+d,e)Z.Gd-d.e.Z/Gd/d0e.Z0Gd1d2e0Z1Gd3d4eZ2Gd5d6eZ3Gd7d8e3Z4dS)9z$Unit tests for fake_os.FakeOsModule.N) IN_DOCKERIS_PYPYget_uidget_gid)fake_filesystemfake_os fake_open fake_file) FakeFileOpenis_rootset_uidset_gid) use_scandiruse_scandir_packageuse_builtin_scandir)TestCaseRealFsTestCaseceZdZdZdZdS)FakeOsModuleTestBasec||||jj||j|}|dt j|j||jt j z| |jt j zdS)N) create_file assertTrueospathexistsstat assertEqualS_IMODEst_modeS_IFREG assertFalseS_IFDIRselfrsts l/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/pyfakefs/tests/fake_os_test.pycreateTestFilez#FakeOsModuleTestBase.createTestFile+s   ++D11222 W\\$    RZ 8 8999  T\1222 dl233333c||||jj||j|}|dt j|j| |jt j z||jt j zdS)N) create_dirrrrrrrrr r"r!r#r$s r'createTestDirectoryz(FakeOsModuleTestBase.createTestDirectory3s   ++D11222 W\\$    RZ 8 8999 dl2333  T\122222r)N)__name__ __module__ __qualname__r(r-r)r'rr*s244433333r)rc^eZdZfdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Zd=Z?d>Z@d?ZAd@ZBdAZCdBZDdCZEdDZFdEZGdFZHdGZIdHZJdIZKdJZLdKZMdLZNdMZOdNZPdOZQdPZRdQZSdRZTdSZUdTZVdUZWdVZXdWZYdXZZdYZ[dZZ\d[Z]d\Z^d]Z_d^Z`d_Zad`ZbdaZcdbZddcZeddZfdeZgdfZhdgZidhZjdiZkdjZldkZmdlZndmZodnZpdoZqdpZrdqZsdrZtdsZudtZvduZwdvZxdwZydxZzdyZ{dzZ|d{Z}d|Z~d}Zd~ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd„ZdÄZdĄZdńZdƄZdDŽZdȄZdɄZdʄZd˄Zd̄Zd̈́Zd΄ZdτZdЄZdфZd҄ZdӄZdԄZdՄZdքZdׄZd؄ZdلZdڄZdۄZd܄Zd݄ZdބZd߄ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-e.j/e0j1d,vd-d.Z2d/Z3d0Z4d1Z5d2Z6d3Z7d4Z8xZ9S(5FakeOsModuleTestctt||jj|jjz|jjz|_|jj|jjz|_dSN) superr3setUprR_OKW_OKX_OKrwxrwr% __class__s r'r7zFakeOsModuleTest.setUp=sU %%++---7<$',.=',-r)c|d}|||j|dS)z!chdir should work on a directory.fooN) make_pathr,rchdirr% directorys r' test_chdirzFakeOsModuleTest.test_chdirBs?NN5))   """  i     r)c|ddd}|tj|jj|dS)z8chdir should raise OSError if the target does not exist.nosuchrDN)rAassert_raises_os_errorerrnoENOENTrrBrCs r'test_chdir_fails_non_existz+FakeOsModuleTest.test_chdir_fails_non_existHs;NN4==  ##EL$'-KKKKKr)c|dd}|||tj|jj|dS)>%// """ ##EM47=(KKKKKr)c|d}d}|jj||}|||j||j||tj|jtj|dS)z-Consecutive relative chdir calls should work.r@rON) rArrjoinr,rBrrealpathgetcwd)r%dir1dir2 full_dirnames r'test_consecutive_chdirz'FakeOsModuleTest.test_consecutive_chdirSs~~e$$w|((t44   %%%  d  d  G  TW^^-- . .0@0@0N0N     r)c||j}d}|jj|}|j||j||||j|jd|||j|j|jj |d|||jdS)z,chdir into '..' should behave appropriately.r@..N) skip_real_fsrrXrabspath filesystemr,rBrrV)r%rootdirdirname abs_dirnames r'test_backwards_chdirz%FakeOsModuleTest.test_backwards_chdir`s '..""gl**733  ""7+++  g dgnn&6&6777  d $'.."2"2333  dgl''66777 $'.."2"233333r)c||dd}||||jj|j|j||||jdSNr@rO) r_rAr,rra root_dir_namerrXrB)r%rcs r' test_get_cwdzFakeOsModuleTest.test_get_cwdos ....     68H8HIII  g $'.."2"233333r)c|tj|jjd|dd}gd}|D]5}||jj||6| | |t|j|dS)Nnon_existing/fake_dirxyzzyplughr@rObaz) rIrJrKrlistdirrArrrVsortrsortedr%rDfilesfs r' test_listdirzFakeOsModuleTest.test_listdirxs ## L$'/+B   NN7G44 %%% > >A   TW\..y!<< = = = =  twy'A'A B BCCCCCr)ch|tjtjvr||t j|jjd|dd}gd}|D]5}| |jj ||6| |j |tj}||t!|j|dS)Nrlrmrn)check_posix_onlyrrp supports_fdr_rIrJEBADFrArrrVrqopenO_RDONLYrrr)r%dir_pathrtrupath_dess r'!test_listdir_uses_open_fd_as_pathz2FakeOsModuleTest.test_listdir_uses_open_fd_as_paths  :R^ + +       ##EK#FFF>>'733%%% = =A   TW\..x;; < < < < 7<<"+66 twx'@'@ A ABBBBBr)c|d}|j||jj|d}|j||||d|dg|j|dS)Nrlbugr@rArmkdirrrVrrrp)r%directory_rootrDs r'test_listdir_returns_listz*FakeOsModuleTest.test_listdir_returns_lists00  n%%%GL%%ne<<   i     599::: %$'//)"<"<=====r)c ||d}gd}|D]+}||||,||d|d|||t |j|ddS)Nrlrnsymlink skip_if_symlink_not_supportedrArcreate_symlinkrqrrrrrprss r'test_listdir_on_symlinkz(FakeOsModuleTest.test_listdir_on_symlink **,,,NN7++ %%% ; ;A   T^^Iq99 : : : : DNN955t~~g7N7NOOO  twt~~i7P7P'Q'Q R RSSSSSr)c|ddd}|||tj|jj|dS)Nr@rOro)rArrIrJrQrrpr% file_paths r'test_listdir_errorz#FakeOsModuleTest.test_listdir_errorsONN5%77  ### ##EM47?INNNNNr)cj||jjddSN.)rrrrr%s r'test_exists_current_dirz(FakeOsModuleTest.test_exists_current_dirs,  ++C0011111r)cgd}|D]*}|||+|||t |j|jdS)Nrn)rrArqrrrrrp base_path)r%rtrus r'test_listdir_currentz%FakeOsModuleTest.test_listdir_currents%%% 0 0A   T^^A.. / / / /  twt~'F'F G GHHHHHr)ct|d}||d||d5}|}|j|}|||dddn #1swxYwY|t5|jddddn #1swxYwY|t5|jdddddS#1swxYwYdS)N some_file1contents here1contentsrza string) rArr|filenorfdopenassertNotEqual assertRaises TypeError)r% file_path1 fake_file1r fake_file2s r' test_fdopenzFakeOsModuleTest.test_fdopens^^L11  .>??? YYz3 ' ' 8:&&((F//J    J 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8   y ) ) ! ! GNN4  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !   y ) ) ' ' GNN: & & & ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's7ABBB9C  C$'C$D--D14D1c\|tj|jjddSNrx)rIrJr{rrrs r'test_out_of_range_fdopenz)FakeOsModuleTest.test_out_of_range_fdopens& ##EKEEEEEr)c|d}|d}|d}||d||d||d||d}||d}||d}|}|}|} |j||tj|jj|| ||| | ||j |5} | | |udddn #1swxYwY|j | 5} | | |udddn #1swxYwY|tj|jj |dS) Nr some_file2 some_file3rrzcontents here2zcontents here3r) rArr|rrcloserIrJr{rrr") r% first_path second_path third_pathrr fake_file3fileno1fileno2fileno3rus r'test_closed_file_descriptorz,FakeOsModuleTest.test_closed_file_descriptors^^L11 nn\22 ^^L11  .>??? /?@@@ .>???YYz3// YY{C00 YYz3// ##%%##%%##%%  g ##EKHHH *"3"3"5"5666 *"3"3"5"5666 W^^G $ $ .   Q*_ - - - . . . . . . . . . . . . . . . W^^G $ $ .   Q*_ - - - . . . . . . . . . . . . . . . ##EKIIIIIs$2GGG;HH#&H#c||d}||d|j|t jdzt jz ||d}| }|j ||j |dtsP| t5|j |dddddS#1swxYwYdS|j |d|j|dS)Nrrrrrw)r_rArrchmodrr!S_IWRITEr|rrr rOSErrorr)r%rrrs r'test_fdopen_modez!FakeOsModuleTest.test_fdopen_modes} ^^L11  .>???  j4<%#74="HIIIYYz3// ##%% w w$$$yy #""7++ - -w,,, - - - - - - - - - - - - - - - - - - GNN7C ( ( ( GMM' " " " " "s=D&&D*-D*c|d}|jj|d}||d||5}|}|tj |j |tj z|tj |j |j z| d|j |tjddddS#1swxYwYdSNrlrmABCDEr)rArrrVrr|rrrr!fstatST_MODEr rST_SIZE)r%rDrfile_objrs r' test_fstatzFakeOsModuleTest.test_fstats]NN7++ GL%%i99  W555 YYy ! ! EX__&&F OODL47==+@+@+NN O O O OODL47==+@+@+HH I I I   Q f 5 5dl C D D D  E E E E E E E E E E E E E E E E E Es"CE  EEc|d}|jj|d}||d|t j|j|t jz|t j |j|t jz|t j |j|j z| d|j|t j dSr rArrrVrrrr#rr!r rrr%rDrs r' test_statzFakeOsModuleTest.test_statsNN7++ GL%%i99  W555  tw||I'>'>t|'LLMMM  tw||I'>'>t|'LLMMM  tw||I'>'>'FFGGG DGLL33DLABBBBBr)c||d}||d|d|j|j|d}||d|d|j|j|d}||d |d|j|j|d }||d |d|j|j|d }||dd z|d|j|jdS)Nfoo1r)rrfoo2tfoo3stttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttfoo4sttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttfoo5i)ryrArrrr st_blocksrs r'test_st_blockszFakeOsModuleTest.test_st_blockss NN6**  S111 DGLL33=>>>NN6**  T222 DGLL33=>>>NN6**  [999 DGLL33=>>>NN6**  [999 DGLL33=>>>NN6**  TD[999 TW\\)44>?????r)c*||d}||d|t5|j|jddddS#1swxYwYdS)Nr@r)r)check_windows_onlyrArrAttributeErrorrrrrs r'test_no_st_blocks_in_windowsz-FakeOsModuleTest.test_no_st_blocks_in_windowss !!!NN5))  S111   ~ . . . . GLL # # - - . . . . . . . . . . . . . . . . . .s BB B c||d}|jj|d}||d|tj|j|tj z|tj |j|tj z|tj |j|j z| d|j|tj dS)Nz//root/share/dirrmrrrr_rrrrVrrrr#rr!r rrrs r'test_stat_with_unc_pathz(FakeOsModuleTest.test_stat_with_unc_paths  !!!& GL%%i99  W555  tw||I'>'>t|'LLMMM  tw||I'>'>t|'LLMMM  tw||I'>'>'FFGGG DGLL33DLABBBBBr)c||d}|jj|d}||d|tj|j|tj z|tj |j|tj z|tj |j|j z| d|j|tj dS)Nz C:/foo/dirrmrrrrrs r'test_stat_with_drivez%FakeOsModuleTest.test_stat_with_drive%s  !!! GL%%i99  W555  tw||I'>'>t|'LLMMM  tw||I'>'>t|'LLMMM  tw||I'>'>'FFGGG DGLL33DLABBBBBr)c||tj|jjd|dd}||||5}| t j |j|j t j zddddS#1swxYwYdS)Nrr@rO) r_rIrJr{rrrArr|rr!filedesrr%rrus r'test_stat_uses_open_fd_as_pathz/FakeOsModuleTest.test_stat_uses_open_fd_as_path0s  ##EKqAAANN5%00  ### YYy ! ! RQ OODL47<< +B+B4<+PP Q Q Q R R R R R R R R R R R R R R R R R RsACC!$C!c||d}d}d}|t|t||jj||}|jj|d}||||||| t||j |dtj | t||j |dtj dS =Test that stat with follow_symlinks=False behaves like lstat.rlrmfrobozzlinkrFfollow_symlinksN) ryrArlenrrrVrrrrrr%rD base_name file_contentsr link_paths r'"test_stat_no_follow_symlinks_posixz3FakeOsModuleTest.test_stat_no_follow_symlinks_posix9s< NN7++  !  C NNC ,>,>???GL%%i;; GL%%i88  ];;; Iy111     GLLEL : :4< H      NN GLLEL : :4< H     r)c|||d}d}d}|t |t ||jj||}|jj|d}|||| ||| t ||j |dtj | d|j |dtj d S) rrlrmrrrFrrN) rrrArrrrrVrrrrrrs r'$test_stat_no_follow_symlinks_windowsz5FakeOsModuleTest.test_stat_no_follow_symlinks_windowsNsG !!! **,,,NN7++  !  C NNC ,>,>???GL%%i;; GL%%i88  ];;; Iy111     GLLEL : :4< H     tw||Iu|==dlK     r)c||d}d}d}|t|t||jj||}|jj|d}||||||| t||j |tj | t||j |tj dSNrlrmrrr) ryrArrrrrVrrrlstatrrrs r'test_lstat_size_posixz&FakeOsModuleTest.test_lstat_size_posixcs NN7++  !  C NNC ,>,>???GL%%i;; GL%%i88  ];;; Iy111 ]++TW]]9-E-Edl-STTT Yy)A)A$,)OPPPPPr)c|||d}d}d}|t |t ||jj||}|jj|d}|||| ||| t ||j |tj | d|j |tj dS)Nrlrmrrrr)rrrArrrrrVrrrrrrrs r'test_lstat_size_windowsz(FakeOsModuleTest.test_lstat_size_windowsqs* !!! **,,,NN7++  !  C NNC ,>,>???GL%%i;; GL%%i88  ];;; Iy111 ]++TW]]9-E-Edl-STTT DGMM)44T\BCCCCCr)c|j|j}|||j|j|z|||j|j|z|zdSr5)rrrrpath_separator)r% stat_results r'test_lstat_trailing_sepz(FakeOsModuleTest.test_lstat_trailing_sepsgmmDN33   t~8K8K8M8M'MNN      GMM!4!4!6!669L9L9N9NN       r)c|j|j}|jd}|j|}|||dSNutf8)rrrencoderr%stat_strbase_path_bytes stat_bytess r'test_stat_with_byte_stringz+FakeOsModuleTest.test_stat_with_byte_strings[7<<//.//77W\\/22  X.....r)c|j|j}|jd}|j|}|||dSr)rrrrrrs r'test_lstat_with_byte_stringz,FakeOsModuleTest.test_lstat_with_byte_strings[7==00.//77W]]?33  X.....r)c|jd}|jd}|||dSr)rrrr)r%r lstat_results r'test_stat_with_current_dirz+FakeOsModuleTest.test_stat_with_current_dirsDgll3'' w}}S))  l33333r)c|d}||||jj||jjzdSNalpha)rArr"rrrseprs r'test_exists_with_trailing_sepz.FakeOsModuleTest.test_exists_with_trailing_seps\NN7++  ### ,,Y-DEEFFFFFr)c|d}|j||jjz|jjz||jj|dSNr@)rArrr rrrr%r~s r'test_mkdir_with_trailing_sepz-FakeOsModuleTest.test_mkdir_with_trailing_sepsc>>%((  h,tw{:;;;  ++H5566666r)c||tj|jjddSN)ryrIrJrKrreadlinkrs r'test_readlink_empty_pathz)FakeOsModuleTest.test_readlink_empty_paths9  ##EL$'2BBGGGGGr)c||d}|j|j||t j|jj||jj zdSr) ryrArrrrIrJEINVALrr r%rs r'#test_readlink_ending_with_sep_posixz4FakeOsModuleTest.test_readlink_ending_with_sep_posixsv NN5))   222 ## L$'*I ,C     r)c>|||d}|j|j|||j||jjzj dSr) check_linux_onlyrrArrrrrr r rs r'*test_lstat_symlink_with_trailing_sep_linuxz;FakeOsModuleTest.test_lstat_symlink_with_trailing_sep_linux  **,,,NN5))   222  i$'+&=>>FGGGGGr)c>|||d}|j|j|||j||jjzj dSr) check_macos_onlyrrArrrrrr r rs r'*test_lstat_symlink_with_trailing_sep_macosz;FakeOsModuleTest.test_lstat_symlink_with_trailing_sep_macosrr)c@|||d}|j|j|||j|j||jjzdSr) rrrArrrassert_equal_pathsrr rs r'%test_readlink_ending_with_sep_windowsz6FakeOsModuleTest.test_readlink_ending_with_sep_windowss !!! **,,,NN5))   222  NDG,,Y-DEE     r)cH|||d}|j|j|||jj||jjj zdSr) rrrArrrrrislinkr rs r'%test_islink_with_trailing_sep_windowsz6FakeOsModuleTest.test_islink_with_trailing_sep_windowss !!! **,,,NN5))   222  ++I 8H,HIIJJJJJr)c||d}|j|j|||jj||jjzdSr) rrArrrr"rr'r rs r'#test_islink_with_trailing_sep_linuxz4FakeOsModuleTest.test_islink_with_trailing_sep_linuxr NN5))   222 ,,Y-DEEFFFFFr)c||d}|j|j|||jj||jjzdSr) r!rArrrr"rr'r rs r'#test_islink_with_trailing_sep_macosz4FakeOsModuleTest.test_islink_with_trailing_sep_macosr+r)c|d}|||||jjj||jjzdSNrO)rArrIrrgetsizer r%error_nrrs r',check_getsize_raises_with_trailing_separatorz=FakeOsModuleTest.check_getsize_raises_with_trailing_separators`NN5))  ### ## dgl*I ,C     r)cl||tjdSr5)ryr3rJrQrs r'1test_getsize_raises_with_trailing_separator_posixzBFakeOsModuleTest.test_getsize_raises_with_trailing_separator_posixs0  99%-HHHHHr)cl||tjdSr5)rr3rJrrs r'3test_getsize_raises_with_trailing_separator_windowszDFakeOsModuleTest.test_getsize_raises_with_trailing_separator_windowss0 !!! 99%,GGGGGr)c|d}|j|j||||jj||jjzdSr)rArrrrIremover )r%r2rs r'!check_remove_link_ending_with_sepz2FakeOsModuleTest.check_remove_link_ending_with_sepsVNN5))   222 ##Hdgni$'+>UVVVVVr)cl||tjdSr5)rr:rJrQrs r'&test_remove_link_ending_with_sep_linuxz7FakeOsModuleTest.test_remove_link_ending_with_sep_linuxs0  ..u}=====r)cl||tjdSr5)r!r:rJEPERMrs r'&test_remove_link_ending_with_sep_macosz7FakeOsModuleTest.test_remove_link_ending_with_sep_macoss0  ..u{;;;;;r)c|||tjdSr5)rrr:rJEACCESrs r'(test_remove_link_ending_with_sep_windowsz9FakeOsModuleTest.test_remove_link_ending_with_sep_windowssB !!! **,,, ..u|<<<< ) )       ##EKBBBNN5%00 NN5&11 #  ];;; Iy111 YYy ! ! YQ   S//qy1I1I$,1W X X X Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y YsAD::D>D>c|ddd}||jj| |j||ddS#t$rK}|tj |j |||j Yd}~dSd}~wwxYw)NnonexistentfileException is expected.) rAr"rrrrfailrrrJrKrS)r%ros_errors r'test_stat_non_existent_filez,FakeOsModuleTest.test_stat_non_existent_filesNN5*f==  ,,Y77888 ; GLL # # # II. / / / / / ; ; ;   U\8> : : :   Y(9 : : : : : : : : : ;s /A<< CAC  Cc|d|jjz}|||jj|tjtjztjzdSr/)rArr rIr|O_CREATO_WRONLYO_TRUNCr1s r')check_open_raises_with_trailing_separatorz:FakeOsModuleTest.check_open_raises_with_trailing_separator#s^NN5))DGK7  ##  GL  J $rz 1      r)cl||tjdSr5)rrRrJEISDIRrs r'.test_open_raises_with_trailing_separator_linuxz?FakeOsModuleTest.test_open_raises_with_trailing_separator_linux,0  66u|DDDDDr)cl||tjdSr5)r!rRrJrKrs r'.test_open_raises_with_trailing_separator_macosz?FakeOsModuleTest.test_open_raises_with_trailing_separator_macos0rVr)cl||tjdSr5)rrRrJrrs r'0test_open_raises_with_trailing_separator_windowszAFakeOsModuleTest.test_open_raises_with_trailing_separator_windows4s0 !!! 66u|DDDDDr)c4|||d}|j||||jj||jjzdSr) check_linux_and_windowsrrArrr"rlexistsr rs r'2test_lexists_with_trailing_separator_linux_windowszCFakeOsModuleTest.test_lexists_with_trailing_separator_linux_windows8s $$&&& **,,,NN5))   9--- --i$'+.EFFGGGGGr)c ||d}|j||||jj||jjzdSr)r!rArrrrr]r rs r'*test_lexists_with_trailing_separator_macosz;FakeOsModuleTest.test_lexists_with_trailing_separator_macos?sn NN5))   9---  ,,Y-DEEFFFFFr)c4|||d}|j||||jj||jjzdSr) r\rrArrr"rr'r rs r'1test_islink_with_trailing_separator_linux_windowszBFakeOsModuleTest.test_islink_with_trailing_separator_linux_windowsFs $$&&& **,,,NN5))   9--- ,,Y-DEEFFFFFr)c ||d}|j||||jj||jjzdSr)r!rArrrrr'r rs r')test_islink_with_trailing_separator_macosz:FakeOsModuleTest.test_islink_with_trailing_separator_macosMsn NN5))   9---  ++I ,CDDEEEEEr)c||d}||||jj||jjzdSr)r\rArr"rrisfiler rs r'1test_isfile_with_trailing_separator_linux_windowszBFakeOsModuleTest.test_isfile_with_trailing_separator_linux_windowsTsn $$&&&NN5))  ### ,,Y-DEEFFFFFr)c||d}||||jj||jjzdSr)r!rArr"rrrfr rs r')test_isfile_with_trailing_separator_macosz:FakeOsModuleTest.test_isfile_with_trailing_separator_macosZsn NN5))  ### ,,Y-DEEFFFFFr)c|d}||d||jj|dS)Nr@rperm)rArrrrrfrs r'test_isfile_not_readable_filez.FakeOsModuleTest.test_isfile_not_readable_fileasVNN5))  +++  ++I6677777r)c|d}|||||jj||jjzdSr)rArrIrrr r1s r'"check_stat_with_trailing_separatorz3FakeOsModuleTest.check_stat_with_trailing_separatorfsRNN5))  ### ##HdglI >>>>r)cl||tjdSr5)rrorJrrs r')test_stat_with_trailing_separator_windowsz:FakeOsModuleTest.test_stat_with_trailing_separator_windowsp0 !!! // =====r)c|d}|||||jj||jjzdSr)rArrIrr9r r1s r'$check_remove_with_trailing_separatorz5FakeOsModuleTest.check_remove_with_trailing_separatortsRNN5))  ### ##Hdgni$'+>UVVVVVr)cl||tjdSr5)ryrvrJrQrs r')test_remove_with_trailing_separator_posixz:FakeOsModuleTest.test_remove_with_trailing_separator_posixz0  11%-@@@@@r)cl||tjdSr5)rrvrJrrs r'+test_remove_with_trailing_separator_windowsz !!! **,,, 88:::::r)cV||dSr5)ryrrs r'0test_readlink_raises_if_path_is_not_a_link_posixzAFakeOsModuleTest.test_readlink_raises_if_path_is_not_a_link_posixs,  88:::::r)c4||d|dd}|||jj||ddd}|||jj|dSNa_filer@rO)rrArIrrr% error_subtypers r'&check_readlink_raises_if_path_has_filez7FakeOsModuleTest.check_readlink_raises_if_path_has_files 11222NN8U33  ##M473CYOOONN8UE::  ##M473CYOOOOOr)c|||tjdSr5rrrrJrKrs r'-test_readlink_raises_if_path_has_file_windowsz>FakeOsModuleTest.test_readlink_raises_if_path_has_file_windowsB !!! **,,, 33ELAAAAAr)cl||tjdSr5ryrrJrQrs r'+test_readlink_raises_if_path_has_file_posixzrs r'test_remove_dir_mac_osz'FakeOsModuleTest.test_remove_dir_mac_os0  ek*****r)cl||tjdSr5rrrJrArs r'test_remove_dir_windowsz(FakeOsModuleTest.test_remove_dir_windows0 !!! el+++++r)c |||jjdd}|j||tj |jj |dS)NzC:test) rr_rrrVrar,rIrJrAr9rs r'test_remove_dir_with_drivez+FakeOsModuleTest.test_remove_dir_with_drive!sy !!! 7<$$T622 ""8,,, ##EL$'.(KKKKKr)c|d}|jj|d}||||jj||j|||jj|dSNzzyrm) rArrrVrrrr9r"rs r'test_remove_filez!FakeOsModuleTest.test_remove_file)sNN5)) GL%%i99  ###  ++I66777 y!!! ,,Y7788888r)c|d}d}|jj||}||||jj||j||j|| |jj|dSr) rArrrVrrrrBr9r"r%rD file_namers r'test_remove_file_no_directoryz.FakeOsModuleTest.test_remove_file_no_directory1sNN5))  GL%%i;;  ###  ++I66777  i    y!!! ,,Y7788888r)cF||dd}|||j|d|t j|jj||j|ddS)Nr@rO$r) rrArrrrIrJrAr9r%rs r'7test_remove_file_with_read_permission_raises_in_windowszHFakeOsModuleTest.test_remove_file_with_read_permission_raises_in_windows;s !!!~~eU++   dE""" ##EL$'.$GGG  dE"""""r)cR||dd}|||j|d|j|||jj|dS)Nr@rOr) ryrArrrr9r"rrrs r'rs r'#test_remove_dir_raises_error_mac_osz4FakeOsModuleTest.test_remove_dir_raises_error_mac_os0  **5;77777r)cl||tjdSr5rrrJrArs r'$test_remove_dir_raises_error_windowsz5FakeOsModuleTest.test_remove_dir_raises_error_windows0 !!! **5<88888r)c||d}|d}|||j||||jj|||jj||j|||jj|| |jj|dSNr link_to_dir) rrAr,rrrrrr9r"r%rDrs r'test_remove_symlink_to_dirz+FakeOsModuleTest.test_remove_symlink_to_dirs  **,,,NN5)) ~~m,,  """  4(((  ++I66777  ++D11222 t  ++I66777 ,,T2233333r)c|dddd}||jj||t j|jj|dS)NrIdoesnotexist) rAr"rrrrIrJrKunlinkrs r'test_unlink_raises_if_not_existz0FakeOsModuleTest.test_unlink_raises_if_not_existscNN665'BB  ,,Y77888 ##EL$'.)LLLLLr)c|d}|jj|d}|jj|d}||d||jj|||jj||j||||jj|||jj|| |ddS)z$Can rename a file to an unused name.rl plugh_old plugh_new test contentsrN) rArrrVrrrr"renamecheck_contentsr%rD old_file_path new_file_paths r'test_rename_to_nonexistent_filez0FakeOsModuleTest.test_rename_to_nonexistent_files$NN7++  )))[AA  )))[AA  AAA  ++M::;;; ,,];;<<< }m444 ,,];;<<<  ++M::;;; M?;;;;;r)cz||d}|d}|jj|d}|||j|||tj |jj ||dSNrdir link_target) ryrArrrVr,rrIrJrQrr%rr~rs r' test_rename_dir_to_symlink_posixz1FakeOsModuleTest.test_rename_dir_to_symlink_posixs NN6** >>%((gl''-@@  !!!  Y/// ##EM47>8YWWWWWr)c|||d}|d}|jj|d}|||j|||tj |jj ||dSr) rrrArrrVr,rrIrJrrrs r'"test_rename_dir_to_symlink_windowsz3FakeOsModuleTest.test_rename_dir_to_symlink_windowss !!! **,,,NN6** >>%((gl''-@@  !!!  Y/// ##EL$'.(IVVVVVr)cD||d}|d}|j|||||j||||jj|| |jj|| |jj |dSN file_linkrI) ryrArrrrr"rrrrfr%rrs r'test_rename_file_to_symlinkz,FakeOsModuleTest.test_rename_file_to_symlinks NN;// NN6**   9--- ### y),,, ,,Y77888  ++I66777  ++I6677777r)cn||dd}|||jj|d}|jj|d}|j|||j|||j||||jj || |jj |dSNr@rOlink1link2) ryrAr,rrrVrrr"rrr%r link_path1 link_path2s r'test_rename_symlink_to_symlinkz/FakeOsModuleTest.test_rename_symlink_to_symlinks NN5%00   """W\&&y':: W\&&y'::   :...  :... z:... ,,Z88999  ++J7788888r)c||d}|d}|jj|d}|||j|||||tj |jj ||dSNdir_linkr inner_dir) ryrArrrVr,rrIrJrrr%r-r~dir_in_dir_paths r'0test_rename_symlink_to_symlink_for_parent_raiseszAFakeOsModuleTest.test_rename_symlink_to_symlink_for_parent_raisess >>*-->>%((',++HkBB !!! (+++ ((( ## L$'.(O     r)c4|||d}|||d}|j|j||jj|d}|d}|j ||| |t|j |jdS)NbetabBeta) rcheck_case_insensitive_fsrAr,rrrrrVrrrrrp)r%resultdir_path_lowerrpath1dir_path_uppers r'check_rename_case_with_symlinkz/FakeOsModuleTest.check_rename_case_with_symlinks **,,, &&(((// '''NN3''   222 !!)V44// un--- (G(G!H!HIIIIIr)c\||ddgdS)Nr4r3)r!r;rs r'!test_rename_case_with_symlink_macz2FakeOsModuleTest.test_rename_case_with_symlink_macs2  ++S&M:::::r)c\||ddgdS)Nr5r4)rr;rs r'%test_rename_case_with_symlink_windowsz6FakeOsModuleTest.test_rename_case_with_symlink_windowss2 !!! ++VSM:::::r)c||dd}|||jj|d}|tj|jj ||dSNr@rOnew_dir) ryrAr,rrrVrIrJrrr%rnew_paths r'test_recursive_rename_raisesz-FakeOsModuleTest.test_recursive_rename_raisessx NN5%00   """7<$$Y :: ##EL$'.)XVVVVVr)c$|d}|||d}|jj|d}|||j||dS)Nrold_filenew_file)rAr,rrrVrr)r%r~rrs r'#test_rename_file_to_parent_dir_filez4FakeOsModuleTest.test_rename_file_to_parent_dir_files>>%(( !!!NN:..  ))(J??  ### y-00000r)c||dd}|||tj|jj||dzdSNr@roz/new)ryrArrIrJrQrrrs r'0test_rename_with_target_parent_file_raises_posixzAFakeOsModuleTest.test_rename_with_target_parent_file_raises_posixsq NN5%00  ### ## M47>9i&6H     r)c ||dd}|||tj|jj||jj |ddSNr@ronew) rrArrIrJrArrrrVrs r'2test_rename_with_target_parent_file_raises_windowszCFakeOsModuleTest.test_rename_with_target_parent_file_raises_windowss !!!NN5%00  ### ## L GN  GL  i / /      r)c||d}|jj|d}|jj|d}|||j|||j||||jj |dSNr@slinkrI) ryrArrrVrrrr"rr%rrrs r'test_rename_symlink_to_sourcez.FakeOsModuleTest.test_rename_symlink_to_source!s NN5)) GL%%i99 GL%%i88  ###  9--- y),,, ,,Y7788888r)c||dd}|jj|d}|jj|d}|||j|||tj |jj ||dSNr@rOr-r) ryrArrrVr,rrIrJrTrr%rrr~s r'!test_rename_symlink_to_dir_raisesz2FakeOsModuleTest.test_rename_symlink_to_dir_raises+s NN5%00 GL%%i<< 7<$$Y66 !!! ),,, ##EL$'.)XVVVVVr)c||d}|||jj|d}|jj|d}|j|||j||||jj || |jj |||jj |dSrR) ryrAr,rrrVrrr"rrr]rTs r'test_rename_broken_symlinkz+FakeOsModuleTest.test_rename_broken_symlink4s  NN5))   """GL%%i99 GL%%i88   9--- y),,, ,,Y77888  ,,Y77888 ,,Y7788888r)cdD]\}}||}||}||jj|dd||jj|||jj||j||||jj|||jj|| |jj|dd| s3| d|j |jdSz)Can rename a directory to an unused name.))wxyywrl)abccbcdeedrmrrN)rArrrrVrrr"rr use_real_fsrra get_objectst_nlinkr%old_pathrDs r'test_rename_directoryz&FakeOsModuleTest.test_rename_directory@s"J S S Hh~~h//H~~h//H   TW\..xAAF  S S S OODGL//99 : : :   TW\00:: ; ; ; GNN8X . . .   TW\00:: ; ; ; OODGL//99 : : :    1 1(G D Df M M M##%% S  DO$>$>x$H$H$QRRR S Sr)c|d}|d}|||||||jj||dSNrrI)rAr,rrIrrr%r2r~rs r'.check_rename_directory_to_existing_file_raisesz?FakeOsModuleTest.check_rename_directory_to_existing_file_raisesOsn>>%((NN6**  !!! ### ##Hdgnh RRRRRr)cl||tjdSr5ryrkrJrQrs r'3test_rename_directory_to_existing_file_raises_posixzDFakeOsModuleTest.test_rename_directory_to_existing_file_raises_posixV0  ;;EMJJJJJr)cl||tjdSr5rrkrJrrs r'5test_rename_directory_to_existing_file_raises_windowszFFakeOsModuleTest.test_rename_directory_to_existing_file_raises_windowsZ0 !!! ;;ELIIIIIr)c2||dd}|dd}|||||tj|jj||dSz?Renaming to an existing directory raises OSError under Windows.r@rOroN)rrAr,rIrJrrrres r'>%//>>%// !!! !!! ##EL$'.(HUUUUUr)c|d||dd}|||d}|j|||j||||jj |||jj |dSNF) skip_posixrrIr) skip_real_fs_failurerrArrrrrrrrs r'8test_rename_to_a_hardlink_of_same_file_should_do_nothingzIFakeOsModuleTest.test_rename_to_a_hardlink_of_same_file_should_do_nothinggs !!U!333 **,,,NN5&11  ###NN6**   Y *** y),,,  ++I66777  ++I6677777r)c||d}|||jj|d}|j|||jj|dd}|||jj|dd}|j||| |jj || |jj |dS)Nr@rSr3gamma) rrAr,rrrVrrrrrr"r'r%r symlink_pathrrs r' test_hardlink_works_with_symlinkz1FakeOsModuleTest.test_hardlink_works_with_symlinkrs **,,,NN5))   """w|((G<<   <000GL%%i&AA  ###GL%%i'BB   Y ***  ++I66777 ,,Y7788888r)c2||dd}|dd}|||||tj|jj||dSru)rrAr,rIrJrArreplaceres r':test_replace_existing_directory_should_raise_under_windowszKFakeOsModuleTest.test_replace_existing_directory_should_raise_under_windowss !!!>>%//>>%// !!! !!! ##EL$'/8XVVVVVr)cN||dd}|d}||jj|d|||j||||jj|jj|d| |jj|dSURenaming to an existing directory changes the existing directory under Posix.r@rOrlsubN) ryrAr,rrrVrrrr"res r'-test_rename_to_existing_directory_under_posixz>FakeOsModuleTest.test_rename_to_existing_directory_under_posixs >>%//>>'**  ))(E::;;; !!! x***  ++DGL,=,=h,N,NOOPPP ,,X6677777r)c2||ddd}|d}|||||t j|jj||dSNr@rOrorl) ryrArr,rIrJrTrrr%rrDs r'9test_rename_file_to_existing_directory_raises_under_posixzJFakeOsModuleTest.test_rename_file_to_existing_directory_raises_under_posixs NN5%77 >>'** ### !!! ##EL$'.)XVVVVVr)c||dd}|dd}||jj|d||jj|d|t5|j||ddddS#1swxYwYdS)rr@rOrorN) ryrAr,rrrVrrrres r';test_rename_to_existing_dir_under_posix_raises_if_not_emptyzLFakeOsModuleTest.test_rename_to_existing_dir_under_posix_raises_if_not_emptys >>%//>>%//  ))(E::;;;  ))(E::;;;   w ' ' / / GNN8X . . . / / / / / / / / / / / / / / / / / /sC**C.1C.c||jdd}d}|j||t j|jj||dS)z5Renaming to another filesystem device raises OSError.z/mount/foo/barz /mount/barN) r_raadd_mount_pointrrIrJEXDEVrrres r'*test_rename_to_another_device_should_raisez;FakeOsModuleTest.test_rename_to_another_device_should_raisesp  ''111 ##H--- ##EK8TTTTTr)c&||d}|jj|d}|jj|d}||d||d||jj|||jj||j||| |jj|||jj|| |ddSz,Can rename a file to a used name under Unix.rlr rtest contents 1rtest contents 2N) ryrArrrVrrrrr"rrs r'"test_rename_to_existent_file_posixz3FakeOsModuleTest.test_rename_to_existent_file_posixsP NN7++  )))[AA  )))[AA  1BCCC 1BCCC  ++M::;;;  ++M::;;; }m444 ,,];;<<<  ++M::;;; M+<=====r)cT||d}|jj|d}|jj|d}||d||d||jj|||jj||tj |jj ||dSzC  CC/)D%%D),D)cX||ddSN)r\rrs r'#test_append_mode_tell_linux_windowsz4FakeOsModuleTest.test_append_mode_tell_linux_windowss. $$&&& 22155555r)cX||ddSr)r!rrs r'test_append_mode_tell_macosz,FakeOsModuleTest.test_append_mode_tell_macos!s.  22155555r)c|d}||d5}|d|d|ddddS#1swxYwYdS)Nr@r)rAr|rrrrs r'#test_tell_after_seek_in_append_modez4FakeOsModuleTest.test_tell_after_seek_in_append_mode&sNN5)) YYy# & & *! FF1III   Q ) ) ) * * * * * * * * * * * * * * * * * *s>A77A;>A;c2|d}||d5}|d|d|d|ddddS#1swxYwYdS)Nr@raar)rAr|rrrrrs r''test_tell_after_seekback_in_append_modez8FakeOsModuleTest.test_tell_after_seekback_in_append_mode-sNN5)) YYy# & & *! GGDMMM FF1III   Q ) ) ) * * * * * * * * * * * * * * * * * *sAB  BBc|||jj|j|jjzdSr5)rrrisdirrr rs r'!test_dir_with_trailing_sep_is_dirz2FakeOsModuleTest.test_dir_with_trailing_sep_is_dir5s9 dgl00$'+1MNNOOOOOr)c|d|jjz}|j||||jj||jdSNr)rArr rrIrr)r%errorr~s r'"check_rename_dir_with_trailing_sepz3FakeOsModuleTest.check_rename_dir_with_trailing_sep9sV>>%((47;6  h ##E47>8T^TTTTTr)cl||tjdSr5)ryrrJ ENOTEMPTYrs r''test_rename_dir_with_trailing_sep_posixz8FakeOsModuleTest.test_rename_dir_with_trailing_sep_posix>s0  //@@@@@r)cl||tjdSr5)rrrJrrs r')test_rename_dir_with_trailing_sep_windowsz:FakeOsModuleTest.test_rename_dir_with_trailing_sep_windowsCrtr)c|d}|jj|d}|jj|dd}|jj|d}|jj|dd}||||d||jj|||jj|||jj|||jj||j ||||jj|||jj|||jj|||jj|| |ddSzTest a rename of a directory.rlbeforerIafterpayloadrN) rArrrVr,rrrr"rrr%rDr before_filer after_files r'test_rename_dirz FakeOsModuleTest.test_rename_dirGsNN7++ W\&&y(;; gl'' 8VDD GL%%i99 W\&&y'6BB   ### y999  ++J77888  ++K88999 ,,Y77888 ,,Z88999 z9--- ,,Z88999 ,,[99:::  ++I66777  ++J77888 J 22222r)c|||d}|jj|d}|jj|d}|||j|}|j dz |_ |j |dd|j |d|||j|}| |j |j |j |||j|d}||j |j ||j|j||j|j||j|jd S) zTest if rename preserves mtime.rlr riF)check_read_permN)ryr_rArrrVrrarcst_mtimechownrrrrr st_uidst_gid)r%rDrrrGrHs r'test_rename_preserves_statz+FakeOsModuleTest.test_rename_preserves_stat[s  NN7++  )))[AA  )))[AA  '''?--m<<$-4  mS#...  mU+++ '''?--m<< H-x/@AAA }m444?--mU-SS *H,=>>> )8+;<<< (/::: (/:::::r)c|d}d}|jj|d}||||j|||||dSz2Test renaming when old and new names are the same.rlz Spam eggseggsrN)rArrrVrrrr%rDrrs r'test_rename_same_filenamesz+FakeOsModuleTest.test_rename_same_filenamesqs|NN7++ # GL%%i88  ];;; y),,, I}55555r)c|d}|dd}|dd}||||jj||j|||jj||||||j||jd||jj||jd|jd||jj|dS)Can remove a directory.rlabccdr`z../cdeedr^N rAr,rrrrrmdirr"rBr%rDsub_dir other_dirs r' test_rmdirzFakeOsModuleTest.test_rmdirzoNN7++ ..'22NN7G44   """  ++I66777  i    ,,Y77888      """  g  j!!! ,,Y77888  d  g ,,W5566666r)cT|d}|jj|d}||||jj||tj |jj |dS)z9Raises an exception if the target directory is not empty.rlrmN) rArrrVrrrrIrJrrrs r'test_rmdir_raises_if_not_emptyz/FakeOsModuleTest.test_rmdir_raises_if_not_emptysNN7++ GL%%i99  ###  ++I66777 ##EOTW]INNNNNr)c|d}|jj|d}||||jj||tj |jj ||||jj ddS)z5Raises an exception if the target is not a directory.rlrmrN) rArrrVrrrrIrJrQr)r%r2rDrs r'#check_rmdir_raises_if_not_directoryz4FakeOsModuleTest.check_rmdir_raises_if_not_directorysNN7++ GL%%i99  ###  ++I66777 ##EM47=)LLL ##HdgmSAAAAAr)cl||tjdSr5)ryrrJrrs r'(test_rmdir_raises_if_not_directory_posixz9FakeOsModuleTest.test_rmdir_raises_if_not_directory_posixs0  00>>>>>r)cl||tjdSr5)rrrJrArs r'*test_rmdir_raises_if_not_directory_windowsz;FakeOsModuleTest.test_rmdir_raises_if_not_directory_windowss0 !!! 00>>>>>r)c|d}||jj||t j|jj|dS)z1Raises an exception if the target does not exist.rlN) rAr"rrrrIrJrKrrCs r'test_rmdir_raises_if_not_existz/FakeOsModuleTest.test_rmdir_raises_if_not_exists]NN7++  ,,Y77888 ##EL$'-KKKKKr)c|||dd}|jj|d}|||jj|d}|j|||j|dz| |jj |dS)Nr@rOr r3z/alpha rrrArrrVr,rrr"rr%rr~rs r'test_rmdir_via_symlinkz'FakeOsModuleTest.test_rmdir_via_symlink !!! **,,,NN5%00 7<$$Y88 !!!GL%%i88   9---  i(*+++ ,,X6677777r)c||jj||j||jj| Sr5)rrrr removedirsrCs r'remove_dirs_checkz"FakeOsModuleTest.remove_dirs_checksW  ++I66777 9%%%7<&&y1111r)c|gd}|D]o}|||||jj||p|tj |j ||d|tj |j ||d|| ||d||jj||d| |jj||d||jj||d|tj |j ||d| |jj||d||dd|j |d|| |dd| |jj|dd| |jj|ddS) N)test1)r test2)r extra)r r test3rrrarr r r )r_r,rArrrrrIrJrrr"EBUSYra)r%datarDs r'test_removedirsz FakeOsModuleTest.test_removedirss       L LI OODNN955 6 6 6 OODGL//y0I0IJJ K K K K ## OT3T^^DG5L5L    ## OT3T^^DG5L5L    ..t~~d1g/F/FGGHHH  ++DNN47,C,CDDEEE ,,T^^DG-D-DEEFFF  ++DNN47,C,CDDEEE ## K/Q1H1H   ,,T^^DG-D-DEEFFF w88999 ""4>>'#:#:;;; ..t~~gw/O/OPPQQQ ,,T^^GW-M-MNNOOO ,,T^^G-D-DEEFFFFFr)c||j|j|jj|jd|jjjz}||jj|| tj |jj |dS)z(Raises exception if asked to remove '/'.rN) r_rrrr splitdriver rrrIrJr rrCs r''test_removedirs_raises_if_removing_rootz8FakeOsModuleTest.test_removedirs_raises_if_removing_roots   dn%%%GL++DN;;A>AQQ   ++I66777 ##EK1CYOOOOOr)c||dd}||||jj||tj |jj ||jj |\}}|jj |d|jjj kr||jj||jj |\}}|jj |d|jjj kdSdS)zRaises exception if asked to remove '/' as part of a larger operation. All of other directories should still be removed, though. r@rOrN)r_rAr,rrrrrIrJr rsplitrr r")r%rDhead unused_tails r'/test_removedirs_raises_if_cascade_removing_rootz@FakeOsModuleTest.test_removedirs_raises_if_cascade_removing_roots< NN5%00   """  ++I66777 ##EK1CYOOO GL..y99kgl%%d++A.$',2BBB   TW\00;; < < < $ 2 24 8 8 D+gl%%d++A.$',2BBBBBBBr)c||d|dd}||||jj||j|||jj|dS)z:removedirs works on directory names with trailing slashes.ror@rON)r,rArrrrrr"rCs r'#test_removedirs_with_trailing_slashz4FakeOsModuleTest.test_removedirs_with_trailing_slashs u--...NN5%00   """  ++I66777 9%%% ,,Y7788888r)c8||d}|d}|||j|||t j|jj|dS)Nrr-) ryrAr,rrrIrJrQr)r%r~r-s r''test_remove_dirs_with_top_symlink_failsz8FakeOsModuleTest.test_remove_dirs_with_top_symlink_failss >>%((>>*-- !!! (+++ ##EM473ExPPPPPr)cH||d}|d}|||j|||jj|d}|||j|||jj || |jj |dSNrr-rZ) ryrAr,rrrrVrr"rrr%r~r- dir_in_dirs r'.test_remove_dirs_with_non_top_symlink_succeedsz?FakeOsModuleTest.test_remove_dirs_with_non_top_symlink_succeeds s >>%((>>*-- !!! (+++W\&&x88   ### :&&& ,,Z88999  ++H5566666r)c|d}||j||j|||jd|z|j||j|||jd|d||j||jd||jjd|zdS)z&mkdir can create a relative directory.rlz/%s/z../abccbz /%s/abccbN) r_r"rarrrrrBrrCs r' test_mkdirzFakeOsModuleTest.test_mkdirs'   // ::;;;  i    ..uy/@AABBB  i     i    ...999ii/PQQRRR  i     j!!!  ++K),CDDEEEEEr)c|d}||jj||j|||jj|||jj|ddS)z9mkdir can create a directory named with a trailing slash.r@N)rAr"rrrrrrCs r'test_mkdir_with_trailing_slashz/FakeOsModuleTest.test_mkdir_with_trailing_slash(sNN5))  ,,Y77888  i     ++I66777  ++DNN5,A,ABBCCCCCr)c`d}|tj|jj|dS)z5mkdir raises exeption if creating directory named ''.rN)rIrJrKrrrCs r')test_mkdir_raises_if_empty_directory_namez:FakeOsModuleTest.test_mkdir_raises_if_empty_directory_name0s+  ##EL$'-KKKKKr)cd}|d}||jj||t j|jj|dS)z:mkdir raises exception if parent directory does not exist.rl/fooN)r"rrrrIrJrKrr%parentrDs r'test_mkdir_raises_if_no_parentz/FakeOsModuleTest.test_mkdir_raises_if_no_parent5s] &(  ,,V44555 ##EL$'-KKKKKr)c||dd}|jj|d}|jj|d}|||j|||tj |jj |dSNr@rOrr) ryrArrrVr,rrIrJrQrrXs r'%test_mkdir_raises_on_symlink_in_posixz6FakeOsModuleTest.test_mkdir_raises_on_symlink_in_posix<s NN5%00 GL%%i?? 7<$$Y66 !!! ),,, ##EM47=)LLLLLr)c^|||dd}|jj|d}|jj|d}|||j|||j|| |jj || |jj |dSr.) rrrArrrVr,rrr"rrrXs r'%test_mkdir_removes_symlink_in_windowsz6FakeOsModuleTest.test_mkdir_removes_symlink_in_windowsEs !!! **,,,NN5%00 GL%%i?? 7<$$Y66 !!! ),,,  i    ,,Y77888  ++H5566666r)c|d}||||jj||tj|jj |dSz3mkdir raises exception if directory already exists.rlN) rAr,rrrrrIrJrrrCs r'%test_mkdir_raises_if_directory_existsz6FakeOsModuleTest.test_mkdir_raises_if_directory_existsQsmNN7++   """  ++I66777 ##EL$'-KKKKKr)cT|d}|jj|d}||||jj||tj |jj |dS8mkdir raises exception if name already exists as a file.rlrmN) rArrrVrrrrIrJrrrs r' test_mkdir_raises_if_file_existsz1FakeOsModuleTest.test_mkdir_raises_if_file_existsXsNN7++ GL%%i99  ###  ++I66777 ##EL$'-KKKKKr)c|d}|jj|d}|||||jj|jj|ddSr7rlrmffN)rArrrVrrIrr% error_typerDrs r'$check_mkdir_raises_if_parent_is_filez5FakeOsModuleTest.check_mkdir_raises_if_parent_is_file`sNN7++ GL%%i99  ### ##  tw|'8'8D'I'I     r)cl||tjdSr5ryr>rJrQrs r')test_mkdir_raises_if_parent_is_file_posixz:FakeOsModuleTest.test_mkdir_raises_if_parent_is_file_posixiryr)cl||tjdSr5rr>rJrKrs r'+test_mkdir_raises_if_parent_is_file_windowsz>%// !!!NN5&11  ),,,',##Iy99  g  ++G4455555r)cl|d}|jj|d}||jj||j|||jj|dSz>makedirs can create a directory even if parent does not exist.rlr@N)rArrrVr"rmakedirsrr*s r' test_makedirszFakeOsModuleTest.test_makedirss((GL%%fe44  ,,V44555 ###  ++I6677777r)c@|d}|jj|d}||||jj||||jj|dSzAmakedirs raises exception if a parent component exists as a file.rlrmN) rArrrVrrrrIrWr%r=rrDs r''check_makedirs_raises_if_parent_is_filez8FakeOsModuleTest.check_makedirs_raises_if_parent_is_filesNN7++ GL%%i99  ###  ++I66777 ##J0@)LLLLLr)cl||tjdSr5ryr\rJrQrs r',test_makedirs_raises_if_parent_is_file_posixz=FakeOsModuleTest.test_makedirs_raises_if_parent_is_file_posix0  44U]CCCCCr)cl||tjdSr5rr\rJrKrs r'.test_makedirs_raises_if_parent_is_file_windowsz?FakeOsModuleTest.test_makedirs_raises_if_parent_is_file_windows0 !!! 44U\BBBBBr)cF||d}|j|d||t j|jj|jj |ddSN broken_linkbogusnewdir) ryrArrrIrJrKrWrrVrs r'-test_makedirs_raises_if_parent_is_broken_linkz>FakeOsModuleTest.test_makedirs_raises_if_parent_is_broken_links NN=11  w//;;; ## L G  GL  i 2 2     r)c$||d}|jj|d}|j|||tj|jj |dS)Nr) rrArrrVrrIrJrrWr%rrs r'.test_makedirs_raises_if_parent_is_looping_linkz?FakeOsModuleTest.test_makedirs_raises_if_parent_is_looping_linksy **,,,NN6** gl'' 6::   Y/// ##EL$'2BINNNNNr)c||dd}|||jj|d}|j|||jj|d}|j|||jj |dS)Nr@rOlinkedruname) ryrAr,rrrVrrWrr)r%base_dirlink_dirrBs r'"test_makedirs_if_parent_is_symlinkz3FakeOsModuleTest.test_makedirs_if_parent_is_symlinks >>%// !!!7<$$Xx88 (+++',##Hc22 g&&&  ++G4455555r)c@||d}|j||j|d|dd}t sO|t5|j|ddddS#1swxYwYdS|j|| |jj |dS)z+makedirs raises exception if access denied.rrQr4N) ryrArrrr rrrWrrrrCs r'%test_makedirs_raises_if_access_deniedz6FakeOsModuleTest.test_makedirs_raises_if_access_denieds@ NN3''   i     i'''NN3,, yy <""7++ , ,  +++ , , , , , , , , , , , , , , , , , , G  Y ' ' ' OODGL// :: ; ; ; ; ;sCC  C c|dd}||||jj||tj|jj ||j |d||jj|dSz#makedirs uses the exist_ok argumentrlr@Texist_okN) rAr,rrrrrIrJrrWrCs r'test_makedirs_exist_okz'FakeOsModuleTest.test_makedirs_exist_oksNN7E22   """  ++I66777 ##EL$'2BINNN T222  ++I6677777r)c<||d}|j|d|jj|d}t s\|tj |jj |d|tj |jj |ddS|j || |jj |dS)Nr@rrrOTryF) ryrArrrrVr rIrJrArWrr)r%rDsubdirs r'$test_makedirs_in_write_protected_dirz5FakeOsModuleTest.test_makedirs_in_write_protected_dirs  NN5))   ie ,,,""9e44yy 9  ' ' dg. (     ' ' dg. (      G  V $ $ $ OODGL//77 8 8 8 8 8r)c|tj|jjdd|tj|jjdddS)NrFryT)rIrJrKrrWrs r'"test_makedirs_raises_on_empty_pathz3FakeOsModuleTest.test_makedirs_raises_on_empty_pathsR ##EL$'2BBQV#WWW ##EL$'2BBQU#VVVVVr)c|t5|jdddddS#1swxYwYdSNzero)rrrfsyncrs r'test_fsync_raises_on_non_intz-FakeOsModuleTest.test_fsync_raises_on_non_ints   y ) ) " " GMM& ! ! ! " " " " " " " " " " " " " " " " " "sAA Acz||t|jjddSr)rrrr fdatasyncrs r' test_fdatasync_raises_on_non_intz1FakeOsModuleTest.test_fdatasync_raises_on_non_int s7  )TW%6?????r)c\|tj|jjddSr)rIrJr{rrrs r'test_fsync_raises_on_invalid_fdz0FakeOsModuleTest.test_fsync_raises_on_invalid_fd$s& ##EKDDDDDr)c||tj|jjd|tj|jjddS)Nrrx)rrIrJrrrr{rs r'#test_fdatasync_raises_on_invalid_fdz4FakeOsModuleTest.test_fdatasync_raises_on_invalid_fd'sX  ##EL$'2CQGGG ##EK1BCHHHHHr)c||d}||d||d5}|}|j||tj |jj|dzddddS#1swxYwYdSN test_filedummy file contentsrrrx) ryrArr|rrrrIrJr{r%test_file_pathrtest_fds r'test_fsync_pass_posixz&FakeOsModuleTest.test_fsync_pass_posix-s  44 2GHHH YY~s + + Sy&&((G GMM' " " "  ' ' TW]GcM R R R  S S S S S S S S S S S S S S S S S SsACCCcv||d}||d||d5}|}|j||tj |jj|dzdddn #1swxYwY||d5}|}|tj |jj|ddddS#1swxYwYdS)Nrrrr+rxr) rrArr|rrrrIrJr{rs r'test_fsync_pass_windowsz(FakeOsModuleTest.test_fsync_pass_windows8s !!! 44 2GHHH YY~t , , S &&((G GMM' " " "  ' ' TW]GcM R R R  S S S S S S S S S S S S S S S YY~s + + My&&((G  ' ' TW]G L L L M M M M M M M M M M M M M M M M M Ms&ACCC!AD..D25D2cj||d}||d||d}|}|j||tj |jj|dzdSr) rrArr|rrrrIrJr{rs r'test_fdatasync_passz$FakeOsModuleTest.test_fdatasync_passFs  44 2GHHHIInc22 ""$$ '""" ##EK1BGcMRRRRRr)cD||d}|||j|d|d|j|j||j ||jj ||j ||jj ||j ||jj ||j ||jj ||j ||jdS)N some_file)ryrAr(rrassert_mode_equalrr raccessF_OKr8r9r:r;rs r'test_access700zFakeOsModuleTest.test_access700Rs8 ~~k** D!!!  dE""" udgll4&8&8&@AAA tTW\::;;; tTW\::;;; tTW\::;;; tTW\::;;; tTX6677777r)c||d}|||j|d|d|j|j||j ||jj ||j ||jj ||j ||jj | |j ||jj| |j ||j||j ||jdS)Nr)ryrAr(rrrrr rrrr8r9r"r:r;r<rs r'test_access600zFakeOsModuleTest.test_access600`s` ~~k** D!!!  dE""" udgll4&8&8&@AAA tTW\::;;; tTW\::;;; tTW\::;;; dgl;;<<< dh77888 tTW5566666r)c||d}|||j|d|d|j|j||j ||jj ||j ||jj | |j ||jj | |j ||jtrm||j ||jj||j ||jdS| |j ||jj| |j ||jdS)NrrQ)ryrAr(rrrrr rrrr8r"r:r;r r9r<rs r'test_access400zFakeOsModuleTest.test_access400os ~~k** D!!!  dE""" udgll4&8&8&@AAA tTW\::;;; tTW\::;;; dgl;;<<< dh77888 99 < OODGNN4>> ? ? ? OODGNN499 : : : : :   TW^^D$',?? @ @ @   TW^^D$':: ; ; ; ; ;r)cZ|||d}|||d}||||j|d||j||jj ||j||jj trl||j||jj ||j||j nk||j||jj ||j||j ||j||jj||j||j||j||jj d||j||jj d||j||jj d||j||jjd||j||jd||j||j ddS)Nrlink_to_some_filerQFr)rr_rAr(rrrrrrr8r r9r<r"r:r;)r%rrs r'test_access_symlinkz$FakeOsModuleTest.test_access_symlinks **,,, ~~k** D!!!NN#677  It,,,  i''' y$',??@@@ y$',??@@@ 99 A OODGNN9dglCC D D D OODGNN9dg>> ? ? ? ?   TW^^Itw|DD E E E   TW^^Itw?? @ @ @  47<@@AAA  48<<=== y$',PUVVWWW y$',PUVVWWW y$',PUVVWWW y$',PUVVWWW y$(ERRSSS y$'5QQRRRRRr)c$|ddd}||jj|||j||jj||j||jj||j||jj||j||jj ||j||j ||j||j dS)NrGrHrI) rAr"rrrrrr8r9r:r;r<rs r'test_access_non_existent_filez.FakeOsModuleTest.test_access_non_existent_files/~~eZ88 ,,T22333 dgl;;<<< dgl;;<<< dgl;;<<< dgl;;<<< dh77888 dg6677777r)c||dd}|t5|j||jjdddddS#1swxYwYdS)Nr@rOT) effective_ids)rrArNotImplementedErrorrrrrs r'.test_effective_ids_not_supported_under_windowsz?FakeOsModuleTest.test_effective_ids_not_supported_under_windowss !!!~~eU++   2 3 3 C C GNN4TN B B B C C C C C C C C C C C C C C C C C Cs(A::A>A>c|||d}|||j|d|j|}|d|j| |jt j z| |jt j zdSNrc ) ryr_rAr(rrrrr rr!r"r#r$s r' test_chmodzFakeOsModuleTest.test_chmods  ~~k** D!!!  dF### W\\$   vrz222  T\1222 dl233333r)c|||tj|jjdd|d}||| |5}|j|j d|j |}| d|j ddddS#1swxYwYdS)Nrrr)ryr_rIrJr{rrrAr(r|rrrr r%rrur&s r'test_chmod_uses_open_fd_as_pathz0FakeOsModuleTest.test_chmod_uses_open_fd_as_paths   ##EK6JJJ~~k** D!!! YYt__ 7 GMM!)V , , ,d##B  " "62: 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7sAC77C;>C;c4||d}|||d}||||j|d|j|}|d|j|j|d}| t j dt j |jdzdS)NrrrFrr) ryrAr(rrrrrr rrr%rrr&s r'test_chmod_follow_symlinkz*FakeOsModuleTest.test_chmod_follow_symlinks ~~k** D!!!NN#677  It,,,  i((( W\\) $ $ vrz222 W\\)U\ ; ; e,,dl2:.F.F.NOOOOOr)c||d}|||d}||||jj|jjvstrR|t5|j|ddddddS#1swxYwYdS|j|dd|j |}| d|j |j |d}| d|j dS)NrrrFrr) ryrAr(rrrsupports_follow_symlinksrrrrrr rs r'test_chmod_no_follow_symlinkz-FakeOsModuleTest.test_chmod_no_follow_symlinks ~~k** D!!!NN#677  It,,, 7= @ @ @G @""#677 H H i GGG H H H H H H H H H H H H H H H H H H GMM)VUM C C Ci((B  " "5"* 5 5 5i??B  " "62: 6 6 6 6 6s#CCCc |||d}|||d}||||j|d|j|}|d|j |j |}|d|j dS)z9lchmod shall behave like chmod with follow_symlinks=True.rrrrN) ryr_rAr(rrlchmodrrr rrs r' test_lchmodzFakeOsModuleTest.test_lchmods  ~~k** D!!!NN#677  It,,, y&))) W\\) $ $ ubj111 W]]9 % % vrz22222r)c|||d}|||j|d|j|}|d|j| |jt j z| |jt j zdS)Nsome_diri) ryr_rAr-rrrrr r"r!rr#r$s r'test_chmod_dirzFakeOsModuleTest.test_chmod_dirs  ~~j))   &&&  dF### W\\$   vrz222 dl2333  T\122222r)c|ddd}||jj| |j|d|ddS#t$rK}|tj |j |||j Yd}~dSd}~wwxYw)NrGrHrIr+rJ) rAr"rrrrrKrrrJrKrS)r%rrLs r'test_chmod_non_existentz(FakeOsModuleTest.test_chmod_non_existents~~eZ88 ,,T22333 6 GMM$ & & & II. / / / / / 6 6 6   U\8> : : :   T8#4 5 5 5 5 5 5 5 5 5 6s 0A== CAC  Cc||d}|||j|dd|j|}||t jd||t jd|j|dd|j|}||t jd||t jd|j|dd|j|}||t jd||t jddS)Nrder) r_rArrrrrST_UIDST_GIDr%rr&s r'test_chown_existing_filez)FakeOsModuleTest.test_chown_existing_filesh NN;//  ###  ic*** W\\) $ $ DK#... DK#...  ic*** W\\) $ $ DK#... DK#...  iR((( W\\) $ $ DK#... DK#.....r)c$|||tj|jjddd|dd}||| |5}|j|j dd|j |}| |tj dddddS#1swxYwYdS)Nrrrr@rO)ryr_rIrJr{rrrArr|rrrr)r%rrur&s r'test_chown_uses_open_fd_as_pathz0FakeOsModuleTest.test_chown_uses_open_fd_as_path&s+   ##EK3LLLNN5%00  ### YYy ! ! 3Q GMM!)S# . . .i((B   R _c 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3sA"DD  D c||d}|||d}||||j|dd|j|}||t jd||t j d|j|d}| |t jd| |t j ddSNrrrrFr) r_rArrrrrrrrrr%rrr&s r'test_chown_follow_symlinkz*FakeOsModuleTest.test_chown_follow_symlink2s NN;//  ###NN#677  Iy111  ic*** W\\) $ $ DK#... DK#... W\\)U\ ; ; Bt{OS111 Bt{OS11111r)c||d}|||d}||||j|ddd|j|}||t jd||t j d|j|d}| |t jd| |t j ddSr) r_rArrrrrrrrrrs r'test_chown_no_follow_symlinkz-FakeOsModuleTest.test_chown_no_follow_symlinkAs NN;//  ###NN#677  Iy111  ic5 AAA W\\) $ $ Bt{OS111 Bt{OS111 W\\)U\ ; ; DK#... DK#.....r)c"||d}|||t|jj|dd|t|jj|dddS)z$os.chown() with bad args (Issue #30)rusernamer groupnameN)ryrArrrrrrs r'test_chown_bad_argumentsz)FakeOsModuleTest.test_chown_bad_argumentsPs NN;//  ### )TW]Iz2NNN )TW]Ir;OOOOOr)c||d}||jj||tj|jj |dddS)Nrr) ryrAr"rrrrIrJrKrrs r'1test_chown_nonexisting_file_should_raise_os_errorzBFakeOsModuleTest.test_chown_nonexisting_file_should_raise_os_errorXst NN;//  ,,Y77888 ##EL$'-CQTUUUUUr)c|d}ddg}gd}|||D]7}|jj||}||8|D]7}|jj||}||8|||j|}t|\}}} || | ||| ||| || dS)z/Directory classification should work correctly.r@bar1baz2)baz1bar2baz3N) rAr,rrrVrrqwalknextr) r%root_directorytest_directories test_filesrDr generatorrootdirsrts r' test_classify_directory_contentsz1FakeOsModuleTest.test_classify_directory_contents^sa.."F+---  ''') ' 'I )).)DDI OOI & & & &# ( (I )).)DDI   Y ' ' ' 'GLL00  OOdE   ... )4000 U+++++r)c||d}||jj||j|||jj||tj dz|j |j dS)Nr@r) rrAr"rrrmknodrrrr!r rRs r'test_mk_nod_can_create_a_filez.FakeOsModuleTest.test_mk_nod_can_create_a_filews >>%(( ,,X66777  h  ++H55666 -tw||H/E/E/MNNNNNr)c|d}|tj|jj|dSrrrIrJrKrrrRs r'%test_mk_nod_raises_if_empty_file_namez6FakeOsModuleTest.test_mk_nod_raises_if_empty_file_name=  ##EL$'-JJJJJr)cR||d}|jj|d}||jj||tj |jj |dS)Nrlr@) rrArrrVr"rrIrJrKr)r%r+rSs r'-test_mk_nod_raises_if_parent_dir_doesnt_existz>FakeOsModuleTest.test_mk_nod_raises_if_parent_dir_doesnt_exists ((7<$$VU33 ,,V44555 ##EL$'-JJJJJr)c>||dd}||||jj||tj |jj |dSNtmpr@ rrArrrrrrIrJrrrRs r'!test_mk_nod_raises_if_file_existsz2FakeOsModuleTest.test_mk_nod_raises_if_file_existss >>%// """  ++H55666 ##EL$'-JJJJJr)c||dd}|tj|jj|dS)NrrrrArIrJrKrrrRs r'%test_mk_nod_raises_if_filename_is_dotz6FakeOsModuleTest.test_mk_nod_raises_if_filename_is_dotsK >>%-- ##EL$'-JJJJJr)c||dd}|tj|jj|dS)Nrr^rrRs r',test_mk_nod_raises_if_filename_is_double_dotz=FakeOsModuleTest.test_mk_nod_raises_if_filename_is_double_dotsK >>%.. ##EL$'-JJJJJr)c<||d}||||jj||tj |jj |dSrrrRs r'.test_mknod_empty_tail_for_existing_file_raisesz?FakeOsModuleTest.test_mknod_empty_tail_for_existing_file_raisess >>%(( """  ++H55666 ##EL$'-JJJJJr)c||dd}|tj|jj|dSrrrRs r'1test_mknod_empty_tail_for_nonexistent_file_raiseszBFakeOsModuleTest.test_mknod_empty_tail_for_nonexistent_file_raisessK >>%// ##EL$'-JJJJJr)c|d}|tj|jj|dSrrrRs r'-test_mknod_raises_if_filename_is_empty_stringz>FakeOsModuleTest.test_mknod_raises_if_filename_is_empty_stringrr)cd||d}ts8|tj|jj|tj dS|j|tj |j |dS)Nr) ryr_r rIrJr>rrrS_IFCHRr9rRs r'(test_mknod_raises_if_unsupported_optionsz9FakeOsModuleTest.test_mknod_raises_if_unsupported_optionss  yy %  ' ' TW]Hdl      GMM(DL 1 1 1 GNN8 $ $ $ $ $r)ch||d}||||jj||dd}|tj |jj |dSrg) rrArrrrrrIrJrQr)r% filename1 filename2s r'.test_mknod_raises_if_parent_is_not_a_directoryz?FakeOsModuleTest.test_mknod_raises_if_parent_is_not_a_directorys NN5))  ###  ++I66777NN5%00  ##EM47=)LLLLLr)c||ddd}||dd|jd|||jj|||jj || |ddd||jj|||jj |dS)Nr@rOrorh) rrAr,rrrrr]r"rrrs r' test_symlinkzFakeOsModuleTest.test_symlinks **,,,NN5%77  ue44555 +++  ,,Y77888 ,,Y77888 ug>>???  ,,Y77888  ++I6677777r)cH||d}|jj|d}|t j|jj|||t j|jj||dSr/) ryrArrrVrIrJrKrr%r~rs r''test_symlink_on_nonexisting_path_raisesz8FakeOsModuleTest.test_symlink_on_nonexisting_path_raisess >>%((GL%%h66  ##EL$'/9iXXX ##EL$'/8YWWWWWr)c||d}|||tj|jj|j||jj z|d}|tj |jj|j||jj zdSNrrO) ryrAr,rIrJrrrrr rKrs r'/test_symlink_with_path_ending_with_sep_in_posixz@FakeOsModuleTest.test_symlink_with_path_ending_with_sep_in_posixs >>%(( !!! ## L GO N tw{ "    >>%(( ## L GO N tw{ "      r)c|||d}|||t j|jj|j ||jj z|d}|j|j ||jj zdSr) rrrAr,rIrJrrrrr rs r'1test_symlink_with_path_ending_with_sep_in_windowszBFakeOsModuleTest.test_symlink_with_path_ending_with_sep_in_windowss !!! **,,,>>%(( !!! ## L GO N tw{ "    >>%(( 47;(>?????r)c||d|jjz}|t j|jj||dSr)rrArr rIrJrKrr%path0s r'+test_broken_symlink_with_trailing_sep_posixzFakeOsModuleTest.test_broken_symlink_with_trailing_sep_windowssf !!! **,,,u%% 3 ##EL$'/5%PPPPPr)c||d}|j|j||t j|jj||jj z|jdSr) rrArrrrIrJrQrr rs r'+test_rename_symlink_with_trailing_sep_linuxz4$'++=t~     r)c||d}|j|j||j||jjz|jdSr)r!rArrrrr rs r'+test_rename_symlink_with_trailing_sep_macosz:::::r)c<|||d}|j|j||tj|jj ||jj z|jdSr) rrrArrrrIrJrrr rs r'-test_rename_symlink_with_trailing_sep_windowsz>FakeOsModuleTest.test_rename_symlink_with_trailing_sep_windows s !!! **,,,~~e$$ --- ## L$'.$*9MMMMMr)c||}|tj|jj|dSr5)r!r'rIrJrKrr9rs r'/test_remove_broken_link_with_trailing_sep_macosz@FakeOsModuleTest.test_remove_broken_link_with_trailing_sep_macosU sI BBDD  ##EL$'.)LLLLLr)c||}|tj|jj|dSr5)rr'rIrJrrr9rs r'1test_remove_broken_link_with_trailing_sep_windowszBFakeOsModuleTest.test_remove_broken_link_with_trailing_sep_windowsZ sI !!!BBDD  ##EL$'.)LLLLLr)c||}|tj|jj||ddSNr)rr'rIrJrQrrrArs r'/test_rename_broken_link_with_trailing_sep_linuxz@FakeOsModuleTest.test_rename_broken_link_with_trailing_sep_linux_ sb BBDD  ## M47>9dnnX6N6N     r)c||}|tj|jj||ddSr<)r!r'rIrJrKrrrArs r'/test_rename_broken_link_with_trailing_sep_macosz@FakeOsModuleTest.test_rename_broken_link_with_trailing_sep_macosf sb BBDD  ## L$'.)T^^H5M5M     r)c||}|tj|jj||ddSr<)rr'rIrJrrrrArs r'1test_rename_broken_link_with_trailing_sep_windowszBFakeOsModuleTest.test_rename_broken_link_with_trailing_sep_windowsm sb !!!BBDD  ## L$'.)T^^H5M5M     r)c||}|tj|jj|dSr5)ryr'rIrJrKrrrs r'1test_readlink_broken_link_with_trailing_sep_posixzBFakeOsModuleTest.test_readlink_broken_link_with_trailing_sep_posixt sJ BBDD  ##EL$'2BINNNNNr)c||}|tj|jj|dSr5)rr'rIrJrrrrs r'3test_readlink_broken_link_with_trailing_sep_windowszDFakeOsModuleTest.test_readlink_broken_link_with_trailing_sep_windowsy sJ !!!BBDD  ##EL$'2BINNNNNr)c|}||jj|dSr5)r'r"rrr'rs r')test_islink_broken_link_with_trailing_sepz:FakeOsModuleTest.test_islink_broken_link_with_trailing_sep~ s?BBDD  ,,Y7788888r)c|}||jj|dSr5)r'r"rrr]rs r'*test_lexists_broken_link_with_trailing_sepz;FakeOsModuleTest.test_lexists_broken_link_with_trailing_sep s?BBDD  --i8899999r)c|||d}|j|j||j||jjz|dSr)rrrArrrrr rs r'2test_rename_link_with_trailing_sep_to_self_windowszCFakeOsModuleTest.test_rename_link_with_trailing_sep_to_self_windows st !!! **,,,~~e$$ --- tdgk)400000r)c ||d}|j|j||t j|jj||jj z|dSr) ryrArrrrIrJrQrr rs r'0test_rename_link_with_trailing_sep_to_self_posixzAFakeOsModuleTest.test_rename_link_with_trailing_sep_to_self_posix sw ~~e$$ --- ## M47>4$'++=t     r)cF||d|jjz}|d}|j|||||j|d|||j|ddS)Nrrrr)rrArr rrIr|)r%rr&rs r'3check_open_broken_symlink_to_path_with_trailing_sepzDFakeOsModuleTest.check_open_broken_symlink_to_path_with_trailing_sep s **,,,nnX..< NN6**   Y/// ##E49iEEE ##E49iEEEEEr)cl||tjdSr5)rrOrJrTrs r'8test_open_broken_symlink_to_path_with_trailing_sep_linuxzIFakeOsModuleTest.test_open_broken_symlink_to_path_with_trailing_sep_linux 0  @@NNNNNr)cl||tjdSr5)r!rOrJrKrs r'8test_open_broken_symlink_to_path_with_trailing_sep_macoszIFakeOsModuleTest.test_open_broken_symlink_to_path_with_trailing_sep_macos rRr)cl||tjdSr5)rrOrJrrs r':test_open_broken_symlink_to_path_with_trailing_sep_windowszKFakeOsModuleTest.test_open_broken_symlink_to_path_with_trailing_sep_windows s0 !!! @@NNNNNr)c>||d}|d}||d5|||jj||jjz|ddddS#1swxYwYdS)Nr@rr)rrAr|rIrrr )r%rrrs r'check_link_path_ending_with_sepz0FakeOsModuleTest.check_link_path_ending_with_sep s **,,,NN5)) NN6** YYy# & &    ' 'tw|Y%                      s0A))A-0A-cl||tjdSr5)ryrdrJrQrs r')test_rename_to_path_ending_with_sep_posixz:FakeOsModuleTest.test_rename_to_path_ending_with_sep_posix ryr)cl||tjdSr5)rrdrJrrs r'+test_rename_to_path_ending_with_sep_windowsz>%((  hNN6**  ),,, ## M47=)dgk*A     r)c||d}|j||d}|j|||j||jjz||jj |dSr) r!rArrrrr r"rrr s r''test_rmdir_link_with_trailing_sep_macosz8FakeOsModuleTest.test_rmdir_link_with_trailing_sep_macos s >>%((  hNN6**  ),,,  i$'+-... ,,Y7788888r)c|||d}|j||d}|j|||j||jjz||jj |dSr) rrrArrrrr r"rrr s r')test_rmdir_link_with_trailing_sep_windowsz:FakeOsModuleTest.test_rmdir_link_with_trailing_sep_windows s !!! **,,,>>%((  hNN6**  ),,,  i$'+-... ,,Y7788888r)c^||d}|d}|j|||j|||t j|jj||jjzdSrgrr%r9rs r'3test_readlink_circular_link_with_trailing_sep_linuxzDFakeOsModuleTest.test_readlink_circular_link_with_trailing_sep_linux s u%%u%% u%%% u%%% ##EK1A547;CVWWWWWr)cd||d}|d}|j|||j|||||j||jjzdSrg)r!rArrrrr rps r'3test_readlink_circular_link_with_trailing_sep_macoszDFakeOsModuleTest.test_readlink_circular_link_with_trailing_sep_macos s u%%u%% u%%% u%%%  0 01D E EFFFFFr)c|||d}|d}|j|||j|||t j|jj||jj zdSrgrrps r'5test_readlink_circular_link_with_trailing_sep_windowszFFakeOsModuleTest.test_readlink_circular_link_with_trailing_sep_windows s !!! **,,,u%%u%% u%%% u%%% ##EL$'2BEDGKDWXXXXXr)c||tj|jjdddS)Nz/nonexistent_sourcez /link_dest)rrIrJrKrrrs r'test_link_bogusz FakeOsModuleTest.test_link_bogus sF **,,, ## L$',(=|     r)c.||d}|d}d}||||j|||j|||jj|| |5}| | |ddddS#1swxYwYdSN test_file1 test_file2abcdefr) rrArrrr rrrr|rrr% file1_path file2_path contents1rus r'test_link_deletez!FakeOsModuleTest.test_link_delete s3 **,,,^^L11 ^^L11   i888  Z,,, z"""  ++J77888 YYz " " 2a   QVVXXy 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s)D  DDc||d}|d}d}d}||||j||||5}|||dddn #1swxYwY||d5}||dddn #1swxYwY||5}|||ddddS#1swxYwYdS)Nrzr{r|ghijklrr) rrArrrr|rrr)r%r~rr contents2rus r'test_link_updatez!FakeOsModuleTest.test_link_update/ s **,,,^^L11 ^^L11    i888  Z,,, YYz " " 2a   QVVXXy 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2YYz3 ' ' 1 GGI                  YYz " " 2a   QVVXXy 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s6 )B??CC DD D")EEEc||d}|dd}d}||||tj|jj||dS)Nrz nonexistentr{r|r)rrArrIrJrKrr)r%r~breaking_link_pathrs r'test_link_non_existent_parentz.FakeOsModuleTest.test_link_non_existent_parentC s **,,,^^L11 !^^M<HH  i888 ## L$', 4F     r)c||dd}|||tj|jj||dSrg)rrArrIrJrrrrs r'test_link_is_existing_filez+FakeOsModuleTest.test_link_is_existing_fileP sa **,,,NN5%00  ### ##EL$', 9UUUUUr)cD|||dd}|jj|d}|||tj |jj ||dSNr@rOr) rrrArrrVr,rIrJrArr s r'test_link_target_is_dir_windowsz0FakeOsModuleTest.test_link_target_is_dir_windowsV s !!! **,,,>>%//GL%%h77  !!! ##EL$',)TTTTTr)c||dd}|jj|d}|||tj|jj ||dSr) ryrArrrVr,rIrJr>rr s r'test_link_target_is_dir_posixz.FakeOsModuleTest.test_link_target_is_dir_posix^ sx >>%//GL%%h77  !!! ##EKxSSSSSr)c@||d}|d}|d}||||j|jd|j||||j|jd||j|jd|j||||j|jd||j|jd||j|jd|j|||j|jd||j|jd|j|||j|jddS)z1Test that hard link counts are updated correctly.rzr{ test_file3rrraN) rrArrrrrdrr )r%r~r file3_paths r'test_link_count1z!FakeOsModuleTest.test_link_count1e s **,,,^^L11 ^^L11 ^^L11  $$$ j11:A>>>  Z,,, j11:A>>> j11:A>>>  Z,,, j11:A>>> j11:A>>> j11:A>>> z""" j11:A>>> j11:A>>> z""" j11:A>>>>>r)c |||dd||dd|d|j|ddj|d|j|dj||dd|d|j|djdS)Nr@rOrorrr)r_r,rArrrarcrdrs r'test_nlink_for_directoriesz+FakeOsModuleTest.test_nlink_for_directories s)  ue44555 u55666  O & &t~~eU'C'C D D M    DO66t~~e7L7LMMVWWW v66777 DO66t~~e7L7LMMVWWWWWr)c|tjd}tj||||jddSN)ryrumaskr)r%rs r' test_umaskzFakeOsModuleTest.test_umask sX    d 3 344444r)c||jd|d}|j||d|j|j|jd|d}|j||d|j|jdS)z-mkdir creates a directory with umask applied.rrY7rZN)ryrrrArrrr )r%rYrZs r'test_mkdir_umask_appliedz)FakeOsModuleTest.test_mkdir_umask_applied s   d~~f%%  d udgll4&8&8&@AAA  d~~f%%  d udgll4&8&8&@AAAAAr)c ||jd|j|dd|d|j|dj|d|j|ddj|jd|j|dd|d|j|dj|d|j|ddjd S) z2makedirs creates a directories with umask applied.rp1rYrrp2rZrN)ryrrrWrArrr rs r'test_makedirs_umask_appliedz,FakeOsModuleTest.test_makedirs_umask_applied sn   d f55666 udgll4>>$3G3G&H&H&PQQQ  47<<tV < <==E     d f55666 udgll4>>$3G3G&H&H&PQQQ  47<<tV < <==E     r)cV||jd|d}|j|t jdz|d|j|j|jd|d}|j|t jdz|d|j|jdS) z*mkdir creates a device with umask applied.rnod1rnod2N) rrrrArrr!rr )r%node1node2s r'test_mknod_umask_appliedz)FakeOsModuleTest.test_mknod_umask_applied s   dv&&  eT\E1222 udgll5&9&9&ABBB  dv&&  eT\E1222 udgll5&9&9&ABBBBBr)cV||jd|d}||d|d|j|j|jd|d}||d|d|j|jdS) z'open creates a file with umask applied.rfile1rrrfile2rN) ryrrrAr|rrrr )r%rrs r'test_open_umask_appliedz(FakeOsModuleTest.test_open_umask_applied s   dw'' %##%%% udgll5&9&9&ABBB  dw'' %##%%% udgll5&9&9&ABBBBBr)c|j\}}|j||j|dSr5)rpiperr%read_fdwrite_fds r'test_open_pipezFakeOsModuleTest.test_open_pipe sD GLLNN  g  hr)cz|d}|j|tj}|j\}}||||j||j||j|dSNr)rArr|rOr assertGreaterr)r%rfdrrs r'test_open_pipe_with_existing_fdz0FakeOsModuleTest.test_open_pipe_with_existing_fd sw'' W\\% , , GLLNN 7B'''  b  g  hr)cz|j\}}|d}|j|tj}||||j||j||j|dSr)rrrAr|rOrr)r%rrrrs r'!test_open_file_with_existing_pipez2FakeOsModuleTest.test_open_file_with_existing_pipe s GLLNNw'' W\\% , , 2x(((  g  h  br)cb|j\}}|d|j|d|d|j|d|j||j|dS)Nrtest)rrrrrrrs r'test_read_write_pipez%FakeOsModuleTest.test_read_write_pipe s GLLNN DGMM(G<<=== $',,w":":;;;  g  hr)cfg}tdD]_}|dt|z}||j|tj`|d}||||5|j\}}||d5}| d| ddddn #1swxYwY||d5}| d| dddn #1swxYwYdddn #1swxYwY|D]}|j |dS)NrrIzfile.txtwbrrr) rangerAstrappendrr|rOrrrrrr) r%fdsirrrrrurs r'test_open_existing_pipez(FakeOsModuleTest.test_open_existing_pipe s>q 7 7A>>&3q66/22D JJtw||D"*55 6 6 6 6NN:..  ### YYy ! ! 4 4 $  GX8T** 6a  AGGG$4$4555 6 6 6 6 6 6 6 6 6 6 6 6 6 6 67D)) 4Q  !&&((333 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4  4 4 4 4 4 4 4 4 4 4 4 4 4 4 4   B GMM"      sZ13F$*D FD F!D "F;)E0$ F0E4 4F7E4 8FF F c:|j\}}|j|d|d|j|d|j||j|dS)Nrr)rrrrrrrs r'test_write_to_pipez#FakeOsModuleTest.test_write_to_pipe s GLLNN  h((( $',,w":":;;;  g  hr))win32darwinlinuxz1Pipe implementation may differ on other platformsc|j\}}|tj|jj|d|j||j|dS)Nr)rrrIrJr{rrrs r'test_write_to_read_fdz&FakeOsModuleTest.test_write_to_read_fd sf !GLLNN ##EKQQQ  g  hr)cB|dd}||d|j|d||5}|d|ddddS#1swxYwYdS)Nr@rO012345678901234567r 0123456789)rArrrr|rrrs r' test_truncatezFakeOsModuleTest.test_truncate sNN5%00  -ABBB B''' YYy ! ! 5Q   \16688 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s)BBBc^|tj|jjdddS)Nr@r)rIrJrKrrrs r'test_truncate_non_existingz+FakeOsModuleTest.test_truncate_non_existing s) ##EL$'2BE2NNNNNr)c|dd}||d|j|tj}|j|d|d|j|j||5}|d| ddddS#1swxYwYdS)Nr@rOrrz0123456789) rArrr|O_RDWRrrrst_sizerr%rrrus r'test_truncate_to_largerz(FakeOsModuleTest.test_truncate_to_larger s)NN5%00  \::: W\\)RY / / R    TW\\)44<=== YYy ! ! AQ   5qvvxx @ @ @ A A A A A A A A A A A A A A A A A As6)C,,C03C0ctjtjvr||t j|jjdd|d}| |d|j |tj }|j|d| d|j |j| |5}| d|ddddS#1swxYwYdS)N2rr01234567890123456789rr)rrrzr_rIrJr{ ftruncaterArr|rrrrrrs r'test_truncate_with_fdz&FakeOsModuleTest.test_truncate_with_fd sV ;bn , ,       ##EK1BBKKKNN;//  -CDDD W\\)RY / / R    TW\\)44<=== YYy ! ! 5Q   \16688 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s )EE Ec~|jr||tj|jjdd|d}||d|j |t j }|j |d| d|j |j| |5}| d|ddddS#1swxYwYdS)Nrrr0123456789012345rr)is_pypyr_rIrJr{rrrArr|rrrrrrrs r'test_ftruncatezFakeOsModuleTest.test_ftruncate' sQ <       ##EK1BBKKKNN;//  -?@@@ W\\)RY / / R    TW\\)44<=== YYy ! ! 5Q   \16688 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s<)D22D69D6c||jj|jjvtjtjv||jj|jjvtjtjv||jj|jjvtjtjv||jj|jjvtjtjvdS)zCMake sure that the fake capabilities are the same as the real ones.N)rrrrrzsupports_dir_fdsupports_effective_idsrs r'test_capabilitiesz"FakeOsModuleTest.test_capabilities5 s  GLDG< < Gr2 2    )<WXXX  GLDG3 3RW@R5R     GLDG: : Gr0 0     r)(:r.r/r0r7rErLrTr\rerirvrrrrrrrrrrrrrrrrrrrrrrrrr rrrrrr"r%r(r*r-r3r5r7r:r<r?rBrErMrRrUrXrZr^r`rbrdrgrirmrorqrsrvrxr{rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr rrrr"r*r1r;r=r?rErIrLrPrUrYr[rgrkrnrrrvr{rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r#r%r'r,r/r1r4r8r>rArDrGrIrMrOrRrTrXr\r_rcrjrmrtrvr{r~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r rrrrrrrrr$r'r)r,r.r0r2r4r6r8r:r=r?rArCrErGrIrKrMrOrQrTrVrXrZr\r`rbrdrfrhrjrlrnrqrsrurwrrrrrrrrrrrrrrrrrrrunittestskipIfsysplatformrrrrrrr __classcell__r>s@r'r3r3<s..... !!! LLL LLL     4 4 4444 D D D C C C>>>TTTOOO 222III ' ' 'FFFJJJ4###"EEECCC@@@$... C C C C C CRRR   *   * Q Q Q D D D    /// /// 444 GGG 777 HHH   HHHHHH   KKKGGG GGG    IIIHHHWWW >>><<<=== Y Y Y ; ; ;   EEEEEEEEEHHHGGGGGGFFFGGG GGG888 UUU ???>>>WWW AAA@@@EEEOOO ;;; ;;;PPPBBB CCC   ###    JJJ       222          " L L L,,,+++,,,LLL999999###444444.333444999$JJJ 999888999 4 4 4MMM < < <XXXWWW 8 8 8 9 9 9     J J J;;; ;;;WWW111       999WWW 9 9 9 S S SSSSKKKJJJVVV 8 8 8 9 9 9WWW 8 8 8WWW / / /UUU > > >     > > > < < <    P P P < < < 5 5 5666 666 ******PPPUUU AAA >>>333(;;;,666777$OOOBBB??????LLL 8 8 8222 &G&G&GPPPP999 999QQQ 7 7 7 F F FDDDLLL LLLMMM 7 7 7LLLLLL   AAA@@@LLLLLLLLL L L L<<< 666888MMMDDDCCC   OOO666<<<"888999 WWW """@@@EEEIII S S S M M M S S S 8 8 8 7 7 7<<<&SSS: 8 8 8CCC 4 4 4 7 7 7 P P P777 3 3 3 3 3 3 6 6 6///* 3 3 3 2 2 2 / / /PPPVVV ,,,2OOOKKK KKKKKKKKK KKK KKKKKK KKK % % %MMM 8 8 8XXX   &@@@ QQQ QQQ    ;;;    Y Y YLLL LLL LLL OOO !!! $$$ NNN MMM MMM          OOO OOO 999:::111   FFFOOOOOOOOO<<<;;;RRR888AAA@@@   999999XXXGGGYYY   222"222(    VVV UUUTTT???4 X X X555 B B B   C C C C C C         $   X_ 88;   555OOOAAA 5 5 5 5 5 5        r)r3ceZdZdZdS)RealOsModuleTestcdSNTr1rs r'rbzRealOsModuleTest.use_real_fsF tr)Nr.r/r0rbr1r)r'rrE #r)rcLeZdZfdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Zd=Z?d>Z@d?ZAd@ZBdAZCdBZDdCZEdDZFdEZGdFZHdGZIdHZJdIZKdJZLdKZMdLZNdMZOdNZPdOZQdPZRdQZSdRZTdSZUdTZVdUZWdVZXdWZYdXZZdYZ[dZZ\d[Z]d\Z^d]Z_d^Z`xZaS)_!FakeOsModuleTestCaseInsensitiveFSctt|||jj|jjz|jjz|_|jj|jjz|_ dSr5) r6rr7r6rr8r9r:r;r<r=s r'r7z'FakeOsModuleTestCaseInsensitiveFS.setUpK sg /66<<>>> &&(((7<$',.=',-r)c|dd}|||dd}|tj|jj|dS)rNr@rOFooBarNrP)r%rSrs r'rTz@FakeOsModuleTestCaseInsensitiveFS.test_chdir_fails_non_directoryQ s`>>%// """NN5%00  ##EM47=)LLLLLr)c|d}|j||jj|d}|j||dd}|||d|dg|j|dS)NrlrXYZZYBUGr@r)r%rrDdirectory_uppers r'rz;FakeOsModuleTestCaseInsensitiveFS.test_listdir_returns_listX s00  n%%%GL%%ne<<   i   ..%88  599::: %$'///"B"BCCCCCr)c ||d}gd}|D]+}||||,||d|d|||t |j|ddS)NrlrnrSymLinkrrss r'rz9FakeOsModuleTestCaseInsensitiveFS.test_listdir_on_symlinka rr)c||d}|d}|d}||d|j|t jdzt jz ||d}| }|j ||j |dts)| t|jj |ddS|j |ddS) Nr Some_File1 SOME_file1rrrrr)r_rArrrrr!rr|rrr rr)r%r file_path2 file_path3rrs r'rz2FakeOsModuleTestCaseInsensitiveFS.test_fdopen_modek s ^^L11 ^^L11 ^^L11  .>???  j4<%#74="HIIIYYz3// ##%% w w$$$yy )   gtw~w D D D D D GNN7C ( ( ( ( (r)c*|d}|d}|jj|d}||d|t j|j|t jz|jj|d}|t j |j|t jz|t j |j|j z| d|j|t j dS)NrlrrmrrPlughrr)r%rD directory1rrs r'rz+FakeOsModuleTestCaseInsensitiveFS.test_stat| s&NN7++ ^^G,, GL%%i99  W555  tw||J'?'? 'MMNNNW\&&z7;;   tw||J'?'? 'MMNNN  tw||J'?'?'GGHHH DGLL44T\BCCCCCr)c||d}d}d}|t|t||jj||}|jj|d}||||||| t||j | dtj | t||j | dtj dSr) ryrArrrrrVrrrrupperrrs r'rzDFakeOsModuleTestCaseInsensitiveFS.test_stat_no_follow_symlinks_posix sP NN7++  !  C NNC ,>,>???GL%%i;; GL%%i88  ];;; Iy111     GLL**EL B B4< P      NN GLL**EL B B4< P     r)c||d}d}d}|t|t||jj||}|jj|d}||||||| t||j | tj | t||j | tj dSr)ryrArrrrrVrrrrrrrrs r'test_lstat_posixz2FakeOsModuleTestCaseInsensitiveFS.test_lstat_posix s; NN7++  !  C NNC ,>,>???GL%%i;; GL%%i88  ];;; Iy111     ioo.?.? @ @ N    Yy7H7H)I)I$,)WXXXXXr)c2||ddd}|d}|||||j||dSr~)rrArr$rrrrs r'rz/FakeOsModuleTestCaseInsensitiveFS.test_readlink s **,,,NN5%77 )) Iv...  0 01B1B C CVLLLLLr)c|ddd}|||tj|jj|dSr)rArrIrJrrrrrs r'(check_readlink_raises_if_path_not_a_linkzJFakeOsModuleTestCaseInsensitiveFS.check_readlink_raises_if_path_not_a_link sZNN5%??  ### ##EL$'2BIOODUDUVVVVVr)c~|||dSr5)rrrrs r'/test_readlink_raises_if_path_not_a_link_windowszQFakeOsModuleTestCaseInsensitiveFS.test_readlink_raises_if_path_not_a_link_windows s> !!! **,,, 5577777r)cV||dSr5)ryrrs r'-test_readlink_raises_if_path_not_a_link_posixzOFakeOsModuleTestCaseInsensitiveFS.test_readlink_raises_if_path_not_a_link_posix s,  5577777r)c|||d|dd}|||jj||ddd}|||jj|dSr)rrArIrrrrs r'rzHFakeOsModuleTestCaseInsensitiveFS.check_readlink_raises_if_path_has_file s 11222NN8U33  ##M473CY__EVEVWWWNN8UE::  ##M473CY__EVEVWWWWWr)c|||tjdSr5rrs r'rzOFakeOsModuleTestCaseInsensitiveFS.test_readlink_raises_if_path_has_file_windows rr)cl||tjdSr5rrs r'rzMFakeOsModuleTestCaseInsensitiveFS.test_readlink_raises_if_path_has_file_posix rr)c |||ddd|d||dd|d||d|j|dd d d dS) NrrrrrrMeyerGeoMetroLemonPierrs r'rzBFakeOsModuleTestCaseInsensitiveFS.test_readlink_with_links_in_path rr)c J|||dddd|d||d|dd||d |d d ||d|j|d d dS)NrrrrrrEasternEuropeanrRussian WolfhoundsDOGSChaserrs r'rzJFakeOsModuleTestCaseInsensitiveFS.test_readlink_with_chained_links_in_path rr)c |d}|jj|d}|||}||jj||||jj |||jj||j ||||jj |||jj||tj |jj ddS)Nrlrmz/Plugh) rArrrVr,rrrrIr9rBrJrKrs r'rz2FakeOsModuleTestCaseInsensitiveFS.check_remove_dir s3NN7++ 7<$$Y88 !!!>>##  ++HNN,<,<==>>> ##Itw~xHHH  ++H55666  i    ##Itw~xHHH  ++H55666 ##EL$'.(KKKKKr)cl||tjdSr5rrs r'rz8FakeOsModuleTestCaseInsensitiveFS.test_remove_dir_mac_os rr)cl||tjdSr5rrs r'rz9FakeOsModuleTestCaseInsensitiveFS.test_remove_dir_windows rr)c|d}|jj|d}||||jj||j|| |jj|dSr) rArrrVrrrrr9r"rs r'rz2FakeOsModuleTestCaseInsensitiveFS.test_remove_file sNN5)) GL%%i99  ###  ++IOO,=,=>>??? y(())) ,,Y7788888r)c|d}d}|jj||}||||jj||j||j || |jj|dSr) rArrrVrrrrBrr9r"rs r'rz?FakeOsModuleTestCaseInsensitiveFS.test_remove_file_no_directory sNN5))  GL%%i;;  ###  ++I66777  ioo''((( y(())) ,,Y7788888r)c||dd}||||d5|t j|jj| dddn #1swxYwY| |jj |dSr) rrArr|rIrJrArr9rrrrrs r'rzKFakeOsModuleTestCaseInsensitiveFS.test_remove_open_file_fails_under_windows s !!!~~eU++  YYtS ! ! T T  ' ' dgndjjll S S S T T T T T T T T T T T T T T T  ++D1122222s>B  B$'B$cl||dd}||||d|j|||jj |dSr) ryrArr|rr9rr"rrrs r'rzLFakeOsModuleTestCaseInsensitiveFS.test_remove_open_file_possible_under_posix s ~~eU++  $ tzz||$$$ ,,T2233333r)c^||j}|d}|jj|d}d}|jj||}|jjd|}||||jj || |||jj ||j ||j || |jj ||j || |jj |dSr)r_rrXrArrVrrrrr,rBr9r"rs r'rz@FakeOsModuleTestCaseInsensitiveFS.test_remove_file_relative_path$ s w~~'' NN5)) w|((E::  GL%%i;; !W\..tY?? **+++  ++I66777  %%%  ++L99:::  l((**+++ )//11222 ,,-?@@AAA  l((**+++ ,,Y7788888r)c|d}|||||jj|dSr)rAr,rIrr9rrs r'rz?FakeOsModuleTestCaseInsensitiveFS.check_remove_dir_raises_error6 sQNN5))   """ ##Itw~y?P?PQQQQQr)cl||tjdSr5rrs r'rzEFakeOsModuleTestCaseInsensitiveFS.test_remove_dir_raises_error_mac_os; rr)cl||tjdSr5rrs r'rzFFakeOsModuleTestCaseInsensitiveFS.test_remove_dir_raises_error_windows? rr)c||d}|d}|||j||||jj|||jj||j| ||jj|| |jj|dSr) rrAr,rrrrrr9rr"rs r'rz>%((gl''-@@  !!!  ))++Y__->->??? ##EM47>8YWWWWWr)c|||d}|d}|jj|d}|||j||| tj |jj ||dSr) rrrArrrVr,rrrIrJrrrs r'rzDFakeOsModuleTestCaseInsensitiveFS.test_rename_dir_to_symlink_windowsX s !!! **,,,NN6** >>%((gl''-@@  !!!  ))++Y__->->??? ##EL$'.(IVVVVVr)c||d}||d}|j||d}|j||j|||dg|j|jdS)NDestdestsrc) ryrAr_rrrrrpr)r% dest_dir_pathnew_dest_dir_pathsource_dir_paths r'test_rename_dir_to_existing_dirzAFakeOsModuleTestCaseInsensitiveFS.test_rename_dir_to_existing_dirb s v..   NN622  m$$$..//  o&&& (9::: &47??4>#B#BCCCCCr)c||d}|d}|j|||||j||||jj || |jj || |jj |dSr) ryrArrrrrr"rrrrfr!s r'r"z=FakeOsModuleTestCaseInsensitiveFS.test_rename_file_to_symlinko s NN;// NN6**   9--- ### y(()444 ,,Y77888  ++IOO,=,=>>???  ++IOO,=,=>>?????r)c||dd}|||jj|d}|jj|d}|j|||j|||j||| |jj || |jj |dSr$) ryrAr,rrrVrrrr"rrr's r'r*z@FakeOsModuleTestCaseInsensitiveFS.test_rename_symlink_to_symlinkz s NN5%00   """W\&&y':: W\&&y'::   )):666  :... z'')):+;+;+=+=>>> ,,Z88999  ++J7788888r)c||d}|d}|jj|d}|||j|||||tj |jj ||dSr,) ryrArrrVr,rrrIrJrrr/s r'r1zRFakeOsModuleTestCaseInsensitiveFS.test_rename_symlink_to_symlink_for_parent_raises s >>*-->>%((',++HkBB !!! (((333 ((( ## L$'.(O4I4I4K4K     r)c||d}|j|j||jj|d}|d}|j||j||| ddgt|j |jdS)NrrDir) rrArrrrrVrrrrrrp)r%r link_subdirr~s r'#test_rename_directory_to_linked_dirzEFakeOsModuleTestCaseInsensitiveFS.test_rename_directory_to_linked_dir s **,,,NN6**   222gl'' 599 >>%((  h x--- %&1P1P*Q*QRRRRRr)c@||dd}|||jj|d}|tj|jj | |dSrA) ryrAr,rrrVrIrJrrrrCs r'rEz>FakeOsModuleTestCaseInsensitiveFS.test_recursive_rename_raises s NN5%00   """7<$$Y :: ## L$'.)//*;*;X     r)c||dd}|||tj|jj||dzdSrK) ryrArrIrJrQrrrrs r'rLzRFakeOsModuleTestCaseInsensitiveFS.test_rename_with_target_parent_file_raises_posix s~ NN5%00  ### ## M GN  OO   &      r)c <||dd}|||tj|jj||jj | ddSrN) rrArrIrJrArrrrVrrs r'rPzTFakeOsModuleTestCaseInsensitiveFS.test_rename_with_target_parent_file_raises_windows s !!!NN5%00  ### ## L GN  GL  ioo// 7 7      r)cV||d}|d}|j|||j|||dg|j|jdS)NroBAZ)rrArrrrrpr)r% path_lower path_uppers r'test_rename_looping_symlinkz=FakeOsModuleTestCaseInsensitiveFS.test_rename_looping_symlink s **,,,^^E** ^^E**   J/// z:... %$'//$."A"ABBBBBr)c||d}|jj|d}|jj|d}|||j|||j||| |jj |dSrR) ryrArrrVrrrrr"rrTs r'rUz?FakeOsModuleTestCaseInsensitiveFS.test_rename_symlink_to_source s NN5)) GL%%i99 GL%%i88  ###  9--- y(()//*;*;<<< ,,Y7788888r)c||dd}|jj|d}|jj|d}|||j|||tj |jj ||dSrW) ryrArrrVr,rrrIrJrTrrXs r'rYzCFakeOsModuleTestCaseInsensitiveFS.test_rename_symlink_to_dir_raises s NN5%00 GL%%i<< 7<$$Y66 !!! )//"3"3444 ## L$'.)X^^5E5E     r)c||d}|||jj|d}|jj|d}|j|||j||| |jj || |jj || |jj |dSrR) ryrAr,rrrVrrrr"rrr]rTs r'r[z>++X^^-=-= > > >   TW\00:: ; ; ; OODGL//99 : : :    1 1(G D Df M M M##%% S  DO$>$>x$H$H$QRRR S Sr)c|d}|d}|||||||jj||dSri)rAr,rrIrrrrjs r'rkzPFakeOsModuleTestCaseInsensitiveFS.check_rename_directory_to_existing_file_raises s>>%((NN6**  !!! ### ## dgnh 0A0A     r)cl||tjdSr5rmrs r'rnzUFakeOsModuleTestCaseInsensitiveFS.test_rename_directory_to_existing_file_raises_posix ror)cl||tjdSr5rqrs r'rrzWFakeOsModuleTestCaseInsensitiveFS.test_rename_directory_to_existing_file_raises_windows rsr)cz||dd}|dd}|||||tj|jj||dSru) rrAr,rIrJrrrrres r'rvz^FakeOsModuleTestCaseInsensitiveFS.test_rename_to_existing_directory_should_raise_under_windows s !!!>>%//>>%// !!! !!! ## L$'.(..*:*:HNN>),, """>>% :: (+++  ++H55666 ,,X6677777r)c&|d}|dddd}|jj|d}|||||dd}|j||||jj|||jj|||jj||jj|d}||jj|dS)NoldrYrZrgzfoo.pngrOrh) rArrrVrrirrr")r% old_base_pathrf other_filerD removed_paths r'test_renames_removes_empty_dirszAFakeOsModuleTestCaseInsensitiveFS.test_renames_removes_empty_dirsV sGu-- >>%CCW\&&}i@@  """ $$$>>%33 (+++  ++H55666 ,,X66777  ++M::;;;w|((??  ,,\::;;;;;r)c||d}|jj|d}|||jj|d}|j|||jj|d}|j|dSr_)rrArrrVr,rr)r%rrs r'test_stat_with_mixed_casez;FakeOsModuleTestCaseInsensitiveFS.test_stat_with_mixed_cased s **,,,NN5)) w|  E22 w|  u--  4(((w|  u--  Tr)cd||d}|||jj|d}|j|||jj|dd}|||jj|dd}|j ||| |jj |dS)Nr@rSr3Slinkr}) rrAr,rrrVrrrrrrr~s r'rzBFakeOsModuleTestCaseInsensitiveFS.test_hardlink_works_with_symlinkp s **,,,NN5))   """w|((G<<   ))<888GL%%i&AA  ###GL%%i'BB   Y ***  ++I6677777r)cV||dd}|dd}|||||tj|jj||dSru) rrAr,rIrJrArrrres r'rz\FakeOsModuleTestCaseInsensitiveFS.test_replace_existing_directory_should_raise_under_windows| s !!!>>%//>>%// !!! !!! ## L$'/8X^^5E5E     r)c||dd}|d}||jj|d|||j||||jj |jj|d| |jj |dSr) ryrAr,rrrVrrrrr"res r'rzOFakeOsModuleTestCaseInsensitiveFS.test_rename_to_existing_directory_under_posix s >>%//>>'**  ))(E::;;; !!! x~~'')9)9:::  ++DGL,=,=h,N,NOOPPP ,,X6677777r)cz||ddd}|d}|||||t j|jj| | dSr) ryrArr,rIrJrTrrrrs r'rz[FakeOsModuleTestCaseInsensitiveFS.test_rename_file_to_existing_directory_raises_under_posix s NN5%77 >>'** ### !!! ## L$'.)//*;*;X^^=M=M     r)cn||d}|jj|d}|jj|d}||d||d||jj|||jj||j| | | |jj|||jj|| |ddSr) ryrArrrVrrrrrr"rrs r'rzDFakeOsModuleTestCaseInsensitiveFS.test_rename_to_existent_file_posix sh NN7++  )))[AA  )))[AA  1BCCC 1BCCC  ++M::;;;  ++M::;;; }**,,m.A.A.C.CDDD ,,];;<<<  ++M::;;; M+<=====r)c||d}|jj|d}|jj|d}||d||d||jj|||jj||tj |jj | | dSr) rrArrrVrrrrIrJrrrrs r'rzFFakeOsModuleTestCaseInsensitiveFS.test_rename_to_existent_file_windows s !!!NN7++  )))[AA  )))[AA  1BCCC 1BCCC  ++M::;;;  ++M::;;; ## L GN    ! !    ! !      r)cF|d}|jj|d}|jj|d}||d||d||jj|||jj||j||| |jj|||jj|| |ddSr) rArrrVrrrrrr"rrs r'rz?FakeOsModuleTestCaseInsensitiveFS.test_replace_to_existent_file sXNN7++  )))[AA  )))[AA  1BCCC 1BCCC  ++M::;;;  ++M::;;;  ++--}/B/B/D/DEEE ,,];;<<<  ++M::;;; M+<=====r)c<|d}|jj|d}|jj|dd}||d||jj|||jj||tj |jj | | ||jj|||jj|| |ddSr)rArrrVrrrr"rIrJrKrrrrs r'rz@FakeOsModuleTestCaseInsensitiveFS.test_rename_to_nonexistent_dir sTNN7++  )))[AA  )))^[QQ  AAA  ++M::;;; ,,];;<<< ## L GN    ! !    ! !     ++M::;;; ,,];;<<< M?;;;;;r)c|j|j|d|dd}|j||d}|j|||ddgt|j|jdS)NrAlphar ) rrrrArrrrrrp)r% dir_upper dir_lowers r'*check_rename_case_only_with_symlink_parentzLFakeOsModuleTestCaseInsensitiveFS.check_rename_case_only_with_symlink_parent s v(>(>???NN6733   i   NN7++  y),,, '6*F47??4>3R3R,S,STTTTTr)c~|||dSr5)rrrrs r'1test_rename_case_only_with_symlink_parent_windowszSFakeOsModuleTestCaseInsensitiveFS.test_rename_case_only_with_symlink_parent_windows s> !!! **,,, 7799999r)cV||dSr5)r!rrs r'/test_rename_case_only_with_symlink_parent_macoszQFakeOsModuleTestCaseInsensitiveFS.test_rename_case_only_with_symlink_parent_macos s,  7799999r)cR|d}|jj|d}|jj|dd}|jj|d}|jj|dd}||||d||jj|||jj|| |jj|| |jj||j ||| |jj|| |jj|||jj|||jj|| |ddSr) rArrrVr,rrrrr"rrrs r'rz1FakeOsModuleTestCaseInsensitiveFS.test_rename_dir shNN7++ W\&&y(;; gl'' 8VDD GL%%i99 W\&&y'6BB   ### y999  ++J,<,<,>,>??@@@  ++K,=,=,?,?@@AAA ,,Y__->->??@@@ ,,Z-=-=-?-?@@AAA z''))9555 ,,Z-=-=-?-?@@AAA ,,[->->-@-@AABBB  ++IOO,=,=>>???  ++J,<,<,>,>??@@@ J 22222r)c(|d}d}|jj|d}||||j|||||dSr)rArrrVrrrrrs r'rz>%((>>*-- !!! (+++W\&&x88   ### :++--... ,,Z88999  ++H5566666r)c||dd}|jj|d}|jj|d}|||j|||tj |jj |dSr.) ryrArrrVr,rrrIrJrQrrXs r'r/zGFakeOsModuleTestCaseInsensitiveFS.test_mkdir_raises_on_symlink_in_posix7s NN5%00 GL%%i?? 7<$$Y66 !!! (()//*;*;<<< ##EM47=)LLLLLr)c|||dd}|jj|d}|jj|d}|||j|||j || |jj || |jj |dSr.) rrrArrrVr,rrrr"rrrXs r'r1zGFakeOsModuleTestCaseInsensitiveFS.test_mkdir_removes_symlink_in_windows@s  !!! **,,,NN5%00 GL%%i?? 7<$$Y66 !!! (()//*;*;<<<  i    ,,Y77888  ++H5566666r)c8|d}||||jj||tj|jj | dSr3) rAr,rrrrrIrJrrrrCs r'r4zGFakeOsModuleTestCaseInsensitiveFS.test_mkdir_raises_if_directory_existsLswNN7++   """  ++I66777 ##EL$'-ARARSSSSSr)cx|d}|jj|d}||||jj||tj |jj | dSr6) rArrrVrrrrIrJrrrrs r'r8zBFakeOsModuleTestCaseInsensitiveFS.test_mkdir_raises_if_file_existsSsNN7++ GL%%i99  ###  ++I66777 ##EL$'-ARARSSSSSr)c||d}|j|||d}|t j|jj|dS)NroBaz)rrArrrIrJrr)r%r9path2s r'#test_mkdir_raises_if_symlink_existszEFakeOsModuleTestCaseInsensitiveFS.test_mkdir_raises_if_symlink_exists[sp **,,,u%% u%%%u%% ##EL$'-GGGGGr)c<|d}|jj|d}|||||jj|jj|ddSr:)rArrrVrrIrrr<s r'r>zFFakeOsModuleTestCaseInsensitiveFS.check_mkdir_raises_if_parent_is_filecsNN7++ GL%%i99  ### ##  GM GL  ioo// 6 6     r)cl||tjdSr5r@rs r'rAzKFakeOsModuleTestCaseInsensitiveFS.test_mkdir_raises_if_parent_is_file_posixnryr)cl||tjdSr5rCrs r'rDzMFakeOsModuleTestCaseInsensitiveFS.test_mkdir_raises_if_parent_is_file_windowsrr|r)c|d}|jj|d}||jj||j|||jj|dSrV) rArrrVr"rrWrrr*s r'rXz/FakeOsModuleTestCaseInsensitiveFS.test_makedirsvs((GL%%fe44  ,,V44555 **+++  ++I6677777r)cd|d}|jj|d}||||jj||||jj| dSrZ) rArrrVrrrrIrWrr[s r'r\zIFakeOsModuleTestCaseInsensitiveFS.check_makedirs_raises_if_parent_is_file~sNN7++ GL%%i99  ###  ++I66777 ##J0@)//BSBSTTTTTr)cl||tjdSr5r^rs r'r_zNFakeOsModuleTestCaseInsensitiveFS.test_makedirs_raises_if_parent_is_file_posixr`r)cl||tjdSr5rbrs r'rczPFakeOsModuleTestCaseInsensitiveFS.test_makedirs_raises_if_parent_is_file_windowsrdr)cj||d}|j|d||t j|jj|jj | ddSrf) ryrArrrIrJrKrWrrVrrs r'rjzOFakeOsModuleTestCaseInsensitiveFS.test_makedirs_raises_if_parent_is_broken_links NN=11  w//;;; ## L G  GL  ioo// : :     r)c|dd}||||jj||tj|jj | |j | d||jj|dSrx) rAr,rrrrrIrJrrWrrCs r'r{z8FakeOsModuleTestCaseInsensitiveFS.test_makedirs_exist_oksNN7E22   """  ++I66777 ##EL$'2BIOODUDUVVV **T:::  ++I6677777r)c|d}||d||d}|}|j||tj |jj|dz| dS)Nrrrrr) rArr|rrrrrIrJr{rrs r'test_fsync_passz1FakeOsModuleTestCaseInsensitiveFS.test_fsync_passs 44 2GHHHIIn2244d;; ""$$  g ##EK" MMMr)c |||d}|||j|d|j|}|d|j | |j tj z| |j tj zdSr)ryr_rAr(rrrrrr rr!r"r#r$s r'rz,FakeOsModuleTestCaseInsensitiveFS.test_chmods  ~~k** D!!!  djjllF+++ W\\$   vrz222  T\1222 dl233333r)c||ddd}||dd|jd|||jj|| |jj || |ddd||jj|||jj |dS)Nr@rOrorhrrBogus) rrAr,rrrrrr]r"rrrs r'r z.FakeOsModuleTestCaseInsensitiveFS.test_symlinks% **,,,NN5%77  ue44555 !2!2333  ,,Y77888 ,,Y77888 ug>>???  ,,Y77888  ++I6677777r)cv||d}|d}d}||||j|||j|||jj || |5}| | |ddddS#1swxYwYdSry) rrArrrrr rrrr|rrr}s r'rz2FakeOsModuleTestCaseInsensitiveFS.test_link_deletesK **,,,^^L11 ^^L11   i888  Z%%''444 z"""  ++J77888 YYz'')) * * 2a   QVVXXy 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s8)D..D25D2c$||dd}|||tj|jj||dSrg) rrArrIrJrrrrrs r'rzrArDrXr\r_rcrjr{rrr rrrrrrs@r'rrJ s..... MMMDDDTTT)))" D D D   *YYY MMMWWW 888 888XXXBBB CCC       " L L L+++,,,999999333444999$RRR 888999 4 4 4XXXWWW D D D @ @ @ 9 9 9     S S S           CCC999     9 9 9 H H H333 S S S   KKKJJJ     8 8 8444CCCCCC888 < < <    8 8 8     8 8 8    > > >   " > > ><<<$UUU::: :::333(666777$ 8 8 8 7 7 7MMM 7 7 7TTTTTTHHH    AAA@@@888UUUDDDCCC   888    4 4 4 8 8 8222"    W W W2222222r)rceZdZdZdS)!RealOsModuleTestCaseInsensitiveFScdSrr1rs r'rbz-RealOsModuleTestCaseInsensitiveFS.use_real_fsrr)Nrr1r)r'rrrr)rcPeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d S) FakeOsModuleTimeTestc |d5d}|j|||jj||j|}|d|j |j |d|j|}|d|j ddddS#1swxYwYdS)Nrstartri) mock_timerarrrrrrrst_ctimerrs r'test_chmod_st_ctimez(FakeOsModuleTimeTest.test_chmod_st_ctimes% ^^#^ & & / /#I O ' ' 2 2 2 OODGL// :: ; ; ;i((B   S"+ . . . GMM)U + + +i((B   S"+ . . . / / / / / / / / / / / / / / / / / /sCC88C<?C<c|d}|||d5|j|d|j|}|d|j|d|jddddS#1swxYwYdS)Nrrrtimes) rAr(rrutimerrst_atimerr$s r',test_utime_sets_current_time_if_args_is_nonezAFakeOsModuleTimeTest.test_utime_sets_current_time_if_args_is_nones~~k** D!!! ^^#^ & & / / GMM$dM + + +d##B   S"+ . . .   S"+ . . .  / / / / / / / / / / / / / / / / / /sA-B;;B?B?cf|d}|||j||j|d|j|}|d|j|d|jdS)NrrrrrrrAr(rrrrrrr$s r'test_utime_sets_specified_timez3FakeOsModuleTimeTest.test_utime_sets_specified_times~~k** D!!!  T  d& ))) W\\$   BK((( BK(((((r)c d}|||j|d|j|}|d|j|d|jdS)N /some_dir)?@rrr)r-rrrrrrr$s r'test_utime_dirz#FakeOsModuleTimeTest.test_utime_dirs|   &&&  d* --- W\\$   bk*** bk*****r)cl|d}||d}|j|||j|d|j|}|d|j|d|j dS)Nr/link_to_some_filerrrr) rAr(rarrrrrrrrs r'test_utime_follow_symlinksz/FakeOsModuleTimeTest.test_utime_follow_symlinks's~~k** D!!!(  &&y$777  iv ... W\\) $ $ BK((( BK(((((r)c|d}||d}|j|||j|dd|j|}|d|j|d|j |j|d}| d|j| d|j dS) NrrrF)rrrrr) rAr(rarrrrrrrrrs r'test_utime_no_follow_symlinksz2FakeOsModuleTimeTest.test_utime_no_follow_symlinks2s~~k** D!!!(  &&y$777  ivu EEE W\\) $ $ Ar{+++ Ar{+++ W\\)U\ ; ; BK((( BK(((((r)cd}||jj||t j|jj|ddS)Nz/non/existent/filer)r"rrrrIrJrKrrs r'test_utime_non_existentz,FakeOsModuleTimeTest.test_utime_non_existent@sS# ,,T22333 ##EL$'-vNNNNNr)cd}|||t|jj|d|t|jj|ddS)Nr)rrra)rr)r-rrrrrs r'#test_utime_invalid_times_arg_raisesz8FakeOsModuleTimeTest.test_utime_invalid_times_arg_raisesEs_   &&& )TW]D)DDD )TW]D*EEEEEr)cf|d}|||j||j|d|j|}|d|j|d|jdS)Nr) insg?g?rr$s r'$test_utime_sets_specified_time_in_nsz9FakeOsModuleTimeTest.test_utime_sets_specified_time_in_nsNs~~k** D!!!  T  d5 666 W\\$   bk*** bk*****r)c0d}|j||t|jj|d|t|jj|d|t |jj|dddS)Nrrr)rr4r)rr)rr)rarrrrr ValueErrorrs r''test_utime_incorrect_ns_argument_raisesz ) )       ##EK6JJJ~~k** D!!! *\$/ * *4 0 0 -A GMM!)6M 2 2 2d##B   Q , , ,   Q , , ,  - - - - - - - - - - - - - - - - - -s A2DD#&D#N)r.r/r0rrrrrrrrrrrr1r)r'rrs / / //// ) ) )+++ ) ) ) ) ) )OOO FFF + + +    - - - - -r)rceZdZdZfdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZejej ddZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%d!Z&d"Z'd#Z(d$Z)d%Z*d&Z+d'Z,d(Z-d)Z.d*Z/d+Z0d,Z1d-Z2d.Z3d/Z4d0Z5d1Z6d2Z7d3Z8ejej9 d4d5Z:xZ;S)6FakeOsModuleLowLevelFileOpTestzCTest low level functions `os.open()`, `os.read()` and `os.write()`.c~tjdtt|dSr)rrr6rr7r=s r'r7z$FakeOsModuleLowLevelFileOpTest.setUpus3  ,d3399;;;;;r)c|d}||d|j|tj}|d|j|d|tj |jj |d|j |dS)NrrDrrr) rArrr|r}rrrIrJr{rrr%rfile_dess r'test_open_read_onlyz2FakeOsModuleLowLevelFileOpTest.test_open_read_onlyysNN7++  [9997<< 2;77 dgll8Q&?&?@@@ ##EK'RRR  hr)c\||d}||d|j|tj}|tj|jj |d|j |dS)NrrDrr) ryrArrr|r}rIrJr{rrrs r'*test_open_read_only_write_zero_bytes_posixzIFakeOsModuleLowLevelFileOpTest.test_open_read_only_write_zero_bytes_posixs NN7++  [9997<< 2;77 ##EK'RRR  hr)cb||d}||d|j|tj}|d|j|d|j|dS)NrrDrrr)) rrArrr|r}rrrrs r',test_open_read_only_write_zero_bytes_windowszKFakeOsModuleLowLevelFileOpTest.test_open_read_only_write_zero_bytes_windowss !!!NN7++  [9997<< 2;77 DGMM(C88999  hr)cf|d}||d|j|tj}|d|j|d||d|j|dSNrrDrrrstestents) rArrr|rPrrrrrs r'test_open_write_onlyz3FakeOsModuleLowLevelFileOpTest.test_open_write_onlysNN7++  [9997<< 2;77 DGMM(G<<=== I{333  hr)cH|d}||d|j|tj}|t j|jj|d|j ||j|tjtj z}|t j|jj|d|j ||d}|j|tj tjz}|t j|jj|d|j ||j|tj tjztj z}|t j|jj|d|j |dS)NrrDrrr) rArrr|rPrIrJr{rrrQrO)r%rrrs r'#test_open_write_only_raises_on_readzBFakeOsModuleLowLevelFileOpTest.test_open_write_only_raises_on_readsNN7++  [9997<< 2;77 ##EKxKKK  h7<< 2;+CDD ##EKxKKK  h^^G,, 7<< BJ,DEE ##EKxKKK  h7<< BJ,Drz,QRR ##EKxKKK  hr)cH||d}|j|tjtjz}|tj|jj |d|j |dS)Nrr) ryrArr|rOrPrIrJr{rrrs r'*test_open_write_only_read_zero_bytes_posixzIFakeOsModuleLowLevelFileOpTest.test_open_write_only_read_zero_bytes_posixs} NN7++ 7<< 2: +CDD ##EKxKKK  hr)cN||d}|j|tjtjz}|d|j|d|j|dS)Nrr)r) rrArr|rOrPrrrrs r',test_open_write_only_read_zero_bytes_windowszKFakeOsModuleLowLevelFileOpTest.test_open_write_only_read_zero_bytes_windowss !!!NN7++ 7<< 2: +CDD dgll8Q77888  hr)cf|d}||d|j|tj}|d|j|d||d|j|dSr) rArrr|rrrrrrs r'test_open_read_writez3FakeOsModuleLowLevelFileOpTest.test_open_read_writesNN7++  [9997<< 2955 DGMM(G<<=== I{333  hr)cd|d}|j|tj}|d|j|d|tj|jj |d|j |dSNrr)rsfoo) rArr|rOrrrIrJr{rrrs r'test_open_create_is_read_onlyz> dgll8Q77888 ##EK#NNN  hr)cr||d}|j|tjtjzd}||jj|| tj |jj |d| d|j|d|d|j|j|j|dS)Nrrrrr)ryrArr|rPrOrrrrIrJr{rrrrrr rrs r'test_open_create_mode_posixz:FakeOsModuleLowLevelFileOpTest.test_open_create_mode_posix$s NN7++ 7<< 2;+CUKK  ++I66777 ##EKxKKK DGMM(G<<=== udgll9&=&=&EFFF  hr)cr||d}|j|tjtjzd}||jj|| tj |jj |d| d|j|d|d|j|j|j|dS)Nrrrrrr)rrArr|rPrOrrrrIrJr{rrrrrr rrs r'test_open_create_mode_windowsz>%(( !!! ##EL$',"+VVV ##EL$',"+VVV ##EL$',")TTTTTr)cZ||d}|||tj|jj|t j|tj|jj|t j dSr) ryrAr,rIrJrTrr|rPrrs r'2test_open_directory_for_writing_raises_under_posixzQFakeOsModuleLowLevelFileOpTest.test_open_directory_for_writing_raises_under_posixzs >>%(( !!! ##EL$',"+VVV ##EL$',")TTTTTr)cT|||d}|||j|tj}|d||j|dS)Nrra) ryr_rAr,rr|r}rr)r%r~rs r')test_open_directory_read_only_under_posixzHFakeOsModuleLowLevelFileOpTest.test_open_directory_read_only_under_posixs  >>%(( !!!7<<"+66 H%%%  hr)c||d}|j||t j|jj|tjdSr ) rrArrrIrJrTr|rOrs r'0test_opening_existing_directory_in_creation_modezOFakeOsModuleLowLevelFileOpTest.test_opening_existing_directory_in_creation_modesa >>'**  h ##EL$',"*UUUUUr)c.||d}|j||j|tj}|tj|jj |ddS)Nr r)) r!rArrr|rOrIrJr{r)r%r~rs r'"test_writing_to_existing_directoryzAFakeOsModuleLowLevelFileOpTest.test_writing_to_existing_directorysv >>'**  h W\\(BJ / / ##EKCHHHHHr)c||d}|j||t j|jj|tjdSr ) ryrArrrIrJrTr|rPrs r'-test_opening_existing_directory_in_write_modezLFakeOsModuleLowLevelFileOpTest.test_opening_existing_directory_in_write_modesa >>'**  h ##EL$',"+VVVVVr)c|||d}|j|tjtjztjz}|j|}| d|j z|j |j |dS)Nroi) ryr_rArr|rOrPrQrr_umaskr rr%rrstat0s r'test_open_mode_posixz3FakeOsModuleLowLevelFileOpTest.test_open_mode_posixs  NN5)) 7<< 2: +Cbj+PQQ h'' TW^^%5%5$55u}EEE  hr)ct||d}|j|tjtjztjz}|j|}|d|j |j |dS)Nro鶁) rrArr|rOrPrQrrr rr$s r'test_open_mode_windowsz5FakeOsModuleLowLevelFileOpTest.test_open_mode_windowss !!!NN5)) 7<< 2: +Cbj+PQQ h'' 5=111  hr)c|d}||dd}||d5}|}|t ||j|||||dddn #1swxYwY||d5}|}|d|j |d||dd |j |d ||d d |j |d ||d d|j |d |d|j |d dddn #1swxYwY| tj |jj||| tj |jj |d dS) Nrs orig contentsrs1234567890abcdefrrr)rrrrr) rArr|rrrrrrrrIrJr{)r%r new_contentsfhrs r'test_write_readz.FakeOsModuleLowLevelFileOpTest.test_write_readsNN7++  -=>>>* YYy$ ' ' 92YY[[F   S.. fl0S0S T T T    < 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 YYy$ ' ' <2YY[[F   S$',,vq"9"9 : : :   \!A#. VQ0G0G H H H   \!B$/fa1H1H I I I   \"##. VS0I0I J J J   S$',,vr":": ; ; ;  < < < < < < < < < < < < < < < ##EK UUU ##EKvrJJJJJs&A'B88B<?B<DG==HHc|d}|j|tjtjztjz}|j|tjtjztjz}|j|d|j|d|d|jj || |d|j ||j |dS)Nrosaaaasbbrsbbaa) rArr|rOrPrQrrrr0rrr%rfd0fd1s r'test_write_from_different_f_dsz=FakeOsModuleLowLevelFileOpTest.test_write_from_different_f_dssNN5)) gll9bj2;&>&KLLgll9bj2;&>&KLL  c7###  c5!!! DGL00;;<<< Iw///  c  cr)cx|d}|j|tjtjztjz}|j|tjtjz}|j|d|j|d|d|jj || |d|j ||j |dS)Nrosaaasbbbsaaabbb) rArr|rOrPrQrrrrr0rrr/s r')test_write_from_different_fds_with_appendzHFakeOsModuleLowLevelFileOpTest.test_write_from_different_fds_with_appendsNN5)) gll9bj2;&>&KLLgll9bkBK&?@@  c6"""  c6""" DGL00;;<<< Iy111  c  cr)c||ddd}||d|j|tj}|j|tjtjztjz}|d|j |d|j ||j |dS)Nr@rOrorrr)r) ryrArrr|rOrPrQrrrr/s r'test_read_only_read_after_writez>FakeOsModuleLowLevelFileOpTest.test_read_only_read_after_writes NN5%77  W555gll9bj11gll9bj2;&>&KLL dgll322333  c  cr)c|d}|j|tjtjztjz}|j|tjtjztjz}|j|tj}|j|d|j||d|j |d|j||j|dS)Nrosabcra) rArr|rOrPrQrrrr)r%rr0r1fd2s r'(test_read_after_closing_write_descriptorzGFakeOsModuleLowLevelFileOpTest.test_read_after_closing_write_descriptorsNN5)) gll9bj2;&>&KLLgll9bj2;&>&KLLgll9bj11  c6"""  c c1!5!5666  c  cr)c|d}|j|tj}|j|tj}|j|d|j|tjtjztjz}|d|j |d|j|d|d|j |d|j ||j ||j |dS)Nromr)rsmr) rArr|rOrrrPrQrrr)r%rr1r9fd3s r'test_writing_behind_end_of_filez>FakeOsModuleLowLevelFileOpTest.test_writing_behind_end_of_files NN5)) gll9bj11gll9bi00  c4   gll9bj2;&>&KLL dgll322333  c4    47<<Q#7#7888  c  c  cr)c||||jj|jjdSr5)ry setup_fake_fsrrrrdevnullrs r'test_devnull_posixz1FakeOsModuleLowLevelFileOpTest.test_devnull_posixsT    ++DGO<<=====r)cj||tjdkr>||jj|jjdS| |jj|jjdS)N)rar) rr@r version_infor"rrrrArrs r'test_devnull_windowsz3FakeOsModuleLowLevelFileOpTest.test_devnull_windowss !!!   f $ $   TW\00AA B B B B B OODGL//@@ A A A A Ar)cD|j|jjtj}|d|j|d|d|j|d|j||j|jjtj}|d|j|d|j|dS)Nrrr)) rr|rArrrrrr}r%rs r'test_write_devnullz1FakeOsModuleLowLevelFileOpTest.test_write_devnulls W\\$'/29 5 5 DGMM"g66777 dgll2q11222  b W\\$'/2; 7 7 dgll2q11222  br)c$||tj|jjdddd|d}|d}||d|||j|tj }|j|tj }|tj|jj||dddS)Nrrrr@rO testcontentr) rrIrJr{rsendfilerArr|r}r% src_file_path dst_file_pathr1r9s r'test_sendfile_with_invalid_fdzrBrErHrOrTrXr[r_is_macosrarrs@r'rrrs~MM<<<<<               $               VVV    (      X_,,.STT99UT9               (((            UUUUUU   VVV IIIWWW       KKK*               >>> BBB S S S . . . / / / 3 3 3 2 2 2X_**,IJJ  KJ     r)rceZdZdZdS)RealOsModuleLowLevelFileOpTestcdSrr1rs r'rbz*RealOsModuleLowLevelFileOpTest.use_real_fsnrr)Nrr1r)r'rfrfmrr)rfcjeZdZddZdZdZdZdZdZd Z d Z d Z d Z d Z dZdZdZdZdS)FakeOsModuleWalkTestTFcBtd|j|||D}t|d}t|d}|t |t |t ||D]\}}||d|d||dt|d||dt|ddS) Nc3K|]}|VdSr5r1).0steps r' z9FakeOsModuleWalkTest.assertWalkResults..vs3  D      r))topdown followlinksc|dSNrr1lsts r'z8FakeOsModuleWalkTest.assertWalkResults..ys Ar)keyc|dSrrr1rss r'ruz8FakeOsModuleWalkTest.assertWalkResults..zs CFr)rrr)listrrrrrrzip)r%expectedtoprorpr7entryexpected_entrys r'assertWalkResultsz&FakeOsModuleWalkTest.assertWalkResultsss/  !W\\#wK\XX     $6$6777((:(:;;; XF 444%(%:%: B B !E>   ^A.a 9 9 9   ^A.uQx0@0@ A A A   ^A.uQx0@0@ A A A A B Br)cd|_dS)zReset the last seen errno.FN last_errnors r' ResetErrnozFakeOsModuleWalkTest.ResetErrnos r)c|j|_dS)zStore the last errno we saw.N)rJr)r%rLs r' StoreErrnozFakeOsModuleWalkTest.StoreErrnos".r)c|jS)zReturn the last errno we saw.rrs r'GetErrnozFakeOsModuleWalkTest.GetErrnos r)c|d}||jj|d||jj|dd||jj|ddd||jj|dd|ddgdgf|jj|ddgdgf|jj|ddgdgf|jj|dgdgfg}|||d S) zWalk down ordering is correct.r@1.txtr2.txtro3.txtr4.txtNrArrrrVrr%rrr{s r'test_walk_top_downz'FakeOsModuleWalkTest.test_walk_top_downsU>>%(( **8W==>>> **8VWEEFFF **8VUGLLMMM **8VWEEFFF '' 3 W\  x 0 05'G9 E W\  x 7 7gY G W\  x 0 0"wi @   x22222r)c|d}||jj|ddd||jj|dd||jj|dd||jj|d|jj|ddgdgf|jj|ddgdgf|jj|dgdgf|ddgdgfg}|||dd d S) zWalk up ordering is correct.r@rrorrrrrF)roNrrs r'test_walk_bottom_upz(FakeOsModuleWalkTest.test_walk_bottom_upsh>>%(( **8VUGLLMMM **8VWEEFFF **8VWEEFFF **8W==>>>W\  x 7 7gY G W\  x 0 05'G9 E W\  x 0 0"wi @ '' 3   x)>)>NNNNNr)c|dd}|d|jj||j|}|tt|dS)zKRaises an exception when attempting to walk non-existent directory.r@rOFN) rArrrrrr StopIterationr)r%rDrs r' test_walk_raises_if_non_existentz5FakeOsModuleWalkTest.test_walk_raises_if_non_existentspNN5%00   3 3I > >???GLL++  -y99999r)c|dd}|||j|}|t t |dS)z>%// """GLL**  -y99999r)c||dd}|d|jj||j||jD]}|| tj tj fvdS)zMCalls onerror with correct errno when walking non-existent directory.r@rOFonerrorN) rrArrrrrrrrrJrQrK)r%rD_s r'(test_walk_calls_on_error_if_non_existentz=FakeOsModuleWalkTest.test_walk_calls_on_error_if_non_existents NN5%00   3 3I > >???iAA  A   EM5<+HHIIIIIr)c||d}|||d|jj||j||jD]}| | tj tj fvdS)zFakeOsModuleWalkTest.test_walk_calls_on_error_if_not_directorys >>+.. """ tw|228<<===h@@  A   EM5<+HHIIIIIr)c|d}d}d}||jj|d||jj||d||jj||d||jj||d||jj||d|j|d}t |}|d |d }t|D]j\}}}| d | |jjj |z| |jjj |zrd }k| d |d S) z=Caller can modify list of directories to visit while walking.r@visitno_visitrOrrrrrFTN) rArrrrVrrr9iterrendswithr ) r%rrrr root_contentsvisited_visit_directory_dirs_filess r'#test_walk_skips_removed_directoriesz8FakeOsModuleWalkTest.test_walk_skips_removed_directoriess~~e$$ **477888 **4@@AAA **4@@AAA **47CCDDD **47CCDDDGLL!6!677 Y a)))"'#' ?? / / D%   UDMM$',2BX2M$N$N O O O}}TW\-566 /*.' 677777r)c||d}|d}||jj|d||jj|dd||jj|ddd||jj|d||ddggf|jj|ddgdgf|jj|ddgdgfg}|||d |jj|dgdgfg}|||jj|dd dS) Nr@rosubfilerOrorlrm created_linkFrpryrArrrrVrrr%rrrsr{s r' test_walk_followsymlink_disabledz5FakeOsModuleWalkTest.test_walk_followsymlink_disableds >>%((>>(++ **8Y??@@@ **8UEBBCCC **8UGWMMNNN DGL--hGGRRR~. 3 W\  x / /'UG D W\  x 8 8"wi H  xuEEEW\&&x@@"ykRS   GL  h 7 7      r)c(||d}|d}||jj|d||jj|dd||jj|ddd||jj|d|jj||ddggf|jj|ddgdgf|jj|ddgdgf|jj|dgdgfg}|||d |jj|dgdgfg}|||jj|dd dS) Nr@rorrOrorlrmrTrrrs r'test_walk_followsymlink_enabledz4FakeOsModuleWalkTest.test_walk_followsymlink_enableds >>%((>>(++ **8Y??@@@ **8UEBBCCC **8UGWMMNNN  GL  h 7 7 GL  h ' '   ~. 3 W\  x / /'UG D W\  x 8 8"wi H W\  x 8 8"yk J   xtDDDW\&&x@@"ykRS   GL  h 7 7      r)c||d}|||d|ddggfdgdgfg}||ddS)Nz /foo/bar/bazrOr)rro)ryr_rrr)r%rr{s r'test_walk_linked_file_in_subdirz4FakeOsModuleWalkTest.test_walk_linked_file_in_subdirs  "  ### E9---eWb)JUG+DE x00000r)c|ddd}|||dd|dddd|dddd|jjjdzz|d|jjjdzzdzg}|D]9}|j|D]\}}}|||:|dddd}|||D]K}|j|D].\}}}|||/LdS)Nr@rOror^rar) rArrrr rrr startswith)r%rvariantsrrdirpath _dirnames _filenamess r'test_base_dirpathz&FakeOsModuleWalkTest.test_base_dirpath*sNN5%77  ### NN5% ( ( NN5$u 5 5 NN5$u 5 5 8H18L L NN5 ! !DGL$4q$8 85 @   ! 4 4H26',,x2H2H 4 4.J  (3333 4NN5%>>  ###  > >H26',,x2H2H > >.J 2 28 < <==== > > >r)N)TF)r.r/r0rrrrrrrrrrrrrrrr1r)r'ririrs B B B B   ))) 3 3 3OOO :::::: J J J J J J8880   .   6 1 1 1>>>>>r)riceZdZdZdS)RealOsModuleWalkTestcdSrr1rs r'rbz RealOsModuleWalkTest.use_real_fs@rr)Nrr1r)r'rr?rr)rceZdZfdZdZdZejee d ddZ dZ dZ d Z d Zd Zd Zd ZdZejee d ddZdZdZdZdZdZdZdZdZxZS)FakeOsModuleDirFdTestcftt||jjd|j_|jd|j dtj |_ |j ddS)NFrr)/foo/baz) r6rr7rrclearra is_windows_fsr,r|r}dir_fdrr=s r'r7zFakeOsModuleDirFdTest.setUpEs #T**00222 %%'''(-% "":...gll62;77  ##J/////r)cF|t|jjd|jj|j|jj|jj||jd|jj|jdS)Nror) rrrrrrraddrrs r' test_accessz!FakeOsModuleDirFdTest.test_accessMs   GN  GL;     ##DGN333 udgl4;OOPPPPPr)cb|t|jjdd|j|jj|jj|jdd|j|jd}|d|j dS)Nrorrr) rrrrrrrrrr r%r&s r'rz FakeOsModuleDirFdTest.test_chmodXs   GM  ;     ##DGM222  eVDK 888 W\\* % % vrz22222r)rz$chown not on all platforms availablec|t|jjddd|j|jj|jj|jddd|j|jd}||tj d||tj ddS)Nrorrrr) rrrrrrrrrrrrs r' test_chownz FakeOsModuleDirFdTest.test_chownes   GM   ;     ##DGM222  eS#dk ::: W\\* % % DK#... DK#.....r)c\|t|jjdd|j|jj|jj|jdd|j||jj ddS)Nro/bat src_dir_fd rrrrrrrrrrrs r'test_link_src_fdz&FakeOsModuleDirFdTest.test_link_src_fdus   GL  {     ##DGL111  UFt{ ;;;  ++F3344444r)c\|t|jjdd|j|jj|jj|jdd|j||jj ddS)Nror dst_dir_fdrbatz/foo/batrrs r'test_link_dst_fdz&FakeOsModuleDirFdTest.test_link_dst_fds   GL  {     ##DGL111  Z4; ???  ++J7788888r)c\|t|jjdd|j|jj|jj|jdd|j||jj ddS)Nrorr) rrrrrrrrrrrs r'r z"FakeOsModuleDirFdTest.test_symlinks   GO  ;     ##DGO444 vdk:::  ++F3344444r)c||jdd|jdd|t|jjd|j|jj |jj| d|jd|jdS)Nz/meyer/lemon/pierz /geo/metroz/meyerz/geo/metro/lemon/pier) rrarrrrrrrrrrs r'rz#FakeOsModuleDirFdTest.test_readlinks **,,, &&'9:FFF &&|X>>>   G  ";    ##DG$4555   G  3DK  H H     r)c*|t|jjd|j|jj|jj|jd|j}||jddSNrorr() rrrrrrrrr rs r'rzFakeOsModuleDirFdTest.test_statsz -tw|U4;WWW ##DGL111 W\\% \ 4 4 X.....r)c*|t|jjd|j|jj|jj|jd|j}||jddSr) rrrrrrrrr rs r' test_lstatz FakeOsModuleDirFdTest.test_lstatsz -tw}eDKXXX ##DGM222 W]]5] 5 5 X.....r)cX|t|jjd|j|jj|jj|jd|j||jj ddSNrirz /foo/newdir) rrrrrrrrrrrs r'r#z FakeOsModuleDirFdTest.test_mkdirs       ##DGM222  ht{ 333  ++M::;;;;;r)cX|t|jjd|j|jj|jj|jd|j||jj ddS)NrOrr) rrrrrrrr"rrrs r'rz FakeOsModuleDirFdTest.test_rmdirs -tw}eDKXXX ##DGM222  eDK 000 ,,Z8899999r)rz$mknod not on all platforms availablecX|t|jjd|j|jj|jj|jd|j||jj ddSr) rrrrrrrrrrrs r' test_mknodz FakeOsModuleDirFdTest.test_mknods       ##DGM222  ht{ 333  ++M::;;;;;r)c\|t|jjdd|j|jj|jj|jdd|j||jj ddSNro /foo/batzrrO rrrrrrrrrrrs r'test_rename_src_fdz(FakeOsModuleDirFdTest.test_rename_src_fds   GN  {     ##DGN333 ukdkBBB  ++K8899999r)c\|t|jjdd|j|jj|jj|jdd|j||jj ddSNrorrrbatzrrs r'test_rename_dst_fdz(FakeOsModuleDirFdTest.test_rename_dst_fds   GN  {     ##DGN333 z6dkBBB  ++K8899999r)c\|t|jjdd|j|jj|jj|jdd|j||jj ddSr rrrrrrrrrrrrs r'test_replace_src_fdz)FakeOsModuleDirFdTest.test_replace_src_fds   GN  {     ##DGN333 {t{CCC  ++K8899999r)c\|t|jjdd|j|jj|jj|jdd|j||jj ddSrrrs r'test_replace_dst_fdz)FakeOsModuleDirFdTest.test_replace_dst_fds   GN  {     ##DGN333  Ft{CCC  ++K8899999r)cX|t|jjd|j|jj|jj|jd|j||jj ddSNrorr) rrrr9rrrr"rrrs r' test_removez!FakeOsModuleDirFdTest.test_remove  t{     ##DGN333 uT[111 ,,Z8899999r)cX|t|jjd|j|jj|jj|jd|j||jj ddSr) rrrr rrrr"rrrs r' test_unlinkz!FakeOsModuleDirFdTest.test_unlinkrr)c|t|jjdd|j|jj|jj|jdd|j|jd}|d|j |d|j dS)Nrorr)rrrrr) rrrrrrrrrrrrs r' test_utimez FakeOsModuleDirFdTest.test_utime s   GM  ;     ##DGM222  e6$+ >>> W\\* % % BK((( BK(((((r)cL|t|jjdtj|j|jj|jj|jdtj|j}|d|dS)Nrorr) rrrr|r}rrr assertLessrGs r' test_openzFakeOsModuleDirFdTest.test_opens   GL  K;     ##DGL111 W\\%T[\ A A 2r))r.r/r0r7rrrrhasattrrrrrr rrrr#rrrrrrrrrrrrs@r'rrDs00000 Q Q Q 3 3 3X_W---/UVV / /WV / 5 5 5 9 9 9 5 5 5   /// /// <<<::: X_W---/UVV<<WV< : : : : : : : : : : : ::::::: ) ) )       r)rc8eZdZdZdZdZdZdZdZdZ dS) StatPropagationTestctjd|_tj|j|_t j|j|_dS)Nr")r) rFakeFilesystemrar FakeOsModulerr r r|rs r'r7zStatPropagationTest.setUp(sC)8LLL&t77*4?;; r)cd}d}d}|j|||d}|d|j|tj|d|j|j| ||d|j|tj|d|j|j| |t||j|tj|||j|jdS)z-test that file size gets updated via close().rl xyzzy/closezThis is a test.rrrN) rrr|rrrrarcrrrrr%file_dirrcontentr,s r' test_file_size_updated_via_closez4StatPropagationTest.test_file_size_updated_via_close-s_! #  h YYy# & & DGLL33DLABBB T_77 BBKLLL  DGLL33DLABBB T_77 BBKLLL   Wtw||I'>'>t|'LMMM $/"<"._sBHH]++r))rrarr|rr FakeLargeFileIoException)r%rrrrr,s @@r' test_large_file_size_after_writez4StatPropagationTest.test_large_file_size_after_writeVs #,--  ##I}#EEE! YYy# & &   . + + + + +     r)cd}d}|jj||}d}|j|||d}|d|j|t j|d|j |j | ||d|j|t j|d|j |j | |t||j|t j|||j |j ||t||j|t j|||j |j dS)z-test that file size gets updated via flush().rlflushzThis might be a test.rrrN)rrrVrr|rrrrarcrrrrr)r%rrrrr,s r' test_file_size_updated_via_flushz4StatPropagationTest.test_file_size_updated_via_flushbs GL%%h :: )  h YYy# & & DGLL33DLABBB T_77 BBKLLL  DGLL33DLABBB T_77 BBKLLL   Wtw||I'>'>t|'LMMM $/"<"'>t|'LMMM $/"<"'>t|'LMMM $/"<".fake_scan_dirs#088!LLLr)rlrmrorIrr^ link_filers rel_link_file rel_link_dirbrac|jSr5rp)r}s r'ruz'FakeScandirTest.setUp..s r)rv)%r6rr7rcrbsupports_symlinksrrpyfakefs.fake_scandirrrArDrrVlinked_file_pathlinked_dir_pathrel_linked_dir_pathrel_linked_file_pathr~rfile_link_path dir_link_pathfile_rel_link_pathdir_rel_link_pathr,r FILE_SIZELINKED_FILE_SIZErrX pretest_cwdrBrry do_scandir dir_entriesrq)r%rr$rsr#r>s` @r'r7zFakeScandirTest.setUps ot$$**,,,%)_!4!ND>(G44 $ 1 1(F C C#w|005AA#'7<#4#4 $'5$ $  %)GL$5$5 $'6% % ! ))$.%@@ **4>6BB"gl// LL!W\..t~zJJ"&',"3"3DNO"T"T!%!2!24>>!R!R  &&& $2GHHH  ! T OOD0 1 1 1   %t7L0L         2D4H I I I    3T5J K K K    68P Q Q Q    79R S S S 7>>++  dn%%% 1 122 ":":;;;;;r)c|j|jtdSr5)rrBr7r6tearDownr=s r'r;zFakeScandirTest.tearDowns6  d&''' r)c6||jS)z'Hook to override how scandir is called.)rrDrs r'r8zFakeScandirTest.do_scandirs||DN+++r)c|jS)z>Hook to override the expected scandir() path in DirEntry.path.)rDrs r' scandir_pathzFakeScandirTest.scandir_paths ~r)cfddg}jr|gdt|tj|djDfd|D}|djDdS)NrrI)rsr%r'r&cg|] }|j Sr1rprlr}s r' z.FakeScandirTest.test_paths..'Q'Q'Qu 'Q'Q'Qr)ctg|]4}jj|5Sr1)rrrVr>)rlrqr%s r'rBz.FakeScandirTest.test_paths..sF   =ADGL  d//114 8 8   r)cg|] }|j Sr1rrAs r'rBz.FakeScandirTest.test_paths..rCr))r+extendrrr9)r% sorted_names sorted_pathss` r' test_pathszFakeScandirTest.test_pathssv  !    JJJ    \**C0@,A,ABBB 'Q'Q@P'Q'Q'QRRR    EQ    'Q'Q@P'Q'Q'QRRRRRr)c||jd||jd|jr||jd||jdd||jd||jdd||jd||jdd||jd||jdddSdS NrrrFrrarr)r"r9is_filerr+rs r' test_isfilezFakeScandirTest.test_isfiles )!,4466777 (+3355666  ! Q   T-a088:: ; ; ;   T-a0888OO P P P OOD,Q/7799 : : :   T-a0888OO P P P   T-a088:: ; ; ;   T-a0888OO P P P OOD,Q/7799 : : :   T-a0888OO P P P P P Q Qr)c||jd||jd|jr||jd||jdd||jd||jdd||jd||jdd||jd||jdddSdSrL)rr9is_dirr"r+rs r' test_isdirzFakeScandirTest.test_isdirs (+2244555 )!,3355666  ! P OOD,Q/6688 9 9 9   T-a0777NN O O O   T-a07799 : : :   T-a0777NN O O O OOD,Q/6688 9 9 9   T-a0777NN O O O   T-a07799 : : :   T-a0777NN O O O O O P Pr)cr|jr.||jd||jd||jd||jd||jd||jddSdS)Nrrrrarr)r+r"r9 is_symlinkrrs r' test_is_linkzFakeScandirTest.test_is_links  ! >   T-a0;;== > > >   T-a0;;== > > > OOD,Q/::<< = = = OOD,Q/::<< = = = OOD,Q/::<< = = = OOD,Q/::<< = = = = =  > >r)c||ddd}|j|jj|d|dd}|j||||jj|dgd||DdS)NABCDcg|] }|j Sr1rF)rlrus r'rBz@FakeScandirTest.test_path_links_not_resolved..s 5 5 5QV 5 5 5r)) rrArrWrrVrrrr s r'test_path_links_not_resolvedz,FakeScandirTest.test_path_links_not_resolved s **,,,>>#sC00 **8S99:::NN3,,  ),,,  W\  y# . . / 5 5T\\)44 5 5 5     r)ctrL|r8|jr|dtr|d||j|jj |j d ||j|j j |j d |j rV||j|jj |j d ||j|jj |j d ||j|jj |j d ||j|jj |j d dSdS) Nz7inode seems not to work in scandir module under Windowsz-inode seems not to work in a Docker containerrrrrarr)rrbrcskipTestrrrrr~st_inor9inoderr+rr2r1r4r3rs r' test_inodezFakeScandirTest.test_inodes"  O4++-- O Y WXXX O MNNN  GLL ' ' .0@0C0I0I0K0K     GLL ( ( /1A!1D1J1J1L1L     !     d0118 #))++       d1229 #))++       d455< #))++       d566= #))++       r)c|j|jj}|d|||j}|D]}|j|jkr|j}|jr|d|n|d||d|j|jjdS)Nrr) rrrrdrrrDrr)r% stat_nlinkdir_iteritemscandir_stat_nlinks r'test_scandir_stat_nlinkz'FakeScandirTest.test_scandir_stat_nlink3sW\\$.11:  J'''<<// K KDyDN**%)YY[[%9"%<$$Q(:;;;;$$Q(:;;;  DGLL$@$@$IJJJ K Kr) O_DIRECTORYzopening directory not supported)rarzfd not supported for scandirc|dd}||||jj|d||jj|d||jj|d|j||j|tjtj z}d|j |D}t|gdksJdS) Nrrrrr})flagscg|] }|j Sr1rp)rl dir_entrys r'rBz8FakeScandirTest.test_scandir_with_fd..LsHHHyINHHHr))rrr}) rAr,rrrrVrBr|r}rgrrr)r%temp_dirrchildrens r'test_scandir_with_fdz$FakeScandirTest.test_scandir_with_fdAs>>%// !!! **8W==>>> **8W==>>>  ))(H==>>>  h W\\("+*F\ G GHHDGOOB4G4GHHHh#?#?#???????r)cV||j|jdj|jrt jdkrt|t|j |j j t|jdj |j r||j |jdj|||jddj|t|j |jjt|jdj||j |jdj|||jddj|t|j |jjt|jd jdSdS) Nrra rraFrrrr)rr5r9rrrrrDintrr~rr+r6r.r)r%absolute_symlink_expected_sizerelative_symlink_expected_sizes r' check_statzFakeScandirTest.check_statOsP )9!)<)A)A)C)C)KLLL! S%5%?%?   DGLL//899D$Q',,..788     !    T2D4DQ4G4L4L4N4N4V W W W   . #(((??G      DGLL!566?@@D$Q',,..788      T2D4DQ4G4L4L4N4N4V W W W   . #(((??G      DGLL!566?@@D$Q',,..788       r)zPOSIX specific behaviorcz|t|jt|jdSr5)rurr-r0rs r'test_stat_posixzFakeScandirTest.test_stat_posixns2 D122C8Q4R4RSSSSSr)zWindows specific behaviorc2|dddSrr)rurs r'test_stat_windowsz!FakeScandirTest.test_stat_windowsrs 1r)c|jrtjdkrr||j|jt jt|j dj |j r||j|j t j t|j dj||j|j t j t|j djdSdS)Nrprrr)rrrDrrrr~ST_CTIMErrr9rr+r.ST_MTIMErrs r'+test_index_access_to_stat_times_returns_intz;FakeScandirTest.test_index_access_to_stat_times_returns_intvs;! S%5%?%?    T]++DM:D$Q',,..788     !     T1224=AD$Q',,..788       T1224=AD$Q',,..788        r)c@|jr|j|j}||j|jdj||j|jdj||j|jdj||j|jdjdSdS)Nrar)r+rrr-rr^r9st_dev)r% file_stats r'test_stat_ino_devz!FakeScandirTest.test_stat_ino_devs  ! R T%:;;I   Y-t/?/B/G/G/I/I/P Q Q Q   Y-t/?/B/G/G/I/I/P Q Q Q   Y-t/?/B/G/G/I/I/P Q Q Q   Y-t/?/B/G/G/I/I/P Q Q Q Q Q  R Rr))rar4z4Path-like objects have been introduced in Python 3.6c|t|jdtj||jj|dtj |jd||jj|dtj |jddS)NrrrIr) r isinstancer9rPathLikerrrVr>fspathrs r'test_path_likezFakeScandirTest.test_path_likes  4#3A#6 DDEEE  GL  d//115 9 9 Id&q) * *     GL  d//116 : : Id&q) * *     r)cz||tj|jddS)Nrk)r_rIrJrKrrs r'test_non_existing_dirz%FakeScandirTest.test_non_existing_dirs7  ##EL$,@WXXXXXr))"r.r/r0r5r6r7r;r8r>rJrNrQrTr[r`rfrrrrrrDrnrurrcrwryr}rrrrrrs@r'rrs>I:<:<:<:<:>>    < K K KX_]3335VWWX_S%.0NOO @ @POXW @>X_X(*CDDTTEDTX_,,.IJJKJ"RRRX_ 6!<)<%<>     YYYYYYYr)rceZdZdZdS)RealScandirTestcdSrr1rs r'rbzRealScandirTest.use_real_fsrr)Nrr1r)r'rrrr)rceZdZdZdZdS)FakeScandirRelTestcJ|jj|jSr5)rrrelpathrDrs r'r>zFakeScandirRelTest.scandir_pathsw|##DN333r)cp||jj|jSr5)rrrrrDrs r'r8zFakeScandirRelTest.do_scandirs(||DGL00@@AAAr)N)r.r/r0r>r8r1r)r'rrs7444 BBBBBr)rceZdZdZdS)RealScandirRelTestcdSrr1rs r'rbzRealScandirRelTest.use_real_fsrr)Nrr1r)r'rrrr)rz.dir_fd not supported for os.scandir in Windowsz%no dir_fd support for scandir packagec*eZdZfdZdZdZxZS)FakeScandirFdTestc|j|jtt|dSr5)rrrr6rr;r=s r'r;zFakeScandirFdTest.tearDowns<  dk""" &&//11111r)cdSrr1rs r'r>zFakeScandirFdTest.scandir_paths rr)c|j|jtj|_||jSr5)rr|rDr}rrrs r'r8zFakeScandirFdTest.do_scandirs1gll4>2;?? ||DK(((r))r.r/r0r;r>r8rrs@r'rrsV22222 )))))))r)rceZdZdZdS)RealScandirFdTestcdSrr1rs r'rbzRealScandirFdTest.use_real_fsrr)Nrr1r)r'rrrr)rceZdZdZdS)FakeScandirFdRelTestc|j|jj|jtj|_||jSr5)rr|rrrDr}rrrs r'r8zFakeScandirFdRelTest.do_scandirsCgll47<#7#7#G#GUU ||DK(((r)N)r.r/r0r8r1r)r'rrs#)))))r)rceZdZdZdS)RealScandirFdRelTestcdSrr1rs r'rbz RealScandirFdRelTest.use_real_fsrr)Nrr1r)r'rrrr)rc6eZdZfdZdZdZdZdZxZS)FakeExtendedAttributeTestc:tt|||d|_|jj|jd|_ | |j dSrg) r6rr7rrAr~rrrVrrr=s r'r7zFakeExtendedAttributeTest.setUps~ '..44666 u-- **4=%@@ (((((r)c|g|j|j|g|j|jdSr5)rr listxattrr~rrs r'test_empty_xattrz*FakeExtendedAttributeTest.test_empty_xattrsX TW..t}==>>> TW..t~>>?????r)c|t|jj|jdd|t j|jj|jdd|jj|j|jdd| d|j |jd|t j |jj|jdd|jj dS)Nrvaluevalue) rrrsetxattrrrIrJr XATTR_REPLACErgetxattrENODATA XATTR_CREATErs r' test_setxattrz'FakeExtendedAttributeTest.test_setxattrs )TW%5t~vwWWW ## L G  N   G !     ::: 47#3#3DNF#K#KLLL ## M G  N   G      r)c|j|jd|g|j|j|j|jdd|dg|j|j|d|j|jd|j|jd|g|j|j||j|jddS)Nrrr)r removexattrrrrrr assertIsNoners r'test_removeattrz)FakeExtendedAttributeTest.test_removeattrs$ DNF333 TW..t~>>??? (;;; &47#4#4T^#D#DEEE 47#3#3DNF#K#KLLL DNF333 TW..t~>>??? $'**4>6BBCCCCCr)cJ|j|j|j|jdd|dg|j|d|j|jddS)Nrrr)rrBr~rrrrrs r'test_default_pathz+FakeExtendedAttributeTest.test_default_paths  dm$$$ ::: &47#4#4#6#6777 47#3#3DM6#J#JKKKKKr)) r.r/r0r7rrrrrrs@r'rrs)))))@@@   *DDDLLLLLLLr)rcreZdZfdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZxZS)FakeOsUnreadableDirTestc|r|tt||d|_|jj |jd|_ | |j | |jddS)Nrrr) rbryr6rr7rAr~rrrVrrrr=s r'r7zFakeOsUnreadableDirTest.setUp s      $  ! ! # # # %t,,22444z22 **4=+FF ((( 4=%(((((r)c|jr|j||ddS|j||dS)NT)force_unix_mode)rrarr)r%rrs r'rzFakeOsUnreadableDirTest.chmodsL   & O ! !$d ! C C C C C GMM$ % % % % %r)c|||j}t |dz||dz|j||dzt t ||||jdSNr)r_ryrgetuidr rr)r%uids r' test_getuidz#FakeOsUnreadableDirTest.test_getuid  gnnb r47>>#3#3444 r799---  dgnn../////r)c|||j}t |dz||dz|j||dzt t ||||jdSr)r_ryrgetgidrrr)r%gids r' test_getgidz#FakeOsUnreadableDirTest.test_getgid(rr)cts2|tj|jj|jdS|dg|j|jdS)Nr)r rIrJrArrpr~rrs r'test_listdir_unreadable_dirz3FakeOsUnreadableDirTest.test_listdir_unreadable_dir2scyy L  ' ' dgot} U U U U U   k]DGOODM,J,J K K K K Kr)c||jd|dg|j|j||jddS)Nrrr)rr~rrrprs r'test_listdir_user_readable_dirz6FakeOsUnreadableDirTest.test_listdir_user_readable_dir8s\ 4=%((( + (F(FGGG 4=%(((((r)c||t}t|dz|d}||d||jj |t|tsO| t5|j |ddddS#1swxYwYdS|dg|j |jdS)NrrYrrkr)r_ryrr rAr,rrrrr rPermissionErrorrprr~r%user_idr~s r'.test_listdir_user_readable_dir_from_other_userzFFakeOsUnreadableDirTest.test_listdir_user_readable_dir_from_other_user=sc  ))! >>&)) u---  ++H55666yy L""?33 * *))) * * * * * * * * * * * * * * * * * *   k]DGOODM,J,J K K K K KsDD  D c|t}t|dz|d}||d||jj|t|| g|j |dS)NrrYirk) r_rr rAr,rrrrrrprs r'/test_listdir_group_readable_dir_from_other_userzGFakeOsUnreadableDirTest.test_listdir_group_readable_dir_from_other_userLs ))! >>&)) u---  ++H55666 TW__X6677777r)c|||j}t |dz|d}||d||jj |t |tsO| t5|j |ddddS#1swxYwYdS|g|j |dS)NrrY0rk)r_ryrrrrAr,rrrr rrrprr%group_idr~s r'0test_listdir_group_readable_dir_from_other_groupzHFakeOsUnreadableDirTest.test_listdir_group_readable_dir_from_other_groupVsf  7>>##1 >>&)) u---  ++H55666yy <""?33 * *))) * * * * * * * * * * * * * * * * * *   R!:!: ; ; ; ; ;s)DDDc|t}t|dz|d}||d||jj|t|| g|j |dS)NrrYrrk) r_rrrAr,rrrrrrprs r'0test_listdir_other_readable_dir_from_other_groupzHFakeOsUnreadableDirTest.test_listdir_other_readable_dir_from_other_groupes 991 >>&)) u---  ++H55666 TW__X6677777r)c||d|j|jjdzdS)Nrr)rrrr~r rs r'test_stat_unreadable_dirz0FakeOsUnreadableDirTest.test_stat_unreadable_diros6 DGLL77?%GHHHHHr)c^||jd|d|j|jjdz||jd|d|j|jjdzdS)Nrr)rr~rrrr rs r'test_chmod_unreadable_dirz1FakeOsUnreadableDirTest.test_chmod_unreadable_dirrs 4=%(((  T] ; ; Ce KLLL 4=%((( DGLL77?%GHHHHHr)cts2|tj|jj|jdS|d|j|jjdSrr) r rIrJrArrrrrrs r' test_stat_file_in_unreadable_dirz8FakeOsUnreadableDirTest.test_stat_file_in_unreadable_dirxsdyy F  ' ' dglDN S S S S S   Q T^ < < D E E E E Er)c||d}||d||jj||j|||jj|dS)NrYrrk) ryrAr,rrrrrr"rs r'test_remove_unreadable_dirz2FakeOsUnreadableDirTest.test_remove_unreadable_dir~s >>&)) u---  ++H55666  h ,,X6677777r)c|t}t|dz|d}||d||jj|t|ts| t5|j |dddn #1swxYwY||jj|dS|j || |jj|dS)NrrYrrk)r_rr rAr,rrrrr rrrr"rs r'*test_remove_unreadable_dir_from_other_userzBFakeOsUnreadableDirTest.test_remove_unreadable_dir_from_other_users{ ))! >>&)) u---  ++H55666yy <""?33 ( ( h''' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( OODGL//99 : : : : : GMM( # # #   TW\00:: ; ; ; ; ;s C11C58C5)r.r/r0r7rrrrrrrrrrrrrrrrs@r'rr s ) ) ) ) )&&& 000000LLL ))) L L L888 < < <888IIIIII FFF 888<<<<<<rs +* AAAAAAAAAAAACCCCCCCCCCCC  ?>>>>>>>33333>333$F, F, F, F, F, +F, F, F, RX' h2h2h2h2h2(<h2h2h2V(I u-u-u-u-u-/u-u-u-pxxxxx%9xxxv%C J>J>J>J>J>/J>J>J>Z/ `````0```Faaaaa(aaaH["DEEUYUYUYUYUY*UYUYFEUYpo BBBBBBBB+ $&VWW$&MNN ) ) ) ) ) ) )ONXW )) ))))),))) / /L/L/L/L/L 4/L/L/LdI<I<I<I<I<2I<I<I