Example #1
0
 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)
Example #2
0
 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)
Example #3
0
    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
Example #4
0
 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
Example #5
0
 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
Example #6
0
 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)
Example #7
0
    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)
Example #8
0
    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
Example #9
0
    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)
Example #10
0
    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')
Example #11
0
 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']
Example #12
0
 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 + "'")