Exemplo n.º 1
0
def create_test(project_name, test_name):
    test_content = (
        "\n"
        "description = ''\n\n"
        "tags = []\n\n"
        "pages = []\n\n\n"
        "def setup(data):\n"
        "    pass\n\n\n"
        "def test(data):\n"
        "    pass\n\n\n"
        "def teardown(data):\n"
        "    pass\n\n")
    errors = []
    project = Project(project_name)
    if test_name in project.tests():
        errors.append('A test with that name already exists')
    else:
        errors = validate_project_element_name(test_name)
    if not errors:
        project.create_packages_for_element(test_name, project.file_types.TEST)
        path = Test(project_name, test_name).path
        with open(path, 'w', encoding='utf-8') as f:
            f.write(test_content)
        print('Test {} created for project {}'.format(test_name, project_name))
    return errors
Exemplo n.º 2
0
def duplicate_test(project, name, new_name):
    errors = []
    old_path = Test(project, name).path
    new_path = Test(project, new_name).path
    if name == new_name:
        errors.append('New test name cannot be the same as the original')
    elif not os.path.isfile(old_path):
        errors.append('Test {} does not exist'.format(name))
    elif os.path.isfile(new_path):
        errors.append('A test with that name already exists')
    else:
        errors = validate_project_element_name(new_name)
    if not errors:
        try:
            Project(project).create_packages_for_element(new_name, Project.file_types.TEST)
            file_manager.create_directory(path=os.path.dirname(new_path), add_init=True)
            shutil.copyfile(old_path, new_path)
            # duplicate data file if present
            old_data_path = os.path.splitext(old_path)[0] + '.csv'
            new_data_path = os.path.splitext(new_path)[0] + '.csv'
            if os.path.isfile(old_data_path):
                shutil.copyfile(old_data_path, new_data_path)
        except:
            errors.append('There was an error creating the new test')
    return errors
Exemplo n.º 3
0
def create_page(project_name, page_name):
    errors = []
    project = Project(project_name)
    if page_name in project.pages():
        errors.append('A page with that name already exists')
    else:
        errors = validate_project_element_name(page_name)
    if not errors:
        project.create_packages_for_element(page_name, project.file_types.PAGE)
        with open(Page(project_name, page_name).path, 'w') as f:
            f.write('')
    return errors
Exemplo n.º 4
0
def create_page(project_name, page_name):
    errors = []
    page_name = page_name.strip().replace(' ', '_')
    project = Project(project_name)
    if page_name in project.pages():
        errors.append('A page with that name already exists')
    else:
        errors = validate_project_element_name(page_name)
    if not errors:
        project.create_packages_for_element(page_name, 'page')
        with open(Page(project_name, page_name).path, 'w') as f:
            f.write('')
    return errors
Exemplo n.º 5
0
def rename_page(project_name, page_name, new_page_name):
    errors = []
    project = Project(project_name)
    if page_name not in project.pages():
        errors.append('Page {} does not exist'.format(page_name))
    else:
        errors = validate_project_element_name(new_page_name)
    if not errors:
        old_path = Page(project_name, page_name).path
        new_path = Page(project_name, new_page_name).path
        project.create_packages_for_element(new_page_name, project.file_types.PAGE)
        errors = file_manager.rename_file(old_path, new_path)
    return errors
Exemplo n.º 6
0
def rename_suite(project, suite_name, new_suite_name):
    errors = []
    project_obj = Project(project)
    if suite_name not in project_obj.suites():
        errors.append(f'Suite {suite_name} does not exist')
    else:
        errors = validate_project_element_name(new_suite_name)
    if not errors:
        old_path = Suite(project, suite_name).path
        new_path = Suite(project, new_suite_name).path
        project_obj.create_packages_for_element(new_suite_name, Project.file_types.SUITE)
        errors = file_manager.rename_file(old_path, new_path)
    return errors
Exemplo n.º 7
0
def rename_suite(project, suite_name, new_suite_name):
    errors = []
    project_obj = Project(project)
    if suite_name not in project_obj.suites():
        errors.append('Suite {} does not exist'.format(suite_name))
    else:
        new_suite_name = new_suite_name.strip().replace(' ', '_')
        errors = validate_project_element_name(new_suite_name)
    if not errors:
        old_path = Suite(project, suite_name).path
        new_path = Suite(project, new_suite_name).path
        project_obj.create_packages_for_element(new_suite_name, 'suite')
        errors = file_manager.rename_file(old_path, new_path)
    return errors
Exemplo n.º 8
0
def rename_page(project_name, page_name, new_page_name):
    errors = []
    project = Project(project_name)
    new_page_name = new_page_name.strip().replace(' ', '_')
    if page_name not in project.pages():
        errors.append('Page {} does not exist'.format(page_name))
    else:
        errors = validate_project_element_name(new_page_name)
    if not errors:
        old_path = Page(project_name, page_name).path
        new_path = Page(project_name, new_page_name).path
        project.create_packages_for_element(new_page_name, 'page')
        errors = file_manager.rename_file(old_path, new_path)
    return errors
Exemplo n.º 9
0
def create_test(project_name, test_name):
    test_content = ('\n' 'def test(data):\n' '    pass\n')
    errors = []
    project = Project(project_name)
    if test_name in project.tests():
        errors.append('A test with that name already exists')
    else:
        errors = validate_project_element_name(test_name)
    if not errors:
        project.create_packages_for_element(test_name, project.file_types.TEST)
        path = Test(project_name, test_name).path
        with open(path, 'w', encoding='utf-8') as f:
            f.write(test_content)
        print(f'Test {test_name} created for project {project_name}')
    return errors
Exemplo n.º 10
0
def rename_test(project_name, test_name, new_test_name):
    errors = []
    project = Project(project_name)
    if test_name not in project.tests():
        errors.append('Test {} does not exist'.format(test_name))
    else:
        errors = validate_project_element_name(new_test_name)
    if not errors:
        old_path = Test(project_name, test_name).path
        new_path = Test(project_name, new_test_name).path
        project.create_packages_for_element(new_test_name, project.file_types.TEST)
        errors = file_manager.rename_file(old_path, new_path)
        # try to rename data file in /tests/ folder
        old_data_path = os.path.splitext(old_path)[0] + '.csv'
        new_data_path = os.path.splitext(new_path)[0] + '.csv'
        if os.path.isfile(old_data_path):
            errors = file_manager.rename_file(old_data_path, new_data_path)
    return errors
Exemplo n.º 11
0
def create_suite(project_name, suite_name):
    suite_content = ('\n'
                     'browsers = []\n\n'
                     'environments = []\n\n'
                     'processes = 1\n\n'
                     'tests = []\n')
    errors = []
    project = Project(project_name)
    if suite_name in project.suites():
        errors.append('A suite with that name already exists')
    else:
        errors = validate_project_element_name(suite_name)
    if not errors:
        project.create_packages_for_element(suite_name, project.file_types.SUITE)
        with open(Suite(project_name, suite_name).path, 'w', encoding='utf-8') as f:
            f.write(suite_content)
        print(f'Suite {suite_name} created for project {project_name}')
    return errors
Exemplo n.º 12
0
def create_suite(project_name, suite_name):
    suite_content = ('\n'
                     'browsers = []\n\n'
                     'environments = []\n\n'
                     'processes = 1\n\n'
                     'tests = []\n')
    errors = []
    project = Project(project_name)
    if suite_name in project.suites():
        errors.append('A suite with that name already exists')
    else:
        errors = validate_project_element_name(suite_name)
    if not errors:
        project.create_packages_for_element(suite_name, 'suite')
        with open(Suite(project_name, suite_name).path, 'w') as f:
            f.write(suite_content)
        print('Suite {} created for project {}'.format(suite_name, project_name))
    return errors
Exemplo n.º 13
0
def duplicate_page(project, name, new_name):
    errors = []
    old_path = Page(project, name).path
    new_path = Page(project, new_name).path
    if name == new_name:
        errors.append('New page name cannot be the same as the original')
    elif not os.path.isfile(old_path):
        errors.append('Page {} does not exist'.format(name))
    elif os.path.isfile(new_path):
        errors.append('A page with that name already exists')
    else:
        errors = validate_project_element_name(new_name)
    if not errors:
        try:
            Project(project).create_packages_for_element(new_name, Project.file_types.PAGE)
            shutil.copyfile(old_path, new_path)
        except:
            errors.append('There was an error creating the new page')
    return errors
Exemplo n.º 14
0
 def test_validate_project_element_name_max_length(self, name):
     errors = validate_project_element_name(name)
     assert errors == ['Maximum name length is 150 characters']
Exemplo n.º 15
0
 def test_validate_project_element_name_invalid_chars(self, name):
     errors = validate_project_element_name(name)
     assert errors == ['Only letters, numbers and underscores are allowed']
Exemplo n.º 16
0
 def test_validate_project_folder_name_empty(self, name):
     errors = validate_project_element_name(name, isdir=True)
     assert errors == ['Folder name cannot be empty']
Exemplo n.º 17
0
 def test_validate_project_element_name_empty(self, name):
     errors = validate_project_element_name(name)
     assert errors == ['File name cannot be empty']
Exemplo n.º 18
0
 def test_validate_project_element_name_empty_dir(self, name):
     errors = validate_project_element_name(name)
     assert errors == ['Directory name cannot be empty']
Exemplo n.º 19
0
 def test_validate_project_element_name(self, name):
     errors = validate_project_element_name(name)
     assert errors == []