@@ -119,6 +119,52 @@ def test_csv(path):
119119 wr .s3 .read_csv (path = paths , iterator = True )
120120
121121
122+ @pytest .mark .parametrize ("header" , [True , ["identifier" ]])
123+ def test_csv_dataset_header (path , header , glue_database , glue_table ):
124+ path0 = f"{ path } test_csv_dataset0.csv"
125+ df0 = pd .DataFrame ({"id" : [1 , 2 , 3 ]})
126+ wr .s3 .to_csv (
127+ df = df0 ,
128+ path = path0 ,
129+ dataset = True ,
130+ database = glue_database ,
131+ table = glue_table ,
132+ index = False ,
133+ header = header ,
134+ )
135+ df1 = wr .s3 .read_csv (path = path0 )
136+ if isinstance (header , list ):
137+ df0 .columns = header
138+ assert df0 .equals (df1 )
139+
140+
141+ @pytest .mark .parametrize ("mode" , ["append" , "overwrite" ])
142+ def test_csv_dataset_header_modes (path , mode , glue_database , glue_table ):
143+ path0 = f"{ path } test_csv_dataset0.csv"
144+ dfs = [
145+ pd .DataFrame ({"id" : [1 , 2 , 3 ]}),
146+ pd .DataFrame ({"id" : [4 , 5 , 6 ]}),
147+ ]
148+ for df in dfs :
149+ wr .s3 .to_csv (
150+ df = df ,
151+ path = path0 ,
152+ dataset = True ,
153+ database = glue_database ,
154+ table = glue_table ,
155+ mode = mode ,
156+ index = False ,
157+ header = True ,
158+ )
159+ dfs_conc = pd .concat (dfs )
160+ df_res = wr .s3 .read_csv (path = path0 )
161+
162+ if mode == "append" :
163+ assert len (df_res ) == len (dfs_conc )
164+ else :
165+ assert df_res .equals (dfs [- 1 ])
166+
167+
122168def test_json (path ):
123169 df0 = pd .DataFrame ({"id" : [1 , 2 , 3 ]})
124170 path0 = f"{ path } test_json0.json"
0 commit comments