From cb2e2d1c5f13da59c7d85de7a3d17a99682f8575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20G=C3=BCnzler?= Date: Thu, 29 Sep 2022 17:34:26 +0200 Subject: [PATCH 1/2] feat: allow building test binaries separatly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Robert Günzler --- package.json | 1 + scripts/build.mjs | 71 +++++++++++++++++++++++++++++++---------------- 2 files changed, 48 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 741a602..af55cf2 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "main": "dist/api.js", "scripts": { "build": "zx ./scripts/build.mjs", + "build:test": "zx ./scripts/build.mjs --target=test", "clean": "rimraf ./build", "format": "npm run format:cpp && npm run format:js", "format:cpp": "clang-format -style=chromium -i postject-api.h src/**.cpp test/**.c test/**.cpp", diff --git a/scripts/build.mjs b/scripts/build.mjs index 3adbf99..e88b7ee 100755 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -1,5 +1,6 @@ #!/usr/bin/env zx +let target = argv.target; let jobs = argv.jobs; if (!jobs) { @@ -15,34 +16,56 @@ if (!jobs) { } } -try { - await which("emcmake"); -} catch { - console.log("ERROR: Couldn't find `emcmake`, is emsdk installed?"); - process.exit(1); -} +async function build() { + try { + await which("emcmake"); + } catch { + console.log("ERROR: Couldn't find `emcmake`, is emsdk installed?"); + process.exit(1); + } + + // Create build folder if needed + if (!(await fs.exists("./build"))) { + await $`mkdir -p build`; + } + + cd("build"); -// Create build folder if needed -if (!(await fs.exists("./build"))) { - await $`mkdir build`; + // Build with emsdk + await $`emcmake cmake -G Ninja ..`; + await $`cmake --build . -j ${jobs}`; + + // Bundle api.js and copy artifacts to dist + await fs.copy("../src/api.js", "api.js"); + await $`esbuild api.js --bundle --platform=node --outfile=../dist/api.js`; + await fs.copy("../src/cli.js", "../dist/cli.js"); + await fs.copy("../postject-api.h", "../dist/postject-api.h"); + + cd(".."); } -cd("build"); -// Build with emsdk -await $`emcmake cmake -G Ninja ..`; -await $`cmake --build . -j ${jobs}`; +async function test() { + // Create build folder if needed + if (!(await fs.exists("./build/test"))) { + await $`mkdir -p build/test`; + } -// Bundle api.js and copy artifacts to dist -await fs.copy("../src/api.js", "api.js"); -await $`esbuild api.js --bundle --platform=node --outfile=../dist/api.js`; -await fs.copy("../src/cli.js", "../dist/cli.js"); -await fs.copy("../postject-api.h", "../dist/postject-api.h"); + cd("build/test"); -// Build tests -if (!(await fs.exists("./test"))) { - await $`mkdir test`; + await $`cmake ../../test`; + await $`cmake --build .`; + + cd("../.."); } -cd("test"); -await $`cmake ../../test`; -await $`cmake --build .`; +switch (target) { + case "build": + await build(); + break; + case "test": + await test(); + break; + default: + await build(); + await test(); +} From 0474447e64eff7746b1656e64a8f31b443315334 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20G=C3=BCnzler?= Date: Thu, 29 Sep 2022 16:04:28 +0200 Subject: [PATCH 2/2] ci: bring back testing on alpine MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ref: https://github.com/postmanlabs/postject/issues/31 Signed-off-by: Robert Günzler --- .circleci/config.yml | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 03fd51b..7a7fddf 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -208,15 +208,18 @@ jobs: - checkout - npm_install: os: << parameters.os >> + - when: + condition: + equal: [ "alpine", << parameters.os >> ] + steps: + - prepare: + os: << parameters.os >> + - run: + command: npm run build:test - test ## WORKFLOWS ## -matrix: &matrix - matrix: - parameters: - os: [ debian, linux, macos, "win/default" ] - workflows: postject: jobs: @@ -225,8 +228,16 @@ workflows: parameters: os: [ linux, macos, "win/default" ] - build: - <<: *matrix + matrix: + parameters: + os: [ linux, macos, "win/default" ] - test: - <<: *matrix + matrix: + parameters: + os: [ macos, "win/default" ] requires: [ build-<< matrix.os >> ] - + - test: + matrix: + parameters: + os: [ alpine, debian ] + requires: [ build-linux ]