testgenie-py 0.1.8__py3-none-any.whl → 0.2.0__py3-none-any.whl

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.
@@ -5,6 +5,9 @@ import docker
5
5
  from docker import DockerClient, client
6
6
  from docker import errors
7
7
  from docker.models.containers import Container
8
+ import importlib.resources as pkg_resources
9
+ import tempfile
10
+ import shutil
8
11
 
9
12
  from testgen.service.logging_service import get_logger
10
13
  from testgen.service.service import Service
@@ -99,8 +102,7 @@ class DockerController:
99
102
  print(f"Building {image_name} Docker image...")
100
103
 
101
104
  # Look for Dockerfile in the project root
102
- docker_dir = os.path.join(project_root, "testgen", "docker")
103
- dockerfile_path = os.path.join(docker_dir, "Dockerfile")
105
+ dockerfile_path = self.get_dockerfile_path()
104
106
  if not os.path.exists(dockerfile_path):
105
107
  print(f"Dockerfile not found at {dockerfile_path}")
106
108
  sys.exit(1)
@@ -134,7 +136,7 @@ class DockerController:
134
136
 
135
137
  return docker_client.containers.run(
136
138
  image=image_name,
137
- command=["poetry", "run", "python", "-m", "testgen.main"] + docker_args,
139
+ command=["python", "-m", "testgen.main"] + docker_args,
138
140
  volumes={project_root: {"bind": "/controller", "mode": "rw"}},
139
141
  environment=docker_env,
140
142
  detach=True,
@@ -146,13 +148,17 @@ class DockerController:
146
148
  def build_docker_image(self, docker_client, image_name, dockerfile_path, project_root):
147
149
  try:
148
150
  print(f"Starting Docker build for image: {image_name}")
151
+ dockerfile_rel_path = os.path.relpath(dockerfile_path, project_root)
152
+ docker_dir = os.path.dirname(dockerfile_path)
153
+
149
154
  dockerfile_rel_path = os.path.relpath(dockerfile_path, project_root)
150
155
  self.debug(f"Project root {project_root}")
151
- self.debug(f"Docker directory: {os.path.dirname(dockerfile_path)}")
156
+ self.debug(f"Docker directory: {docker_dir}")
152
157
  self.debug(f"Docker rel path: {dockerfile_rel_path}")
158
+
153
159
  build_progress = docker_client.api.build(
154
- path=os.path.join(project_root, "testgen", "docker"),
155
- dockerfile=os.path.join(project_root, "testgen", "docker", "Dockerfile"),
160
+ path=docker_dir, # now it knows what docker_dir is
161
+ dockerfile=dockerfile_path,
156
162
  tag=image_name,
157
163
  rm=True,
158
164
  decode=True
@@ -178,6 +184,25 @@ class DockerController:
178
184
  print(f"Unexpected error during Docker build: {str(e)}")
179
185
  return False
180
186
 
187
+ def get_dockerfile_path(self) -> str:
188
+ # First, try local development path
189
+ local_dockerfile = os.path.join(os.path.dirname(__file__), "docker", "Dockerfile")
190
+ if os.path.exists(local_dockerfile):
191
+ self.debug(f"Found local Dockerfile at: {local_dockerfile}")
192
+ return local_dockerfile
193
+
194
+ # If not found locally, try inside installed package
195
+ try:
196
+ dockerfile_resource = pkg_resources.files('testgen').joinpath('docker/Dockerfile')
197
+ if dockerfile_resource.is_file():
198
+ self.debug(f"Found package-installed Dockerfile at: {dockerfile_resource}")
199
+ return str(dockerfile_resource)
200
+ except Exception as e:
201
+ print(f"Error locating Dockerfile in package resources: {e}")
202
+
203
+ print("Dockerfile not found in local project or package.")
204
+ sys.exit(1)
205
+
181
206
  def debug(self, message: str):
182
207
  """Log debug message"""
183
208
  if self.debug_mode: