Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: refines E2E ssp test for better readability #197

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ test-slow:
.PHONY: test-slow

test-e2e:
@poetry run pytest $(TESTS)/$(E2E) --slow --cov --cov-config=pyproject.toml --cov-report=xml
@poetry run pytest $(TESTS)/$(E2E) --slow --cov --cov-config=pyproject.toml --cov-report=xml -vvv
.PHONY: test-e2e

test-code-cov:
Expand Down
61 changes: 28 additions & 33 deletions tests/e2e/test_e2e_ssp.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import logging
import os
import pathlib
import subprocess
from typing import Dict, Tuple

import pytest
Expand Down Expand Up @@ -91,25 +90,31 @@ def test_ssp_editing_e2e(

args = setup_for_ssp(tmp_repo_path, test_prof, [test_comp_name], test_ssp_md)

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

# Create or generate the SSP
if not skip_create:
create_args: Dict[str, str] = {
"markdown-path": command_args["markdown-path"],
"branch": command_args["branch"],
"committer-name": command_args["committer-name"],
"committer-email": command_args["committer-email"],
"markdown-path": markdown_path,
"branch": branch,
"committer-name": committer_name,
"committer-email": committer_email,
"ssp-name": test_ssp_name,
"profile-name": test_prof,
"compdefs": test_comp_name,
}
command = e2e_runner.build_test_command(
create_command = e2e_runner.build_test_command(
tmp_repo_str,
"create-ssp",
create_args,
)
exit_code, _ = e2e_runner.invoke_command(command)
exit_code, _ = e2e_runner.invoke_command(create_command)
assert exit_code == response
assert (tmp_repo_path / command_args["markdown-path"]).exists()
assert (tmp_repo_path / markdown_path).exists()

# Make a change to the SSP
ssp, ssp_path = ModelUtils.load_model_for_class(
Expand All @@ -124,17 +129,15 @@ def test_ssp_editing_e2e(
ssp_generate = SSPGenerate()
assert ssp_generate._run(args) == 0

command = e2e_runner.build_test_command(tmp_repo_str, "autosync", command_args)
run_response = subprocess.run(command, capture_output=True)
assert run_response.returncode == response
autosync_command = e2e_runner.build_test_command(
tmp_repo_str, "autosync", command_args
)
exit_code, response_stdout = e2e_runner.invoke_command(autosync_command)
assert exit_code == response

# Check that the ssp was pushed to the remote
if response == SUCCESS_EXIT_CODE:
branch = command_args["branch"]
assert (
f"Changes pushed to {branch} successfully."
in run_response.stdout.decode("utf-8")
)
assert f"Changes pushed to {branch} successfully." in response_stdout

# Check that the correct files are present with the correct content
index_path = os.path.join(tmp_repo_str, "ssp-index.json")
Expand All @@ -145,41 +148,33 @@ def test_ssp_editing_e2e(
assert ssp_path.exists()

# Check that if run again, the ssp is not pushed again
command = e2e_runner.build_test_command(tmp_repo_str, "autosync", command_args)
exit_code, response_stdout = e2e_runner.invoke_command(command)
exit_code, response_stdout = e2e_runner.invoke_command(autosync_command)
assert exit_code == SUCCESS_EXIT_CODE
assert "Nothing to commit" in response_stdout

# Check that if the upstream profile is updated, the ssp is updated
local_upstream_path = prepare_upstream_repo()
upstream_repos_arg = f"{e2e_runner.UPSTREAM_REPO}@main"
upstream_command_args = {
"branch": command_args["branch"],
"committer-name": command_args["committer-name"],
"committer-email": command_args["committer-email"],
"branch": branch,
"committer-name": committer_name,
"committer-email": committer_email,
"sources": upstream_repos_arg,
}
command = e2e_runner.build_test_command(
sync_upstreams_command = e2e_runner.build_test_command(
tmp_repo_str,
"sync-upstreams",
upstream_command_args,
local_upstream_path,
)
exit_code, response_stdout = e2e_runner.invoke_command(command)
exit_code, response_stdout = e2e_runner.invoke_command(sync_upstreams_command)
assert exit_code == SUCCESS_EXIT_CODE
assert (
f"Changes pushed to {command_args['branch']} successfully."
in run_response.stdout.decode("utf-8")
)
assert f"Changes pushed to {branch} successfully." in response_stdout

# Autosync again to check that the ssp is updated
command = e2e_runner.build_test_command(tmp_repo_str, "autosync", command_args)
exit_code, response_stdout = e2e_runner.invoke_command(command)
exit_code, response_stdout = e2e_runner.invoke_command(autosync_command)
assert exit_code == SUCCESS_EXIT_CODE
assert (
f"Changes pushed to {command_args['branch']} successfully."
in response_stdout
)
assert f"Changes pushed to {branch} successfully." in response_stdout

# Clean up the upstream repo
clean(local_upstream_path, None)
Loading