def _execute_mkdir(self, i): """ Creates new directory if doesn't exist; :param i: string list :return: None """ if len(i['args']) != 1: self._report_syntax_error("'mkdir' must have one argument") return # append src and dest root parts to names (must be done once) if not self._is_instr_file_parsed: i['args'][0] = self.dest_root_dir + self.PATH_DELIMITER_CHAR + i['args'][0] dirname = i['args'][0] file_props = lolly_helpers.get_filesystem_item_type(dirname) if file_props['exists']: # nothing to remove if file_props['type'] == 'dir': return if file_props['type'] == 'file': lolly_helpers.silent_remove_file(dirname) if file_props['type'] == 'symlink': lolly_helpers.silent_remove_symlink(dirname) else: # item exists and is of unknown type self._report_syntax_error("'mkdir' can't remove existing '" + dirname + "'") return lolly_helpers.silent_create_path(dirname)
def test_dir_empty(self): self.__create_test_dir_if_not_exists() base_dir = self.TMP_DIR + '/empty_dir_test' lolly_helpers.silent_create_path(base_dir, overwrite=True) assert lolly_helpers.dir_empty(base_dir) lolly_helpers.silent_write_text_file(base_dir + '/test.txt', 'test') assert not lolly_helpers.dir_empty(base_dir)
def _execute_inst(self, i): """ Instantiates single template file :param i: string list :return: None """ # append src and dest root parts to names (must be done once) if not self._is_instr_file_parsed: i['args'][0] = self.src_root_dir + self.PATH_DELIMITER_CHAR + i['args'][0] i['args'][1] = self.dest_root_dir + self.PATH_DELIMITER_CHAR + i['args'][1] src_filename = i['args'][0] dest_filename = i['args'][1] split_df = lolly_helpers.path_base_and_leaf(dest_filename) contents = lolly_helpers.silent_read_text_file(src_filename) if contents['error']: self._report_file_operation_error("can't read file '" + src_filename + "'.") return # process conditions contents = self._process_conditional_directives(contents['contents'], src_filename) contents = lolly_helpers.replace_keys(contents, self.replacement_dict) # make sure dest directory exists lolly_helpers.silent_create_path(split_df['base']) if not lolly_helpers.dir_exists(split_df['base']): self._report_file_operation_error("can't create folder: '" + split_df['base'] + "'") return lolly_helpers.silent_write_text_file(dest_filename, contents) if not lolly_helpers.file_exists(dest_filename): self._report_file_operation_error("can't write file: '" + dest_filename + "'") return
def test_get_file_list(self): self.__create_test_dir_if_not_exists() base_dir = self.TMP_DIR + '/file_list_test' lolly_helpers.silent_create_path(base_dir) file_names = ['one', 'two', 'three'] file_names = sorted(file_names) for name in file_names: lolly_helpers.silent_write_text_file(base_dir + '/' + name, name) result = lolly_helpers.get_file_list(base_dir) sorted_result = sorted(result['files']) assert not result['error'] assert sorted_result == file_names
def test_get_subdirs(self): self.__create_test_dir_if_not_exists() base_dir = self.TMP_DIR + '/subdirs_test' lolly_helpers.silent_create_path(base_dir) dir_names = ['one', 'two', 'three'] dir_names.sort() for name in dir_names: lolly_helpers.silent_create_path(base_dir + '/' + name) result = lolly_helpers.get_subdirs(base_dir) sorted_subdirs = sorted(result['subdirs']) assert not result['error'] assert sorted_subdirs == dir_names
def test_silent_move_dir(self): self.__create_test_dir_if_not_exists() dest = self.TMP_DIR + '/moved' # sad path bad_origin = self.TMP_DIR + '/non_existent' assert lolly_helpers.silent_move_dir(bad_origin, dest)['error'] # happy path origin = self.TMP_DIR + '/move_origin' lolly_helpers.silent_create_path(origin) assert not lolly_helpers.silent_move_dir(origin, dest)['error'] assert not lolly_helpers.dir_exists(origin) assert lolly_helpers.dir_exists(dest)
def test_silent_remove_dir(self): self.__create_test_dir_if_not_exists() # sad path can't be easily tested # happy path non_existent_dir = self.TMP_DIR + '/non_existent_dir' assert not lolly_helpers.silent_remove_dir(non_existent_dir)['error'] existent_dir = self.TMP_DIR + '/existent' lolly_helpers.silent_create_path(existent_dir) assert lolly_helpers.dir_exists(existent_dir) assert not lolly_helpers.silent_remove_dir(existent_dir)['error'] assert not lolly_helpers.dir_exists(existent_dir)
def test_get_dir_item_count(self): self.__create_test_dir_if_not_exists() base_dir = self.TMP_DIR + '/item_count' lolly_helpers.silent_create_path(base_dir, overwrite=True) assert lolly_helpers.get_dir_item_count(base_dir)['count'] == 0 file_names = ['one.txt', 'two.txt', 'three.txt'] file_names = sorted(file_names) for name in file_names: lolly_helpers.silent_write_text_file(base_dir + '/' + name, name) assert lolly_helpers.get_dir_item_count(base_dir)['count'] == 3 dir_names = ['one', 'two', 'three'] dir_names = sorted(dir_names) for name in dir_names: lolly_helpers.silent_create_path(base_dir + '/' + name) assert lolly_helpers.get_dir_item_count(base_dir)['count'] == 6
def test_execute_remove(self): self.__create_test_dir_if_not_exists() src_dir = self.TEST_DATA_DIR + '/lollywiz/generic_tests' dest_dir = self.TMP_DIR wiz = LollyWiz(src_dir, dest_dir) test_dir = dest_dir + '/test_dir' lolly_helpers.silent_create_path(test_dir) assert lolly_helpers.dir_exists(test_dir) wiz._instr_file_full_path = 'dummy_test_data' # override original instruction file with test data wiz._is_instr_file_read = True wiz._instr_file_data = "LOLLYWIZ_TEXTFILE_VERSION = 0.1.0\n" \ "#instructions_begin\n" \ "remove 'test_dir'\n" \ "#instructions_end\n" wiz.instantiate() assert not lolly_helpers.dir_exists(test_dir)
def test_silent_create_path(self): # sad path can't be easily tested because python replaces illegal characters in file names with legal # some_wrong_path = self.TMP_DIR + "/:::" # assert lollyhelpers.silent_create_path(some_wrong_path)['error'] # happy path path = self.TMP_DIR + '/some/test/directory' assert not lolly_helpers.silent_create_path(path)['error'] assert lolly_helpers.dir_exists(path) # create a file inside that directory filepath = path + '/testfile.txt' lolly_helpers.silent_write_text_file(filepath, 'TEST')
def test_get_filesystem_item_properties(self): self.__create_test_dir_if_not_exists() base_dir = self.TMP_DIR + '/item_props' lolly_helpers.silent_create_path(base_dir, overwrite=True) assert lolly_helpers.get_filesystem_item_type(base_dir)['type'] == 'dir' assert not lolly_helpers.get_filesystem_item_type('dummy_non_existent_path')['type']
def __create_test_dir_if_not_exists(self): if not lolly_helpers.dir_exists(self.TMP_DIR): lolly_helpers.silent_create_path(self.TMP_DIR) # print("* temp test dir was created") if not lolly_helpers.dir_exists(self.TMP_DIR): raise OSError("Test 'TestLollyhelpers' error: can't create temporary directory '" + self.TMP_DIR + "'")