From d941d98817ea8b0f18b7fef81d156af21a478301 Mon Sep 17 00:00:00 2001 From: Artur Khusainov Date: Wed, 27 Dec 2023 16:57:16 +0000 Subject: [PATCH] Better E2E tests with the secondary server --- .gitignore | 4 + .vscode/launch.json | 48 +- tests_e2e/.gitignore | 3 + tests_e2e/README.md | 11 +- tests_e2e/docker-compose.bungeecord.yml | 7 - tests_e2e/docker-compose.velocity.yml | 7 - tests_e2e/docker-compose.waterfall.yml | 7 - tests_e2e/docker-compose.yml | 16 - tests_e2e/proxy/Dockerfile | 4 +- .../proxy/bungeecord/{files => }/config.yml | 5 +- .../velocity/{files => }/forwarding.secret | 0 tests_e2e/proxy/velocity/log4j2.xml | 50 ++ .../plugins/mapmodcompanion/config.toml | 3 - .../proxy/velocity/{files => }/velocity.toml | 10 - tests_e2e/proxy/waterfall | 1 - tests_e2e/requirements.txt | 7 + tests_e2e/run.py | 462 ++++++++++++++++++ tests_e2e/run.sh | 223 +-------- tests_e2e/saves/1.13.2/blue.dat | Bin 0 -> 1628 bytes tests_e2e/saves/1.13.2/red.dat | Bin 0 -> 1630 bytes tests_e2e/saves/1.17.1/blue.dat | Bin 0 -> 1984 bytes tests_e2e/saves/1.17.1/red.dat | Bin 0 -> 1992 bytes tests_e2e/saves/1.8.9/blue.dat | Bin 0 -> 5546 bytes tests_e2e/saves/1.8.9/red.dat | Bin 0 -> 5539 bytes tests_e2e/server/Dockerfile | 2 +- tests_e2e/server/{files => }/log4j2.xml | 0 .../server/plugins/MapModCompanion/config.yml | 3 - .../server/{files => }/server.properties | 0 tests_e2e/server/{files => }/spigot.yml | 0 tests_e2e/versions/1.10.2.sh | 3 - tests_e2e/versions/1.11.2.sh | 3 - tests_e2e/versions/1.12.2.sh | 3 - tests_e2e/versions/1.13.2.sh | 4 - tests_e2e/versions/1.14.4.sh | 4 - tests_e2e/versions/1.15.2.sh | 4 - tests_e2e/versions/1.16.1.sh | 4 - tests_e2e/versions/1.16.2.sh | 4 - tests_e2e/versions/1.16.3.sh | 4 - tests_e2e/versions/1.16.4.sh | 3 - tests_e2e/versions/1.16.5.sh | 3 - tests_e2e/versions/1.17.1.sh | 3 - tests_e2e/versions/1.18.2.sh | 3 - tests_e2e/versions/1.19.3.sh | 3 - tests_e2e/versions/1.20.1.sh | 3 - tests_e2e/versions/1.8.9.sh | 3 - tests_e2e/versions/1.9.4.sh | 3 - tests_e2e/versions/_legacy.sh | 3 - tests_e2e/versions/_modern.sh | 3 - tests_e2e/versions/_needs_protocollib.sh | 1 - tests_e2e/versions/_same.sh | 1 - 50 files changed, 570 insertions(+), 368 deletions(-) delete mode 100644 tests_e2e/docker-compose.bungeecord.yml delete mode 100644 tests_e2e/docker-compose.velocity.yml delete mode 100644 tests_e2e/docker-compose.waterfall.yml rename tests_e2e/proxy/bungeecord/{files => }/config.yml (60%) rename tests_e2e/proxy/velocity/{files => }/forwarding.secret (100%) create mode 100644 tests_e2e/proxy/velocity/log4j2.xml rename tests_e2e/proxy/velocity/{files => }/velocity.toml (93%) delete mode 120000 tests_e2e/proxy/waterfall create mode 100644 tests_e2e/requirements.txt create mode 100755 tests_e2e/run.py create mode 100644 tests_e2e/saves/1.13.2/blue.dat create mode 100644 tests_e2e/saves/1.13.2/red.dat create mode 100644 tests_e2e/saves/1.17.1/blue.dat create mode 100644 tests_e2e/saves/1.17.1/red.dat create mode 100644 tests_e2e/saves/1.8.9/blue.dat create mode 100644 tests_e2e/saves/1.8.9/red.dat rename tests_e2e/server/{files => }/log4j2.xml (100%) rename tests_e2e/server/{files => }/server.properties (100%) rename tests_e2e/server/{files => }/spigot.yml (100%) delete mode 100644 tests_e2e/versions/1.10.2.sh delete mode 100644 tests_e2e/versions/1.11.2.sh delete mode 100644 tests_e2e/versions/1.12.2.sh delete mode 100644 tests_e2e/versions/1.13.2.sh delete mode 100644 tests_e2e/versions/1.14.4.sh delete mode 100644 tests_e2e/versions/1.15.2.sh delete mode 100644 tests_e2e/versions/1.16.1.sh delete mode 100644 tests_e2e/versions/1.16.2.sh delete mode 100644 tests_e2e/versions/1.16.3.sh delete mode 100644 tests_e2e/versions/1.16.4.sh delete mode 100644 tests_e2e/versions/1.16.5.sh delete mode 100644 tests_e2e/versions/1.17.1.sh delete mode 100644 tests_e2e/versions/1.18.2.sh delete mode 100644 tests_e2e/versions/1.19.3.sh delete mode 100644 tests_e2e/versions/1.20.1.sh delete mode 100644 tests_e2e/versions/1.8.9.sh delete mode 100644 tests_e2e/versions/1.9.4.sh delete mode 100644 tests_e2e/versions/_legacy.sh delete mode 100644 tests_e2e/versions/_modern.sh delete mode 100644 tests_e2e/versions/_needs_protocollib.sh delete mode 100644 tests_e2e/versions/_same.sh diff --git a/.gitignore b/.gitignore index b5eb768..835522d 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,7 @@ bin/ ### Mac OS ### .DS_Store + +### Python ### +/venv/ +/.venv/ diff --git a/.vscode/launch.json b/.vscode/launch.json index aea59bf..72bd411 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,19 +1,33 @@ { - "version": "0.2.0", - "configurations": [ - { - "type": "java", - "name": "debug proxy (in Docker)", - "request": "attach", - "hostName": "localhost", - "port": 9010, - }, - { - "type": "java", - "name": "debug server (in Docker)", - "request": "attach", - "hostName": "localhost", - "port": 9011, - } - ] + "version": "0.2.0", + "configurations": [ + { + "name": "run.py", + "type": "python", + "request": "launch", + "program": "run.py", + "args": [ + "velocity", + "1.20.1", + "test" + ], + "cwd": "${workspaceFolder}/tests_e2e/", + "console": "integratedTerminal", + "justMyCode": true + }, + { + "type": "java", + "name": "debug proxy (in Docker)", + "request": "attach", + "hostName": "localhost", + "port": 9010 + }, + { + "type": "java", + "name": "debug server (in Docker)", + "request": "attach", + "hostName": "localhost", + "port": 9011 + } + ] } diff --git a/tests_e2e/.gitignore b/tests_e2e/.gitignore index 2824e61..c103676 100644 --- a/tests_e2e/.gitignore +++ b/tests_e2e/.gitignore @@ -1,3 +1,6 @@ test_env/ #jar/ debug.log + +.venv +venv diff --git a/tests_e2e/README.md b/tests_e2e/README.md index c8353eb..23bf466 100644 --- a/tests_e2e/README.md +++ b/tests_e2e/README.md @@ -12,11 +12,9 @@ I wanted to verify if the plugin actually works on all Minecraft versions we cla ## How? -Thanks to [@itzg](https://github.com/itzg) who probably spent countless hours on [Docker image for hosting Minecraft server](https://github.com/itzg/docker-minecraft-server) it was easy. We just spin up a test server using Docker Compose and log into the game. The bot (which is built using [node-minecraft-protocol](https://github.com/PrismarineJS/node-minecraft-protocol)) only needs to join the server and listen to specific plugin channels. +Thanks to [@itzg](https://github.com/itzg), who probably spent countless hours on [Docker image for hosting Minecraft server](https://github.com/itzg/docker-minecraft-server), it was easy. We just spin up a test server using Docker Compose and log into the game. The bot (which is built using [node-minecraft-protocol](https://github.com/PrismarineJS/node-minecraft-protocol)) only needs to join the server and listen to specific plugin channels. -But automatic bot test is not _that_ useful. It doesn't behave like real Minecraft client. - -More importantly, now I can easily debug different combinations of Minecraft server versions and proxies. +Automatic bot test is not _that_ useful because it doesn't behave like real Minecraft client. Now I can easily debug different combinations of Minecraft server versions and proxies. ## Let me try @@ -35,6 +33,5 @@ Command: * `test` – perform automatic (E2E) tests * `manual` – spin up specified server and proxy * * Use env `JAVA_DEBUG=1` to enable Java debugging. Local port `9010` goes for the proxy, `9011` for the server. Example: `JAVA_DEBUG=1 ./run.sh waterfall 1.16.5 manual` -* `build` – build Docker images -* `cleanup` – calls `docker compose down` -* `convert` – calls `docker compose convert` +* * Use env `BLUE=1` to enable second server (e.g. to debug map persistence). You'll be able to switch between servers with `/server red/blue`. + diff --git a/tests_e2e/docker-compose.bungeecord.yml b/tests_e2e/docker-compose.bungeecord.yml deleted file mode 100644 index 68e4796..0000000 --- a/tests_e2e/docker-compose.bungeecord.yml +++ /dev/null @@ -1,7 +0,0 @@ -services: - proxy: - build: - args: - - TYPE_DIR=bungeecord - environment: - - TYPE=bungeecord diff --git a/tests_e2e/docker-compose.velocity.yml b/tests_e2e/docker-compose.velocity.yml deleted file mode 100644 index f1b702a..0000000 --- a/tests_e2e/docker-compose.velocity.yml +++ /dev/null @@ -1,7 +0,0 @@ -services: - proxy: - build: - args: - - TYPE_DIR=velocity - environment: - - TYPE=velocity diff --git a/tests_e2e/docker-compose.waterfall.yml b/tests_e2e/docker-compose.waterfall.yml deleted file mode 100644 index 7669151..0000000 --- a/tests_e2e/docker-compose.waterfall.yml +++ /dev/null @@ -1,7 +0,0 @@ -services: - proxy: - build: - args: - - TYPE_DIR=bungeecord - environment: - - TYPE=waterfall diff --git a/tests_e2e/docker-compose.yml b/tests_e2e/docker-compose.yml index af757dc..549512d 100644 --- a/tests_e2e/docker-compose.yml +++ b/tests_e2e/docker-compose.yml @@ -1,17 +1 @@ version: "3.8" -services: - bot: - build: - context: bot - environment: - - BOT_HOST=proxy - depends_on: - - proxy - server: - build: - context: server - proxy: - build: - context: proxy - depends_on: - - server diff --git a/tests_e2e/proxy/Dockerfile b/tests_e2e/proxy/Dockerfile index b72c299..4a1be93 100644 --- a/tests_e2e/proxy/Dockerfile +++ b/tests_e2e/proxy/Dockerfile @@ -2,6 +2,6 @@ FROM itzg/bungeecord ENV SERVER_PORT=25565 -ARG TYPE_DIR +ENV JVM_OPTS="-Dlog4j2.configurationFile=log4j2.xml" -COPY --chown=bungeecord:bungeecord ${TYPE_DIR}/files/ /server +COPY --chown=bungeecord:bungeecord . /server diff --git a/tests_e2e/proxy/bungeecord/files/config.yml b/tests_e2e/proxy/bungeecord/config.yml similarity index 60% rename from tests_e2e/proxy/bungeecord/files/config.yml rename to tests_e2e/proxy/bungeecord/config.yml index 9bb97d3..cde5c08 100644 --- a/tests_e2e/proxy/bungeecord/files/config.yml +++ b/tests_e2e/proxy/bungeecord/config.yml @@ -2,8 +2,5 @@ ip_forward: true online_mode: false listeners: - priorities: - - lobby + - red host: 0.0.0.0:25565 -servers: - lobby: - address: server:25565 diff --git a/tests_e2e/proxy/velocity/files/forwarding.secret b/tests_e2e/proxy/velocity/forwarding.secret similarity index 100% rename from tests_e2e/proxy/velocity/files/forwarding.secret rename to tests_e2e/proxy/velocity/forwarding.secret diff --git a/tests_e2e/proxy/velocity/log4j2.xml b/tests_e2e/proxy/velocity/log4j2.xml new file mode 100644 index 0000000..38d3fce --- /dev/null +++ b/tests_e2e/proxy/velocity/log4j2.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests_e2e/proxy/velocity/plugins/mapmodcompanion/config.toml b/tests_e2e/proxy/velocity/plugins/mapmodcompanion/config.toml index 710c34c..b0e4fc6 100644 --- a/tests_e2e/proxy/velocity/plugins/mapmodcompanion/config.toml +++ b/tests_e2e/proxy/velocity/plugins/mapmodcompanion/config.toml @@ -1,6 +1,3 @@ -[overrides] -1984 = 1337 - [world_id.modern] enabled = true diff --git a/tests_e2e/proxy/velocity/files/velocity.toml b/tests_e2e/proxy/velocity/velocity.toml similarity index 93% rename from tests_e2e/proxy/velocity/files/velocity.toml rename to tests_e2e/proxy/velocity/velocity.toml index 4efd530..051a46d 100644 --- a/tests_e2e/proxy/velocity/files/velocity.toml +++ b/tests_e2e/proxy/velocity/velocity.toml @@ -69,16 +69,6 @@ ping-passthrough = "DISABLED" # If not enabled (default is true) player IP addresses will be replaced by in logs enable-player-address-logging = true -[servers] -# Configure your servers here. Each key represents the server's name, and the value -# represents the IP address of the server to connect to. -main = "server:25565" - -# In what order we should try servers when a player logs in or is kicked from a server. -try = [ - "main" -] - [forced-hosts] [advanced] diff --git a/tests_e2e/proxy/waterfall b/tests_e2e/proxy/waterfall deleted file mode 120000 index d1c42c0..0000000 --- a/tests_e2e/proxy/waterfall +++ /dev/null @@ -1 +0,0 @@ -bungeecord \ No newline at end of file diff --git a/tests_e2e/requirements.txt b/tests_e2e/requirements.txt new file mode 100644 index 0000000..15468a3 --- /dev/null +++ b/tests_e2e/requirements.txt @@ -0,0 +1,7 @@ +certifi==2023.11.17 +charset-normalizer==3.3.2 +idna==3.6 +PyYAML==6.0.1 +requests==2.31.0 +toml==0.10.2 +urllib3==2.1.0 diff --git a/tests_e2e/run.py b/tests_e2e/run.py new file mode 100755 index 0000000..61c1f19 --- /dev/null +++ b/tests_e2e/run.py @@ -0,0 +1,462 @@ +#!/usr/bin/env python + +from logging import DEBUG, INFO, basicConfig, getLogger +from pathlib import Path +from signal import SIGINT +from sys import argv, stdout +from os import environ, makedirs, path +from subprocess import PIPE, STDOUT, run, Popen +from shutil import copytree, rmtree, copyfile +import requests +from yaml import load as yaml_load, dump as yaml_dump, Loader as YamlLoader, Dumper as YamlDumper +from toml import load as toml_load, dump as toml_dump + +logger = getLogger("tests_e2e") + +PARENT_DIR = Path(path.realpath(__file__)).parent + +SERVER_OVERRIDES = { + 'red': 42, + 'blue': 2000, +} + +PROXY_OVERRIDES = { + '42': 1337, + '2000': 3000, +} + +JAVA_DEBUG = { + 'proxy': 9010, + 'red': 9011, + 'blue': 9012, +} + +VERSIONS = { + '1.8.9': { + 'server': '1.8.8', + 'java': 8, + 'world': '1.8.9', + }, + **( + dict(( + version, + { + 'java': 8, + 'world': '1.8.9', + }, + ) for version in ( + '1.9.4', + '1.10.2', + '1.11.2', + '1.12.2', + )) + ), + **( + dict(( + version, + { + 'java': 8, + 'protocollib': True, + 'world': '1.13.2', + }, + ) for version in ( + '1.13.2', + '1.14.4', + '1.15.2', + '1.16.1', + '1.16.2', + '1.16.3', + )) + ), + **( + dict(( + version, + { + 'java': 8, + 'world': '1.13.2', + }, + ) for version in ( + '1.16.4', + '1.16.5', + )) + ), + **( + dict((version, {}) for version in ( + '1.17.1', + '1.18.2', + '1.19.3', + '1.19.4', + '1.20.1', + )) + ), + **( + dict(( + version, + { + 'bot': False, + }, + ) for version in ( + '1.20.2', + '1.20.4', + )) + ), +} + + +def gradle_build(): + logger.debug("Running gradle build") + run( + ['./gradlew', 'build'], + check=True, + cwd=str(PARENT_DIR.parent), + ) + + +def docker(l: list[str], **kwargs): + logger.debug(f"Running docker with: {l}") + p = Popen( + ['docker', *l], + cwd=str(PARENT_DIR), + **kwargs, + ) + p._sigint_wait_secs = 60.0 + return p + + +def copy_clean(_from: Path, _to: Path): + logger.debug(f"Copying {_from} -> {_to}") + if _to.is_dir(): + rmtree(_to) + copytree(_from, _to, symlinks=True) + + +def files_dir_of(entity: str): + return test_env_dir / f"{entity}" + + +def copy_plugin(into: Path): + copyfile( + PARENT_DIR.parent / "packages" / "single" / + "build" / "libs" / "MapModCompanion.jar", + into / "MapModCompanion.jar", + ) + + +def copy_server_files(): + logger.debug("Copying server files") + for server_name in servers: + _to = files_dir_of(server_name) + copy_clean( + PARENT_DIR / "server", + _to, + ) + copy_plugin(_to / "plugins") + mmc_config_path = _to / "plugins" / "MapModCompanion" / "config.yml" + with open(mmc_config_path, "r") as f: + config = yaml_load(f, Loader=YamlLoader) + config["overrides"] = { + 'world': SERVER_OVERRIDES[server_name], + } + logger.debug(f"Writing config {mmc_config_path}: {config}") + with open(mmc_config_path, "w") as f: + yaml_dump(config, f, Dumper=YamlDumper) + + +def copy_proxy_files(): + logger.debug("Copying proxy files") + _to = files_dir_of("proxy") + copy_clean( + PARENT_DIR / "proxy" / proxy_type, + _to, + ) + if proxy_type == "velocity": + mmc_config_path = _to / "plugins" / "mapmodcompanion" / "config.toml" + config = toml_load(mmc_config_path) + def save(data): + with open(mmc_config_path, "w") as f: + toml_dump(data, f) + else: + mmc_config_path = _to / "plugins" / "MapModCompanion" / "config.yml" + with open(mmc_config_path, "r") as f: + config = yaml_load(f, Loader=YamlLoader) + def save(data): + with open(mmc_config_path, "w") as f: + yaml_dump(data, f, Dumper=YamlDumper) + config["overrides"] = PROXY_OVERRIDES + logger.debug(f"Writing config {mmc_config_path}: {config}") + save(config) + copy_plugin(_to / "plugins") + copyfile( + PARENT_DIR / "proxy" / "Dockerfile", + _to / "Dockerfile", + ) + + +if __name__ == "__main__": + servers = [ + 'red', + 'blue', + ] + + debug_level = int(environ.get("DEBUG")) if environ.get("DEBUG") else 0 + debug = debug_level or environ.get("ACTIONS_STEP_DEBUG") == "true" + basicConfig( + level=DEBUG if debug else INFO + ) + + enable_blue = environ.get("BLUE") == "1" + if not enable_blue: + servers.remove('blue') + + java_debug = debug_level or environ.get("JAVA_DEBUG") + if java_debug: + logger.info("Java debugging enabled.") + logger.info("Use 127.0.0.1:9010 for proxy") + logger.info("Use 127.0.0.1:9011 for red server") + if enable_blue: + logger.info("Use 127.0.0.1:9011 for blue server") + + proxy_type, client_version, action = argv[1:] + + version_info = VERSIONS[client_version] + + test_name = f"mmc_test_{proxy_type}_{client_version}" + test_env_dir = PARENT_DIR / "test_env" / test_name + makedirs(test_env_dir, exist_ok=True) + + copy_server_files() + copy_proxy_files() + + docker_compose_file_contents = { + 'services': { + } + } + + if "bot" not in version_info or version_info["bot"] == True: + bot_container = test_name + bot_desc = { + 'container_name': test_name, + 'build': { + 'context': str(PARENT_DIR / "bot"), + 'args': [ + 'DEBUG=minecraft-protocol' + ] if debug_level > 1 else [ + ] + }, + 'environment': [ + 'BOT_HOST=proxy', + f'BOT_VERSION={client_version}', + ], + 'depends_on': [ + 'proxy' + ], + } + docker_compose_file_contents["services"]["bot"] = bot_desc + else: + logger.warning(f"Bot doesn't support {client_version}") + bot_container = None + assert action not in ("test",) + + if "java" in version_info: + server_java_version = version_info["java"] + else: + server_java_version = 17 + + if "server" in version_info: + server_version = version_info["server"] + else: + server_version = client_version + + if "world" in version_info: + world_version = version_info["world"] + else: + world_version = "1.17.1" + + for server_name in servers: + server_desc = { + 'build': { + 'context': server_name, + 'args': [ + f'TAG=java{server_java_version}' + ], + 'tags': [ + f'mmc-e2e-server-{server_name}:java{server_java_version}' + ], + }, + 'environment': [ + f'VERSION={server_version}' + ], + 'ports': [ + ] + } + if java_debug: + server_desc["ports"] += [ + f'{JAVA_DEBUG[server_name]}:9001' + ] + server_desc["environment"] += [ + 'JVM_XX_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=' + + '*:9001' if server_java_version > 8 else '9001' + ] + docker_compose_file_contents["services"][server_name] = server_desc + if "protocollib" in version_info and version_info["protocollib"] == True: + protocollib_source_file = test_env_dir / "ProtocolLib.jar" + if not protocollib_source_file.is_file(): + logger.info("Downloading ProtocolLib") + data = requests.get("https://github.com/dmulloy2/ProtocolLib/releases/download/4.8.0/ProtocolLib.jar").content + try: + with open(protocollib_source_file, "wb") as f: + f.write(data) + except Exception as e: + protocollib_source_file.unlink(missing_ok=True) + raise e + logger.info("Copying ProtocolLib") + copyfile( + protocollib_source_file, + files_dir_of(server_name) / "plugins" / "ProtocolLib.jar", + ) + world_dir = files_dir_of(server_name) / "world" + makedirs(world_dir, exist_ok=True) + copyfile( + PARENT_DIR / "saves" / world_version / f"{server_name}.dat", + world_dir / "level.dat" + ) + + proxy_desc = { + 'build': { + 'context': 'proxy', + }, + 'depends_on': [ + *servers, + ], + 'environment': [ + f'TYPE={proxy_type}', + ], + 'ports': [ + ], + } + if debug_level: + proxy_desc["ports"] += [ + '25565:25565', + ] + if java_debug: + proxy_desc["ports"] += [ + f'{JAVA_DEBUG["proxy"]}:9001' + ] + proxy_desc["environment"] += [ + 'JVM_XX_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:9001' + ] + + if proxy_type in ("waterfall", "bungeecord"): + bungee_config_path = test_env_dir / "proxy" / "config.yml" + with open(bungee_config_path, "r") as f: + bungee_config = yaml_load(f, Loader=YamlLoader) + bungee_config["server"] = dict( + (server_name, { + 'address': f'{server_name}:25565' + }) for server_name in servers + ) + with open(bungee_config_path, "w") as f: + yaml_dump(bungee_config, f, Dumper=YamlDumper) + + if proxy_type in ("velocity"): + velocity_config_path = test_env_dir / "proxy" / "velocity.toml" + velocity_config = toml_load(velocity_config_path) + velocity_config["servers"] = { + **dict( + ( + server_name, + f"{server_name}:25565" + ) for server_name in servers + ), + "try": [ + "red", + ], + } + with open(velocity_config_path, "w") as f: + toml_dump(velocity_config, f) + + docker_compose_file_contents["services"]["proxy"] = proxy_desc + + docker_compose_path = test_env_dir / "docker-compose.yml" + + logger.debug( + f"Writing {docker_compose_path}: {docker_compose_file_contents}") + with open(docker_compose_path, "w") as f: + yaml_dump(docker_compose_file_contents, f, Dumper=YamlDumper) + + auto = bot_container and action in ("test") + + compose = [ + 'compose', + '-f', + str(docker_compose_path), + ] + + if action == "build": + exit_code = docker([ + *compose, + 'build' + ]).wait() + exit(exit_code) + + docker_proc = docker([ + *compose, + 'up', + '--force-recreate', + '--build', + *(['--detach'] if auto else []), + ]) + + while True: + try: + exit_code = docker_proc.wait() + break + except KeyboardInterrupt: + docker_proc.send_signal(SIGINT) + exit(1) + + if auto: + logger.info(f"Waiting for {bot_container}") + docker_logs = docker( + [ + *compose, + 'logs', + *([ + '-f', + ] if debug_level else [ + '-f', + 'bot', + ]) + ], + stdout=PIPE, + stderr=STDOUT, + ) + docker_wait = docker( + [ + 'wait', + bot_container, + ], + stdout=PIPE, + stderr=STDOUT, + text=True + ) + + try: + while docker_wait.poll() is None: + ch = docker_logs.stdout.read(1) + if ch: + stdout.buffer.write(ch) + stdout.flush() + except KeyboardInterrupt: + docker_logs.kill() + + docker([ + *compose, + 'down', + ]).wait() + + if docker_wait.returncode != 0 or int(docker_wait.stdout.read()) != 0: + logger.error("Failed") + exit(1) + + logger.info("OK") diff --git a/tests_e2e/run.sh b/tests_e2e/run.sh index 1999068..2e23583 100755 --- a/tests_e2e/run.sh +++ b/tests_e2e/run.sh @@ -1,219 +1,6 @@ -#!/bin/bash -set -euo pipefail -IFS=$'\n\t' +#!/bin/sh -SELF=$(SELF=$(dirname "$0") && bash -c "cd \"$SELF\" && pwd") - -PROXY_TYPE="$1" -VERSION="$2" -ACTION="$3" - -JAR="$SELF/../packages/single/build/libs/MapModCompanion.jar" -NAME="mmc_test_"$PROXY_TYPE"_"$VERSION -TEST_CONTAINER_NAME="$NAME" -TEST_ENV="$SELF/test_env/$NAME" -PLUGINS_SERVER="$TEST_ENV/plugins_server" -PLUGINS_PROXY="$TEST_ENV/plugins_proxy" -VERSION_INFO_FILE_NAME="docker-compose.version_info.yml" -VERSION_INFO_FILE="$TEST_ENV/$VERSION_INFO_FILE_NAME" -VERSION_INFO_SOURCE="$SELF/versions/$VERSION.sh" -OVERRIDE_FILE_NAME="docker-compose.override.yml" -OVERRIDE_FILE="$TEST_ENV/$OVERRIDE_FILE_NAME" - -set +u -if [[ -z $DEBUG ]]; then - DEBUG="" - if [[ $ACTIONS_STEP_DEBUG == "true" ]]; then - DEBUG=1 - fi -fi -if [[ $DEBUG ]] || [[ $GRADLE_REBUILD ]]; then - (cd .. && ./gradlew build) -fi -set -u - -function debug_echo { - if [[ $DEBUG ]]; then - echo $@ - fi -} - -debug_echo "Reading $VERSION_INFO_SOURCE" -source "$VERSION_INFO_SOURCE" - -debug_echo "Working in: $TEST_ENV" -rm -rf "$TEST_ENV" -mkdir -p "$TEST_ENV" - -debug_echo "Populating server plugins directory" -rm -rf "$PLUGINS_SERVER" -mkdir "$PLUGINS_SERVER" -cp -r "$JAR" "$PLUGINS_SERVER/" -cp -r "$SELF/server/plugins/"* "$PLUGINS_SERVER/" - -debug_echo "Populating proxy plugins directory" -rm -rf "$PLUGINS_PROXY" -mkdir -p "$PLUGINS_PROXY" -cp -r "$JAR" "$PLUGINS_PROXY/" -cp -r "$SELF/proxy/$PROXY_TYPE/plugins/"* "$PLUGINS_PROXY/" - -debug_echo "Writing $VERSION_INFO_FILE_NAME" - -cat << EOF > "$VERSION_INFO_FILE" -services: - bot: - environment: - - BOT_VERSION=$CLIENT_VERSION - server: - build: - args: - - TAG=java$JAVA_VERSION - tags: - - "mmc-e2e-server:java$JAVA_VERSION" - environment: - - VERSION=$SERVER_VERSION - -EOF - -debug_echo "Writing $OVERRIDE_FILE_NAME" - -proxy_extra="" -server_extra="" - -if [[ "$ACTION" == "manual" ]]; then - proxy_extra=$(cat <<-EOF - ports: - - 25565:25565 -EOF -) - set +u - if [[ "$JAVA_DEBUG" ]]; then - echo "[NOTE] Java debugging enabled. Use 127.0.0.1:9010 for proxy, 127.0.0.1:9011 for server" - proxy_extra+=$(cat <<-EOF - - - 9010:9001 - environment: - - JVM_XX_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:9001 -EOF -) - server_extra=$(cat <<-EOF - ports: - - 9011:9001 - environment: - - JVM_XX_OPTS=-Ddisable.watchdog=true -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$([[ "$JAVA_VERSION" -lt 9 ]] && echo "9001" || echo "*:9001") -EOF -) - fi - set -u -fi - -cat << EOF > "$OVERRIDE_FILE" -services: - bot: - container_name: "$TEST_CONTAINER_NAME" - build: - args: - - DEBUG=$([[ "$DEBUG" -gt 1 ]] && echo "minecraft-protocol" || echo "") - proxy: - volumes: - - $TEST_ENV/plugins_proxy:/server/plugins -$proxy_extra - server: - volumes: - - $TEST_ENV/plugins_server:/data/plugins -$server_extra -EOF - -FILES=( - "$SELF/docker-compose.yml" - "$SELF/docker-compose.$PROXY_TYPE.yml" - "$VERSION_INFO_FILE" - "$OVERRIDE_FILE" -) - -FILES_FMT=`printf ' -f %s' "${FILES[@]}"` - -function docker_compose { - bash -c "docker compose$FILES_FMT $@" -} - -function docker_compose_down() { - docker_compose down --rmi local -} - -function perform_test { - debug_echo "Stopping old containers" - docker_compose_down >/dev/null - - local auto=1 - if [[ "$1" == "manual" || "$1" == "debug" ]]; then - local auto="" - fi - - set +u - if [[ "$PROTOCOLLIB_VERSION" ]]; then - set -u - local protocollib_path="$PLUGINS_SERVER/ProtocolLib.jar" - debug_echo "Will use ProtocolLib: $protocollib_path" - if [[ ! -f "$protocollib_path" ]]; then - wget "https://github.com/dmulloy2/ProtocolLib/releases/download/$PROTOCOLLIB_VERSION/ProtocolLib.jar" -O "$protocollib_path" - fi - fi - set -u - - debug_echo "Starting container" - docker_compose "up --force-recreate --build $([[ "$auto" ]] && echo "--detach" || echo "")" - - if [[ "$auto" ]]; then - trap docker_compose_down SIGINT - - if [[ $DEBUG ]]; then - docker compose logs -f & - else - docker compose logs -f bot & - fi - - debug_echo "Waiting for bot container to exit: $TEST_CONTAINER_NAME" - TEST_EXIT=`docker wait "$TEST_CONTAINER_NAME"` - debug_echo "Done: $TEST_EXIT" - - docker_compose_down >/dev/null 2>/dev/null - - if [[ "$TEST_EXIT" != "0" ]]; then - echo "⚠️ Test failed" >&2 - exit 1 - fi - fi -} - -case $ACTION in - convert) - echo "[ACTION] Convert" - docker_compose convert - ;; - - build) - echo "[ACTION] Building" - docker_compose build - ;; - - test) - echo "[ACTION] Performing automatic test; version: $VERSION, proxy: $PROXY_TYPE" - perform_test "auto" - ;; - - manual) - echo "[ACTION] Spinning up the server for manual test; version: $VERSION, proxy: $PROXY_TYPE" - perform_test "manual" - ;; - - cleanup) - echo "[ACTION] Cleaning up" - docker_compose "down --remove-orphans --rmi all -v" - ;; - - *) - echo "Unknown action" - exit 1 - ;; -esac +python3 -m venv venv +source venv/bin/activate +pip install -r requirements.txt +python run.py "$@" diff --git a/tests_e2e/saves/1.13.2/blue.dat b/tests_e2e/saves/1.13.2/blue.dat new file mode 100644 index 0000000000000000000000000000000000000000..975e3a4ae9221d4dd4b08a5edc2417450871a77e GIT binary patch literal 1628 zcmV-i2BY~OiwFP!000000DV@=ZyQAzAIJ8_>%@ukC<6KyfKWvGq7+c$N0J5{V#O&9 z1*sZ)Kii|s?yP2Jle!m>xS>d#TcGM0i3{Sw0jSCe)E*E=4shhaf&Ua~xNXRsve2z?~+TLQELy*gnYFolS6N%!Z?9I{_j$N2|E^n*~VP_PZCuEx1 zr12V1ok&pRsTl1#$33!`zBg$|2havt=c2cF^~byBch4gW>E|0%n&{Y%YGv^$=5a`= z9DuGJes-ByrzYP4Y2uh8rA|a+H58iU$;3v0ythiEU~}j#FD;*6I*0yDHtFa@R=z+V zFejQ(j`B?$DwK0^&=6sW&`>$Vh|#=9}1TCmd9X zOa)?xacD{rD^k!hff6YPVvR}IVZA-~bS9*?GgXZtf};h|Ko3dr(#4DCFO^7DLXh+z zXhJs`Y(#xQiharzGA=|W=#+0m23CxK6Z(9>6zy_YN_tL0XFl;3{PR52#shA!_+caQ_A`{Cm zTQks^j(I+*Yz~8)num6Tq4_j%?gB=Yi$N{GyGyc@{H%(hr%mCj^)#x`7$(u)m|!Ll zHxTVZg!rh(!96c1!2G4c*3g44J((p3J3hKi%6G8FQ^ zsGd1RwIh+uu3Pa7MX zE{RroSwfG+P#0p)$I)ajDw|Y`Osz4FO&q1!BDSvjq@qO~P)uw98f3&(Bu->Rd$69c ztr#MF^O-unoE;PVi%vu1{w)wM}XQs|gK7EpJ3uRq;_{xV?)=DPx;V>=2M z$?wMP)Qs|Kgp+eaL#Q$Xrp&sLO-wT&(RAaeGiot&eD(H_;(&9GrwU4@8@Vi1JHWA7 zLSUqKxX`Ia|9D8G3M)pO>Frs+vX7qa)$f}8;Ywk)A}coc!B=RZ#+Hj#r;2|1*iqj+ zIy$gKhQ{QxKw5>+f98es7ys#u+{OpH;#)<)xNvE z`K?E0vL%G};iibdZ71au+*`K1arPIxOrWYNP8jGJoL@oMVhtlUEqra8o-lM~xZ#)@ z({&+`_=JT#1T!(vT}O51n2OVwsay8>1SJ-kuKM3E@PfZ)pyZhijQU)M;9R0beGQ6tqGGz3!Ub80+N zsY?}rYJf1HZj$tuBYuYppGa?1Dm{4`tU1))d_81BnlTItj1QP?)UuohOp_vrc z5TE2$eKONjbRfkB8w^dEls2h>BRbM~q z&tj@~3XhdhaW)XLgr}S%vx&BAjB^NbIZ|yaIAk)`e3ZU9*@cM<`P+GGRS0{d$UY&{ z%r=cSfSOo=CQrm@KXcq8%gK9_hI9aJP<1YQ2UmW&Z+{OwvXp$jL6wb;`>5BJpI{z` zl&S%k+Px27CeG>UH$mAr=18d{XrzbIpu1CB0rK81k%G&ix4N==VdXsfGu@=46IuBk zeZZU;Mmfs2ai~zvx{mTP$P-f`+1f zV*#Hr%!IPLsTlO_V@f`+Tn*Z=bRsN7lDkkMi@hW&4h%c7iQ=)LGdiM2VwVOi)?{k+ zC1(aY)3MJdl`UX!6Z6oHFtneh&R@i+ayh64c+ZlYNj|G1=owr1dNYYCG={M_7!%9| z@&=-Ph!7w3I83sk0TY-=+dvn(bduuvKqBP0E$Y)u3kcPtrWLmhT4Q0PY7j|Yo6`}f zJej{5D^quX)rN*qQqO*eV>;}k!cr!F%^1bHu>oy+K*=M8I@PdtF#&5<0}Bo*tha(; zxeAmc&Qi(@)*0owjPgKW^sO_ypcxu~u*i6>e0Bf+!xKDb#?n)~CAoZxhDt_FRVdZd zsGd1RwI}1jP++LWCj5Pxe0fZ64BDJ@n~Zp^dYX9YH1YphJDbt+81ss)6DuL+79dz< zb_8r-&)DE2i?BSIYfEJ)Z%D}lc_fHy)zw;8OBLBNt%X=-CTSyO+GQNO4``IiPDsT@ zCK5K1k zW=V9)eFZ%hL0!s&GR`J<(dnpKW_p8h?BXcRRk3rmOe#j!0mVcXpg~GpMdDZq+JnuQ z?L;8(t<3b~a&AoUA3_n(Wmg7CTh0@2Ke7YajT|z)AMHsDXL6f!desv{NCSulwn~N# zt4zFYX~XQLW6%A*{bI5B!~3_M&+Y|MzJ7hH*#fG~gS+po-}~tC+eP9fWl?)*Gq%*1 zGU&K2YsIzT5ct|dYi+*9RPIF#{EpaEn9CrSM-Q@jZpGvD-bJG=UooA)WbBTUl-!D) zo>Y(+RI&zbOKm>>^|xAUNXovgJ~=31B_dx{k7bUFUB zNb>tpJ2Asw7dSe%41_v0V8-qn>BzJb5>2;`W=1Wij<4StQk-y^AH| z`qv(rOScf(hnrGBwx0MWxOZH64tM^ zOxJ}#;S(0}5bVT2cQdN96Dou{E*}DJyDuk*v8FYSke=Jea5Xx_Mb7p>i!Z;0SZ}9g zo4fbvgR|dzWZ~52WdpRflJ&l_%e-rVdDQ3;f3k>W>({^Wggwo^w6Uk6ztii&)_72I cVV}mu!diso(M(p9Aghdj0QQIqC6x;R01_7!kpKVy literal 0 HcmV?d00001 diff --git a/tests_e2e/saves/1.17.1/blue.dat b/tests_e2e/saves/1.17.1/blue.dat new file mode 100644 index 0000000000000000000000000000000000000000..ce9a970d32317cfded84e895fe2c04cf61cb28ad GIT binary patch literal 1984 zcmV;x2S4~9iwFP!00000|CLwEZyZS(ugN?-(|$jYHsKNk5(1%U&9b`^2*vh{?HKHh z5@T=9J#ku+-Lc)%Sk2#91 zqgsb8^hsZm-qEnhv^{TY$Ol@4H|%&)3U9HE{Jh6wKB8kVOBG%`{L>5f_hE~z=htUk zI}7}!+1kjN1GaLew2byC>65j%H#IgtP)TOa!!a4_3^qj3XMX(I@BZr_KfG6Ct0PKC zb4%w#;x^M{ASH<4RAPimOu*J-kx;1l(0*CLmn)|rV4Z?b>43G(R9Sl}rOlcHp%9yu zia(Wz8$<@i>MZnhH(pjN;!7bVB2Z^@Cgq`vHe>heu%AoIKKfo-2PdT*Ho#8YwVnS? zm`X-tB_kvw62=yZ2WK->Sz__~`*qebsU{xbrOsG~wIrXAhJMEGIKy33XKfi!q;Ukk zF^SRG`bk4G4;u=bBr{}lD8=h@c$97ET3E{t< z%|pA&!)(lR!W(%H*n&^axlx%8>BeoFwGbT$dtFXx??C=Nemk586!MqMiC7Ph5in z1b_*auK2{D)R^nkbvz4rmhmj&S;I4rXU&c+3n{)c{j(6xo@ES(MPE2e!^2TRu-Lc z=Kx*?KSK=O1FW&u=7Y_5A8f*|xgMX)K;o}~G5|y?xP*LXL+6Z}BNavdWsys%uDU9Y z9Sqj$?CxzC-6J$1W8e7$P^_C7tKuDH%Ev{VluWMWja|1nSKhA8L+3D3# z>5;gk9zf|h2cz<8F;Yir;6vmZM4X z0h!Tk-AO2?7A;2#nUt=2^Yf{6RKQiwaU78`@L_7se56i=q@Gr3xmmKT%J$? z4G#GWzK##mp;FVB2H=v{Gq898Lk<#GQ%X;!auMP@l-Imkjntutg{7$L`hGU}^RXK2 zYe7T51QfA!Lte$MDEldJfYsgtp?BbfMjoHAaP7gI0k4_`HXL&dN_pJ|bXhAezJN7%+>V3U z9#gE~sd1BX`BA3rj_-U7);MJzhytHpcc>jc1>4qYF~}_Wd0K0+#tt|1@Ha1By!7Cf zgUS60P<=8*_#iGi?cC(?V+%-CCY^UEXt$#6A)|Y8;w-MSrDLTnmtBQnk9K1o5m&Yc zM(Na5#&%rHdxsu;AS3{au%j%98L5D$R?H_uIl-?0+ll3aOvtF#WSuK6^HhHI)vJ$z zjG)``cW#Tzt!QH7k&~S0@YTn7UvM_|s>Q=CC7ME!(vDIW9qf+&#T2XLr-j*(+_>u6 z%XGp++7r@xZ1h!Ec)l!5KUNo{_cQT0r36PC!rVgIVT)Gn5Df6W7Zqw&K%9%O1ayR{ zUOqV`xK;lfubEk~-Yadpg%jn`@i3B43+zNs(mv&8VY7RZo+_k}`2pB?|NVoW8+#x9 z<*&c{{8x_t{Nb}7>^}eL-@b)Z=Rh*MTw~;5wkKVnxB&8EhdWX(>#cmJ%m04=tF`7I zfAsComG4c~dPLYC$J;O6%lc5MsP8ewu^!ST$*q^p==!$MwJ#v&kCT0kGKy+Im|nRR z-@2n=(4W8=C#YErXf}1zi_YJg{ZMIN868$XR>m8=^{JeAt6p0g+ts8}_yHCd)leKg;SI~A%U8ZNHPZGF7 zk(1t+%H|q76=voN7o9iL%z6}-}B#; S_pxy~_5T5Xd$dFk4*&qa6XA&f literal 0 HcmV?d00001 diff --git a/tests_e2e/saves/1.17.1/red.dat b/tests_e2e/saves/1.17.1/red.dat new file mode 100644 index 0000000000000000000000000000000000000000..95b10b933190b50f57ca3dd3afc6d440650aa28b GIT binary patch literal 1992 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 literal 0 HcmV?d00001 diff --git a/tests_e2e/saves/1.8.9/red.dat b/tests_e2e/saves/1.8.9/red.dat new file mode 100644 index 0000000000000000000000000000000000000000..a07abdb250598f0c1d5e580bf4e98a67cae5ae3c GIT binary patch literal 5539 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 literal 0 HcmV?d00001 diff --git a/tests_e2e/server/Dockerfile b/tests_e2e/server/Dockerfile index 3587b91..b62a66b 100644 --- a/tests_e2e/server/Dockerfile +++ b/tests_e2e/server/Dockerfile @@ -4,5 +4,5 @@ FROM itzg/minecraft-server:${TAG} ENV EULA=true TYPE=paper -COPY --chown=minecraft:minecraft files/ /data +COPY --chown=minecraft:minecraft . /data diff --git a/tests_e2e/server/files/log4j2.xml b/tests_e2e/server/log4j2.xml similarity index 100% rename from tests_e2e/server/files/log4j2.xml rename to tests_e2e/server/log4j2.xml diff --git a/tests_e2e/server/plugins/MapModCompanion/config.yml b/tests_e2e/server/plugins/MapModCompanion/config.yml index b61e2ad..3a33827 100644 --- a/tests_e2e/server/plugins/MapModCompanion/config.yml +++ b/tests_e2e/server/plugins/MapModCompanion/config.yml @@ -1,8 +1,5 @@ verbose: true -overrides: - world: 1984 - world_id: modern: enabled: true diff --git a/tests_e2e/server/files/server.properties b/tests_e2e/server/server.properties similarity index 100% rename from tests_e2e/server/files/server.properties rename to tests_e2e/server/server.properties diff --git a/tests_e2e/server/files/spigot.yml b/tests_e2e/server/spigot.yml similarity index 100% rename from tests_e2e/server/files/spigot.yml rename to tests_e2e/server/spigot.yml diff --git a/tests_e2e/versions/1.10.2.sh b/tests_e2e/versions/1.10.2.sh deleted file mode 100644 index f842556..0000000 --- a/tests_e2e/versions/1.10.2.sh +++ /dev/null @@ -1,3 +0,0 @@ -CLIENT_VERSION=1.10.2 - -source "$SELF/versions/_legacy.sh" diff --git a/tests_e2e/versions/1.11.2.sh b/tests_e2e/versions/1.11.2.sh deleted file mode 100644 index 46a8398..0000000 --- a/tests_e2e/versions/1.11.2.sh +++ /dev/null @@ -1,3 +0,0 @@ -CLIENT_VERSION=1.11.2 - -source "$SELF/versions/_legacy.sh" diff --git a/tests_e2e/versions/1.12.2.sh b/tests_e2e/versions/1.12.2.sh deleted file mode 100644 index 36d2c6a..0000000 --- a/tests_e2e/versions/1.12.2.sh +++ /dev/null @@ -1,3 +0,0 @@ -CLIENT_VERSION=1.12.2 - -source "$SELF/versions/_legacy.sh" diff --git a/tests_e2e/versions/1.13.2.sh b/tests_e2e/versions/1.13.2.sh deleted file mode 100644 index b6b97cf..0000000 --- a/tests_e2e/versions/1.13.2.sh +++ /dev/null @@ -1,4 +0,0 @@ -CLIENT_VERSION=1.13.2 - -source "$SELF/versions/_legacy.sh" -source "$SELF/versions/_needs_protocollib.sh" diff --git a/tests_e2e/versions/1.14.4.sh b/tests_e2e/versions/1.14.4.sh deleted file mode 100644 index bd558c3..0000000 --- a/tests_e2e/versions/1.14.4.sh +++ /dev/null @@ -1,4 +0,0 @@ -CLIENT_VERSION=1.14.4 - -source "$SELF/versions/_legacy.sh" -source "$SELF/versions/_needs_protocollib.sh" diff --git a/tests_e2e/versions/1.15.2.sh b/tests_e2e/versions/1.15.2.sh deleted file mode 100644 index 80e8de4..0000000 --- a/tests_e2e/versions/1.15.2.sh +++ /dev/null @@ -1,4 +0,0 @@ -CLIENT_VERSION=1.15.2 - -source "$SELF/versions/_legacy.sh" -source "$SELF/versions/_needs_protocollib.sh" diff --git a/tests_e2e/versions/1.16.1.sh b/tests_e2e/versions/1.16.1.sh deleted file mode 100644 index 6f7871f..0000000 --- a/tests_e2e/versions/1.16.1.sh +++ /dev/null @@ -1,4 +0,0 @@ -CLIENT_VERSION=1.16.1 - -source "$SELF/versions/_legacy.sh" -source "$SELF/versions/_needs_protocollib.sh" diff --git a/tests_e2e/versions/1.16.2.sh b/tests_e2e/versions/1.16.2.sh deleted file mode 100644 index 16836eb..0000000 --- a/tests_e2e/versions/1.16.2.sh +++ /dev/null @@ -1,4 +0,0 @@ -CLIENT_VERSION=1.16.2 - -source "$SELF/versions/_legacy.sh" -source "$SELF/versions/_needs_protocollib.sh" diff --git a/tests_e2e/versions/1.16.3.sh b/tests_e2e/versions/1.16.3.sh deleted file mode 100644 index 0ed5df4..0000000 --- a/tests_e2e/versions/1.16.3.sh +++ /dev/null @@ -1,4 +0,0 @@ -CLIENT_VERSION=1.16.3 - -source "$SELF/versions/_legacy.sh" -source "$SELF/versions/_needs_protocollib.sh" diff --git a/tests_e2e/versions/1.16.4.sh b/tests_e2e/versions/1.16.4.sh deleted file mode 100644 index 05a5b4a..0000000 --- a/tests_e2e/versions/1.16.4.sh +++ /dev/null @@ -1,3 +0,0 @@ -CLIENT_VERSION=1.16.4 - -source "$SELF/versions/_legacy.sh" diff --git a/tests_e2e/versions/1.16.5.sh b/tests_e2e/versions/1.16.5.sh deleted file mode 100644 index c6c5b23..0000000 --- a/tests_e2e/versions/1.16.5.sh +++ /dev/null @@ -1,3 +0,0 @@ -CLIENT_VERSION=1.16.5 - -source "$SELF/versions/_legacy.sh" diff --git a/tests_e2e/versions/1.17.1.sh b/tests_e2e/versions/1.17.1.sh deleted file mode 100644 index 9b98f3b..0000000 --- a/tests_e2e/versions/1.17.1.sh +++ /dev/null @@ -1,3 +0,0 @@ -CLIENT_VERSION=1.17.1 - -source "$SELF/versions/_modern.sh" diff --git a/tests_e2e/versions/1.18.2.sh b/tests_e2e/versions/1.18.2.sh deleted file mode 100644 index 41f9b9d..0000000 --- a/tests_e2e/versions/1.18.2.sh +++ /dev/null @@ -1,3 +0,0 @@ -CLIENT_VERSION=1.18.2 - -source "$SELF/versions/_modern.sh" diff --git a/tests_e2e/versions/1.19.3.sh b/tests_e2e/versions/1.19.3.sh deleted file mode 100644 index f497121..0000000 --- a/tests_e2e/versions/1.19.3.sh +++ /dev/null @@ -1,3 +0,0 @@ -CLIENT_VERSION=1.19.3 - -source "$SELF/versions/_modern.sh" diff --git a/tests_e2e/versions/1.20.1.sh b/tests_e2e/versions/1.20.1.sh deleted file mode 100644 index 18e8ee7..0000000 --- a/tests_e2e/versions/1.20.1.sh +++ /dev/null @@ -1,3 +0,0 @@ -CLIENT_VERSION=1.20.1 - -source "$SELF/versions/_modern.sh" diff --git a/tests_e2e/versions/1.8.9.sh b/tests_e2e/versions/1.8.9.sh deleted file mode 100644 index ae01d28..0000000 --- a/tests_e2e/versions/1.8.9.sh +++ /dev/null @@ -1,3 +0,0 @@ -CLIENT_VERSION=1.8.9 -SERVER_VERSION=1.8.8 -JAVA_VERSION=8 diff --git a/tests_e2e/versions/1.9.4.sh b/tests_e2e/versions/1.9.4.sh deleted file mode 100644 index a71b2a7..0000000 --- a/tests_e2e/versions/1.9.4.sh +++ /dev/null @@ -1,3 +0,0 @@ -CLIENT_VERSION=1.9.4 - -source "$SELF/versions/_legacy.sh" diff --git a/tests_e2e/versions/_legacy.sh b/tests_e2e/versions/_legacy.sh deleted file mode 100644 index 14d3784..0000000 --- a/tests_e2e/versions/_legacy.sh +++ /dev/null @@ -1,3 +0,0 @@ -JAVA_VERSION=8 - -source "$SELF/versions/_same.sh" diff --git a/tests_e2e/versions/_modern.sh b/tests_e2e/versions/_modern.sh deleted file mode 100644 index c6ea0a1..0000000 --- a/tests_e2e/versions/_modern.sh +++ /dev/null @@ -1,3 +0,0 @@ -JAVA_VERSION=17 - -source "$SELF/versions/_same.sh" diff --git a/tests_e2e/versions/_needs_protocollib.sh b/tests_e2e/versions/_needs_protocollib.sh deleted file mode 100644 index 3fc26a3..0000000 --- a/tests_e2e/versions/_needs_protocollib.sh +++ /dev/null @@ -1 +0,0 @@ -PROTOCOLLIB_VERSION="4.8.0" diff --git a/tests_e2e/versions/_same.sh b/tests_e2e/versions/_same.sh deleted file mode 100644 index 2e10712..0000000 --- a/tests_e2e/versions/_same.sh +++ /dev/null @@ -1 +0,0 @@ -SERVER_VERSION="$CLIENT_VERSION"