Skip to content

Commit

Permalink
add more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
klmcadams committed Jan 30, 2025
1 parent be93db8 commit 9d642c3
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 21 deletions.
37 changes: 37 additions & 0 deletions tests/embedding/test_globals.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
# SOFTWARE.

"""Embedding tests for global variables associated with Mechanical"""
import os
import subprocess
import sys

import pytest

from ansys.mechanical.core import global_variables
Expand Down Expand Up @@ -62,3 +66,36 @@ def test_global_variable_transaction(embedded_app):
DataModel.Project.Name = "New Project"
project_name = DataModel.Project.Name
assert project_name == "New Project"


@pytest.mark.embedding_scripts
def test_global_importer_exception(rootdir):
"""Test an exception is raised in global_importer when the embedded app is not initialized."""
# Path to global_importer.py
global_importer = (
rootdir / "src" / "ansys" / "mechanical" / "core" / "embedding" / "global_importer.py"
)

# Run the global_importer.py script without the app being initialized
stdout, stderr = subprocess.Popen(
[sys.executable, global_importer], stdout=subprocess.PIPE, stderr=subprocess.PIPE
).communicate()

# Assert the exception is raised
assert "Globals cannot be imported until the embedded app is initialized." in stderr.decode()


@pytest.mark.embedding_scripts
def test_globals_arg(pytestconfig, run_subprocess, rootdir):
"""Test the globals argument in app()."""
version = pytestconfig.getoption("ansys_version")

embedded_py = os.path.join(rootdir, "tests", "scripts", "run_embedded_app.py")

stdout, stderr = subprocess.Popen(
[sys.executable, embedded_py, "--version", version, "--update_globals", "True"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
).communicate()

# Figure out assert for globals stdout
64 changes: 43 additions & 21 deletions tests/scripts/run_embedded_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,48 +21,70 @@
# SOFTWARE.

"""Launch embedded instance."""
# import logging
import sys
import argparse

import ansys.mechanical.core as pymechanical

# from ansys.mechanical.core.embedding.logger import Configuration


def launch_app(version, private_appdata):
def launch_app(args):
"""Launch embedded instance of app."""
# Configuration.configure(level=logging.DEBUG, to_stdout=True, base_directory=None)
app = pymechanical.App(version=version, private_appdata=private_appdata, copy_profile=True)
if args.debug:
import logging

from ansys.mechanical.core.embedding.logger import Configuration

Configuration.configure(level=logging.DEBUG, to_stdout=True, base_directory=None)

if args.update_globals:
app = pymechanical.App(
version=int(args.version),
private_appdata=args.private_appdata,
copy_profile=True,
globals=globals(),
)
else:
app = pymechanical.App(
version=int(args.version), private_appdata=args.private_appdata, copy_profile=True
)

return app


def set_showtriad(version, appdata_option, value):
def set_showtriad(args, value): # set_showtriad(version, appdata_option, value):
"""Launch embedded instance of app & set ShowTriad to False."""
app = launch_app(version, appdata_option)
app = launch_app(args)
app.ExtAPI.Graphics.ViewOptions.ShowTriad = value
app.close()


def print_showtriad(version, appdata_option):
def print_showtriad(args): # print_showtriad(version, appdata_option):
"""Return ShowTriad value."""
app = launch_app(version, appdata_option)
app = launch_app(args)
print("ShowTriad value is " + str(app.ExtAPI.Graphics.ViewOptions.ShowTriad))
app.close()


if __name__ == "__main__":
version = int(sys.argv[1])
if len(sys.argv) == 2:
launch_app(version, False)
sys.exit(0)
# Set up argparse for command line arguments from subprocess.
parser = argparse.ArgumentParser(description="Launch embedded instance of app.")
parser.add_argument("--version", type=str, help="Mechanical version")
parser.add_argument("--private_appdata", type=str, help="Private appdata")
parser.add_argument("--action", type=str, help="Action to perform")
parser.add_argument("--update_globals", type=str, help="Global variables")
parser.add_argument("--debug", action="store_true") # 'store_true' implies default=False

# Get and set args from subprocess
args = parser.parse_args()
action = args.action

appdata_option = sys.argv[2]
action = sys.argv[3]
args.private_appdata = args.private_appdata == "True"
args.update_globals = args.update_globals == "True"

private_appdata = appdata_option == "True"
if action == "Set":
set_showtriad(version, private_appdata, False)
set_showtriad(args, False)
elif action == "Run":
print_showtriad(version, private_appdata)
print_showtriad(args)
elif action == "Reset":
set_showtriad(version, private_appdata, True)
set_showtriad(args, True)
else:
launch_app(args)
31 changes: 31 additions & 0 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -456,3 +456,34 @@ def test_ideconfig_cli_default(test_env, run_subprocess, rootdir, pytestconfig):
assert revision in stdout
assert str(settings_json_fragment) in stdout
assert venv_loc in stdout


@pytest.mark.cli
def test_ideconfig_revision_max():
"""Test the IDE configuration location when no arguments are supplied."""
# Set the revision number to be greater than the maximum stubs revision number
revision = MAX_STUBS_REVN + 10

# Assert a warning is raised
with pytest.warns(UserWarning):
ideconfig_cli_impl(
ide="vscode",
target="user",
revision=revision,
)


# @pytest.mark.cli
# def test_ideconfig_no_revision(capfd):
# """Test the IDE configuration when no revision is supplied."""
# # Run the cli() function in the IDE configuration module -> have to import CLI
# ideconfig_cli_impl(
# ide="vscode",
# target="user",
# )

# # Get output of the IDE configuration command
# out, err = capfd.readouterr()
# out = out.replace("\\\\", "\\")

# assert "false" in out

0 comments on commit 9d642c3

Please sign in to comment.