def testSubmitMultIni(self):
     # Create and submit more than one ini
     temp_file_list = [
         'ethylrad.com', 'ircr.tpl', 'ircf.tpl', 'opt.tpl', 'ethylrad.chk'
     ]
     for fname in temp_file_list:
         with open(fname, 'w') as f:
             f.write("# for test only\n")
     test_input = ['ethylrad', "-c", SETUP_IRCS_INI, "-s", "-n"]
     try:
         main(test_input)
         self.assertFalse(
             diff_lines(SETUP_IRCR_INI_OUT, GOOD_SETUP_IRCR_INI_OUT))
         self.assertFalse(
             diff_lines(SETUP_IRCR_SLM_OUT, GOOD_SETUP_IRCR_SLM_OUT))
         self.assertFalse(
             diff_lines(SETUP_IRCF_INI_OUT, GOOD_SETUP_IRCF_INI_OUT))
         self.assertFalse(
             diff_lines(SETUP_IRCF_SLM_OUT, GOOD_SETUP_IRCF_SLM_OUT))
     finally:
         for fname in temp_file_list + [
                 SETUP_IRCR_INI_OUT, SETUP_IRCR_SLM_OUT, SETUP_IRCF_INI_OUT,
                 SETUP_IRCF_SLM_OUT
         ]:
             silent_remove(fname, disable=DISABLE_REMOVE)
         pass
 def testMissingListIni(self):
     test_input = [ETHYLRAD, "-c", MISSING_TPL_INI]
     # main(test_input)
     if logger.isEnabledFor(logging.DEBUG):
         main(test_input)
     with capture_stderr(main, test_input) as output:
         self.assertTrue("not find the submit template" in output)
 def testHelp(self):
     test_input = ['-h']
     if logger.isEnabledFor(logging.DEBUG):
         main(test_input)
     with capture_stderr(main, test_input) as output:
         self.assertFalse(output)
     with capture_stdout(main, test_input) as output:
         self.assertTrue("optional arguments" in output)
 def testOneNewJobIni(self):
     test_input = [ETHYLRAD, "-c", ONE_NEW_JOB_INI, "-t"]
     try:
         main(test_input)
         self.assertFalse(diff_lines(OPT_SH_OUT, GOOD_OPT_SH_OUT))
     finally:
         silent_remove(OPT_SH_OUT, disable=DISABLE_REMOVE)
         silent_remove(OPT_LOG_OUT, disable=DISABLE_REMOVE)
         pass
 def testNeedsExtraKeyIni(self):
     test_input = [ETHYLRAD, "-c", HAS_EXTRA_KEY_INI, "-t"]
     try:
         main(test_input)
         self.assertFalse(diff_lines(OPT_SH_OUT, GOOD_OPT_EXTRA_KEY_SH_OUT))
     finally:
         for fname in [DEF_SH_OUT, DEF_LOG_OUT, OPT_SH_OUT, OPT_LOG_OUT]:
             silent_remove(fname, disable=DISABLE_REMOVE)
         pass
 def testSetupSubmit(self):
     test_input = [ETHYLRAD, "-s", "-c", SETUP_SUBMIT_INI, "-n"]
     try:
         main(test_input)
         self.assertFalse(diff_lines(SPAWN0_INI, GOOD_SETUP_INI_OUT))
         self.assertFalse(diff_lines(SPAWN0_SLURM, GOOD_SETUP_SLURM_OUT))
     finally:
         for fname in [SPAWN0_INI, SPAWN0_SLURM]:
             silent_remove(fname, disable=DISABLE_REMOVE)
         pass
 def testSetupOneJobIni(self):
     test_input = [ETHYLRAD, "-c", ONE_JOB_INI, "-t", "-s"]
     try:
         main(test_input)
         self.assertFalse(diff_lines(ONE_INI_OUT, GOOD_ONE_INI_OUT))
         self.assertFalse(diff_lines(ONE_SLM_OUT, GOOD_ONE_SLM_OUT))
     finally:
         silent_remove(ONE_INI_OUT, disable=DISABLE_REMOVE)
         silent_remove(ONE_SLM_OUT, disable=DISABLE_REMOVE)
         pass
 def testDefIni(self):
     test_input = [ETHYLRAD, "-c", DEF_INI, "-t"]
     try:
         main(test_input)
         self.assertFalse(diff_lines(DEF_SH_OUT, GOOD_SH_OUT))
         self.assertFalse(diff_lines(OPT_SH_OUT, GOOD_OPT_SH_OUT))
         self.assertFalse(
             diff_lines(OPT_STABLE_SH_OUT, GOOD_OPT_STABLE_SH_OUT))
     finally:
         for file in [
                 DEF_SH_OUT, DEF_LOG_OUT, OPT_SH_OUT, OPT_STABLE_SH_OUT
         ]:
             silent_remove(file, disable=DISABLE_REMOVE)
         pass
 def testNoChkChk(self):
     # checks not throwing an error when the chk file is not in the current directory.
     # also checks adding config lines to the created ini if they are needed but not part of the template
     test_input = [
         'tests/test_data/run_gauss/ethylrad_restart', "-s", "-c",
         SUBMIT_NO_CHK_CHECK_INI, "-n", "-t"
     ]
     try:
         main(test_input)
         self.assertFalse(
             diff_lines(NO_CHK_CHECK_INI, GOOD_NO_CHK_CHECK_INI))
         self.assertFalse(
             diff_lines(NO_CHK_CHECK_SLM, GOOD_NO_CHK_CHECK_SLM))
     finally:
         for fname in [NO_CHK_CHECK_INI, NO_CHK_CHECK_SLM]:
             silent_remove(fname, disable=DISABLE_REMOVE)
         pass
 def testAttemptRunMultIni(self):
     # Create and submit more than one ini
     temp_file_list = ['ethylrad.com', 'ircr.tpl', 'ircf.tpl', 'opt.tpl']
     for fname in temp_file_list:
         with open(fname, 'w') as f:
             f.write("# for test only\n")
     test_input = ['ethylrad', "-c", SETUP_IRCS_INI, "-o", 'ethyl']
     if logger.isEnabledFor(logging.DEBUG):
         main(test_input)
     try:
         # main(test_input)
         with capture_stderr(main, test_input) as output:
             self.assertTrue("only supported" in output)
     finally:
         for fname in temp_file_list:
             silent_remove(fname, disable=DISABLE_REMOVE)
         pass
 def testSpawn(self):
     test_input = [ETHYLRAD, "-c", SPAWN_INI, "-t", "-n"]
     try:
         main(test_input)
         self.assertFalse(
             diff_lines(OPT_STABLE_SH_OUT, GOOD_OPT_STABLE_SH_OUT))
         self.assertFalse(diff_lines(SPAWN1_INI, GOOD_SPAWN1_INI))
         self.assertFalse(diff_lines(SPAWN2_INI, GOOD_SPAWN2_INI))
         self.assertFalse(diff_lines(SPAWN1_SLURM, GOOD_SPAWN1_SLURM))
         self.assertFalse(diff_lines(SPAWN2_SLURM, GOOD_SPAWN2_SLURM))
     finally:
         for fname in [
                 DEF_SH_OUT, OPT_SH_OUT, OPT_STABLE_SH_OUT, DEF_LOG_OUT,
                 OPT_LOG_OUT, OPT_STABLE_LOG_OUT, SPAWN1_INI, SPAWN2_INI,
                 SPAWN1_SLURM, SPAWN2_SLURM
         ]:
             silent_remove(fname, disable=DISABLE_REMOVE)
         pass
    def testSubmitDefDirIni(self):
        # Checking alternate input from above
        temp_file_list = ['ethylrad.com', 'f.tpl', 'ts.tpl', 'ethyl.chk']
        for fname in temp_file_list:
            with open(fname, 'w') as f:
                f.write("# for test only\n")

        test_input = [
            'ethylrad', "-c", SETUP_F_TS_INI_IN, "-s", "-o", 'ethyl.chk', '-n',
            '-t'
        ]
        try:
            main(test_input)
            self.assertFalse(diff_lines(SETUP_F_TS_INI_OUT, GOOD_F_TS_INI_OUT))
            self.assertFalse(diff_lines(SETUP_F_TS_SLM_OUT, GOOD_F_TS_SLM_OUT))
        finally:
            for fname in temp_file_list + [
                    SETUP_F_TS_INI_OUT, SETUP_F_TS_SLM_OUT
            ]:
                silent_remove(fname, disable=DISABLE_REMOVE)
            pass
 def testSetupSubmitList(self):
     temp_file_list = ['ethylrad.com', 'water.com']
     for fname in temp_file_list:
         with open(fname, 'w') as f:
             f.write("# for test only\n\n")
     test_input = [LIST, "-l", "-c", SETUP_SUBMIT_INI, "-n"]
     try:
         main(test_input)
         self.assertFalse(diff_lines(SPAWN0_INI, GOOD_SPAWN0_INI))
         self.assertFalse(diff_lines(SPAWN0_SLURM, GOOD_SPAWN0_SLURM))
         self.assertFalse(
             diff_lines(SETUP_WATER_INI_OUT, GOOD_WATER_INI_OUT))
         self.assertFalse(
             diff_lines(SETUP_WATER_SLURM_OUT, GOOD_WATER_SLURM_OUT))
     finally:
         for fname in temp_file_list + [
                 SPAWN0_INI, SPAWN0_SLURM, SETUP_WATER_INI_OUT,
                 SETUP_WATER_SLURM_OUT
         ]:
             silent_remove(fname, disable=DISABLE_REMOVE)
         pass
 def testSubmitWithChkDefDirIni(self):
     # since this assumes a f.tpl and ts.tpl file in the main directory, create them, and delete at the end
     temp_file_list = ['f.tpl', 'ts.tpl']
     for fname in temp_file_list:
         with open(fname, 'w') as f:
             f.write("# for test only\n")
     test_input = [
         'tests/test_data/run_gauss/ethylrad.com', "-c", SETUP_F_TS_INI_IN,
         "-s", "-o", 'tests/test_data/run_gauss/ethyl.chk', "-n"
     ]
     try:
         main(test_input)
         self.assertFalse(
             diff_lines(SETUP_F_TS_INI_OUT, GOOD_SETUP_F_TS_INI_OUT))
         self.assertFalse(
             diff_lines(SETUP_F_TS_SLM_OUT, GOOD_SETUP_F_TS_SLM_OUT))
     finally:
         for fname in temp_file_list + [
                 SETUP_F_TS_INI_OUT, SETUP_F_TS_SLM_OUT
         ]:
             silent_remove(fname, disable=DISABLE_REMOVE)
         pass
    def testSpawnAllNew(self):
        temp_file_list = ['ethylrad_opt.chk']
        for fname in temp_file_list:
            with open(fname, 'w') as f:
                f.write("# for test only\n\n")

        test_input = [ETHYLRAD, "-c", SPAWN_ALL_NEW_INI, "-t", "-n"]
        try:
            main(test_input)
            self.assertFalse(diff_lines(SPAWN0_INI, GOOD_SPAWN0_NEW_INI))
            self.assertFalse(diff_lines(SPAWN1_INI, GOOD_SPAWN1_INI))
            self.assertFalse(diff_lines(SPAWN2_INI, GOOD_SPAWN2_INI))
            self.assertFalse(diff_lines(SPAWN0_SLURM, GOOD_SPAWN0_NEW_SLURM))
            self.assertFalse(diff_lines(SPAWN1_SLURM, GOOD_SPAWN1_NEW_SLURM))
            self.assertFalse(diff_lines(SPAWN2_SLURM, GOOD_SPAWN2_NEW_SLURM))
        finally:
            for fname in temp_file_list + [
                    DEF_SH_OUT, OPT_SH_OUT, DEF_LOG_OUT, OPT_LOG_OUT,
                    SPAWN0_INI, SPAWN1_INI, SPAWN2_INI, SPAWN0_SLURM,
                    SPAWN1_SLURM, SPAWN2_SLURM
            ]:
                silent_remove(fname, disable=DISABLE_REMOVE)
            pass
 def testMissingComFileIni(self):
     test_input = ["ghost", "-c", DEF_INI]
     if logger.isEnabledFor(logging.DEBUG):
         main(test_input)
     with capture_stderr(main, test_input) as output:
         self.assertTrue("Problems reading file" in output)