Skip to content

Commit

Permalink
Merge pull request #391 from RedHatProductSecurity/update-poetry-scripts
Browse files Browse the repository at this point in the history
chore: update pyproject.toml entrypoints to cli root command
  • Loading branch information
qduanmu authored Dec 24, 2024
2 parents a614d38 + 2c2df3d commit ab458fa
Show file tree
Hide file tree
Showing 7 changed files with 72 additions and 59 deletions.
7 changes: 1 addition & 6 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,7 @@ repository = 'https://github.com/RedHatProductSecurity/trestle-bot'


[tool.poetry.scripts]
trestlebot-init = "trestlebot.entrypoints.init:main"
trestlebot-autosync = "trestlebot.entrypoints.autosync:main"
trestlebot-rules-transform = "trestlebot.entrypoints.rule_transform:main"
trestlebot-create-cd = "trestlebot.entrypoints.create_cd:main"
trestlebot-sync-upstreams = "trestlebot.entrypoints.sync_upstreams:main"
trestlebot-create-ssp = "trestlebot.entrypoints.create_ssp:main"
trestlebot = "trestlebot.cli.root:root_cmd"

[tool.poetry.dependencies]
python = '^3.8.1'
Expand Down
9 changes: 8 additions & 1 deletion tests/e2e/e2e_testutils.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ def build_test_command(
"--pod",
E2ETestRunner.TRESTLEBOT_TEST_POD_NAME,
"--entrypoint",
f"trestlebot-{command_name}",
"trestlebot",
"--restart",
"never",
]
Expand All @@ -160,9 +160,16 @@ def build_test_command(
"-w",
"/trestle",
self.trestlebot_image,
]
)
command_nodes = command_name.split()
command.extend(
command_nodes
+ [
*args_dict_to_list(command_args),
]
)

return command

def invoke_command(
Expand Down
20 changes: 11 additions & 9 deletions tests/e2e/test_e2e_compdef.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@
"success/happy path",
{
"branch": "test",
"markdown-path": "md_comp",
"rules-view-path": RULES_VIEW_DIR,
"markdown-dir": "md_comp",
"rules-view-dir": RULES_VIEW_DIR,
"committer-name": "test",
"committer-email": "test@email.com",
},
Expand All @@ -46,8 +46,8 @@
"success/happy path with model skipping",
{
"branch": "test",
"rules-view-path": RULES_VIEW_DIR,
"markdown-path": "md_comp",
"rules-view-dir": RULES_VIEW_DIR,
"markdown-dir": "md_comp",
"committer-name": "test",
"committer-email": "test",
"skip-items": test_comp_name,
Expand Down Expand Up @@ -101,7 +101,7 @@ def test_rules_transform_e2e(
"component-title": "test-comp",
"compdef-name": "test-compdef",
"component-description": "test",
"markdown-path": "markdown",
"markdown-dir": "markdown",
"branch": "test",
"committer-name": "test",
"committer-email": "test@email.com",
Expand All @@ -114,7 +114,7 @@ def test_rules_transform_e2e(
"component-title": "test-comp",
"compdef-name": "test-compdef",
"component-description": "test",
"markdown-path": "markdown",
"markdown-dir": "markdown",
"branch": "test",
"committer-name": "test",
"committer-email": "test@email.com",
Expand All @@ -129,7 +129,7 @@ def test_create_cd_e2e(
test_name: str,
command_args: Dict[str, str],
) -> None:
"""Test the trestlebot create-cd command."""
"""Test the trestlebot create compdef command."""
logger.info(f"Running test: {test_name}")

tmp_repo_str, _ = tmp_repo
Expand All @@ -139,7 +139,9 @@ def test_create_cd_e2e(
_ = setup_for_profile(tmp_repo_path, test_prof, "")
load_from_json(tmp_repo_path, test_filter_prof, test_filter_prof, Profile)

command = e2e_runner.build_test_command(tmp_repo_str, "create-cd", command_args)
command = e2e_runner.build_test_command(
tmp_repo_str, "create compdef", command_args
)
exit_code, _, _ = e2e_runner.invoke_command(command, tmp_repo_path)
assert exit_code == SUCCESS_EXIT_CODE

Expand All @@ -151,7 +153,7 @@ def test_create_cd_e2e(
FileContentType.JSON,
)
assert comp_path.exists()
assert (tmp_repo_path / command_args["markdown-path"]).exists()
assert (tmp_repo_path / command_args["markdown-dir"]).exists()
assert (
tmp_repo_path
/ RULES_VIEW_DIR
Expand Down
17 changes: 10 additions & 7 deletions tests/e2e/test_e2e_ssp.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@
def valid_args_dict() -> Dict[str, str]:
return {
"branch": "test",
"markdown-path": test_ssp_md,
"markdown-dir": test_ssp_md,
"oscal-model": "ssp",
"committer-name": "test",
"committer-email": "test@email.com",
"ssp-index": "ssp-index.json",
"ssp-index-file": "ssp-index.json",
}


Expand Down Expand Up @@ -87,12 +87,12 @@ def test_ssp_editing_e2e(

# Get command arguments for the test
branch = valid_args_dict["branch"]
markdown_path = valid_args_dict["markdown-path"]
markdown_path = valid_args_dict["markdown-dir"]
committer_name = valid_args_dict["committer-name"]
committer_email = valid_args_dict["committer-email"]

create_args: Dict[str, str] = {
"markdown-path": markdown_path,
"markdown-dir": markdown_path,
"branch": branch,
"committer-name": committer_name,
"committer-email": committer_email,
Expand All @@ -102,7 +102,7 @@ def test_ssp_editing_e2e(
}
create_command = e2e_runner.build_test_command(
tmp_repo_str,
"create-ssp",
"create ssp",
create_args,
)
exit_code, _, _ = e2e_runner.invoke_command(create_command)
Expand Down Expand Up @@ -191,6 +191,9 @@ def test_ssp_e2e_editing_failure(
autosync_command = e2e_runner.build_test_command(
tmp_repo_str, "autosync", valid_args_dict
)
exit_code, _, response_stderr = e2e_runner.invoke_command(autosync_command)
exit_code, response_stdout, response_stderr = e2e_runner.invoke_command(
autosync_command
)
assert exit_code == ERROR_EXIT_CODE
assert "SSP test_ssp does not exists in the index" in response_stderr
err_msg = "SSP test_ssp does not exists in the index"
assert err_msg in response_stdout or err_msg in response_stderr
4 changes: 2 additions & 2 deletions tests/trestlebot/cli/test_autosync_cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ def test_missing_markdown_dir_option(tmp_repo: Tuple[str, Repo]) -> None:
assert result.exit_code == 2
assert "Error: Missing option '--markdown-dir'" in result.output

# With 'markdown_dir' setting in config.yml
# With non-existent 'markdown_dir' setting in config.yml
config_obj = TrestleBotConfig(markdown_dir="markdown")
write_to_file(config_obj, filepath)
result = runner.invoke(autosync_cmd, cmd_options)
assert result.exit_code == 0
assert result.exit_code == 1
72 changes: 39 additions & 33 deletions trestlebot/cli/commands/autosync.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@

import logging
import sys
import traceback
from typing import Any, List

import click

from trestlebot.cli.options.common import common_options, git_options, handle_exceptions
from trestlebot.cli.options.common import common_options, git_options
from trestlebot.cli.utils import comma_sep_to_list, run_bot
from trestlebot.const import ERROR_EXIT_CODE
from trestlebot.tasks.assemble_task import AssembleTask
Expand Down Expand Up @@ -69,7 +70,6 @@
type=str,
required=False,
)
@handle_exceptions
def autosync_cmd(ctx: click.Context, **kwargs: Any) -> None:
"""Command to autosync catalog, profile, compdef and ssp."""

Expand All @@ -87,37 +87,43 @@ def autosync_cmd(ctx: click.Context, **kwargs: Any) -> None:
if kwargs.get("file_pattern"):
kwargs.update({"patterns": comma_sep_to_list(kwargs["file_patterns"])})

model_filter: ModelFilter = ModelFilter(
skip_patterns=comma_sep_to_list(kwargs.get("skip_items", "")),
include_patterns=["*"],
)
authored_object: AuthoredObjectBase = types.get_authored_object(
oscal_model,
working_dir,
kwargs.get("ssp_index_path", ""),
)

# Assuming an edit has occurred assemble would be run before regenerate.
if not kwargs.get("skip_assemble"):
assemble_task: AssembleTask = AssembleTask(
authored_object=authored_object,
markdown_dir=markdown_dir,
version=kwargs.get("version", ""),
model_filter=model_filter,
try:
model_filter: ModelFilter = ModelFilter(
skip_patterns=comma_sep_to_list(kwargs.get("skip_items", "")),
include_patterns=["*"],
)
pre_tasks.append(assemble_task)
else:
logger.info("Assemble task skipped.")

if not kwargs.get("skip_regenerate"):
regenerate_task: RegenerateTask = RegenerateTask(
authored_object=authored_object,
markdown_dir=markdown_dir,
model_filter=model_filter,
authored_object: AuthoredObjectBase = types.get_authored_object(
oscal_model,
working_dir,
kwargs.get("ssp_index_file", ""),
)
pre_tasks.append(regenerate_task)
else:
logger.info("Regeneration task skipped.")

results = run_bot(pre_tasks, kwargs)
logger.debug(f"Trestlebot results: {results}")
# Assuming an edit has occurred assemble would be run before regenerate.
if not kwargs.get("skip_assemble"):
assemble_task: AssembleTask = AssembleTask(
authored_object=authored_object,
markdown_dir=markdown_dir,
version=kwargs.get("version", ""),
model_filter=model_filter,
)
pre_tasks.append(assemble_task)
else:
logger.info("Assemble task skipped.")

if not kwargs.get("skip_regenerate"):
regenerate_task: RegenerateTask = RegenerateTask(
authored_object=authored_object,
markdown_dir=markdown_dir,
model_filter=model_filter,
)
pre_tasks.append(regenerate_task)
else:
logger.info("Regeneration task skipped.")

results = run_bot(pre_tasks, kwargs)
logger.debug(f"Trestlebot results: {results}")
except Exception as e:
traceback_str = traceback.format_exc()
logger.error(f"Trestle-bot Error: {str(e)}")
logger.debug(traceback_str)
sys.exit(ERROR_EXIT_CODE)
2 changes: 1 addition & 1 deletion trestlebot/cli/commands/create.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def compdef_cmd(
transformer: ToRulesYAMLTransformer = ToRulesYAMLTransformer()

model_filter: ModelFilter = ModelFilter(
[], [profile_name, component_title, f"{const.RULE_PREFIX}*"]
[], [compdef_name, component_title, f"{const.RULE_PREFIX}*"]
)

rule_transform_task: RuleTransformTask = RuleTransformTask(
Expand Down

0 comments on commit ab458fa

Please sign in to comment.