Exemple #1
0
def make_app(destination, app_name):
	"Creates a boilerplate app"
	from frappe.utils.boilerplate import make_boilerplate
	make_boilerplate(destination, app_name)
Exemple #2
0
def make_app(destination):
    from frappe.utils.boilerplate import make_boilerplate
    make_boilerplate(destination)
Exemple #3
0
def make_app():
	from frappe.utils.boilerplate import make_boilerplate
	make_boilerplate()
def make_app(destination, app_name):
	from frappe.utils.boilerplate import make_boilerplate
	make_boilerplate(destination, app_name)
Exemple #5
0
    def test_create_app(self):
        title = "Test App"
        description = "This app's description contains 'single quotes' and \"double quotes\"."
        publisher = "Test Publisher"
        email = "*****@*****.**"
        icon = ""  # empty -> default
        color = ""
        app_license = "MIT"

        user_input = [
            title,
            description,
            publisher,
            email,
            icon,
            color,
            app_license,
        ]

        bench_path = frappe.utils.get_bench_path()
        apps_dir = os.path.join(bench_path, "apps")
        app_name = "test_app"

        with patch("builtins.input", side_effect=user_input):
            make_boilerplate(apps_dir, app_name)

        root_paths = [
            app_name,
            "requirements.txt",
            "README.md",
            "setup.py",
            "license.txt",
            ".git",
        ]
        paths_inside_app = [
            "__init__.py",
            "hooks.py",
            "patches.txt",
            "templates",
            "www",
            "config",
            "modules.txt",
            "public",
            app_name,
        ]

        new_app_dir = os.path.join(bench_path, apps_dir, app_name)

        all_paths = list()

        for path in root_paths:
            all_paths.append(os.path.join(new_app_dir, path))

        for path in paths_inside_app:
            all_paths.append(os.path.join(new_app_dir, app_name, path))

        for path in all_paths:
            self.assertTrue(os.path.exists(path),
                            msg=f"{path} should exist in new app")

        # check if python files are parsable
        python_files = glob.glob(new_app_dir + "**/*.py", recursive=True)

        for python_file in python_files:
            with open(python_file) as p:
                try:
                    ast.parse(p.read())
                except Exception as e:
                    self.fail(
                        f"Can't parse python file in new app: {python_file}\n"
                        + str(e))