@@ -757,6 +757,60 @@ def test_os_directories(self):
757757 with self .assertRaises (s2 .ManagementError ):
758758 st .removedirs (mkdir_test_sql )
759759
760+ def test_listdir_return_objects (self ):
761+ st = self .wg .stage
762+
763+ listdir_test_dir = f'listdir_test_{ id (self )} '
764+ listdir_test_sql = f'listdir_test_{ id (self )} .sql'
765+
766+ # Create test directory structure
767+ st .mkdir (listdir_test_dir )
768+ st .mkdir (f'{ listdir_test_dir } /nest_1' )
769+ st .upload_file (TEST_DIR / 'test.sql' , listdir_test_sql )
770+ st .upload_file (
771+ TEST_DIR / 'test.sql' ,
772+ f'{ listdir_test_dir } /nested_test.sql' ,
773+ )
774+
775+ # Test return_objects=False (default behavior)
776+ out = st .listdir ('/' )
777+ assert isinstance (out , list )
778+ assert all (isinstance (item , str ) for item in out )
779+ assert f'{ listdir_test_dir } /' in out
780+ assert listdir_test_sql in out
781+
782+ # Test return_objects=True
783+ out_objs = st .listdir ('/' , return_objects = True )
784+ assert isinstance (out_objs , list )
785+ assert all (hasattr (item , 'path' ) for item in out_objs )
786+ assert all (hasattr (item , 'type' ) for item in out_objs )
787+
788+ # Verify we have the expected items
789+ obj_paths = [obj .path for obj in out_objs ]
790+ assert f'{ listdir_test_dir } /' in obj_paths
791+ assert listdir_test_sql in obj_paths
792+
793+ # Verify object types
794+ for obj in out_objs :
795+ if obj .path == f'{ listdir_test_dir } /' :
796+ assert obj .type == 'directory'
797+ elif obj .path == listdir_test_sql :
798+ assert obj .type == 'file'
799+
800+ # Test with subdirectory and return_objects=True
801+ out_objs_sub = st .listdir (listdir_test_dir , return_objects = True )
802+ assert isinstance (out_objs_sub , list )
803+ obj_paths_sub = [obj .path for obj in out_objs_sub ]
804+ assert 'nest_1/' in obj_paths_sub
805+ assert 'nested_test.sql' in obj_paths_sub
806+
807+ # Test recursive with return_objects=True
808+ out_objs_rec = st .listdir ('/' , recursive = True , return_objects = True )
809+ obj_paths_rec = [obj .path for obj in out_objs_rec ]
810+ assert f'{ listdir_test_dir } /' in obj_paths_rec
811+ assert f'{ listdir_test_dir } /nest_1/' in obj_paths_rec
812+ assert f'{ listdir_test_dir } /nested_test.sql' in obj_paths_rec
813+
760814 def test_os_files (self ):
761815 st = self .wg .stage
762816
0 commit comments