Allow port to be changed using MTT_PORT environment variable.
This commit is contained in:
		@@ -2,6 +2,8 @@
 | 
			
		||||
 | 
			
		||||
from asyncio import create_subprocess_exec, get_event_loop, sleep
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
from socket import socket
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Server:
 | 
			
		||||
    """Setup a single server."""
 | 
			
		||||
@@ -36,13 +38,14 @@ class Server:
 | 
			
		||||
    @port.setter
 | 
			
		||||
    def port(self, num):
 | 
			
		||||
        """Set the port for the server."""
 | 
			
		||||
        self.env["MTT_PORT"] = num
 | 
			
		||||
        self.env["MTT_PORT"] = str(num)
 | 
			
		||||
 | 
			
		||||
    async def __start(self):
 | 
			
		||||
        """async start of the server."""
 | 
			
		||||
        print(self.env)
 | 
			
		||||
        self.process = await create_subprocess_exec(
 | 
			
		||||
                Path.cwd().joinpath("target", "release", "morethantext_web")
 | 
			
		||||
                )
 | 
			
		||||
            Path.cwd().joinpath("target", "release", "morethantext_web"), env=self.env
 | 
			
		||||
        )
 | 
			
		||||
        await sleep(1)
 | 
			
		||||
 | 
			
		||||
    async def __stop(self):
 | 
			
		||||
@@ -62,3 +65,10 @@ class Server:
 | 
			
		||||
    def destroy(self):
 | 
			
		||||
        """Removes the server instance."""
 | 
			
		||||
        self.stop()
 | 
			
		||||
 | 
			
		||||
    def set_safe_port(self):
 | 
			
		||||
        """Set the server port to something not being used."""
 | 
			
		||||
        sock = socket()
 | 
			
		||||
        sock.bind((self.address, 0))
 | 
			
		||||
        self.port = sock.getsockname()[1]
 | 
			
		||||
        sock.close()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,24 +1,40 @@
 | 
			
		||||
"""Interpratures for server start features."""
 | 
			
		||||
 | 
			
		||||
from pytest_bdd import given, scenarios, then, when
 | 
			
		||||
from pytest_bdd import given, parsers, scenarios, then, when
 | 
			
		||||
 | 
			
		||||
scenarios("../features/server_start.feature")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@given("a server")
 | 
			
		||||
def create_server(server):
 | 
			
		||||
def create_server():
 | 
			
		||||
    """Set up a server."""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@given(parsers.re(r"address is set to (?P<addr>\S+)"))
 | 
			
		||||
def set_server_address(server, addr):
 | 
			
		||||
    """Set the Server address."""
 | 
			
		||||
    server.address = addr
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@given("port is changed to something different")
 | 
			
		||||
def set_to_safe_port(server):
 | 
			
		||||
    """Set the app server to an unused port."""
 | 
			
		||||
    server.set_safe_port()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@given("it is running")
 | 
			
		||||
def start_server(server):
 | 
			
		||||
    """Start up the server."""
 | 
			
		||||
    server.start()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@when("the home page is accessed")
 | 
			
		||||
def access_home_page(server, page):
 | 
			
		||||
    """Access the home page."""
 | 
			
		||||
    url = f"http://{server.address}:{server.port}/"
 | 
			
		||||
    page.request_url(url)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@then("the status should be OK")
 | 
			
		||||
def check_for_ok(page):
 | 
			
		||||
    """Is the page status code 200"""
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user