@@ -84,6 +84,8 @@ def test_assemble_common_meta(self):
8484 self .assertIn ("orig_rid" , report_df .columns )
8585 self .assertTrue (set (meta1 .columns ) < set (report_df .columns ))
8686
87+ os .remove (error_report_file )
88+
8789
8890 out_meta1 = cg .assemble_common_meta ([meta1 , meta2 ], ["rhd3" ], None , False , None )
8991 logger .debug ("out_meta1:\n {}" .format (out_meta1 ))
@@ -330,6 +332,74 @@ def test_build_mismatched_common_meta_report(self):
330332 self .assertTrue (set (meta1 .columns ) < set (r .columns ))
331333 self .assertEqual ({"r3" }, set (r .orig_rid ))
332334
335+ def test_main (self ):
336+ test_dir = "functional_tests/test_concat_gctoo/test_main"
337+
338+ g_a = pg .parse (os .path .join (test_dir , "a.gct" ))
339+ logger .debug ("g_a: {}" .format (g_a ))
340+ g_b = pg .parse (os .path .join (test_dir , "b.gct" ))
341+ logger .debug ("g_b: {}" .format (g_b ))
342+
343+ save_build_parser = cg .build_parser
344+
345+ class MockParser :
346+ def __init__ (self , args ):
347+ self .args = args
348+ def parse_args (self , unused ):
349+ return self .args
350+
351+ #unhappy path - write out error report file
352+ expected_output_file = tempfile .mkstemp ()[1 ]
353+ logger .debug ("unhappy path - write out error report file - expected_output_file: {}" .format (expected_output_file ))
354+
355+ args = save_build_parser ().parse_args (["-d" , "horiz" , "-if" , g_a .src , g_b .src , "-o" , "should_not_be_used" ,
356+ "-ot" , "gct" , "-erof" , expected_output_file ])
357+ logger .debug ("args: {}" .format (args ))
358+
359+ my_mock_parser = MockParser (args )
360+ cg .build_parser = lambda : my_mock_parser
361+
362+ with self .assertRaises (cg .MismatchCommonMetadataConcatGctooException ) as context :
363+ cg .main ()
364+
365+ self .assertTrue (os .path .exists (expected_output_file ))
366+ report_df = pd .read_csv (expected_output_file , sep = "\t " )
367+ logger .debug ("report_df:\n {}" .format (report_df ))
368+ self .assertEqual (2 , report_df .shape [0 ])
369+
370+ os .remove (expected_output_file )
371+
372+ print
373+ print
374+ print
375+
376+ #happy path
377+ args .remove_all_metadata_fields = True
378+ args .error_report_output_file = None
379+
380+ expected_output_file = tempfile .mkstemp (suffix = ".gct" )[1 ]
381+ logger .debug ("happy path - expected_output_file: {}" .format (expected_output_file ))
382+ args .out_name = expected_output_file
383+
384+ my_mock_parser = MockParser (args )
385+ cg .buid_parser = lambda : my_mock_parser
386+
387+ cg .main ()
388+ self .assertTrue (os .path .exists (expected_output_file ))
389+
390+ r = pg .parse (expected_output_file )
391+ logger .debug ("happy path -r:\n {}" .format (r ))
392+ logger .debug ("r.data_df:\n {}" .format (r .data_df ))
393+
394+ self .assertEqual ((2 ,4 ), r .data_df .shape )
395+ self .assertEqual ({"a" , "b" , "g" , "f" }, set (r .data_df .columns ))
396+ self .assertEqual ({"rid1" , "rid2" }, set (r .data_df .index ))
397+
398+ #cleanup
399+ os .remove (expected_output_file )
400+
401+ cg .build_parser = save_build_parser
402+
333403
334404if __name__ == "__main__" :
335405 setup_logger .setup (verbose = True )
0 commit comments