Skip to content

Commit

Permalink
removed npm dependency for GMRT tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Francisco Dias committed Jan 30, 2025
1 parent 5cdd31c commit 7c1cf70
Show file tree
Hide file tree
Showing 25 changed files with 89 additions and 103 deletions.
6 changes: 3 additions & 3 deletions classes/commands/IgorRunTestsCommand.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,21 +164,21 @@ async def execute(self):

# Execute igor to get license file
access_key: str = self.get_argument('access_key')
license_path = user_folder / 'licence.plist'
license_path = USER_DIR / 'licence.plist'
await self.igor_get_license(access_key, license_path)
assert(license_path.exists())

# Exectute igor to get the latest runtime version
runtime_version: str = self.get_argument('runtime_version')
rss_feed: str = self.get_argument('feed')
runtime_version = await self.igor_get_runtime_version(user_folder, rss_feed, runtime_version)
runtime_version = await self.igor_get_runtime_version(USER_DIR, rss_feed, runtime_version)
assert(runtime_version is not None)

# Execute igor to install the requested runtime version
targets = self.get_targets()

platforms = targets.keys()
runtime_path = await self.igor_install_runtime(user_folder, rss_feed, runtime_version, platforms)
runtime_path = await self.igor_install_runtime(USER_DIR, rss_feed, runtime_version, platforms)
assert(runtime_path.exists())

# Execute ProjectTool to ensure correct project format
Expand Down
58 changes: 46 additions & 12 deletions classes/commands/RunTestsCommand.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import argparse
import os
import requests
import shutil
from pathlib import Path
import subprocess
from typing import Any
Expand All @@ -10,13 +12,13 @@
from utils.path_utils import ROOT_DIR

PROJECTS_DIR = ROOT_DIR / 'projects'
NODE_MODULES_DIR = ROOT_DIR / 'node_modules'

PROGRAM_FILES = Path(os.environ.get("ProgramFiles"))
NODEJS_NPM_PATH = PROGRAM_FILES / 'nodejs' / 'npm.cmd'
WORKSPACE_DIR = ROOT_DIR / 'workspace'

PROJECT_SCRIPT_PATH = PROJECTS_DIR / 'upgrade_project.bat'

GMPM_REGISTRY_URL = 'https://gmpm.gamemaker.io'
PROJECT_TOOL_PACKAGE = '@gm-tools/project-tool-win-x64'

class RunTestsCommand(BaseCommand):
"""
Command class for running the test servers. This is useful for executing tests
Expand Down Expand Up @@ -53,6 +55,10 @@ async def execute(self) -> None:
Executes the command to run the server. Manages configuration, cleans up directories,
ensures project compatibility, and launches the server lifecycle.
"""
# Clean workspace
file_utils.remove_directory(WORKSPACE_DIR)
file_utils.create_directory(WORKSPACE_DIR)

self.project_write_config()
run_name = self.get_argument("run_name")

Expand Down Expand Up @@ -92,14 +98,42 @@ def _prepare_gmrt_paths(self) -> tuple[Path, Path]:
return gmrt_exe, core_resources_path

async def _install_and_prepare_project_tool(self) -> Path:
"""Installs and prepares the ProjectTool utility."""
await async_utils.run_and_capture(
NODEJS_NPM_PATH,
["install", "--reg=https://gmpm.gamemaker.io/", "@gm-tools/project-tool-win-x64", "--no-save"]
)
project_tool_path = NODE_MODULES_DIR / "@gm-tools" / "project-tool-win-x64" / "ProjectTool.exe"
assert project_tool_path.exists(), f"ProjectTool.exe not found: {project_tool_path}"
return project_tool_path

# The registry URL that returns the package information JSON
project_tool_package_url = f'{GMPM_REGISTRY_URL}/{PROJECT_TOOL_PACKAGE}'

# Fetch the JSON metadata
response = requests.get(project_tool_package_url)
response.raise_for_status()

data = response.json()

# 1. Get the latest version from "dist-tags"
latest_version = data["dist-tags"]["latest"]

# 2. Retrieve the package info for that version
package_info = data["versions"][latest_version]

# 3. Extract the tarball URL
tarball_url = package_info["dist"]["tarball"]

# 4. Download the tarball
tarball_filename = WORKSPACE_DIR /f"project-tool-win-x64-{latest_version}.tgz"
with requests.get(tarball_url, stream=True) as tarball_response:
tarball_response.raise_for_status()
with open(tarball_filename, "wb") as f:
shutil.copyfileobj(tarball_response.raw, f)

print(f"[INFO] Downloaded ProjectTool tarball: {tarball_filename}")

import tarfile
with tarfile.open(tarball_filename) as tf:
tf.extractall(WORKSPACE_DIR / "project_tool")

# 6. Delete the original tarball
os.remove(tarball_filename)

return WORKSPACE_DIR / "project_tool" / "package" / "ProjectTool.exe"

def _run_project_tool(self, project_tool_path: Path, core_resources_path: Path) -> None:
"""Runs the ProjectTool for project compatibility adjustments."""
Expand Down
5 changes: 1 addition & 4 deletions projects/xUnit/fonts/handle_testFont/handle_testFont.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/sounds/handle_testSound/handle_testSound.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/sounds/snd_MP3/snd_MP3.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/sounds/snd_OGG/snd_OGG.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/sounds/snd_WAV/snd_WAV.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/sounds/snd_compressed/snd_compressed.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/sounds/snd_jump_MP3/snd_jump_MP3.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/sounds/snd_jump_OGG/snd_jump_OGG.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/sounds/snd_jump_WAV/snd_jump_WAV.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/sprites/sprAlphaTest/sprAlphaTest.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/sprites/sprCircle/sprCircle.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/sprites/sprSquare/sprSquare.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/sprites/sprTileset/sprTileset.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions projects/xUnit/tilesets/tilesAuto/tilesAuto.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 7c1cf70

Please sign in to comment.