Coverage for tests/test_cmd_line_embedder.py: 22%

45 statements  

« prev     ^ index     » next       coverage.py v7.3.0, created at 2023-09-02 09:51 +0000

1"""Unit tests for cmd_line_embedder.py 

2""" 

3import unittest 

4 

5from lsst.ctrl.bps import GenericWorkflowFile 

6from lsst.ctrl.bps.panda.cmd_line_embedder import CommandLineEmbedder 

7 

8 

9class TestCmdLineEmbedder(unittest.TestCase): 

10 """Test CmdLineEmbedder class""" 

11 

12 def setUp(self): 

13 self.cmd_line_0 = "<ENV:CTRL_MPEXEC_DIR>/mycmd -b {key1} -c {key2} -d {key3} {key4}" 

14 self.cmd_line_1 = "<ENV:CTRL_MPEXEC_DIR>/mycmd -b <FILE:file3> -c <FILE:file4> -d {key3} {key4}" 

15 self.cmd_line_2 = ( 

16 "<ENV:CTRL_MPEXEC_DIR>/mycmd -b <FILE:sfile1> -c <FILE:file3> -d <FILE:sfile2> <FILE:file4>" 

17 ) 

18 self.sfile1 = GenericWorkflowFile("sfile1", "/path/to/sfile1.yaml", False, True, True) 

19 self.sfile2 = GenericWorkflowFile("sfile2", "/path/to/sfile2.yaml", False, True, True) 

20 self.file3 = GenericWorkflowFile("file3", "/path/to/file3.yaml", True, False, False) 

21 self.file4 = GenericWorkflowFile("file4", "/path/to/file4.yaml", True, False, False) 

22 

23 self.ans_cmd_line_0 = "<ENV:CTRL_MPEXEC_DIR>/mycmd -b {key1} -c {key2} -d {key3} {key4}" 

24 self.ans_cmd_line_1 = "<ENV:CTRL_MPEXEC_DIR>/mycmd -b <FILE:file3> -c <FILE:file4> -d {key3} {key4}" 

25 self.ans_cmd_line_2 = ( 

26 "<ENV:CTRL_MPEXEC_DIR>/mycmd -b /path/to/sfile1.yaml -c <FILE:file3> " 

27 "-d /path/to/sfile2.yaml <FILE:file4>" 

28 ) 

29 

30 def testReplaceStaticFilesNoFiles(self): 

31 orig_cmd_line = self.cmd_line_0 

32 orig_cmd_line_copy = orig_cmd_line 

33 

34 cmd_line_embedder = CommandLineEmbedder({}) 

35 new_cmd_line = cmd_line_embedder.replace_static_files(orig_cmd_line, []) 

36 

37 # Ensure no side effect 

38 self.assertEqual(orig_cmd_line, orig_cmd_line_copy) 

39 self.assertEqual(new_cmd_line, orig_cmd_line_copy) 

40 

41 def testReplaceStaticFilesMissingFiles(self): 

42 orig_cmd_line = self.cmd_line_1 

43 orig_cmd_line_copy = orig_cmd_line 

44 

45 cmd_line_embedder = CommandLineEmbedder({}) 

46 with self.assertRaises(RuntimeError): 

47 _ = cmd_line_embedder.replace_static_files(orig_cmd_line, [self.sfile1, self.file3]) 

48 

49 self.assertEqual(orig_cmd_line, orig_cmd_line_copy) 

50 

51 def testReplaceStaticFilesNone(self): 

52 orig_cmd_line = self.cmd_line_1 

53 orig_cmd_line_copy = orig_cmd_line 

54 

55 cmd_line_embedder = CommandLineEmbedder({}) 

56 new_cmd_line = cmd_line_embedder.replace_static_files( 

57 orig_cmd_line, [self.sfile1, self.sfile2, self.file3, self.file4] 

58 ) 

59 

60 self.assertEqual(orig_cmd_line, orig_cmd_line_copy) 

61 self.assertEqual(new_cmd_line, self.ans_cmd_line_1) 

62 

63 def testReplaceStaticFilesSome(self): 

64 orig_cmd_line = self.cmd_line_2 

65 orig_cmd_line_copy = orig_cmd_line 

66 

67 cmd_line_embedder = CommandLineEmbedder({}) 

68 new_cmd_line = cmd_line_embedder.replace_static_files( 

69 orig_cmd_line, [self.sfile1, self.sfile2, self.file3, self.file4] 

70 ) 

71 

72 self.assertEqual(orig_cmd_line, orig_cmd_line_copy) 

73 self.assertEqual(new_cmd_line, self.ans_cmd_line_2) 

74 

75 

76if __name__ == "__main__": 76 ↛ 77line 76 didn't jump to line 77, because the condition on line 76 was never true

77 unittest.main()