def test_validate_failure_when_excluded_file(self):
     create_files(['abc', 'def'])
     config = _create_parameter_model(recursive=False,
                                      file_dir=test_utils.temp_folder,
                                      excluded_files=['abc'])
     self.assertRegex(config.validate_value('abc'),
                      '.+ but should be in \[\'def\'\]')
 def test_allowed_values_when_working_dir(self):
     working_dir = os.path.join('work', 'dir')
     file_dir = 'inner'
     create_files(['abc', 'def'], os.path.join(working_dir, file_dir))
     working_dir_path = os.path.join(test_utils.temp_folder, working_dir)
     config = _create_parameter_model(recursive=False, file_dir=file_dir, working_dir=working_dir_path)
     self.assertEqual(['abc', 'def'], config.values)
 def test_validate_success_when_working_dir(self):
     working_dir = os.path.join('work', 'dir')
     file_dir = 'inner'
     create_files(['abc', 'def'], os.path.join(working_dir, file_dir))
     working_dir_path = os.path.join(test_utils.temp_folder, 'work', 'dir')
     config = _create_parameter_model(recursive=False, file_dir=file_dir, working_dir=working_dir_path)
     self.assertIsNone(config.validate_value('def'))
Ejemplo n.º 4
0
    def test_multiple_files(self):
        test_utils.create_files(['My.txt', 'file.dat', 'test.sh', 'file2.txt'])
        test_utils.create_dir('documents')
        test_utils.create_files(['another.txt'], 'documents')

        provider = FilesProvider(test_utils.temp_folder, file_extensions=['txt'])
        self.assertEqual(['file2.txt', 'My.txt'], provider.get_values({}))
    def test_validate_fail_on_extension_when_file_type_dir_and_extensions(self):
        create_files(['.passwords'], 'private')
        create_files(['admin.log', 'file.txt', 'print.pdf'])
        config = _create_parameter_model(recursive=True, file_type=FILE_TYPE_DIR, extensions=['txt'])

        error = config.validate_value(['print.pdf'])
        self.assertRegex(error, '.+ is not allowed')
    def test_validate_success_when_file_type_dir(self):
        create_files(['.passwords'], 'private')
        create_files(['tasks.list'])
        config = _create_parameter_model(recursive=True,
                                         file_type=FILE_TYPE_DIR)

        self.assertIsNone(config.validate_value(['private']))
Ejemplo n.º 7
0
    def test_file_type_dir(self):
        files = ['file1', 'file2']
        test_utils.create_files(files)
        test_utils.create_dir('my_dir')

        actual_files = model_helper.list_files(test_utils.temp_folder, file_type=FILE_TYPE_DIR)
        self.assertEqual(['my_dir'], actual_files)
    def test_validate_fail_when_file_type_dir(self):
        create_files(['.passwords'], 'private')
        create_files(['tasks.list'])
        config = _create_parameter_model(recursive=True, file_type=FILE_TYPE_DIR)

        error = config.validate_value(['tasks.list'])
        self.assertRegex(error, '.+ is not allowed')
    def test_validate_fail_when_file_type_file(self):
        create_files(['abc.txt', 'admin.log'], 'home')
        create_files(['.passwords'], os.path.join('home', 'private'))
        config = _create_parameter_model(recursive=True, file_type=FILE_TYPE_FILE)

        error = config.validate_value(['home', 'private'])
        self.assertRegex(error, '.+ is not allowed')
    def test_list_files_when_extension(self):
        create_files(['xyz', 'nop'], os.path.join('my_dir'))
        create_files(['abc.txt', 'def.pdf'])
        config = _create_parameter_model(recursive=True, extensions=['pdf'])

        files = config.list_files([])
        self.assertCountEqual([_file('def.pdf'), _dir('my_dir')], files)
    def test_validate_fail_when_relative_reference(self):
        create_files(['abc.txt'])
        config = _create_parameter_model(recursive=True)

        error = config.validate_value(
            ['..', test_utils.temp_folder, 'abc.txt'])
        self.assertEqual('Relative path references are not allowed', error)
    def test_validate_success_when_file_type_file(self):
        create_files(['abc.txt', 'admin.log'], 'home')
        create_files(['.passwords'], os.path.join('home', 'private'))
        config = _create_parameter_model(recursive=True,
                                         file_type=FILE_TYPE_FILE)

        self.assertIsNone(config.validate_value(['home', 'abc.txt']))
    def test_validate_fail_on_list_excluded_subfolder(self):
        subfolder = os.path.join('work', 'another')
        create_files(['xyz', 'abc'], subfolder)
        config = _create_parameter_model(recursive=True,
                                         excluded_files=['work'])

        self.assertRaisesRegex(InvalidValueException, '.+ is excluded',
                               config.list_files, [subfolder])
    def test_list_files_when_file_type_dir(self):
        create_files(['abc', 'def'], os.path.join('my_dir'))
        create_files(['xyz', 'nop'])
        config = _create_parameter_model(recursive=True,
                                         file_type=FILE_TYPE_DIR)

        files = config.list_files([])
        self.assertCountEqual([_dir('my_dir')], files)
    def test_list_files_when_working_dir_and_file_dir_dotdot(self):
        working_dir = os.path.join('work', 'dir')
        create_files(['xyz', 'abc'], os.path.join('work', 'another'))
        working_dir_path = os.path.join(test_utils.temp_folder, working_dir)
        config = _create_parameter_model(recursive=True, file_dir='..', working_dir=working_dir_path)

        files = config.list_files(['another'])
        self.assertCountEqual([_file('xyz'), _file('abc')], files)
    def test_validate_fail_when_file_type_file(self):
        create_files(['abc.txt', 'admin.log'], 'home')
        create_files(['.passwords'], os.path.join('home', 'private'))
        config = _create_parameter_model(recursive=True,
                                         file_type=FILE_TYPE_FILE)

        error = config.validate_value(['home', 'private'])
        self.assertRegex(error, '.+ is not allowed')
    def test_validate_fail_on_excluded_file(self):
        subfolder = os.path.join('work', 'another')
        create_files(['xyz', 'abc'], subfolder)
        config = _create_parameter_model(
            recursive=True, excluded_files=[os.path.join(subfolder, 'abc')])

        error = config.validate_value(['work', 'another', 'abc'])
        self.assertRegex(error, '.+ is excluded')
    def test_validate_fail_when_file_type_dir(self):
        create_files(['.passwords'], 'private')
        create_files(['tasks.list'])
        config = _create_parameter_model(recursive=True,
                                         file_type=FILE_TYPE_DIR)

        error = config.validate_value(['tasks.list'])
        self.assertRegex(error, '.+ is not allowed')
    def test_validate_success_when_file_type_dir_and_extensions(self):
        create_files(['.passwords'], 'private')
        create_files(['admin.log', 'file.txt', 'print.pdf'])
        config = _create_parameter_model(recursive=True,
                                         file_type=FILE_TYPE_DIR,
                                         extensions=['txt'])

        self.assertIsNone(config.validate_value(['file.txt']))
Ejemplo n.º 20
0
    def test_file_type_dir(self):
        files = ['file1', 'file2']
        test_utils.create_files(files)
        test_utils.create_dir('my_dir')

        actual_files = model_helper.list_files(test_utils.temp_folder,
                                               file_type=FILE_TYPE_DIR)
        self.assertEqual(['my_dir'], actual_files)
 def test_allowed_values_when_excluded_files(self):
     dirname = 'inner'
     create_files(['abc', 'def'], dirname)
     config = _create_parameter_model(recursive=False,
                                      file_dir=os.path.join(
                                          test_utils.temp_folder, dirname),
                                      excluded_files=['abc'])
     self.assertEqual(['def'], config.values)
    def test_list_files_when_excluded_recursive_glob(self):
        subfolder = os.path.join('work', 'another')
        create_files(['A.pdf', 'B.pdf', 'C.exe'], subfolder)
        config = _create_parameter_model(
            recursive=True, excluded_files=[os.path.join('**', '*.exe')])

        files = config.list_files(['work', 'another'])
        self.assertCountEqual([_file('A.pdf'), _file('B.pdf')], files)
    def test_list_files_when_excluded_plain_file(self):
        subfolder = os.path.join('work', 'another')
        create_files(['xyz', 'abc'], subfolder)
        config = _create_parameter_model(
            recursive=True, excluded_files=[os.path.join(subfolder, 'abc')])

        files = config.list_files(['work', 'another'])
        self.assertCountEqual([_file('xyz')], files)
Ejemplo n.º 24
0
    def test_glob_relative_path(self):
        created_files = ['file1', 'file2', 'file3']
        test_utils.create_files(created_files)

        matcher = self.create_matcher(['*1'])
        files = model_helper.list_files(test_utils.temp_folder,
                                        excluded_files_matcher=matcher)
        self.assertEqual(['file2', 'file3'], files)
 def test_allowed_values_when_working_dir(self):
     working_dir = os.path.join('work', 'dir')
     file_dir = 'inner'
     create_files(['abc', 'def'], os.path.join(working_dir, file_dir))
     working_dir_path = os.path.join(test_utils.temp_folder, working_dir)
     config = _create_parameter_model(recursive=False,
                                      file_dir=file_dir,
                                      working_dir=working_dir_path)
     self.assertEqual(['abc', 'def'], config.values)
    def test_validate_fail_on_dir_when_file_type_dir_and_extensions(self):
        create_files(['.passwords'], 'private')
        create_files(['admin.log', 'file.txt', 'print.pdf'])
        config = _create_parameter_model(recursive=True,
                                         file_type=FILE_TYPE_DIR,
                                         extensions=['txt'])

        error = config.validate_value(['private'])
        self.assertRegex(error, '.+ is not allowed')
    def test_list_files_when_file_type_dir(self):
        create_files(['abc', 'def'], os.path.join('my_dir'))
        create_files(['xyz', 'nop'])
        config = _create_parameter_model(recursive=True, file_type=FILE_TYPE_DIR)

        files = config.list_files([])
        self.assertCountEqual([
            _dir('my_dir')],
            files)
 def test_validate_failure_when_working_dir(self):
     file_dir = 'inner'
     create_files(['abc', 'def'], file_dir)
     working_dir_path = os.path.join(test_utils.temp_folder, 'work', 'dir')
     config = _create_parameter_model(recursive=False,
                                      file_dir=file_dir,
                                      working_dir=working_dir_path)
     self.assertRegex(config.validate_value('def'),
                      '.+ but should be in \[\]')
Ejemplo n.º 29
0
    def test_plain_relative_path_in_subfolder(self):
        created_files = ['file1', 'file2', 'file3']
        test_utils.create_files(created_files, 'sub')

        subfolder_path = os.path.join(test_utils.temp_folder, 'sub')
        matcher = self.create_matcher([(os.path.join('sub', 'file2'))])
        files = model_helper.list_files(subfolder_path,
                                        excluded_files_matcher=matcher)
        self.assertEqual(['file1', 'file3'], files)
 def test_validate_success_when_working_dir(self):
     working_dir = os.path.join('work', 'dir')
     file_dir = 'inner'
     create_files(['abc', 'def'], os.path.join(working_dir, file_dir))
     working_dir_path = os.path.join(test_utils.temp_folder, 'work', 'dir')
     config = _create_parameter_model(recursive=False,
                                      file_dir=file_dir,
                                      working_dir=working_dir_path)
     self.assertIsNone(config.validate_value('def'))
Ejemplo n.º 31
0
    def test_recursive_glob_relative_different_work_dir(self):
        created_files = ['file1', 'file2', 'file3']
        test_utils.create_files(created_files, 'sub')

        matcher = FileMatcher(['**'], test_utils.temp_folder + '2')
        subfolder_path = os.path.join(test_utils.temp_folder, 'sub')
        files = model_helper.list_files(subfolder_path,
                                        excluded_files_matcher=matcher)
        self.assertEqual(['file1', 'file2', 'file3'], files)
Ejemplo n.º 32
0
    def test_recursive_glob_relative_path_any_match(self):
        created_files = ['file1', 'file2', 'file3']
        test_utils.create_files(created_files, 'sub')

        matcher = self.create_matcher(['**'])
        subfolder_path = os.path.join(test_utils.temp_folder, 'sub')
        files = model_helper.list_files(subfolder_path,
                                        excluded_files_matcher=matcher)
        self.assertEqual([], files)
Ejemplo n.º 33
0
    def test_glob_absolute_path(self):
        created_files = ['file1', 'file2', 'file3']
        test_utils.create_files(created_files)

        matcher = self.create_matcher(
            [file_utils.normalize_path('*1', test_utils.temp_folder)])
        files = model_helper.list_files(test_utils.temp_folder,
                                        excluded_files_matcher=matcher)
        self.assertEqual(['file2', 'file3'], files)
Ejemplo n.º 34
0
    def test_plain_absolute_path(self):
        created_files = ['file1', 'file2', 'file3']
        test_utils.create_files(created_files)

        excluded_file = os.path.abspath(
            os.path.join(test_utils.temp_folder, 'file2'))
        matcher = self.create_matcher([excluded_file])
        files = model_helper.list_files(test_utils.temp_folder,
                                        excluded_files_matcher=matcher)
        self.assertEqual(['file1', 'file3'], files)
Ejemplo n.º 35
0
    def test_recursive_glob_relative_path_match_any_in_subfolder(self):
        created_files = ['file1', 'file2', 'file3']
        subfolder = os.path.join('a', 'b', 'c', 'd', 'e')
        test_utils.create_files(created_files, subfolder)

        matcher = self.create_matcher(['**/e/**'])
        subfolder_path = os.path.join(test_utils.temp_folder, subfolder)
        files = model_helper.list_files(subfolder_path,
                                        excluded_files_matcher=matcher)
        self.assertEqual([], files)
Ejemplo n.º 36
0
    def test_recursive_glob_absolute_path(self):
        created_files = ['file1', 'file2', 'file3']
        test_utils.create_files(created_files, 'sub')

        matcher = self.create_matcher(
            [file_utils.normalize_path('**/file1', test_utils.temp_folder)])
        subfolder_path = os.path.join(test_utils.temp_folder, 'sub')
        files = model_helper.list_files(subfolder_path,
                                        excluded_files_matcher=matcher)
        self.assertEqual(['file2', 'file3'], files)
    def test_list_files_when_extension(self):
        create_files(['xyz', 'nop'], os.path.join('my_dir'))
        create_files(['abc.txt', 'def.pdf'])
        config = _create_parameter_model(recursive=True, extensions=['pdf'])

        files = config.list_files([])
        self.assertCountEqual([
            _file('def.pdf'),
            _dir('my_dir')],
            files)
Ejemplo n.º 38
0
    def test_list_files_when_working_dir(self):
        param = create_script_param_config('recurs_file',
                                           type=PARAM_TYPE_SERVER_FILE,
                                           file_recursive=True,
                                           file_dir='.')
        config_model = _create_config_model('my_conf', parameters=[param], working_dir=test_utils.temp_folder)

        create_files(['file1', 'file2'])
        file_names = [f['name'] for f in (config_model.list_files_for_param('recurs_file', []))]
        self.assertCountEqual(['file1', 'file2'], file_names)
    def test_list_files_when_working_dir_and_file_dir_dotdot(self):
        working_dir = os.path.join('work', 'dir')
        create_files(['xyz', 'abc'], os.path.join('work', 'another'))
        working_dir_path = os.path.join(test_utils.temp_folder, working_dir)
        config = _create_parameter_model(recursive=True,
                                         file_dir='..',
                                         working_dir=working_dir_path)

        files = config.list_files(['another'])
        self.assertCountEqual([_file('xyz'), _file('abc')], files)
Ejemplo n.º 40
0
    def test_list_files_when_working_dir(self):
        param = create_script_param_config('recurs_file',
                                           type=PARAM_TYPE_SERVER_FILE,
                                           file_recursive=True,
                                           file_dir='.')
        config_model = _create_config_model('my_conf', parameters=[param], working_dir=test_utils.temp_folder)

        create_files(['file1', 'file2'])
        file_names = [f['name'] for f in (config_model.list_files_for_param('recurs_file', []))]
        self.assertCountEqual(['file1', 'file2'], file_names)
    def test_list_files_when_unaccessible_parent(self):
        create_files(['abc'], os.path.join('some', 'nested', 'folder'))
        config = _create_parameter_model(recursive=True)

        protected_dir = os.path.join(test_utils.temp_folder, 'some')
        os.chmod(protected_dir, stat.S_IWRITE)

        try:
            self.assertRaises(InvalidValueException, config.list_files, ['some', 'nested', 'folder'])
        finally:
            os.chmod(protected_dir, stat.S_IWRITE | stat.S_IEXEC | stat.S_IREAD)
    def test_list_files_unaccessible_dir(self):
        create_files(['file1'], os.path.join('public'))
        create_files(['file2'], os.path.join('private'))
        config = _create_parameter_model(recursive=True)

        private_path = os.path.join(test_utils.temp_folder, 'private')
        os.chmod(private_path, stat.S_IWRITE)

        try:
            files = config.list_files([])
            self.assertCountEqual([
                _dir('public'),
                _dir('private', readable=False)],
                files)
        finally:
            os.chmod(private_path, stat.S_IWRITE | stat.S_IEXEC | stat.S_IREAD)
    def test_list_files_for_nested_when_file_type_and_extensions(self):
        create_files(['abc', 'def'])
        create_files(['xyz.txt', 'def.pdf', 'admin.log'], 'sub')
        create_files(['grandchild.log'], os.path.join('sub', 'logs'))
        config = _create_parameter_model(recursive=True, file_type=FILE_TYPE_FILE, extensions=['pdf', 'log'])

        files = config.list_files(['sub'])
        self.assertCountEqual([
            _file('def.pdf'),
            _file('admin.log'),
            _dir('logs')],
            files)
    def test_list_files_1_level(self):
        config = _create_parameter_model(recursive=True)

        create_files(['abc.txt', 'def.pdf'])
        create_files(['admin.log', 'passwords'], 'hidden')
        create_files(['music.mp3'], 'public')

        files = config.list_files(['hidden'])
        self.assertCountEqual([
            _file('admin.log'),
            _file('passwords')],
            files)
    def test_list_files_3_level(self):
        create_files(['xyz'], os.path.join('my', 'home', 'folder', 'temp'))
        create_files(['abc', 'def'], os.path.join('my', 'home', 'folder'))
        create_files(['music.mp3'], os.path.join('my', 'home'))
        config = _create_parameter_model(recursive=True)

        files = config.list_files(['my', 'home', 'folder'])
        self.assertCountEqual([
            _file('abc'),
            _file('def'),
            _dir('temp')],
            files)
    def test_list_files_with_nested_structure(self):
        config = _create_parameter_model(recursive=True)

        create_files(['abc.txt', 'def.pdf'])
        create_files(['admin.log'], 'hidden')
        create_files(['music.mp3'], 'public')

        files = config.list_files([])
        self.assertCountEqual(
            [_file('abc.txt'),
             _file('def.pdf'),
             _dir('hidden'),
             _dir('public')],
            files)
    def test_list_files_for_non_recursive(self):
        create_files(['abc', 'def'])
        config = _create_parameter_model(recursive=False)

        self.assertRaises(WrongParameterUsageException, config.list_files, [])
    def test_list_files_fails_when_relative_path(self):
        create_files(['abc'], 'my_folder')
        config = _create_parameter_model(recursive=True)

        self.assertRaises(InvalidValueException, config.list_files, ['.', 'my_folder'])
    def test_validate_success_when_file_type_dir(self):
        create_files(['.passwords'], 'private')
        create_files(['tasks.list'])
        config = _create_parameter_model(recursive=True, file_type=FILE_TYPE_DIR)

        self.assertIsNone(config.validate_value(['private']))
    def test_validate_success_when_file_type_file(self):
        create_files(['abc.txt', 'admin.log'], 'home')
        create_files(['.passwords'], os.path.join('home', 'private'))
        config = _create_parameter_model(recursive=True, file_type=FILE_TYPE_FILE)

        self.assertIsNone(config.validate_value(['home', 'abc.txt']))
    def test_list_files_when_folder_with_dot(self):
        create_files(['abc'], '.my_folder')
        config = _create_parameter_model(recursive=True)

        files = config.list_files(['.my_folder'])
        self.assertCountEqual([_file('abc')], files)
    def test_validate_fail_when_extensions(self):
        create_files(['abc.txt', 'admin.log', 'doc.pdf'], 'home')
        config = _create_parameter_model(recursive=True, extensions='log')

        error = config.validate_value(['home', 'abc.txt'])
        self.assertRegex(error, '.+ is not allowed')
    def test_list_files_when_not_directory(self):
        create_files(['abc'])
        config = _create_parameter_model(recursive=True)

        self.assertRaises(InvalidValueException, config.list_files, ['abc'])
    def test_validate_success_when_file_type_dir_and_extensions(self):
        create_files(['.passwords'], 'private')
        create_files(['admin.log', 'file.txt', 'print.pdf'])
        config = _create_parameter_model(recursive=True, file_type=FILE_TYPE_DIR, extensions=['txt'])

        self.assertIsNone(config.validate_value(['file.txt']))
    def test_validate_success_when_extensions(self):
        create_files(['abc.txt', 'admin.log', 'doc.pdf'], 'home')
        config = _create_parameter_model(recursive=True, extensions='txt')

        self.assertIsNone(config.validate_value(['home', 'abc.txt']))
    def test_validate_existing_top_file(self):
        create_files(['abc'])
        config = _create_parameter_model(recursive=True)

        self.assertIsNone(config.validate_value(['abc']))
    def test_validate_existing_nested_file(self):
        create_files(['abc.txt'], os.path.join('my', 'nested', 'folder'))
        config = _create_parameter_model(recursive=True)

        self.assertIsNone(config.validate_value(['my', 'nested', 'folder', 'abc.txt']))
    def test_validate_fail_when_relative_reference(self):
        create_files(['abc.txt'])
        config = _create_parameter_model(recursive=True)

        error = config.validate_value(['..', test_utils.temp_folder, 'abc.txt'])
        self.assertEqual('Relative path references are not allowed', error)
Ejemplo n.º 59
0
    def test_multiple_files(self):
        test_utils.create_files(['My.txt', 'file.dat', 'test.sh'])
        test_utils.create_dir('documents')

        files = model_helper.list_files(test_utils.temp_folder)
        self.assertEqual(['documents', 'file.dat', 'My.txt', 'test.sh'], files)
 def test_allowed_values(self):
     create_files(['abc', 'xyz', 'def'])
     config = _create_parameter_model(recursive=False)
     self.assertEqual(['abc', 'def', 'xyz'], config.values)