|
@@ -0,0 +1,63 @@
|
|
|
+"""
|
|
|
+Test that nginx-proxy-tester can build successfully
|
|
|
+"""
|
|
|
+import pytest
|
|
|
+import docker
|
|
|
+import re
|
|
|
+
|
|
|
+client = docker.from_env()
|
|
|
+
|
|
|
+@pytest.fixture(scope="session")
|
|
|
+def docker_build(request):
|
|
|
+ # Define Dockerfile path
|
|
|
+ dockerfile_path = "requirements/"
|
|
|
+ dockerfile_name="Dockerfile-nginx-proxy-tester"
|
|
|
+
|
|
|
+ # Build the Docker image
|
|
|
+ image, logs = client.images.build(
|
|
|
+ path=dockerfile_path,
|
|
|
+ dockerfile=dockerfile_name,
|
|
|
+ rm=True, # Remove intermediate containers
|
|
|
+ tag="nginx-proxy-tester-ci", # Tag for the built image
|
|
|
+ )
|
|
|
+
|
|
|
+ # Check for build success
|
|
|
+ for log in logs:
|
|
|
+ if "stream" in log:
|
|
|
+ print(log["stream"].strip())
|
|
|
+ if "error" in log:
|
|
|
+ raise Exception(log["error"])
|
|
|
+
|
|
|
+ def teardown():
|
|
|
+ # Clean up after teardown
|
|
|
+ client.images.remove(image.id, force=True)
|
|
|
+
|
|
|
+ request.addfinalizer(teardown)
|
|
|
+
|
|
|
+ # Return the image name
|
|
|
+ return "nginx-proxy-tester-ci"
|
|
|
+
|
|
|
+def test_build_nginx_proxy_tester(docker_build):
|
|
|
+ assert docker_build == "nginx-proxy-tester-ci"
|
|
|
+
|
|
|
+def test_run_nginx_proxy_tester(docker_build):
|
|
|
+ # Run the container with 'pytest -v' command to output version info
|
|
|
+ container = client.containers.run("nginx-proxy-tester-ci",
|
|
|
+ command="pytest -V",
|
|
|
+ detach=True,
|
|
|
+ # auto_remove=True
|
|
|
+ )
|
|
|
+
|
|
|
+ # Wait for the container to finish and get the exit code
|
|
|
+ result = container.wait()
|
|
|
+ exit_code = result.get("StatusCode", 1) # Default to 1 (error) if not found
|
|
|
+
|
|
|
+ # Get the output logs from the container
|
|
|
+ output = container.logs().decode("utf-8").strip()
|
|
|
+
|
|
|
+ # Clean up: Remove the container
|
|
|
+ container.remove()
|
|
|
+
|
|
|
+ # Assertions
|
|
|
+ assert exit_code == 0, "Container exited with a non-zero exit code"
|
|
|
+ assert re.search(r"pytest\s\d+\.\d+\.\d+", output)
|