1
0

conftest.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. # Copyright 2021-2024 Avaiga Private Limited
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
  4. # the License. You may obtain a copy of the License at
  5. #
  6. # http://www.apache.org/licenses/LICENSE-2.0
  7. #
  8. # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
  9. # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
  10. # specific language governing permissions and limitations under the License.
  11. import argparse
  12. import pytest
  13. from taipy.common._cli._base_cli._taipy_parser import _TaipyParser
  14. from taipy.common.config import Config, _inject_section
  15. from taipy.common.config._config import _Config
  16. from taipy.common.config._config_comparator._config_comparator import _ConfigComparator
  17. from taipy.common.config._serializer._toml_serializer import _TomlSerializer
  18. from taipy.common.config.checker._checker import _Checker
  19. from taipy.common.config.checker.issue_collector import IssueCollector
  20. from taipy.core.config import CoreSection, DataNodeConfig, JobConfig, ScenarioConfig, TaskConfig
  21. def pytest_addoption(parser):
  22. parser.addoption("--e2e-base-url", action="store", default="/", help="base url for e2e testing")
  23. parser.addoption("--e2e-port", action="store", default="5000", help="port for e2e testing")
  24. @pytest.fixture(scope="session")
  25. def e2e_base_url(request):
  26. return request.config.getoption("--e2e-base-url")
  27. @pytest.fixture(scope="session")
  28. def e2e_port(request):
  29. return request.config.getoption("--e2e-port")
  30. def remove_subparser(name: str):
  31. """Remove a subparser from argparse."""
  32. _TaipyParser._sub_taipyparsers.pop(name, None)
  33. if _TaipyParser._subparser_action:
  34. _TaipyParser._subparser_action._name_parser_map.pop(name, None)
  35. for action in _TaipyParser._subparser_action._choices_actions:
  36. if action.dest == name:
  37. _TaipyParser._subparser_action._choices_actions.remove(action)
  38. @pytest.fixture
  39. def clean_argparser():
  40. def _clean_argparser():
  41. _TaipyParser._parser = argparse.ArgumentParser(conflict_handler="resolve")
  42. _TaipyParser._subparser_action = None
  43. _TaipyParser._arg_groups = {}
  44. subcommands = list(_TaipyParser._sub_taipyparsers.keys())
  45. for subcommand in subcommands:
  46. remove_subparser(subcommand)
  47. return _clean_argparser
  48. @pytest.fixture
  49. def reset_configuration_singleton():
  50. def _reset_configuration_singleton():
  51. Config.unblock_update()
  52. Config._default_config = _Config()._default_config()
  53. Config._python_config = _Config()
  54. Config._file_config = _Config()
  55. Config._env_file_config = _Config()
  56. Config._applied_config = _Config()
  57. Config._collector = IssueCollector()
  58. Config._serializer = _TomlSerializer()
  59. Config._comparator = _ConfigComparator()
  60. _Checker._checkers = []
  61. return _reset_configuration_singleton
  62. @pytest.fixture
  63. def inject_core_sections():
  64. def _inject_core_sections():
  65. _inject_section(
  66. JobConfig,
  67. "job_config",
  68. JobConfig("development"),
  69. [("configure_job_executions", JobConfig._configure)],
  70. True,
  71. )
  72. _inject_section(
  73. CoreSection,
  74. "core",
  75. CoreSection.default_config(),
  76. [("configure_core", CoreSection._configure)],
  77. add_to_unconflicted_sections=True,
  78. )
  79. _inject_section(
  80. DataNodeConfig,
  81. "data_nodes",
  82. DataNodeConfig.default_config(),
  83. [
  84. ("configure_data_node", DataNodeConfig._configure),
  85. ("configure_data_node_from", DataNodeConfig._configure_from),
  86. ("set_default_data_node_configuration", DataNodeConfig._set_default_configuration),
  87. ("configure_csv_data_node", DataNodeConfig._configure_csv),
  88. ("configure_json_data_node", DataNodeConfig._configure_json),
  89. ("configure_sql_table_data_node", DataNodeConfig._configure_sql_table),
  90. ("configure_sql_data_node", DataNodeConfig._configure_sql),
  91. ("configure_mongo_collection_data_node", DataNodeConfig._configure_mongo_collection),
  92. ("configure_in_memory_data_node", DataNodeConfig._configure_in_memory),
  93. ("configure_pickle_data_node", DataNodeConfig._configure_pickle),
  94. ("configure_excel_data_node", DataNodeConfig._configure_excel),
  95. ("configure_generic_data_node", DataNodeConfig._configure_generic),
  96. ("configure_s3_object_data_node", DataNodeConfig._configure_s3_object),
  97. ],
  98. )
  99. _inject_section(
  100. TaskConfig,
  101. "tasks",
  102. TaskConfig.default_config(),
  103. [
  104. ("configure_task", TaskConfig._configure),
  105. ("set_default_task_configuration", TaskConfig._set_default_configuration),
  106. ],
  107. )
  108. _inject_section(
  109. ScenarioConfig,
  110. "scenarios",
  111. ScenarioConfig.default_config(),
  112. [
  113. ("configure_scenario", ScenarioConfig._configure),
  114. ("set_default_scenario_configuration", ScenarioConfig._set_default_configuration),
  115. ],
  116. )
  117. return _inject_core_sections