From a40732948a4a5ad9a23394eab16ddd24825726e0 Mon Sep 17 00:00:00 2001 From: Konstantin Epishev Date: Wed, 24 Apr 2024 14:58:08 +0200 Subject: [PATCH] fix windows EINVAL error (fixes #43, via #44) --- .github/workflows/build.yml | 35 +++++++++++++++++++++++++++++++ .github/workflows/npm-publish.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- fetch-source.ps1 | 27 ++++++++++++++++++++++++ index.js | 3 ++- package-lock.json | 16 ++++++++++++-- package.json | 2 +- 7 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 fetch-source.ps1 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..1908228 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,35 @@ +name: Build + +on: + workflow_dispatch: + pull_request: + branches: + - "*" + push: + branches: + - "main" + - "hotfix-*" + +jobs: + build: + strategy: + fail-fast: false + matrix: + node-version: [ 18, 20, 21 ] + os: [ ubuntu-latest, windows-latest, macos-latest ] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + registry-url: https://registry.npmjs.org/ + - run: npm ci + - name: "Fetch & Unpack Allure Commandline from Maven Central" + run: ./fetch-source.sh + if: runner.os != 'Windows' + - name: "Fetch & Unpack Allure Commandline from Maven Central" + run: powershell -ExecutionPolicy Bypass -File fetch-source.ps1 + if: runner.os == 'Windows' + - run: npm link + - run: allure --version \ No newline at end of file diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index ceea373..9f87220 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -9,8 +9,8 @@ jobs: publish-npm: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: 12 registry-url: https://registry.npmjs.org/ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 011604b..49e7554 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: run: | expr "${{ github.event.inputs.releaseVersion }}" : '\(^[1-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\(-beta\.[1-9][0-9]*\)\{0,1\}\)$' - - uses: actions/checkout@v2.4.0 + - uses: actions/checkout@v4 with: token: ${{ secrets.QAMETA_CI }} @@ -25,7 +25,7 @@ jobs: git config --global user.name qameta-ci git config --global user.email qameta-ci@qameta.io - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v4 with: node-version: 14 diff --git a/fetch-source.ps1 b/fetch-source.ps1 new file mode 100644 index 0000000..f89b9ec --- /dev/null +++ b/fetch-source.ps1 @@ -0,0 +1,27 @@ +# Get version from package.json +$version = (Get-Content "package.json" -Raw | ConvertFrom-Json).version + +# Remove dist directory if it exists and create a new one +if(Test-Path -Path dist) { + Remove-Item -Path dist -Recurse -Force +} +New-Item -ItemType Directory -Path dist | Out-Null + +# Remove allure-commandline.zip if it exists +if(Test-Path -Path allure-commandline.zip) { + Remove-Item -Path allure-commandline.zip -Force +} + +# Download allure-commandline.zip from Maven repository +Invoke-WebRequest -Uri "https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/$version/allure-commandline-$version.zip" -OutFile allure-commandline.zip + +# Extract allure-commandline.zip to dist directory +Add-Type -AssemblyName System.IO.Compression.FileSystem +[System.IO.Compression.ZipFile]::ExtractToDirectory('allure-commandline.zip', 'dist') + +# Same as --strip-components=1 of tar +Move-Item "dist\allure-$version\*" "dist" +Remove-Item "dist\allure-$version\*" + +# List files in current directory +Get-ChildItem -Path . \ No newline at end of file diff --git a/index.js b/index.js index c363b30..5e054b8 100644 --- a/index.js +++ b/index.js @@ -6,6 +6,7 @@ var allureCommand = 'allure' + (isWindows ? '.bat' : ''); module.exports = function(args) { return require('child_process').spawn(path.join(__dirname, 'dist/bin', allureCommand), args, { env: process.env, - stdio: 'inherit' + stdio: 'inherit', + shell: true, }); } diff --git a/package-lock.json b/package-lock.json index 6eccdf6..ca73f48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,17 @@ { "name": "allure-commandline", - "version": "2.13.8", - "lockfileVersion": 1 + "version": "2.28.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "allure-commandline", + "version": "2.28.0", + "license": "Apache-2.0", + "bin": { + "allure": "bin/allure" + }, + "devDependencies": {} + } + } } diff --git a/package.json b/package.json index 5deaf1a..b38019a 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "index.js" ], "scripts": { - "test": "./bin/allure --version" + "test": "node ./bin/allure --version" }, "repository": "https://github.com/allure-framework/allure-npm.git", "license": "Apache-2.0",