Skip to content

Commit

Permalink
Merge pull request #6204 from ericmehl/improveTearDown
Browse files Browse the repository at this point in the history
TestCase : Temp directory access improvements
  • Loading branch information
ericmehl authored Jan 13, 2025
2 parents 8e26e30 + 394d3fe commit 04f38a7
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 11 deletions.
19 changes: 15 additions & 4 deletions python/GafferImageTest/CatalogueTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import imath
import pathlib
import unittest
import subprocess

import IECore

Expand Down Expand Up @@ -615,13 +616,15 @@ def testDeleteBeforeSaveCompletesWithScriptVariables( self ) :

self.assertEqual( len( list( baseDirectory.glob( "*" ) ) ), 0 )

@unittest.skipIf( os.name == "nt", "Windows allows new files in read-only directories" )
def testNonWritableDirectory( self ) :

s = Gaffer.ScriptNode()
s["c"] = GafferImage.Catalogue()
s["c"]["directory"].setValue( self.temporaryDirectory() / "catalogue" )
os.chmod( self.temporaryDirectory(), stat.S_IREAD )
if os.name != "nt" :
os.chmod( self.temporaryDirectory(), stat.S_IREAD )
else :
subprocess.check_call( [ "icacls", self.temporaryDirectory(), "/deny", "Users:(OI)(CI)(W)" ] )

r = GafferImage.ImageReader()
r["fileName"].setValue( self.imagesPath() / "blurRange.exr" )
Expand All @@ -637,9 +640,17 @@ def testNonWritableDirectory( self ) :

self.assertEqual( len( mh.messages ), 1 )
self.assertEqual( mh.messages[0].level, IECore.Msg.Level.Error )
self.assertIn( "Permission denied", mh.messages[0].message )
self.assertIn(
"Permission denied" if os.name != "nt" else "Access is denied",
mh.messages[0].message
)

with self.assertRaisesRegex( RuntimeError, r".* : Could not open \".*\" \(Permission denied\)" ) :
with self.assertRaisesRegex(
RuntimeError,
r".* : Could not open \".*\" " + (
"\(Permission denied\)" if os.name != "nt" else "\(No such file or directory\)"
)
) :
GafferImage.ImageAlgo.image( s["c"]["out"] )

def testDeleteKeepsOrder( self ) :
Expand Down
11 changes: 7 additions & 4 deletions python/GafferTest/TestCase.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,14 @@ def tearDown( self ) :
## \todo Fix Cortex so that wrapped classes don't require garbage collection.
IECore.RefCounted.collectGarbage()

for root, dirs, files in os.walk( self.temporaryDirectory() ) :
for fileName in [ p for p in files + dirs if not ( pathlib.Path( root ) / p ).is_symlink() ] :
( pathlib.Path( root ) / fileName ).chmod( stat.S_IRWXU )

if self.__temporaryDirectory is not None :
if os.name == "nt" :
subprocess.check_call( [ "icacls", self.__temporaryDirectory, "/grant", "Users:(OI)(CI)(W)" ] )

for root, dirs, files in os.walk( self.__temporaryDirectory ) :
for fileName in [ p for p in files + dirs if not ( pathlib.Path( root ) / p ).is_symlink() ] :
( pathlib.Path( root ) / fileName ).chmod( stat.S_IRWXU )

shutil.rmtree( self.__temporaryDirectory )

IECore.MessageHandler.setDefaultHandler( self.__defaultMessageHandler )
Expand Down
3 changes: 0 additions & 3 deletions python/GafferUSDTest/USDLayerWriterTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,8 +265,5 @@ def testNoWritePermissions( self ) :
with self.assertRaisesRegex( RuntimeError, 'Failed to export layer to "{}"'.format( layerWriter["fileName"].getValue() ) ) :
layerWriter["task"].execute()

if os.name == "nt" :
subprocess.check_call( [ "icacls", self.temporaryDirectory(), "/grant", "Users:(OI)(CI)(W)" ] )

if __name__ == "__main__":
unittest.main()

0 comments on commit 04f38a7

Please sign in to comment.