1# coding=utf-8
2"""
3To support django-behave
4"""
5import os
6import sys
7
8
9def run_as_django_behave(formatter_name, feature_names, scenario_n_options):
10    """
11    :param formatter_name: for "-f" argument
12    :param feature_names: feature names or folders behave arguments
13    :param scenario_n_options: list of ["-n", "scenario_name"]
14
15
16    :return: True if launched as django-behave. Otherwise false and need to be launched as plain behave
17    """
18    if "DJANGO_SETTINGS_MODULE" not in os.environ:
19        return False
20    try:
21        import django
22        from django.core.management import ManagementUtility
23
24        from behave_django import __version__  # To make sure version exists
25        django.setup()
26        from django.apps import apps
27
28        if apps.is_installed("behave_django"):
29            base = sys.argv[0]
30            sys.argv = [base] + ["behave", "-f{0}".format(formatter_name)] + feature_names + scenario_n_options
31            print("manage.py " + " ".join(sys.argv[1:]))
32            ManagementUtility().execute()
33            return True
34    except ImportError:
35        return False
36