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