def test_dump_config_equals_self_config(self): try: ###### # we need temp_cfg because self.s will be gcollected (NoneType) by # the time we get to SystemExit exception # temp_cfg will differ from self.s.config because of # 'dump_config_hierarchy'. we have to make a deepcopy because # config is a locked dict temp_s = script.BaseScript( initial_config_file='test/test.json', option_args=[ '--cfg', 'test/test_override.py,test/test_override2.py' ], ) from copy import deepcopy temp_cfg = deepcopy(temp_s.config) temp_cfg.update({'dump_config': True}) ###### self.s = script.BaseScript( initial_config_file='test/test.json', option_args=[ '--cfg', 'test/test_override.py,test/test_override2.py' ], config={'dump_config': True}) except SystemExit: target_cfg = parse_config_file('test_logs/localconfig.json') self.assertEqual( target_cfg, temp_cfg, msg="all of the items (combined) in each cfg file dumped via " "--dump-config does not equal self.config ")
def test_dump_config_hierarchy_matches_self_config(self): try: ###### # we need temp_cfg because self.s will be gcollected (NoneType) by # the time we get to SystemExit exception # temp_cfg will differ from self.s.config because of # 'dump_config_hierarchy'. we have to make a deepcopy because # config is a locked dict temp_s = script.BaseScript( initial_config_file='test/test.json', option_args=['--cfg', 'test/test_override.py,test/test_override2.py'], ) from copy import deepcopy temp_cfg = deepcopy(temp_s.config) temp_cfg.update({'dump_config_hierarchy': True}) ###### self.s = script.BaseScript( initial_config_file='test/test.json', option_args=['--cfg', 'test/test_override.py,test/test_override2.py'], config={'dump_config_hierarchy': True} ) except SystemExit: local_cfg_files = parse_config_file('test_logs/localconfigfiles.json') # finally let's just make sure that all the items added up, equals # what we started with: self.config target_cfg = {} for cfg_file in local_cfg_files: target_cfg.update(local_cfg_files[cfg_file]) self.assertEqual( target_cfg, temp_cfg, msg="all of the items (combined) in each cfg file dumped via " "--dump-config-hierarchy does not equal self.config " )
def _test_log_level(self, log_level, log_level_file_list): self.s = script.BaseScript(config={'log_type': 'multi'}, initial_config_file='test/test.json') if log_level != FATAL: self.s.log('testing', level=log_level) else: self.s._post_fatal = types.MethodType(_post_fatal, self.s) try: self.s.fatal('testing') except SystemExit: contents = None if os.path.exists('tmpfile_stdout'): fh = open('tmpfile_stdout') contents = fh.read() fh.close() self.assertEqual(contents.rstrip(), test_string, "_post_fatal failed!") del (self.s) msg = "" for level in log_level_file_list: log_path = "test_logs/test_%s.log" % level if not os.path.exists(log_path): msg += "%s doesn't exist!\n" % log_path else: filesize = os.path.getsize(log_path) if not filesize > 0: msg += "%s is size 0!\n" % log_path self.assertEqual(msg, "", msg=msg)
def test_query_exe(self): self.s = script.BaseScript( initial_config_file='test/test.json', config={'exes': {'foo': 'bar'}}, ) path = self.s.query_exe('foo') self.assertEqual(path, 'bar')
def test_existing_rmtree(self): self._create_temp_file() self.s = script.BaseScript(initial_config_file='test/test.json') self.s.mkdir_p('test_dir/foo/bar/baz') self.s.rmtree('test_dir') self.assertFalse(os.path.exists('test_dir'), msg="rmtree unsuccessful")
def test_run_command(self): self._create_temp_file() self.s = script.BaseScript(initial_config_file='test/test.json') temp_file_name = os.path.basename(self.temp_file) self.assertEqual(self.s.run_command("cat %s" % temp_file_name, cwd="test_dir"), 0, msg="run_command('cat file') did not exit 0")
def test_chmod(self): self._create_temp_file() self.s = script.BaseScript(initial_config_file='test/test.json') self.s.chmod(self.temp_file, 0o100700) self.assertEqual(os.stat(self.temp_file)[0], 33216, msg="chmod unsuccessful")
def test_move1(self): self._create_temp_file() self.s = script.BaseScript(initial_config_file='test/test.json') temp_file2 = '%s2' % self.temp_file self.s.move(self.temp_file, temp_file2) self.assertFalse(os.path.exists(self.temp_file), msg="%s still exists after move()" % self.temp_file)
def test_move2(self): self._create_temp_file() self.s = script.BaseScript(initial_config_file='test/test.json') temp_file2 = '%s2' % self.temp_file self.s.move(self.temp_file, temp_file2) self.assertTrue(os.path.exists(temp_file2), msg="%s doesn't exist after move()" % temp_file2)
def test_log(self): self.s = get_debug_script_obj() self.s.log_obj = None self._test_log_helper(self.s) del (self.s) self.s = script.BaseScript(initial_config_file='test/test.json') self._test_log_helper(self.s)
def test_chdir(self): self.s = script.BaseScript(initial_config_file='test/test.json') cwd = os.getcwd() self.s.chdir('test_logs') self.assertEqual(os.path.join(cwd, "test_logs"), os.getcwd(), msg="chdir error") self.s.chdir(cwd)
def get_debug_script_obj(): s = script.BaseScript(config={ 'log_type': 'multi', 'log_level': DEBUG }, initial_config_file='test/test.json') return s
def test_chmod_rmtree(self): self._create_temp_file() win32file.SetFileAttributesW(self.temp_file, win32file.FILE_ATTRIBUTE_READONLY) self.s = script.BaseScript(initial_config_file='test/test.json') self.s.rmtree('test_dir') self.assertFalse(os.path.exists('test_dir'), msg="rmtree unsuccessful")
def test_env_normal(self): self.s = script.BaseScript(initial_config_file='test/test.json') script_env = self.s.query_env() self.assertEqual(script_env, os.environ, msg="query_env() != env\n%s\n%s" % (script_env, os.environ))
def test_add_summary_warning(self): self.s = script.BaseScript(config={'log_type': 'multi'}, initial_config_file='test/test.json') warning_logsize = os.path.getsize("test_logs/test_warning.log") self.s.add_summary('two', level=WARNING) warning_logsize2 = os.path.getsize("test_logs/test_warning.log") self.assertTrue(warning_logsize < warning_logsize2, msg="add_summary(level=%s) not logged in warning log" % WARNING)
def test_add_summary_info(self): self.s = script.BaseScript(config={"log_type": "multi"}, initial_config_file="test/test.json") info_logsize = os.path.getsize("test_logs/test_info.log") self.s.add_summary("one") info_logsize2 = os.path.getsize("test_logs/test_info.log") self.assertTrue(info_logsize < info_logsize2, msg="add_summary() info not logged")
def test_add_summary_info(self): self.s = script.BaseScript(config={'log_type': 'multi'}, initial_config_file='test/test.json') info_logsize = os.path.getsize("test_logs/test_info.log") self.s.add_summary('one') info_logsize2 = os.path.getsize("test_logs/test_info.log") self.assertTrue(info_logsize < info_logsize2, msg="add_summary() info not logged")
def test_query_exe(self): self.s = script.BaseScript( initial_config_file="test/test.json", config={"exes": { "foo": "bar" }}, ) path = self.s.query_exe("foo") self.assertEqual(path, "bar")
def test_copyfile(self): self._create_temp_file() self.s = script.BaseScript(initial_config_file='test/test.json') temp_file2 = '%s2' % self.temp_file self.s.copyfile(self.temp_file, temp_file2) self.assertEqual(os.path.getsize(self.temp_file), os.path.getsize(temp_file2), msg="%s and %s are different sizes after copyfile()" % (self.temp_file, temp_file2))
def get_debug_script_obj(): s = script.BaseScript( config={ "log_type": "multi", "log_level": DEBUG }, initial_config_file="test/test.json", ) return s
def test_get_output_from_command(self): self._create_temp_file() self.s = script.BaseScript(initial_config_file='test/test.json') contents = self.s.get_output_from_command( ["bash", "-c", "cat %s" % self.temp_file]) self.assertEqual( test_string, contents, msg="get_output_from_command('cat file') differs from fh.write")
def test_query_exe_string_replacement(self): self.s = script.BaseScript( initial_config_file='test/test.json', config={ 'base_work_dir': 'foo', 'work_dir': 'bar', 'exes': {'foo': os.path.join('%(abs_work_dir)s', 'baz')}, }, ) path = self.s.query_exe('foo') self.assertEqual(path, os.path.join('foo', 'bar', 'baz'))
def test_query_exe_string_replacement(self): self.s = script.BaseScript( initial_config_file="test/test.json", config={ "base_work_dir": "foo", "work_dir": "bar", "exes": { "foo": os.path.join("%(abs_work_dir)s", "baz") }, }, ) path = self.s.query_exe("foo") self.assertEqual(path, os.path.join("foo", "bar", "baz"))
def test_long_dir_rmtree(self): self.s = script.BaseScript(initial_config_file='test/test.json') # create a very long path that the command-prompt cannot delete # by using unicode format (max path length 32000) path = u'\\\\?\\%s\\test_dir' % os.getcwd() win32file.CreateDirectoryExW(u'.', path) for x in range(0, 20): print("path=%s" % path) path = path + u'\\%sxxxxxxxxxxxxxxxxxxxx' % x win32file.CreateDirectoryExW(u'.', path) self.s.rmtree('test_dir') self.assertFalse(os.path.exists('test_dir'), msg="rmtree unsuccessful")
def test_dump_config_hierarchy_valid_files_len(self): try: self.s = script.BaseScript( initial_config_file='test/test.json', option_args=['--cfg', 'test/test_override.py,test/test_override2.py'], config={'dump_config_hierarchy': True} ) except SystemExit: local_cfg_files = parse_config_file('test_logs/localconfigfiles.json') # first let's see if the correct number of config files were # realized self.assertEqual( len(local_cfg_files), 4, msg="--dump-config-hierarchy dumped wrong number of config files" )
def test_summary(self): self.s = script.BaseScript(config={'log_type': 'multi'}, initial_config_file='test/test.json') self.s.add_summary('one') self.s.add_summary('two', level=WARNING) info_logsize = os.path.getsize("test_logs/test_info.log") warning_logsize = os.path.getsize("test_logs/test_warning.log") self.s.summary() info_logsize2 = os.path.getsize("test_logs/test_info.log") warning_logsize2 = os.path.getsize("test_logs/test_warning.log") msg = "" if info_logsize >= info_logsize2: msg += "summary() didn't log to info!\n" if warning_logsize >= warning_logsize2: msg += "summary() didn't log to warning!\n" self.assertEqual(msg, "", msg=msg)
def test_dump_config_hierarchy_keys_unique_and_valid(self): try: self.s = script.BaseScript( initial_config_file='test/test.json', option_args=['--cfg', 'test/test_override.py,test/test_override2.py'], config={'dump_config_hierarchy': True} ) except SystemExit: local_cfg_files = parse_config_file('test_logs/localconfigfiles.json') # now let's see if only unique items were added from each config t_override = local_cfg_files.get('test/test_override.py', {}) self.assertTrue( t_override.get('keep_string') == "don't change me" and len(t_override.keys()) == 1, msg="--dump-config-hierarchy dumped wrong keys/value for " "`test/test_override.py`. There should only be one " "item and it should be unique to all the other " "items in test_log/localconfigfiles.json." )
def setUp(self): self.ATTEMPT_N = 1 self.s = script.BaseScript(initial_config_file='test/test.json')
def test_info_logsize(self): self.s = script.BaseScript(config={'log_type': 'multi'}, initial_config_file='test/test.json') info_logsize = os.path.getsize("test_logs/test_info.log") self.assertTrue(info_logsize > 0, msg="initial info logfile missing/size 0")
def test_read_from_nonexistent_file(self): self.s = script.BaseScript(initial_config_file='test/test.json') contents = self.s.read_from_file("nonexistent_file!!!") self.assertEqual(contents, None)