11import { spawn } from "node:child_process" ;
22import fs from "node:fs/promises" ;
3- import { createServer , type IncomingMessage } from "node:http" ;
3+ import { createServer , type IncomingMessage , type ServerResponse } from "node:http" ;
44import type { AddressInfo } from "node:net" ;
55import os from "node:os" ;
66import path from "node:path" ;
@@ -40,7 +40,7 @@ async function spawnOpenClaw(
4040 } ) ;
4141}
4242
43- async function buildGitHubSkillZip ( commit : string ) : Promise < Buffer > {
43+ async function buildGitHubSkillZip ( ) : Promise < Buffer > {
4444 const zip = new JSZip ( ) ;
4545 zip . file ( "skills-main/skills/aiq-deploy/SKILL.md" , "# AIQ Deploy\n" ) ;
4646 zip . file ( "skills-main/skills/aiq-deploy/skill-card.md" , "# Card\n" ) ;
@@ -53,8 +53,8 @@ describe("openclaw skills install ClawHub GitHub-backed E2E", () => {
5353 const commit = "c" . repeat ( 40 ) ;
5454 const telemetryBodies : unknown [ ] = [ ] ;
5555 const requestLog : string [ ] = [ ] ;
56- const githubZipBytes = await buildGitHubSkillZip ( commit ) ;
57- const server = createServer ( async ( req , res ) = > {
56+ const githubZipBytes = await buildGitHubSkillZip ( ) ;
57+ async function handleRequest ( req : IncomingMessage , res : ServerResponse ) : Promise < void > {
5858 const url = new URL ( req . url ?? "/" , "http://127.0.0.1" ) ;
5959 requestLog . push ( `${ req . method ?? "GET" } ${ url . pathname } ` ) ;
6060
@@ -92,8 +92,18 @@ describe("openclaw skills install ClawHub GitHub-backed E2E", () => {
9292
9393 res . writeHead ( 404 , { "Content-Type" : "text/plain; charset=utf-8" } ) ;
9494 res . end ( "not found" ) ;
95+ }
96+ const server = createServer ( ( req , res ) => {
97+ void handleRequest ( req , res ) . catch ( ( error : unknown ) => {
98+ res . writeHead ( 500 , { "Content-Type" : "text/plain; charset=utf-8" } ) ;
99+ res . end ( error instanceof Error ? error . message : String ( error ) ) ;
100+ } ) ;
101+ } ) ;
102+ await new Promise < void > ( ( resolve ) => {
103+ server . listen ( 0 , "127.0.0.1" , ( ) => {
104+ resolve ( ) ;
105+ } ) ;
95106 } ) ;
96- await new Promise < void > ( ( resolve ) => server . listen ( 0 , "127.0.0.1" , resolve ) ) ;
97107
98108 const registry = `http://127.0.0.1:${ ( server . address ( ) as AddressInfo ) . port } ` ;
99109 const stateDir = await fs . mkdtemp ( path . join ( os . tmpdir ( ) , "openclaw-clawhub-cli-e2e-" ) ) ;
@@ -134,7 +144,11 @@ describe("openclaw skills install ClawHub GitHub-backed E2E", () => {
134144 ] ,
135145 } ) ;
136146 } finally {
137- await new Promise < void > ( ( resolve ) => server . close ( ( ) => resolve ( ) ) ) ;
147+ await new Promise < void > ( ( resolve ) => {
148+ server . close ( ( ) => {
149+ resolve ( ) ;
150+ } ) ;
151+ } ) ;
138152 await fs . rm ( stateDir , { recursive : true , force : true } ) ;
139153 }
140154 } , 30_000 ) ;
0 commit comments