testgenie-py 0.2.7__tar.gz → 0.2.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/PKG-INFO +1 -1
  2. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/pyproject.toml +1 -1
  3. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/controller/docker_controller.py +13 -16
  4. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/README.md +0 -0
  5. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/__init__.py +0 -0
  6. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/analyzer/__init__.py +0 -0
  7. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/analyzer/ast_analyzer.py +0 -0
  8. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/analyzer/contracts/__init__.py +0 -0
  9. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/analyzer/contracts/contract.py +0 -0
  10. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/analyzer/contracts/no_exception_contract.py +0 -0
  11. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/analyzer/contracts/nonnull_contract.py +0 -0
  12. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/analyzer/fuzz_analyzer.py +0 -0
  13. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/analyzer/random_feedback_analyzer.py +0 -0
  14. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/analyzer/reinforcement_analyzer.py +0 -0
  15. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/analyzer/test_case_analyzer.py +0 -0
  16. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/analyzer/test_case_analyzer_context.py +0 -0
  17. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/controller/__init__.py +0 -0
  18. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/controller/cli_controller.py +0 -0
  19. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/docker/Dockerfile +0 -0
  20. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/generated_boolean.py +0 -0
  21. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/generated_samplecodebin.py +0 -0
  22. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/generator/__init__.py +0 -0
  23. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/generator/code_generator.py +0 -0
  24. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/generator/doctest_generator.py +0 -0
  25. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/generator/generator.py +0 -0
  26. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/generator/pytest_generator.py +0 -0
  27. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/generator/test_generator.py +0 -0
  28. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/generator/unit_test_generator.py +0 -0
  29. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/inspector/__init__.py +0 -0
  30. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/inspector/inspector.py +0 -0
  31. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/main.py +0 -0
  32. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/models/__init__.py +0 -0
  33. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/models/analysis_context.py +0 -0
  34. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/models/function_metadata.py +0 -0
  35. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/models/generator_context.py +0 -0
  36. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/models/test_case.py +0 -0
  37. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/presentation/__init__.py +0 -0
  38. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/presentation/cli_view.py +0 -0
  39. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/reinforcement/__init__.py +0 -0
  40. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/reinforcement/abstract_state.py +0 -0
  41. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/reinforcement/agent.py +0 -0
  42. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/reinforcement/environment.py +0 -0
  43. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/reinforcement/statement_coverage_state.py +0 -0
  44. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/service/__init__.py +0 -0
  45. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/service/analysis_service.py +0 -0
  46. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/service/cfg_service.py +0 -0
  47. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/service/generator_service.py +0 -0
  48. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/service/logging_service.py +0 -0
  49. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/service/service.py +0 -0
  50. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/sqlite/__init__.py +0 -0
  51. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/sqlite/db.py +0 -0
  52. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/sqlite/db_service.py +0 -0
  53. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/testgen.db +0 -0
  54. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/tree/__init__.py +0 -0
  55. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/tree/node.py +0 -0
  56. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/tree/tree_utils.py +0 -0
  57. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/util/__init__.py +0 -0
  58. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/util/coverage_utils.py +0 -0
  59. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/util/coverage_visualizer.py +0 -0
  60. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/util/file_utils.py +0 -0
  61. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/util/randomizer.py +0 -0
  62. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/util/utils.py +0 -0
  63. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/util/z3_utils/__init__.py +0 -0
  64. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/util/z3_utils/ast_to_z3.py +0 -0
  65. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/util/z3_utils/branch_condition.py +0 -0
  66. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/util/z3_utils/constraint_extractor.py +0 -0
  67. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/util/z3_utils/variable_finder.py +0 -0
  68. {testgenie_py-0.2.7 → testgenie_py-0.2.9}/testgen/util/z3_utils/z3_test_case.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: testgenie-py
3
- Version: 0.2.7
3
+ Version: 0.2.9
4
4
  Summary: Automated unit test generation tool for Python.
5
5
  Author: cjseitz
6
6
  Author-email: charlesjseitz@gmail.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "testgenie-py"
3
- version = "0.2.7"
3
+ version = "0.2.9"
4
4
  description = "Automated unit test generation tool for Python."
5
5
  authors = ["cjseitz <charlesjseitz@gmail.com>"]
6
6
  readme = "README.md"
@@ -1,4 +1,3 @@
1
- import importlib
2
1
  import os
3
2
  import sys
4
3
  from argparse import Namespace
@@ -6,7 +5,10 @@ import docker
6
5
  from docker import DockerClient, client
7
6
  from docker import errors
8
7
  from docker.models.containers import Container
9
- import importlib.resources
8
+ import importlib.resources as pkg_resources
9
+ import tempfile
10
+ import shutil
11
+
10
12
  from testgen.service.logging_service import get_logger
11
13
  from testgen.service.service import Service
12
14
 
@@ -134,14 +136,9 @@ class DockerController:
134
136
  print(f"Docker args: {docker_args}")
135
137
  print(f"Project root: {project_root}")
136
138
 
137
- # Debug command to find file and then run testgenie with args
138
- debug_cmd = f'find /controller -type f -name "*.py" | grep -i boolean || echo "File not found"; ' \
139
- f'ls -la /controller; ' \
140
- f'testgenie /controller/testgen/code_to_test/boolean.py --test-mode=fuzz --test-format=pytest'
141
-
142
139
  return docker_client.containers.run(
143
140
  image=image_name,
144
- command=["sh", "-c", debug_cmd],
141
+ command=["testgenie"] + docker_args,
145
142
  volumes={
146
143
  os.path.abspath(project_root): {
147
144
  "bind": "/controller",
@@ -196,23 +193,23 @@ class DockerController:
196
193
  return False
197
194
 
198
195
  def get_dockerfile_path(self) -> str:
199
- print("Get dockerfile path")
196
+ # First, try local development path
200
197
  local_dockerfile = os.path.join(os.path.dirname(__file__), "docker", "Dockerfile")
201
- print(f"Checking local path: {local_dockerfile}")
202
198
  if os.path.exists(local_dockerfile):
199
+ self.debug(f"Found local Dockerfile at: {local_dockerfile}")
203
200
  return local_dockerfile
204
201
 
205
202
  # If not found locally, try inside installed package
206
203
  try:
207
- print("With importlib.resources")
208
- with importlib.resources.path('testgen.docker', 'Dockerfile') as dockerfile_path:
209
- print(f"Checking package path: {dockerfile_path}")
210
- if dockerfile_path.exists():
211
- return str(dockerfile_path)
204
+ dockerfile_resource = pkg_resources.files('testgen').joinpath('docker/Dockerfile')
205
+ if dockerfile_resource.is_file():
206
+ self.debug(f"Found package-installed Dockerfile at: {dockerfile_resource}")
207
+ return str(dockerfile_resource)
212
208
  except Exception as e:
213
209
  print(f"Error locating Dockerfile in package resources: {e}")
214
210
 
215
- raise FileNotFoundError("Dockerfile not found in local project or package.")
211
+ print("Dockerfile not found in local project or package.")
212
+ sys.exit(1)
216
213
 
217
214
  @staticmethod
218
215
  def is_inside_docker() -> bool:
File without changes