diff --git a/tests/test_cli_init.py b/tests/test_cli_init.py index 80b7faa0..7d894125 100644 --- a/tests/test_cli_init.py +++ b/tests/test_cli_init.py @@ -18,6 +18,7 @@ class CLIInitTest(unittest.TestCase): def setUp(self): self.project_dir = Path(BASE_PATH / 'tmp/cli_init') os.makedirs(self.project_dir) + os.chdir(self.project_dir) def tearDown(self): shutil.rmtree(self.project_dir) @@ -28,15 +29,13 @@ def _run_cli(self, *args): def test_init_command(self): """Test the 'init' command to create a project directory.""" - os.chdir(self.project_dir) - result = self._run_cli('init', str(self.project_dir)) + result = self._run_cli('init', 'test_project') self.assertEqual(result.returncode, 0) - self.assertTrue(self.project_dir.exists()) + self.assertTrue((self.project_dir / 'test_project').exists()) @parameterized.expand([(x,) for x in get_all_template_names()]) def test_init_command_for_template(self, template_name): """Test the 'init' command to create a project directory with a template.""" - os.chdir(self.project_dir) - result = self._run_cli('init', str(self.project_dir), '--template', template_name) + result = self._run_cli('init', 'test_project', '--template', template_name) self.assertEqual(result.returncode, 0) - self.assertTrue(self.project_dir.exists()) + self.assertTrue((self.project_dir / 'test_project').exists()) diff --git a/tests/test_cli_tools.py b/tests/test_cli_tools.py new file mode 100644 index 00000000..29aaa45a --- /dev/null +++ b/tests/test_cli_tools.py @@ -0,0 +1,47 @@ +import subprocess +import os, sys +import unittest +from parameterized import parameterized +from pathlib import Path +import shutil +from agentstack.tools import get_all_tool_names + +BASE_PATH = Path(__file__).parent +CLI_ENTRY = [ + sys.executable, + "-m", + "agentstack.main", +] + + +# TODO parameterized framework +class CLIToolsTest(unittest.TestCase): + def setUp(self): + self.project_dir = Path(BASE_PATH / 'tmp/cli_tools') + os.makedirs(self.project_dir) + os.chdir(self.project_dir) + + def tearDown(self): + shutil.rmtree(self.project_dir) + + def _run_cli(self, *args): + """Helper method to run the CLI with arguments.""" + return subprocess.run([*CLI_ENTRY, *args], capture_output=True, text=True) + + @parameterized.expand([(x,) for x in get_all_tool_names()]) + @unittest.skip("Dependency resolution issue") + def test_add_tool(self, tool_name): + """Test the adding every tool to a project.""" + result = self._run_cli('init', f"{tool_name}_project") + self.assertEqual(result.returncode, 0) + os.chdir(self.project_dir/f"{tool_name}_project") + result = self._run_cli('generate', 'agent', 'test_agent', '--llm', 'opeenai/gpt-4o') + self.assertEqual(result.returncode, 0) + result = self._run_cli('generate', 'task', 'test_task') + self.assertEqual(result.returncode, 0) + + result = self._run_cli('tools', 'add', tool_name) + print(result.stdout) + self.assertEqual(result.returncode, 0) + self.assertTrue(self.project_dir.exists()) + diff --git a/tox.ini b/tox.ini index fc41e805..9665ca00 100644 --- a/tox.ini +++ b/tox.ini @@ -12,7 +12,7 @@ deps = parameterized mypy: mypy commands = - pytest -v + pytest -v {posargs} mypy: mypy agentops setenv = AGENTSTACK_TELEMETRY_OPT_OUT = 1 \ No newline at end of file