@@ -163,3 +163,63 @@ def test_format_table_empty(assert_log):
163163 (r"!B!Tag\s+Name\s+Managed By\s+Version\s+Alias\s*!W!" , ()),
164164 (r".+No runtimes.+" , ()),
165165 )
166+
167+
168+ def test_format_csv (assert_log ):
169+ list_command .format_csv (None , FAKE_INSTALLS )
170+ # CSV format only contains columns that are present, so this doesn't look
171+ # as complete as for normal installs, but it's fine for the test.
172+ assert_log (
173+ "company,tag,sort-version,default" ,
174+ "Company2,1.0,1.0," ,
175+ "Company1,2.0,2.0," ,
176+ "Company1,1.0,1.0,True" ,
177+ )
178+
179+
180+ def test_format_csv_complex (assert_log ):
181+ data = [
182+ {
183+ ** d ,
184+ "alias" : [dict (name = f"n{ i } .{ j } " , target = f"t{ i } .{ j } " ) for j in range (i + 1 )]
185+ }
186+ for i , d in enumerate (FAKE_INSTALLS )
187+ ]
188+ list_command .format_csv (None , data )
189+ assert_log (
190+ "company,tag,sort-version,alias.name,alias.target.default" ,
191+ "Company2,1.0,1.0,n0.0,t0.0," ,
192+ "Company1,2.0,2.0,n1.0,t1.0," ,
193+ "Company1,2.0,2.0,n1.1,t1.1," ,
194+ "Company1,1.0,1.0,n2.0,t2.0,True" ,
195+ "Company1,1.0,1.0,n2.1,t2.1,True" ,
196+ "Company1,1.0,1.0,n2.2,t2.2,True" ,
197+ )
198+
199+
200+ def test_format_csv_empty (assert_log ):
201+ list_command .format_csv (None , [])
202+ assert_log (assert_log .end_of_log ())
203+
204+
205+ def test_csv_exclude ():
206+ result = list (list_command ._csv_filter_and_expand ([
207+ dict (a = 1 , b = 2 ),
208+ dict (a = 3 , c = 4 ),
209+ dict (a = 5 , b = 6 , c = 7 ),
210+ ], exclude = {"b" }))
211+ assert result == [dict (a = 1 ), dict (a = 3 , c = 4 ), dict (a = 5 , c = 7 )]
212+
213+
214+ def test_csv_expand ():
215+ result = list (list_command ._csv_filter_and_expand ([
216+ dict (a = [1 , 2 ], b = [3 , 4 ]),
217+ dict (a = [5 ], b = [6 ]),
218+ dict (a = 7 , b = 8 ),
219+ ], expand = {"a" }))
220+ assert result == [
221+ dict (a = 1 , b = [3 , 4 ]),
222+ dict (a = 2 , b = [3 , 4 ]),
223+ dict (a = 5 , b = [6 ]),
224+ dict (a = 7 , b = 8 ),
225+ ]
0 commit comments