import unittest from click import testing as click_testing def get_runtests(): # Lazy load to avoid circular imports. from .._cli.main import pysr class TestCli(unittest.TestCase): # TODO: Include test for custom project here. def setUp(self): self.cli_runner = click_testing.CliRunner() def test_help_on_all_commands(self): expected = "\n".join( [ "Usage: pysr [OPTIONS] COMMAND [ARGS]...", "", "Options:", " --help Show this message and exit.", "", "Commands:", " install Install Julia dependencies for PySR.", "", ] ) result = self.cli_runner.invoke(pysr, ["--help"]) self.assertEqual(expected, result.output) self.assertEqual(0, result.exit_code) def test_help_on_install(self): expected = "\n".join( [ "Usage: pysr install [OPTIONS]", "", " Install Julia dependencies for PySR.", "", "Options:", " -p, --project PROJECT_DIRECTORY", " Install in a specific Julia project (e.g., a", " local copy of SymbolicRegression.jl).", " -q, --quiet Disable logging.", " --precompile Force precompilation of Julia libraries.", " --no-precompile Disable precompilation.", " --help Show this message and exit.", "", ] ) result = self.cli_runner.invoke(pysr, ["install", "--help"]) self.assertEqual(expected, result.output) self.assertEqual(0, result.exit_code) def runtests(): """Run all tests in cliTest.py.""" loader = unittest.TestLoader() suite = unittest.TestSuite() suite.addTests(loader.loadTestsFromTestCase(TestCli)) runner = unittest.TextTestRunner() return runner.run(suite) return runtests