diff --git a/chutney/.env.nix b/.env.chutney.nix
similarity index 96%
rename from chutney/.env.nix
rename to .env.chutney.nix
index 62778789c..a9da24d16 100644
--- a/chutney/.env.nix
+++ b/.env.chutney.nix
@@ -9,6 +9,7 @@ mkShell {
buildInputs = [
unstable.nodejs_20
+ unstable.act
chromium
geckodriver
jdk
diff --git a/.envrc b/.envrc
new file mode 100644
index 000000000..69af45de3
--- /dev/null
+++ b/.envrc
@@ -0,0 +1,23 @@
+# Setup a working environment without hassle using nix and direnv
+# For more information, visit https://direnv.net/
+
+# Install node, npm and geckodriver by loading .env.chutney.nix expression
+use_nix .env.chutney.nix
+
+# Some tools (ex. Intellij) might need to configure paths to node, npm etc.
+# You can use following symlinks provided in .env folder
+
+## Create .env folder
+[[ ! -d .env.chutney ]] && mkdir .env.chutney && echo "Create .env.chutney folder"
+
+## Symlink npm home
+ln -sfn $(dirname "$(dirname "$(readlink -f $(which npm))")") .env.chutney/npm_home && echo "Symlink npm home dir"
+
+## Symlink JDK
+ln -sfn $JAVA_HOME .env.chutney/jdk && echo "Symlink jdk \"$JAVA_HOME\""
+
+## Symlink Node
+ln -sfn $(readlink -f $(which node)) .env.chutney/node && echo "Symlink node \"$(readlink -f $(which node))"
+
+# Run npm install if needed
+[[ ! -d ./chutney/ui/node_modules ]] && echo "node_modules not found. Starting npm install" && cd ./chutney/ui && npm install && cd -
diff --git a/chutney/.github/ISSUE_TEMPLATE/bug_report_form.yml b/.github/ISSUE_TEMPLATE/bug_report_form.yml
similarity index 88%
rename from chutney/.github/ISSUE_TEMPLATE/bug_report_form.yml
rename to .github/ISSUE_TEMPLATE/bug_report_form.yml
index 8fd2f6ccc..55a38a290 100644
--- a/chutney/.github/ISSUE_TEMPLATE/bug_report_form.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report_form.yml
@@ -12,6 +12,18 @@ body:
Did you search issues labeled with Bug ? If you find anything relevant to you, up-vote 👍 or add a comment 💬 !
For more information, please visit our [contribute section](https://github.com/chutney-testing/chutney/blob/master/CONTRIBUTING.md)
+ - type: dropdown
+ id: component
+ attributes:
+ label: Which part of our software stack is concerned by the problem ?
+ multiple: true
+ options:
+ - Chutney
+ - Documentation
+ - IDEA plugin
+ - Kotlin DSL
+ validations:
+ required: true
- type: textarea
id: what-happened
attributes:
diff --git a/chutney/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
similarity index 100%
rename from chutney/.github/ISSUE_TEMPLATE/config.yml
rename to .github/ISSUE_TEMPLATE/config.yml
diff --git a/chutney/.github/ISSUE_TEMPLATE/feature_request_form.yml b/.github/ISSUE_TEMPLATE/feature_request_form.yml
similarity index 83%
rename from chutney/.github/ISSUE_TEMPLATE/feature_request_form.yml
rename to .github/ISSUE_TEMPLATE/feature_request_form.yml
index 9f54c9e61..2877bfe3c 100644
--- a/chutney/.github/ISSUE_TEMPLATE/feature_request_form.yml
+++ b/.github/ISSUE_TEMPLATE/feature_request_form.yml
@@ -8,6 +8,18 @@ body:
value: |
🙌 Please, make sure your feature request is unique 🦄 !
Did you search issues labeled with Enhancement ? If you find anything relevant to you, up-vote 👍 or add a comment 💬 !
+ - type: dropdown
+ id: component
+ attributes:
+ label: Which part of our software stack is concerned by the feature ?
+ multiple: true
+ options:
+ - Chutney
+ - Documentation
+ - IDEA plugin
+ - Kotlin DSL
+ validations:
+ required: true
- type: textarea
id: use-case
attributes:
diff --git a/.github/actions/build-chutney/action.yml b/.github/actions/build-chutney/action.yml
new file mode 100644
index 000000000..b77f43ee1
--- /dev/null
+++ b/.github/actions/build-chutney/action.yml
@@ -0,0 +1,53 @@
+name: 'build chutney'
+description: 'build chutney'
+inputs:
+ goals:
+ default: "clean install -V -B"
+ description: "Maven goals to execute"
+ cache-artifacts:
+ default: ""
+ description: "path of artifacts to be cached"
+runs:
+ using: "composite"
+ steps:
+ - name: Cache node
+ uses: actions/cache@v3
+ with:
+ path: '**/node'
+ key: node_cache
+
+ - name: Cache node_modules
+ uses: actions/cache@v3
+ with:
+ path: '**/node_modules'
+ key: node_module_cache
+
+ - uses: actions/checkout@v4
+
+ - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+ if: ${{ ! contains(inputs.goals, '-DskipTests') }}
+ shell: bash
+ run: |
+ echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+
+ - name: Build Chutney
+ shell: bash
+ run: |
+ cd ./chutney
+ echo "Running: ${{inputs.goals}}"
+ mvn ${{ inputs.goals }}
+ cd ..
+
+ - name: Codecov
+ if: ${{ ! contains(inputs.goals, '-DskipTests') }}
+ uses: codecov/codecov-action@v3
+
+ - name: Temporarily cache jar artifacts
+ if: inputs.cache-artifacts != ''
+ uses: actions/upload-artifact@v4
+ with:
+ name: chutney-artifacts
+ path: ${{inputs.cache-artifacts}}
+ retention-days: 1
+ overwrite: true
+
diff --git a/.github/actions/build-dsl/action.yml b/.github/actions/build-dsl/action.yml
new file mode 100644
index 000000000..0cc94d7c9
--- /dev/null
+++ b/.github/actions/build-dsl/action.yml
@@ -0,0 +1,31 @@
+name: 'build all projects'
+description: 'build all projects sequentially'
+inputs:
+ goals:
+ default: "clean build :chutney-kotlin-dsl:publishToMavenLocal"
+ description: "Gradle goals to execute"
+ cache-artifacts:
+ default: ""
+ description: "path of artifacts to be cached"
+
+runs:
+ using: "composite"
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Build DSL
+ shell: bash
+ run: |
+ cd ./kotlin-dsl
+ echo "Running: ${{inputs.goals}}"
+ ./gradlew ${{inputs.goals}} :chutney-kotlin-dsl:publishToMavenLocal
+ cd ..
+
+ - name: Temporarily cache jar artifacts
+ if: inputs.cache-artifacts != ''
+ uses: actions/upload-artifact@v4
+ with:
+ name: dsl-artifacts
+ path: ${{inputs.cache-artifacts}}
+ retention-days: 1
+ overwrite: true
diff --git a/.github/actions/build-plugin/action.yml b/.github/actions/build-plugin/action.yml
new file mode 100644
index 000000000..a39e70404
--- /dev/null
+++ b/.github/actions/build-plugin/action.yml
@@ -0,0 +1,31 @@
+name: 'build all projects'
+description: 'build all projects sequentially'
+inputs:
+ goals:
+ default: "clean buildPlugin"
+ description: "Gradle goals to execute"
+ cache-artifacts:
+ default: ""
+ description: "path of artifacts to be cached"
+
+runs:
+ using: "composite"
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Build Plugin
+ shell: bash
+ run: |
+ cd ./idea-plugin
+ echo "Running: ${{inputs.goals}}"
+ ./gradlew ${{inputs.goals}}
+ cd ..
+
+ - name: Temporarily cache jar artifacts
+ if: inputs.cache-artifacts != ''
+ uses: actions/upload-artifact@v4
+ with:
+ name: plugin-artifacts
+ path: ${{inputs.cache-artifacts}}
+ retention-days: 1
+ overwrite: true
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 000000000..3c3f9c0f3
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,9 @@
+version: 2
+updates:
+- package-ecosystem: maven
+ directory: "/chutney/"
+ schedule:
+ interval: monthly
+ open-pull-requests-limit: 10
+ labels:
+ - dependencies
diff --git a/chutney/.github/pull_request_template.md b/.github/pull_request_template.md
similarity index 100%
rename from chutney/.github/pull_request_template.md
rename to .github/pull_request_template.md
diff --git a/chutney/.github/release.yml b/.github/release.yml
similarity index 100%
rename from chutney/.github/release.yml
rename to .github/release.yml
diff --git a/.github/workflows/build-all-template.yml b/.github/workflows/build-all-template.yml
new file mode 100644
index 000000000..e0c74aeec
--- /dev/null
+++ b/.github/workflows/build-all-template.yml
@@ -0,0 +1,158 @@
+name: "Build all template"
+
+on:
+ workflow_call:
+ inputs:
+ skipTests:
+ default: false
+ type: boolean
+ description: "Skip tests if true"
+ release:
+ default: false
+ type: boolean
+ description: "Release if true"
+ cache-artifacts:
+ default: ""
+ type: string
+ description: "path of artifacts to be cached"
+ server-id:
+ type: string
+ default: github
+ description: "DistributionManagement repository id"
+
+ secrets:
+ gpg-private-key:
+ description: "Chutney gpg private key"
+ required: false
+ gpg-passphrase:
+ description: "Chutney gpg passphrase"
+ required: false
+ gpg-key-id:
+ description: "Chutney gpg key id"
+ required: false
+ maven-username:
+ description: "MAVEN_USERNAME secret"
+ required: false
+ maven-password:
+ description: "MAVEN_PASSWORD secret"
+ required: false
+ github-token:
+ description: "GITHUB_TOKEN secret"
+ required: false
+
+ outputs:
+ PROJECT_VERSION:
+ description: "Chutney Version"
+ value: ${{ jobs.all.outputs.PROJECT_VERSION }}
+
+defaults:
+ run:
+ working-directory: .
+
+jobs:
+ all:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ packages: write
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Setup JDK
+ uses: actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: 17
+ cache: 'maven'
+ server-id: ${{inputs.server-id}}
+ server-username: MAVEN_USERNAME
+ server-password: MAVEN_PASSWORD
+ gpg-private-key: ${{ secrets.gpg-private-key }}
+ gpg-passphrase: CHUTNEY_GPG_PASSPHRASE
+
+ - uses: actions/checkout@v4
+ - name: Retrieve chutney version from pom.xml
+ id: get-version
+ run: cd ./chutney && echo "PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_OUTPUT && cd ..
+
+ - name: Resolve chutney maven goal from inputs
+ id: chutney-goals
+ run: |
+ skipTestArg=""
+ mvnGoals="clean install"
+ if ${{ inputs.skipTests }}; then
+ skipTestArg="-DskipTests"
+ fi
+ if ${{ inputs.release }}; then
+ mvnGoals="deploy -P ${{inputs.server-id}}"
+ skipTestArg="-DskipTests"
+ fi
+ echo "CHUTNEY_GOALS=$mvnGoals $skipTestArg -V -B" >> $GITHUB_OUTPUT
+
+ - name: Build Chutney
+ id: build-chutney
+ uses: ./.github/actions/build-chutney
+ env:
+ MAVEN_USERNAME: ${{secrets.maven-username}}
+ MAVEN_PASSWORD: ${{secrets.maven-password}}
+ CHUTNEY_GPG_PASSPHRASE: ${{ secrets.gpg-passphrase }}
+ with:
+ goals: ${{steps.chutney-goals.outputs.CHUTNEY_GOALS}}
+ cache-artifacts: ${{ inputs.cache-artifacts }}
+
+ - name: Install api-insecure
+ shell: bash
+ run: |
+ mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file \
+ -Dfile=./chutney/packaging/local-api-unsecure/target/chutney-local-api-unsecure-${{steps.get-version.outputs.PROJECT_VERSION}}.jar \
+ -DgroupId=com.chutneytesting \
+ -DartifactId=local-api-unsecure \
+ -Dversion=${{steps.get-version.outputs.PROJECT_VERSION}} \
+ -Dpackaging=jar
+
+ - name: Resolve dsl gradle goal from inputs
+ id: dsl-goals
+ run: |
+ skipTestArg=""
+ gradleGoals="clean build"
+ if ${{ inputs.skipTests }}; then
+ skipTestArg="-x test"
+ fi
+ if ${{ inputs.release }}; then
+ gradleGoals="publish -Pserver-id=${{inputs.server-id}}"
+ skipTestArg="-x test"
+
+ fi
+ echo "DSL_GOALS=$gradleGoals $skipTestArg" >> $GITHUB_OUTPUT
+
+ - name: Build DSL
+ uses: ./.github/actions/build-dsl
+ env:
+ MAVEN_USERNAME: ${{secrets.maven-username}}
+ MAVEN_PASSWORD: ${{secrets.maven-password}}
+ CHUTNEY_GPG_KEY_ID: ${{ secrets.gpg-key-id }}
+ CHUTNEY_GPG_KEY: ${{ secrets.gpg-private-key }}
+ CHUTNEY_GPG_PASSPHRASE: ${{ secrets.gpg-passphrase }}
+ with:
+ goals: ${{steps.dsl-goals.outputs.DSL_GOALS}}
+ cache-artifacts: ${{ inputs.cache-artifacts }}
+
+ - name: Resolve plugin gradle goal from inputs
+ if: ${{! inputs.release}}
+ id: plugin-goals
+ run: |
+ skipTestArg=""
+ if ${{ inputs.skipTests }}; then
+ skipTestArg="-x test"
+ fi
+ echo "PLUGIN_GOALS=clean buildPlugin $skipTestArg" >> $GITHUB_OUTPUT
+
+ - name: Build Plugin
+ if: ${{! inputs.release}}
+ uses: ./.github/actions/build-plugin
+ with:
+ goals: ${{steps.plugin-goals.outputs.PLUGIN_GOALS}}
+ cache-artifacts: ${{ inputs.cache-artifacts }}
+
+ outputs:
+ PROJECT_VERSION: ${{ steps.get-version.outputs.PROJECT_VERSION }}
diff --git a/.github/workflows/build-all.yml b/.github/workflows/build-all.yml
new file mode 100644
index 000000000..7a0de03ec
--- /dev/null
+++ b/.github/workflows/build-all.yml
@@ -0,0 +1,13 @@
+name: "Build all"
+
+on:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+
+jobs:
+ build:
+ uses: ./.github/workflows/build-all-template.yml
+ with:
+ skipTests: ${{ startsWith(github.head_ref, 'release/') }}
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
new file mode 100644
index 000000000..e92169a20
--- /dev/null
+++ b/.github/workflows/codeql-analysis.yml
@@ -0,0 +1,73 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL"
+
+on:
+ push:
+ branches: [ main ]
+ paths-ignore:
+ - 'docs/**'
+
+jobs:
+ codeql-analyze:
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: [ 'java', 'javascript', 'typescript', 'kotlin' ]
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
+ # Learn more about CodeQL language support at https://git.io/codeql-language-support
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Set up JDK 17
+ uses: actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: 17
+ cache: "maven"
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v2
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v2
+
+ # ℹ️ Command-line programs to run using the OS shell.
+ # 📚 https://git.io/JvXDl
+
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
+
+ #- run: |
+ # make bootstrap
+ # make release
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v2
diff --git a/chutney/.github/workflows/dependency-convergence.yml b/.github/workflows/convergence-chutney.yml
similarity index 51%
rename from chutney/.github/workflows/dependency-convergence.yml
rename to .github/workflows/convergence-chutney.yml
index 54cac009f..6ff662cf4 100644
--- a/chutney/.github/workflows/dependency-convergence.yml
+++ b/.github/workflows/convergence-chutney.yml
@@ -1,27 +1,29 @@
-name: Convergence
+name: "Chutney Dependency Convergence"
on:
- push:
- branches: [ 'release/**' ]
pull_request:
- branches: [ master ]
+ branches: [ main ]
+ paths:
+ - 'chutney/**'
+
+defaults:
+ run:
+ working-directory: ./chutney
jobs:
- build:
+ convergence-chutney:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Set up JDK 17
- uses: actions/setup-java@v2
+ uses: actions/setup-java@v4
with:
- distribution: 'adopt'
+ distribution: 'temurin'
java-version: 17
- name: Cache maven
- uses: actions/cache@v2.1.3
+ uses: actions/cache@v3
with:
path: ~/.m2/repository
key: maven_cache
- name: Build with Maven
- env:
- BUILD_ENV: 'github-actions'
run: mvn -B -V validate -Dconvergence -fae
diff --git a/.github/workflows/release-docker-template.yml b/.github/workflows/release-docker-template.yml
new file mode 100644
index 000000000..8b0414584
--- /dev/null
+++ b/.github/workflows/release-docker-template.yml
@@ -0,0 +1,62 @@
+name: "Release docker images on ghcr"
+
+on:
+ workflow_call:
+ inputs:
+ version:
+ type: string
+ description: "Project version"
+ secrets:
+ github-token:
+ description: "GITHUB_TOKEN secret"
+ required: true
+
+jobs:
+ publish-server-image:
+ name: Publish server docker image on ghcr
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ packages: write
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Download server artifacts
+ uses: actions/download-artifact@v4
+ with:
+ name: chutney-artifacts
+ path: artifacts
+
+ - name: Login to Github Packages
+ uses: docker/login-action@v1
+ with:
+ registry: ghcr.io
+ username: ${{ github.actor }}
+ password: ${{ secrets.github-token }}
+
+ - name: Build and push server docker image
+ uses: docker/build-push-action@v2
+ with:
+ context: ${{ github.workspace }}
+ file: ${{ github.workspace }}/chutney/.docker/server/Dockerfile
+ tags: |
+ ghcr.io/chutney-testing/chutney-suite/server:latest
+ ghcr.io/chutney-testing/chutney-suite/server:${{ inputs.version }}
+ push: true
+ build-args: |
+ JAR_PATH=artifacts/chutney/packaging/local-dev/target
+
+ - name: Build and push ui docker image
+ uses: docker/build-push-action@v2
+ with:
+ context: ${{ github.workspace }}
+ file: ${{ github.workspace }}/chutney/.docker/ui/Dockerfile
+ tags: |
+ ghcr.io/chutney-testing/chutney-suite/ui:latest
+ ghcr.io/chutney-testing/chutney-suite/ui:${{ inputs.version }}
+ push: true
+ build-args: |
+ WEBSITE=artifacts/chutney/ui/dist
+ CONF=chutney/.docker/ui
+
+
diff --git a/docs/.github/workflows/publish.yml b/.github/workflows/release-docs.yml
similarity index 65%
rename from docs/.github/workflows/publish.yml
rename to .github/workflows/release-docs.yml
index c61b509b7..fd58c34be 100644
--- a/docs/.github/workflows/publish.yml
+++ b/.github/workflows/release-docs.yml
@@ -1,13 +1,21 @@
-name: docs
+name: "Publish Documentation"
+
on:
push:
branches:
- main
+ paths:
+ - 'docs/**'
+
+defaults:
+ run:
+ working-directory: ./docs
+
jobs:
- deploy:
+ publish-doc:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- uses: actions/setup-python@v2
with:
python-version: 3.x
diff --git a/.github/workflows/release-github-template.yml b/.github/workflows/release-github-template.yml
new file mode 100644
index 000000000..2770c56f7
--- /dev/null
+++ b/.github/workflows/release-github-template.yml
@@ -0,0 +1,55 @@
+name: "Release on Github"
+
+on:
+ workflow_call:
+
+jobs:
+ create-github-release:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Create github release
+ id: create_release
+ uses: actions/create-release@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: ${{ github.ref }}
+ release_name: Release ${{ github.ref }}
+ body: 'TODO'
+ draft: false
+ prerelease: false
+ outputs:
+ RELEASE_PATH: ${{ steps.create_release.outputs.upload_url }}
+
+ publish-to-github-maven-registry:
+ uses: ./.github/workflows/build-all-template.yml
+ with:
+ release: true
+ secrets:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ maven-username: ${{ github.actor }}
+ maven-password: ${{ secrets.GITHUB_TOKEN }}
+
+
+ upload-plugin-to-release:
+ needs: [ create-github-release]
+ runs-on: ubuntu-latest
+ steps:
+ - name: get plugin artifacts from build job
+ uses: actions/download-artifact@v4
+ with:
+ name: plugin-artifacts
+ path: artifacts
+
+ - name: Upload artifacts to github release
+ uses: actions/upload-release-asset@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ upload_url: ${{ needs.create-github-release.outputs.RELEASE_PATH }}
+ asset_path: artifacts/idea-plugin/build/distributions/chutney-idea-plugin-${{ github.ref_name }}.zip
+ asset_name: chutney-idea-plugin-${{ github.ref_name }}.zip
+ asset_content_type: application/zip
+
+
+
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 000000000..42d61cd85
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,44 @@
+name: "Release all"
+
+on:
+ push:
+ tags:
+ - '*.*.*'
+
+jobs:
+ build:
+ uses: ./.github/workflows/build-all-template.yml
+ with:
+ skipTests: true
+ cache-artifacts: |
+ chutney/packaging/local-dev/target/chutney-local-dev-*.jar
+ idea-plugin/build/distributions/*.zip
+ chutney/ui/dist
+
+ release-github:
+ needs: [ build ]
+ if: ${{ contains(github.ref_name, 'RC') }}
+ uses: ./.github/workflows/release-github-template.yml
+
+ release-to-OSSRH:
+ if: ${{ ! contains(github.ref_name, 'RC') }}
+ needs: [ build ]
+ uses: ./.github/workflows/build-all-template.yml
+ with:
+ release: true
+ server-id: ossrh
+ secrets:
+ gpg-private-key: ${{secrets.CHUTNEY_GPG_PRIVATE_KEY}}
+ gpg-passphrase: ${{ secrets.CHUTNEY_GPG_PASSPHRASE }}
+ gpg-key-id: ${{ secrets.CHUTNEY_GPG_KEY_ID }}
+ maven-username: ${{ secrets.OSSRH_USERNAME }}
+ maven-password: ${{ secrets.OSSRH_PASSWORD }}
+
+ release-docker:
+ needs: [ build ]
+ uses: ./.github/workflows/release-docker-template.yml
+ with:
+ version: ${{needs.build.outputs.PROJECT_VERSION}}
+ secrets:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..190f24ed8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,22 @@
+######################
+# Intellij
+######################
+**/.idea/*
+!.idea/codeStyleSettings.xml
+!.idea/codeStyles
+!.idea/runConfigurations
+*.iml
+*.iws
+*.ipr
+*.ids
+*.orig
+
+
+######################
+# Visual Studio Code
+######################
+.vscode/
+**/.sts4-cache
+
+
+.env.chutney
diff --git a/chutney/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml
similarity index 100%
rename from chutney/.idea/codeStyleSettings.xml
rename to .idea/codeStyleSettings.xml
diff --git a/chutney/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
similarity index 100%
rename from chutney/.idea/codeStyles/Project.xml
rename to .idea/codeStyles/Project.xml
diff --git a/chutney/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
similarity index 100%
rename from chutney/.idea/codeStyles/codeStyleConfig.xml
rename to .idea/codeStyles/codeStyleConfig.xml
diff --git a/chutney/.idea/runConfigurations/server_all_tests.xml b/.idea/runConfigurations/server_all_tests.xml
similarity index 89%
rename from chutney/.idea/runConfigurations/server_all_tests.xml
rename to .idea/runConfigurations/server_all_tests.xml
index b83aa01eb..1a7cd5e00 100644
--- a/chutney/.idea/runConfigurations/server_all_tests.xml
+++ b/.idea/runConfigurations/server_all_tests.xml
@@ -11,9 +11,9 @@
-
+
-
+
\ No newline at end of file
diff --git a/chutney/.idea/runConfigurations/server_integration_tests.xml b/.idea/runConfigurations/server_integration_tests.xml
similarity index 91%
rename from chutney/.idea/runConfigurations/server_integration_tests.xml
rename to .idea/runConfigurations/server_integration_tests.xml
index 21a290869..b8b7057c5 100644
--- a/chutney/.idea/runConfigurations/server_integration_tests.xml
+++ b/.idea/runConfigurations/server_integration_tests.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/chutney/.idea/runConfigurations/server_unit_tests.xml b/.idea/runConfigurations/server_unit_tests.xml
similarity index 91%
rename from chutney/.idea/runConfigurations/server_unit_tests.xml
rename to .idea/runConfigurations/server_unit_tests.xml
index ca757ff97..021beca95 100644
--- a/chutney/.idea/runConfigurations/server_unit_tests.xml
+++ b/.idea/runConfigurations/server_unit_tests.xml
@@ -10,7 +10,7 @@
-
+
diff --git a/.idea/runConfigurations/start_angular_app.xml b/.idea/runConfigurations/start_angular_app.xml
new file mode 100644
index 000000000..1875bad4e
--- /dev/null
+++ b/.idea/runConfigurations/start_angular_app.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/chutney/.idea/runConfigurations/start_local_server.xml b/.idea/runConfigurations/start_local_server.xml
similarity index 89%
rename from chutney/.idea/runConfigurations/start_local_server.xml
rename to .idea/runConfigurations/start_local_server.xml
index 2d336500e..78afac7aa 100644
--- a/chutney/.idea/runConfigurations/start_local_server.xml
+++ b/.idea/runConfigurations/start_local_server.xml
@@ -5,6 +5,7 @@
+
@@ -13,4 +14,4 @@
-
+
\ No newline at end of file
diff --git a/MERGE_MONOREPO.md b/MERGE_MONOREPO.md
new file mode 100644
index 000000000..f84a88801
--- /dev/null
+++ b/MERGE_MONOREPO.md
@@ -0,0 +1,134 @@
+https://gfscott.com/blog/merge-git-repos-and-keep-commit-history/
+
+# On créé le répertoire de mono repo et on va dedans
+mkdir monorepo
+cd monorepo
+
+# On clone les projets qu'on veut merger ensemble
+➜ git cl git@github.com:chutney-testing/chutney.git
+➜ git cl git@github.com:chutney-testing/chutney-testing.github.io.git
+➜ git cl git@github.com:chutney-testing/chutney-idea-plugin.git
+➜ git cl git@github.com:chutney-testing/chutney-kotlin-dsl.git
+
+# On doit avoir la structure suivant dans ./monorepo
+---
+➜ ls
+chutney chutney-idea-plugin chutney-kotlin-dsl chutney-testing.github.io
+---
+
+# Dans chaque répertoire projet, il faut préparer la structure qu'on va vouloir dans ./monorepo
+# Au moment du merge des projets ensemble, le contenu de chaque projet est mis ensemble dans ./monorepo
+# Donc pour éviter les conflits et le fourre-tout, il faut rajouter un niveau de répertoire supplémentaire, qui va "remonter" sous ./monorepo
+# Si on ne fait pas ça, c'est tout le contenu de chaque répertoire, donc le bordel...
+➜ cd chutney
+➜ mkdir chutney # on créé un répertoire qui va contenir tout le projet, c'est lui qui va remonter après sous /monorepo
+# on déplace tout dans chutney, sauf le .git et on doit avoir la structure suivante :
+---
+➜ ls -al
+.git chutney
+---
+
+# on ajoute les modifs et on commit
+➜ git add .
+➜ git ci -m "chore(chutney): Enedis transfert - monorepo migration"
+
+# On refait pareil pour tous les projets qu'on va vouloir merger ensemble
+# Après on doit avoir une arborescence telle que :
+
+└── monorepo
+ └── chutney
+ └── .git
+ └── chutney
+ ├── README.md
+ ├── ...
+ └── chutney-kotlin-dsl
+ └── .git
+ └── kotlin-dsl
+ ├── README.md
+ ├── ...
+ └── chutney-testing.github.io
+ └── .git
+ └── docs
+ ├── README.md
+ ├── ...
+ └── chutney-idea-plugin
+ └── .git
+ └── idea-plugin
+ ├── README.md
+ ├── ...
+
+# Après le merge, les répertoires idea-plugin, docs, kotlin-dsl et chutney vont remonter sous /monorepo
+# Pour l'instant, on a un path tel que ./monorepo/chutney/chutney, il faut donc renommer sinon on aura un conflit
+# On veut avoir ./monorepo/chutney_tmp/chutney
+
+➜ mv chutney chutney_tmp # on renomme le répertoire pour éviter le conflit après
+
+# Ensuite, on créé un projet git dans ./monorepo
+git init
+
+# Puis on ajoute chaque répertoire comme si c'était un remote
+➜ git remote add -f chutney ./chutney_tmp
+➜ git remote add -f chutney-testing.github.io ./chutney-testing.github.io
+➜ git remote add -f chutney-idea-plugin ./chutney-idea-plugin
+➜ git remote add -f kotlin-dsl ./chutney-kotlin-dsl
+
+# On a maintenant fetch les repo et on doit voir les branches distantes tel que
+---
+➜ git br -a
+ remotes/chutney-idea-plugin/master
+ remotes/chutney-testing.github.io/main
+ remotes/chutney/master
+ remotes/kotlin-dsl/master
+---
+
+# Maintenant on fait le merge
+# A chaque merge, le no-commit permet de vérifier, puis on valide en faisant un commit soit même
+➜ git merge kotlin-dsl/master --no-commit --allow-unrelated-histories
+➜ git merge chutney-idea-plugin/master --no-commit --allow-unrelated-histories
+➜ git merge chutney-testing.github.io/main --no-commit --allow-unrelated-histories
+➜ git merge chutney/master --no-commit --allow-unrelated-histories
+
+---
+➜ git ls
+chutney
+docs
+idea-plugin
+kotlin-dsl
+---
+
+# Après on supprime les répertoires qui ont servis de "remote" distant pour préparer la structure
+---
+➜ git st
+## main
+?? chutney-idea-plugin/
+?? chutney-kotlin-dsl/
+?? chutney-testing.github.io/
+?? chutney_tmp/
+---
+
+# On supprime tous les remotes
+---
+➜ git remote -v
+chutney ./chutney_tmp (fetch)
+chutney ./chutney_tmp (push)
+chutney-idea-plugin ./chutney-idea-plugin (fetch)
+chutney-idea-plugin ./chutney-idea-plugin (push)
+chutney-testing.github.io ./chutney-testing.github.io (fetch)
+chutney-testing.github.io ./chutney-testing.github.io (push)
+kotlin-dsl ./chutney-kotlin-dsl (fetch)
+kotlin-dsl ./chutney-kotlin-dsl (push)
+---
+
+# Puis on squash tous les commits de migration en un seul
+
+---
+➜ git l
+N 69a0ae78 (HEAD -> main) chore(kdsl): Enedis transfert - monorepo migration
+N 881c7ae1 chore(idea-plugin): Enedis transfert - monorepo migration
+N c4e9119e chore(docs): Enedis transfert - monorepo migration
+N d96b7bed (kotlin-dsl/master) chore(kdsl): Enedis transfert - monorepo migration
+N b17469e1 (chutney-testing.github.io/main) chore(docs): Enedis transfert - monorepo migration
+N bfc6413e (chutney-idea-plugin/master) chore(idea-plugin): Enedis transfert - monorepo migration
+N 45d04a72 (chutney/master) chore(chutney): Enedis transfert - monorepo migration
+---
+
diff --git a/chutney/README.md b/README.md
similarity index 85%
rename from chutney/README.md
rename to README.md
index 94648b585..d5b2b01d8 100644
--- a/chutney/README.md
+++ b/README.md
@@ -1,10 +1,9 @@
-#
+#
## Spice up your spec , Better `taste` your app !
[![Build](https://github.com/chutney-testing/chutney/workflows/Build/badge.svg?branch=master)](https://github.com/chutney-testing/chutney/actions)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/559893368d134d729b204891e3ce0239)](https://www.codacy.com/gh/chutney-testing/chutney?utm_source=github.com&utm_medium=referral&utm_content=chutney-testing/chutney&utm_campaign=Badge_Grade)
[![Coverage Status](https://codecov.io/gh/chutney-testing/chutney/branch/master/graph/badge.svg)](https://codecov.io/gh/chutney-testing/chutney/)
-[![FOSSA Status](https://app.fossa.com/api/projects/custom%2B8595%2Fgit%40github.com%3Achutney-testing%2Fchutney.git.svg?type=shield)](https://app.fossa.com/projects/custom%2B8595%2Fgit%40github.com%3Achutney-testing%2Fchutney.git?ref=badge_shield)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.chutneytesting/server/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.chutneytesting/server)
[![Zulip chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://chutney-testing.zulipchat.com/)
@@ -52,11 +51,11 @@ You don't need to be a developer to contribute, nor do much, you can simply:
* etc.
To help you start, we invite you to read:
-* [Contributing](CONTRIBUTING.md), which gives you rules and code conventions to respect
-* [Getting started](GETTING_STARTED.md), which document :
+* [Contributing](chutney/CONTRIBUTING.md), which gives you rules and code conventions to respect
+* [Getting started](chutney/GETTING_STARTED.md), which document :
* How to install and use Chutney as a User
* How to install and setup the required environment for developing
-* [Help Wanted](HELP_WANTED.md), if you wish to help us, but you don't know where to start, you might find some ideas in here !
+* [Help Wanted](chutney/HELP_WANTED.md), if you wish to help us, but you don't know where to start, you might find some ideas in here !
To contribute to this documentation (README, CONTRIBUTING, etc.), we conforms to the [CommonMark Spec](https://spec.commonmark.org/)
@@ -75,6 +74,7 @@ For a more informal place to chat, if you worry about feeling dumb in the open o
Core contributors :
* [Mael Besson](https://github.com/bessonm)
* [Nicolas Brouand](https://github.com/nbrouand)
+ * [Alexandre Delaunay](https://github.com/DelaunayAlex)
* [Matthieu Gensollen](https://github.com/boddissattva)
* [Karim Goubbaa](https://github.com/KarimGl)
* [Loic Ledoyen](https://github.com/ledoyen)
@@ -99,10 +99,6 @@ Chutney has been successfully applied to ease the automation of hundreds of manu
### Horizons
Chutney original vision strive to ease the collaboration of the 3 amigos (business people, testers and developers).
-Over the past 2 years Chutney has diverged from our initial goals due to contextual reasons, but we learnt a lot on the way.
+Over the years Chutney has diverged from our initial goals due to contextual reasons, but we learnt a lot on the way.
On the horizon we want to provide a custom and seamless experience to each profile of the 3 amigos. This is still a **work in progress**
-
-## Architecture Overview
-
-![archi](https://user-images.githubusercontent.com/7816908/132717205-bb092328-e639-4a80-90d4-f1cdabe7e8a4.jpg)
diff --git a/chutney/.docker/ui/Dockerfile b/chutney/.docker/ui/Dockerfile
index 1aee6c2b7..645664499 100644
--- a/chutney/.docker/ui/Dockerfile
+++ b/chutney/.docker/ui/Dockerfile
@@ -1,7 +1,8 @@
FROM nginx:1.17.3-alpine
ARG WEBSITE=ui/dist
+ARG CONF=.docker/ui
COPY $WEBSITE/chutney /usr/share/nginx/html
-COPY .docker/ui/nginx/nginx.conf /etc/nginx/conf.d/default.conf
-COPY .docker/ui/certif /certif
+COPY $CONF/nginx/nginx.conf /etc/nginx/conf.d/default.conf
+COPY $CONF/certif /certif
LABEL org.opencontainers.image.source https://github.com/chutney-testing/chutney
EXPOSE 80 443
diff --git a/chutney/.envrc b/chutney/.envrc
deleted file mode 100644
index e78ddfa7c..000000000
--- a/chutney/.envrc
+++ /dev/null
@@ -1,24 +0,0 @@
-# Setup a working environment without hassle using nix and direnv
-# For more information, visit https://direnv.net/
-
-# Install node, npm and geckodriver by loading .env.nix expression
-use_nix .env.nix
-
-# Some tools (ex. Intellij) might need to configure paths to node, npm etc.
-# You can use following symlinks provided in .env folder
-
-## Create .env folder
-[[ ! -d .env ]] && mkdir .env && echo "Create .env folder"
-
-## Symlink npm home
-ln -sfn $(dirname "$(dirname "$(readlink -f $(which npm))")") .env/npm_home && echo "Symlink npm home dir"
-
-## Symlink JDK
-ln -sfn $JAVA_HOME .env/jdk && echo "Symlink jdk \"$JAVA_HOME\""
-
-## Symlink Node
-ln -sfn $(readlink -f $(which node)) .env/node && echo "Symlink node \"$(readlink -f $(which node))"
-
-
-# Run npm install if needed
-[[ ! -d ./ui/node_modules ]] && echo "node_modules not found. Starting npm install" && cd ui && npm install && cd ..
diff --git a/chutney/.github/dependabot.yml b/chutney/.github/dependabot.yml
deleted file mode 100644
index 8e3a22c2f..000000000
--- a/chutney/.github/dependabot.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-version: 2
-updates:
-- package-ecosystem: maven
- directory: "/"
- schedule:
- interval: monthly
- open-pull-requests-limit: 10
- labels:
- - dependencies
- ignore:
- - dependency-name: com.github.tomakehurst:wiremock-standalone
- versions:
- - 2.27.2
- - dependency-name: org.apache.maven.plugins:maven-resources-plugin
- versions:
- - 3.2.0
- - dependency-name: com.orientechnologies:orientdb-core
- versions:
- - 3.1.7
- - dependency-name: org.eclipse.jgit:org.eclipse.jgit
- versions:
- - 5.10.0.202012080955-r
- - dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-guava
- versions:
- - 2.12.1
- - dependency-name: com.fasterxml.jackson.datatype:jackson-datatypes-collections
- versions:
- - 2.12.1
diff --git a/chutney/.github/workflows/codeql-analysis.yml b/chutney/.github/workflows/codeql-analysis.yml
deleted file mode 100644
index 82e89c83e..000000000
--- a/chutney/.github/workflows/codeql-analysis.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-# For most projects, this workflow file will not need changing; you simply need
-# to commit it to your repository.
-#
-# You may wish to alter this file to override the set of languages analyzed,
-# or to provide custom queries or build logic.
-#
-# ******** NOTE ********
-# We have attempted to detect the languages in your repository. Please check
-# the `language` matrix defined below to confirm you have the correct set of
-# supported CodeQL languages.
-#
-name: "CodeQL"
-
-on:
- push:
- branches: [ master ]
-
-jobs:
- analyze:
- name: Analyze
- runs-on: ubuntu-latest
- permissions:
- actions: read
- contents: read
- security-events: write
-
- strategy:
- fail-fast: false
- matrix:
- language: [ 'java', 'javascript' ]
- # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
- # Learn more about CodeQL language support at https://git.io/codeql-language-support
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v2
-
- - name: Set up JDK 17
- uses: actions/setup-java@v2
- with:
- distribution: 'adopt'
- java-version: 17
-
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v2
- with:
- languages: ${{ matrix.language }}
- # If you wish to specify custom queries, you can do so here or in a config file.
- # By default, queries listed here will override any specified in a config file.
- # Prefix the list here with "+" to use these queries and those in the config file.
- # queries: ./path/to/local/query, your-org/your-repo/queries@main
-
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
- # If this step fails, then you should remove it and run the build manually (see below)
- - name: Autobuild
- uses: github/codeql-action/autobuild@v2
-
- # ℹ️ Command-line programs to run using the OS shell.
- # 📚 https://git.io/JvXDl
-
- # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
- # and modify them (or add more) to build your code if your project
- # uses a compiled language
-
- #- run: |
- # make bootstrap
- # make release
-
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v2
diff --git a/chutney/.github/workflows/maven.yml b/chutney/.github/workflows/maven.yml
deleted file mode 100644
index 8880c5f73..000000000
--- a/chutney/.github/workflows/maven.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-# This workflow will build a Java project with Maven
-# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
-
-name: Build
-
-on:
- push:
- branches: [ master ]
- pull_request:
- branches: [ master ]
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v2
- - name: Set up JDK 17
- uses: actions/setup-java@v2
- with:
- distribution: 'adopt'
- java-version: 17
- - name: Cache maven
- uses: actions/cache@v2.1.3
- with:
- path: ~/.m2/repository
- key: maven_cache
- - name: Cache node
- uses: actions/cache@v2.1.3
- with:
- path: '**/node'
- key: node_16.15.0_cache
- - name: Cache node_modules
- uses: actions/cache@v2.1.3
- with:
- path: '**/node_modules'
- key: node_16.15.0_module_cache
- - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
- run: |
- echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
- - name: Build with Maven
- env:
- BUILD_ENV: 'github-actions'
- run: mvn -B -V verify
- - name: Codecov
- uses: codecov/codecov-action@v1.2.1
diff --git a/chutney/.github/workflows/release.yml b/chutney/.github/workflows/release.yml
deleted file mode 100644
index 2eb51f288..000000000
--- a/chutney/.github/workflows/release.yml
+++ /dev/null
@@ -1,169 +0,0 @@
-name: Release
-
-on:
- push:
- tags:
- - '*.*.*'
-jobs:
- deploy:
- runs-on: ubuntu-latest
- name: Deploy to central
- steps:
- - uses: actions/checkout@v2
- - name: Set release version environment variable
- run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
-
- - name: Set up build
- uses: actions/setup-java@v2
- with:
- distribution: 'adopt'
- java-version: 17
- server-id: ossrh
- server-username: OSSRH_USERNAME
- server-password: OSSRH_PASSWORD
- gpg-private-key: ${{ secrets.CHUTNEY_GPG_PRIVATE_KEY }}
- gpg-passphrase: CHUTNEY_GPG_PASSPHRASE
-
- - name: Build with Maven
- env:
- BUILD_ENV: 'github-actions'
- run: mvn -B -V clean verify
-
- - name: Temporarily save server artifacts
- uses: actions/upload-artifact@v2
- with:
- name: server-artifacts
- path: |
- packaging/local-dev/target/chutney-local-dev-*.jar
- retention-days: 1
- - name: Temporarily save ui artifacts
- uses: actions/upload-artifact@v2
- with:
- name: ui-artifacts
- path: |
- ui/dist
- retention-days: 1
- - name: Publish to central
- run: mvn -DskipTests -Drelease=true deploy
- env:
- OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
- OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
- CHUTNEY_GPG_PASSPHRASE: ${{ secrets.CHUTNEY_GPG_PASSPHRASE }}
-
- - name: Create github release
- id: create_release
- uses: actions/create-release@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- tag_name: ${{ github.ref }}
- release_name: Release ${{ github.ref }}
- body: 'TODO'
- draft: false
- prerelease: false
-
- - name: Upload local-dev fatjar to github release
- id: upload-release-asset-fatjar-local-dev
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ${{ github.workspace }}/packaging/local-dev/target/chutney-local-dev-${{ env.RELEASE_VERSION }}.jar
- asset_name: chutney-local-dev-${{ env.RELEASE_VERSION }}.jar
- asset_content_type: application/jar
-
- - name: Upload local-dev signature to github release
- id: upload-release-asset-fatjar-sig-local-dev
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ${{ github.workspace }}/packaging/local-dev/target/chutney-local-dev-${{ env.RELEASE_VERSION }}.jar.asc
- asset_name: chutney-local-dev-${{ env.RELEASE_VERSION }}.jar.asc
- asset_content_type: application/pgp-signature
-
- - name: Upload local-api-unsecure fatjar to github release
- id: upload-release-asset-fatjar-local-api-unsecure
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ${{ github.workspace }}/packaging/local-api-unsecure/target/chutney-local-api-unsecure-${{ env.RELEASE_VERSION }}.jar
- asset_name: chutney-local-api-unsecure-${{ env.RELEASE_VERSION }}.jar
- asset_content_type: application/jar
-
- - name: Upload local-api-unsecure signature to github release
- id: upload-release-asset-fatjar-sig-local-api-unsecure
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ${{ github.workspace }}/packaging/local-api-unsecure/target/chutney-local-api-unsecure-${{ env.RELEASE_VERSION }}.jar.asc
- asset_name: chutney-local-api-unsecure-${{ env.RELEASE_VERSION }}.jar.asc
- asset_content_type: application/pgp-signature
- outputs:
- RELEASE_VERSION: ${{ env.RELEASE_VERSION }}
-
- docker-deploy-server:
- runs-on: ubuntu-latest
- needs: [ deploy ]
- name: Deploy server to docker registry
- steps:
- - uses: actions/checkout@v2
- - name: Download server artifacts
- uses: actions/download-artifact@v2
- with:
- name: server-artifacts
- path: artifacts/server
- - name: Login to Github Packages
- uses: docker/login-action@v1
- with:
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
- - name: Build and push server docker image
- uses: docker/build-push-action@v2
- with:
- context: ${{ github.workspace }}
- file: ${{ github.workspace }}/.docker/server/Dockerfile
- tags: |
- ghcr.io/chutney-testing/chutney/server:latest
- ghcr.io/chutney-testing/chutney/server:${{ needs.deploy.outputs.RELEASE_VERSION }}
- push: true
- build-args: |
- JAR_PATH=artifacts/server
-
- docker-deploy-ui:
- runs-on: ubuntu-latest
- needs: [ deploy ]
- name: Deploy ui to docker registry
- steps:
- - uses: actions/checkout@v2
- - name: Download ui artifacts
- uses: actions/download-artifact@v2
- with:
- name: ui-artifacts
- path: artifacts/ui
- - name: Login to Github Packages
- uses: docker/login-action@v1
- with:
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Build and push ui docker image
- uses: docker/build-push-action@v2
- with:
- context: ${{ github.workspace }}
- file: ${{ github.workspace }}/.docker/ui/Dockerfile
- tags: |
- ghcr.io/chutney-testing/chutney/ui:latest
- ghcr.io/chutney-testing/chutney/ui:${{ needs.deploy.outputs.RELEASE_VERSION }}
- push: true
- build-args: |
- WEBSITE=artifacts/ui
-
diff --git a/chutney/.gitignore b/chutney/.gitignore
index 7966ebd03..982518656 100644
--- a/chutney/.gitignore
+++ b/chutney/.gitignore
@@ -45,25 +45,6 @@ ui/documentation.json
######################
.jqwik-database
-######################
-# Eclipse
-######################
-*.pydevproject
-.project
-.metadata
-tmp/
-tmp/**/*
-*.tmp
-*.bak
-*.swp
-*~.nib
-local.properties
-.classpath
-.settings/
-.loadpath
-.factorypath
-/src/main/resources/rebel.xml
-
# External tool builders
.externalToolBuilders/**
@@ -75,58 +56,24 @@ local.properties
# PDT-specific
.buildpath
-
-######################
-# Intellij
-######################
-**/.idea/*
-!.idea/codeStyleSettings.xml
-!.idea/codeStyles
-!.idea/runConfigurations
-!.idea/copyright
-!.idea/scopes
-*.iml
-*.iws
-*.ipr
-*.ids
-*.orig
classes/
/out
/out-tsc/
**/ui/out-tsc/
-######################
-# Visual Studio Code
-######################
-.vscode/
-**/.sts4-cache
-
######################
# Maven
######################
/log/
**/target/
-# Except for the target folder inside src
-!**/src/**/target/
.mvn/
+!/**/src/**/target/
######################
# Maven Wrapper
######################
!.mvn/wrapper/maven-wrapper.jar
-######################
-# Gradle
-######################
-.gradle/
-/build/
-classes/
-.gradletasknamecache
-
-######################
-# Gradle Wrapper
-######################
-!gradle/wrapper/gradle-wrapper.jar
######################
# Package Files
diff --git a/chutney/.idea/runConfigurations/Angular_CLI_Server.xml b/chutney/.idea/runConfigurations/Angular_CLI_Server.xml
deleted file mode 100644
index b74f0778f..000000000
--- a/chutney/.idea/runConfigurations/Angular_CLI_Server.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/chutney/CONTRIBUTING.md b/chutney/CONTRIBUTING.md
index 32ad6646a..67f89e03b 100644
--- a/chutney/CONTRIBUTING.md
+++ b/chutney/CONTRIBUTING.md
@@ -318,9 +318,8 @@ Use it to update [CHANGELOG.md](https://github.com/chutney-testing/chutney/blob/
In order to avoid committing unwanted files, we prefer to review changes with a pull request.
```shell
-mvn versions:set -pl '!packaging' -DnewVersion= -DgenerateBackupPoms=false
+mvn versions:set -DnewVersion= -DgenerateBackupPoms=false
mvn versions:set-scm-tag -DnewTag= -DgenerateBackupPoms=false
-mvn versions:set-property -Dproperty=chutney.version -DnewVersion= -DgenerateBackupPoms=false
git add .
git diff --staged
git commit -m "chore: Release "
@@ -361,9 +360,8 @@ In order to effectively release artifacts :
### Prepare next development
```shell
-mvn versions:set -pl '!packaging' -DnewVersion= -DgenerateBackupPoms=false
+mvn versions:set -DnewVersion= -DgenerateBackupPoms=false
mvn versions:set-scm-tag -DnewTag=HEAD -DgenerateBackupPoms=false
-mvn versions:set-property -Dproperty=chutney.version -DnewVersion= -DgenerateBackupPoms=false
git diff HEAD
git add . && git commit -m "chore: Prepare next development "
git push origin
diff --git a/chutney/GETTING_STARTED.md b/chutney/GETTING_STARTED.md
index d2ff70abb..47c2a0ba6 100644
--- a/chutney/GETTING_STARTED.md
+++ b/chutney/GETTING_STARTED.md
@@ -25,7 +25,7 @@ To launch Chutney in _local-dev_ mode, use
* [Npm] (https://www.npmjs.com/) - version 6.14.4 or higher - JavaScript package manager
-If you use **direnv** and **nix** packages manager, we provide 2 files for the ui module : [.env.nix](.env.nix) and [.envrc](.envrc).
+If you use **direnv** and **nix** packages manager, we provide 2 files for the ui module : [.env.nix](../.env.nix) and [.envrc](../.envrc).
Upon running **direnv allow** inside ui module folder, it will install node, npm, and some usefull symlinks you can use for configuring IDE or other tools.
@@ -56,4 +56,4 @@ Main class : com.chutneytesting.ServerBootstrap
- Run Unit Test: `mvn test`
- Chutney now eats its own dog food,
- [Glacio features](https://github.com/chutney-testing/glacio) in [server/src/test/resources/blackbox](server/src/test/resources/blackbox) are run by JUnit using [chutney-junit](https://github.com/chutney-testing/chutney-junit) and [glacio-adapter](glacio-adapter)
-- [run configuration for Intellij IDEA](.idea/runConfigurations)
+- [run configuration for Intellij IDEA](../.idea/runConfigurations)
diff --git a/chutney/packaging/local-api-unsecure/pom.xml b/chutney/packaging/local-api-unsecure/pom.xml
index c79602e34..04d248e4f 100644
--- a/chutney/packaging/local-api-unsecure/pom.xml
+++ b/chutney/packaging/local-api-unsecure/pom.xml
@@ -7,7 +7,7 @@
com.chutneytesting
packaging
- 0.0.1-never.change
+ 2.7.1-SNAPSHOT
local-api-unsecure
diff --git a/chutney/packaging/local-dev/pom.xml b/chutney/packaging/local-dev/pom.xml
index a62b3f854..85f8e31ab 100644
--- a/chutney/packaging/local-dev/pom.xml
+++ b/chutney/packaging/local-dev/pom.xml
@@ -7,7 +7,7 @@
com.chutneytesting
packaging
- 0.0.1-never.change
+ 2.7.1-SNAPSHOT
local-dev
diff --git a/chutney/packaging/pom.xml b/chutney/packaging/pom.xml
index 7eee5acd3..63ae8f56e 100644
--- a/chutney/packaging/pom.xml
+++ b/chutney/packaging/pom.xml
@@ -3,10 +3,12 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
-
- com.chutneytesting
+
+ com.chutneytesting
+ chutney-parent
+ 2.7.1-SNAPSHOT
+
packaging
- 0.0.1-never.change
pom
@@ -15,7 +17,7 @@
17
17
- 2.7.1-SNAPSHOT
+ ${project.version}
com.chutneytesting.ServerBootstrap
3.1.2
3.0.5
diff --git a/chutney/pom.xml b/chutney/pom.xml
index e164711e3..872b5e025 100644
--- a/chutney/pom.xml
+++ b/chutney/pom.xml
@@ -681,27 +681,64 @@
-
-
- ossrh
- Central Repository OSSRH
- https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
-
-
- ossrh
- https://s01.oss.sonatype.org/content/repositories/snapshots
-
-
- release
+ convergence
- release
+ convergence
true
+
+
+
+ org.apache.maven.plugins
+ maven-enforcer-plugin
+ 3.4.1
+
+
+ enforce
+
+
+
+
+ true
+
+
+ enforce
+
+
+
+
+
+
+
+
+ github
+
+
+ github
+ GitHub Packages
+ https://maven.pkg.github.com/chutney-testing/chutney-suite
+
+
+
+
+
+ ossrh
+
+
+ ossrh
+ Central Repository OSSRH
+ https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
+
+
+ ossrh
+ https://s01.oss.sonatype.org/content/repositories/snapshots
+
+
@@ -760,37 +797,5 @@
-
- convergence
-
-
- convergence
- true
-
-
-
-
-
- org.apache.maven.plugins
- maven-enforcer-plugin
- 3.4.1
-
-
- enforce
-
-
-
-
- true
-
-
- enforce
-
-
-
-
-
-
-
diff --git a/chutney/server/src/test/java/com/chutneytesting/admin/api/InfoControllerTest.java b/chutney/server/src/test/java/com/chutneytesting/admin/api/InfoControllerTest.java
index 7c4faffbf..e0cbec026 100644
--- a/chutney/server/src/test/java/com/chutneytesting/admin/api/InfoControllerTest.java
+++ b/chutney/server/src/test/java/com/chutneytesting/admin/api/InfoControllerTest.java
@@ -47,7 +47,7 @@ public void setUp() throws Exception {
@Test
public void should_return_chutney_version() throws Exception {
this.mockMvc.perform(get("/api/v1/info/build/version")).andDo(print()).andExpect(status().isOk())
- .andExpect(content().string(matchesRegex("\\d\\.\\d\\.\\d+(-SNAPSHOT)?")));
+ .andExpect(content().string(matchesRegex("\\d\\.\\d\\.\\d+(-SNAPSHOT|-rc\\.d+)?")));
}
@Test
diff --git a/docs/.github/ISSUE_TEMPLATE/bug_report_form.yml b/docs/.github/ISSUE_TEMPLATE/bug_report_form.yml
deleted file mode 100644
index db72577f3..000000000
--- a/docs/.github/ISSUE_TEMPLATE/bug_report_form.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-name: 🐛 Bug Report
-description: File a bug report
-title: "🐛 | "
-labels: ["bug", "triage"]
-body:
- - type: markdown
- attributes:
- value: |
- Thanks for taking the time to fill out this bug report!
-
- 🙌 Please, make sure your bug report is unique 🦄 !
- Did you search issues labeled with Bug ? If you find anything relevant to you, up-vote 👍 or add a comment 💬 !
-
- For more information, please visit our [contribute section](https://github.com/chutney-testing/chutney/blob/master/CONTRIBUTING.md)
- - type: textarea
- id: what-happened
- attributes:
- label: What happened?
- description: Describe the bug - What is the current behavior?
- placeholder: A clear and concise description of what actually happens
- validations:
- required: true
-
diff --git a/docs/.github/ISSUE_TEMPLATE/config.yml b/docs/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index afbb369c0..000000000
--- a/docs/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-blank_issues_enabled: false
-contact_links:
- - name: 🙋 Ask Questions, Get Help and Share ideas 💡
- url: https://github.com/chutney-testing/chutney/discussions
- about: A place to get help, Q&A, new ideas and discussions
- - name: 💬 Live chat and private messages
- url: https://chutney-testing.zulipchat.com/
- about: A more informal place to get in touch if you need it
- - name: 🌋 Security / Vulnerabilities
- url: https://chutney-testing.zulipchat.com/
- about: Please get in touch with us using private messages on our Zulip server
diff --git a/docs/.github/ISSUE_TEMPLATE/feature_request_form.yml b/docs/.github/ISSUE_TEMPLATE/feature_request_form.yml
deleted file mode 100644
index 3eefa3e3f..000000000
--- a/docs/.github/ISSUE_TEMPLATE/feature_request_form.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-name: 🙋 Ask a Question
-description: Ask a question or suggest an idea for this documentation
-title: "🙋 | "
-labels: ["question"]
-body:
- - type: markdown
- attributes:
- value: |
- 🙌 Please, make sure your question is unique 🦄 !
- Did you search issues labeled with Question ? If you find anything relevant to you, up-vote 👍 or add a comment 💬 !
- - type: textarea
- id: question
- attributes:
- label: Ask your question or suggest your idea !
- placeholder: A clear and concise question ?
- validations:
- required: true
- - type: textarea
- id: use-case
- attributes:
- label: Describe your use case
- placeholder: Describes the context in which you asked yourself this question.
- validations:
- required: false
diff --git a/idea-plugin/.github/ISSUE_TEMPLATE/bug_report_form.yml b/idea-plugin/.github/ISSUE_TEMPLATE/bug_report_form.yml
deleted file mode 100644
index 5503fab8b..000000000
--- a/idea-plugin/.github/ISSUE_TEMPLATE/bug_report_form.yml
+++ /dev/null
@@ -1,63 +0,0 @@
-name: 🐛 Bug Report
-description: File a bug report
-title: "🐛 | "
-labels: ["bug", "triage"]
-body:
- - type: markdown
- attributes:
- value: |
- Thanks for taking the time to fill out this bug report!
-
- 🙌 Please, make sure your bug report is unique 🦄 !
- Did you search issues labeled with Bug ? If you find anything relevant to you, up-vote 👍 or add a comment 💬 !
-
- For more information, please visit our [contribute section](https://github.com/chutney-testing/chutney/blob/master/CONTRIBUTING.md)
- - type: textarea
- id: what-happened
- attributes:
- label: What happened?
- description: Describe the bug - What is the current behavior?
- placeholder: A clear and concise description of what actually happens
- validations:
- required: true
- - type: textarea
- id: steps-to-reproduce
- attributes:
- label: Steps to reproduce
- description: How one can reproduce the issue ?
- placeholder: This is very important - Use GIFs to record behavior if applicable
- validations:
- required: true
- - type: textarea
- id: relevant-logs
- attributes:
- label: Relevant logs and/or screenshots/GIFs
- description: If applicable, paste any relevant logs
- render: shell
- placeholder: Please use code blocks (```) to format console output, logs, and code, as it is very hard to read otherwise
- validations:
- required: false
- - type: textarea
- id: possible-fixes
- attributes:
- label: Possible fixes
- description: If you can, link to the line of code that might be responsible for the problem
- render: shell
- validations:
- required: false
- - type: textarea
- id: version
- attributes:
- label: Version
- description: Which version are you running ?
- validations:
- required: false
- - type: dropdown
- id: os
- attributes:
- label: What OS did you use?
- multiple: true
- options:
- - Mac OS
- - Windows
- - Linux
diff --git a/idea-plugin/.github/ISSUE_TEMPLATE/config.yml b/idea-plugin/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index afbb369c0..000000000
--- a/idea-plugin/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-blank_issues_enabled: false
-contact_links:
- - name: 🙋 Ask Questions, Get Help and Share ideas 💡
- url: https://github.com/chutney-testing/chutney/discussions
- about: A place to get help, Q&A, new ideas and discussions
- - name: 💬 Live chat and private messages
- url: https://chutney-testing.zulipchat.com/
- about: A more informal place to get in touch if you need it
- - name: 🌋 Security / Vulnerabilities
- url: https://chutney-testing.zulipchat.com/
- about: Please get in touch with us using private messages on our Zulip server
diff --git a/idea-plugin/.github/ISSUE_TEMPLATE/feature_request_form.yml b/idea-plugin/.github/ISSUE_TEMPLATE/feature_request_form.yml
deleted file mode 100644
index 2cee26167..000000000
--- a/idea-plugin/.github/ISSUE_TEMPLATE/feature_request_form.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-name: 🚀 Feature Request
-description: Suggest an idea for this project
-title: "🚀 | "
-labels: ["enhancement"]
-body:
- - type: markdown
- attributes:
- value: |
- 🙌 Please, make sure your feature request is unique 🦄 !
- Did you search issues labeled with Enhancement ? If you find anything relevant to you, up-vote 👍 or add a comment 💬 !
- - type: textarea
- id: use-case
- attributes:
- label: Describe your use case
- placeholder: Describes the context in which the feature will be used. Can you give a concrete example of how you'd use the feature?
- validations:
- required: true
- - type: textarea
- id: related-problems
- attributes:
- label: Is your feature request related to a problem ?
- placeholder: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
- validations:
- required: false
- - type: textarea
- id: solution
- attributes:
- label: Describe the solution you'd like
- placeholder: A clear and concise description of what you want to happen. Can you draw a picture of what you're imagining?
- validations:
- required: true
- - type: textarea
- id: examples
- attributes:
- label: Link to examples
- description: Is there other software that has the behavior you're interested in?
- placeholder: What is it, and how does it work? Are there any relevant existing standards or conventions?
- validations:
- required: false
diff --git a/idea-plugin/.github/workflows/build.yml b/idea-plugin/.github/workflows/build.yml
deleted file mode 100644
index d8f505115..000000000
--- a/idea-plugin/.github/workflows/build.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-# This workflow will build a Java project with Maven
-# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
-
-name: Build
-
-on:
- push:
- branches: [ master ]
- pull_request:
- branches: [ master ]
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - name: Set up JDK 1.17
- uses: actions/setup-java@v2
- with:
- distribution: 'adopt'
- java-version: 17
- - name: Setup Gradle
- uses: gradle/gradle-build-action@v2
-
- - name: Cache maven
- uses: actions/cache@v2.1.3
- with:
- path: ~/.m2/repository
- key: maven_cache
-
- - name: Gradle build
- env:
- BUILD_ENV: 'github-actions'
- run: ./gradlew buildPlugin
diff --git a/idea-plugin/.github/workflows/release.yml b/idea-plugin/.github/workflows/release.yml
deleted file mode 100644
index 39adbf5a1..000000000
--- a/idea-plugin/.github/workflows/release.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-name: Release
-on:
- push:
- tags:
- - '*.*'
-jobs:
- deploy:
- runs-on: ubuntu-latest
- name: Deploy to github
- steps:
- - uses: actions/checkout@v2
- - name: Set release version environment variable
- run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- - name: Set up JDK 1.17
- uses: actions/setup-java@v2
- with:
- distribution: 'adopt'
- java-version: 17
- - name: Setup Gradle
- uses: gradle/gradle-build-action@v2
- - name: Cache maven
- uses: actions/cache@v2.1.3
- with:
- path: ~/.m2/repository
- key: maven_cache
- - name: Gradle build
- env:
- BUILD_ENV: 'github-actions'
- run: ./gradlew buildPlugin
- - name: Create github release
- id: create_release
- uses: actions/create-release@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- tag_name: ${{ github.ref }}
- release_name: Release ${{ github.ref }}
- body: 'TODO'
- draft: false
- prerelease: false
- - name: Upload zip to github release
- id: upload-release-asset-zip
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ${{ github.workspace }}/build/distributions/chutney-idea-plugin-${{ env.RELEASE_VERSION }}.zip
- asset_name: chutney-idea-plugin-${{ env.RELEASE_VERSION }}.zip
- asset_content_type: application/zip
diff --git a/idea-plugin/.gitignore b/idea-plugin/.gitignore
index 4e3676104..7213cf33e 100755
--- a/idea-plugin/.gitignore
+++ b/idea-plugin/.gitignore
@@ -1,10 +1,6 @@
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
-## Directory-based project format:
-.idea
-*.iml
-
## Plugin-specific files:
# IntelliJ
/out/
diff --git a/idea-plugin/build.gradle.kts b/idea-plugin/build.gradle.kts
index 8d8eae688..a7d951f82 100755
--- a/idea-plugin/build.gradle.kts
+++ b/idea-plugin/build.gradle.kts
@@ -24,7 +24,7 @@ configurations.runtimeOnly {
}
group = properties("pluginGroup")
-version = properties("pluginVersion")
+version = properties("chutneyVersion")
repositories {
mavenLocal()
@@ -32,20 +32,11 @@ repositories {
maven {
url = uri("https://repo1.maven.org/maven2")
}
- ivy {
- url = uri("https://github.com/")
- patternLayout {
- artifact("/[organisation]/[module]/releases/download/[revision]/[artifact]-[revision].[ext]")
- }
- // This is required in Gradle 6.0+ as metadata file (ivy.xml) is mandatory.
- // Docs https://docs.gradle.org/6.2/userguide/declaring_repositories.html#sec:supported_metadata_sources
- metadataSources { artifact() }
- }
}
dependencies {
implementation(enforcedPlatform("com.chutneytesting:chutney-parent:${properties["chutneyVersion"]}"))
- implementation("com.chutneytesting", "chutney-kotlin-dsl", "2.0.1")
+ implementation("com.chutneytesting", "chutney-kotlin-dsl", properties("chutneyVersion"))
implementation("com.google.guava", "guava")
implementation("org.hjson", "hjson")
implementation("org.apache.commons", "commons-text")
@@ -64,8 +55,7 @@ dependencies {
// exclude("org.sl4j") does not exclude
isTransitive = false // this exclude "org.sl4j"
}
- testImplementation("junit", "junit", "4.12")
- runtimeOnly("chutney-testing", "chutney-idea-server", properties("chutneyIdeaServerVersion"), ext = "jar") {
+ runtimeOnly("com.chutneytesting", "local-api-unsecure", properties("chutneyVersion"), ext = "jar") {
isTransitive = false
}
@@ -92,13 +82,13 @@ intellij {
}
}
}
-configure {
+configure {
sourceCompatibility = JavaVersion.VERSION_17
}
// Configure Gradle Changelog Plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin
changelog {
- version.set(properties("pluginVersion"))
+ version.set(properties("chutneyVersion"))
groups.set(emptyList())
}
@@ -115,7 +105,7 @@ tasks {
patchPluginXml {
- version.set(properties("pluginVersion"))
+ version.set(properties("chutneyVersion"))
sinceBuild.set(properties("pluginSinceBuild"))
untilBuild.set(properties("pluginUntilBuild"))
@@ -146,6 +136,6 @@ tasks {
// pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3
// Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more:
// https://plugins.jetbrains.com/docs/intellij/deployment.html#specifying-a-release-channel
- channels.set(listOf(properties("pluginVersion").split('-').getOrElse(1) { "default" }.split('.').first()))
+ channels.set(listOf(properties("chutneyVersion").split('-').getOrElse(1) { "default" }.split('.').first()))
}
}
diff --git a/idea-plugin/gradle.properties b/idea-plugin/gradle.properties
index 4cc65af60..332bc9ab4 100755
--- a/idea-plugin/gradle.properties
+++ b/idea-plugin/gradle.properties
@@ -7,7 +7,7 @@ org.gradle.jvmargs=-Xmx2048M
pluginGroup = com.chutneytesting.idea
pluginName = chutney-idea-plugin
-pluginVersion = 2.4
+chutneyVersion = 2.7.1-SNAPSHOT
# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
# for insight into build numbers and IntelliJ Platform versions.
@@ -29,6 +29,3 @@ platformPlugins =com.intellij.java, com.intellij.spring, org.jetbrains.plugins.y
# Opt-out flag for bundling Kotlin standard library.
# See https://plugins.jetbrains.com/docs/intellij/kotlin.html#kotlin-standard-library for details.
kotlin.stdlib.default.dependency = false
-
-chutneyVersion = 2.2.0
-chutneyIdeaServerVersion = 2.2.0
diff --git a/idea-plugin/gradle/wrapper/gradle-wrapper.jar b/idea-plugin/gradle/wrapper/gradle-wrapper.jar
index 87b738cbd..033e24c4c 100755
Binary files a/idea-plugin/gradle/wrapper/gradle-wrapper.jar and b/idea-plugin/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/idea-plugin/gradle/wrapper/gradle-wrapper.properties b/idea-plugin/gradle/wrapper/gradle-wrapper.properties
index 2e6e5897b..f5d2c6d87 100755
--- a/idea-plugin/gradle/wrapper/gradle-wrapper.properties
+++ b/idea-plugin/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
-distributionBase=GRADLE_USER_HOME
+org.gradle.api.GradleException: Failed to create Jar filedistributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
diff --git a/idea-plugin/gradlew b/idea-plugin/gradlew
index af6708ff2..fcb6fca14 100755
--- a/idea-plugin/gradlew
+++ b/idea-plugin/gradlew
@@ -1,78 +1,126 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
##############################################################################
-##
-## Gradle start up script for UN*X
-##
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
##############################################################################
# Attempt to set APP_HOME
+
# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m"'
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
+MAX_FD=maximum
warn () {
echo "$*"
-}
+} >&2
die () {
echo
echo "$*"
echo
exit 1
-}
+} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACMD=$JAVA_HOME/jre/sh/java
else
- JAVACMD="$JAVA_HOME/bin/java"
+ JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -81,92 +129,120 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+ JAVACMD=java
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
+ fi
fi
# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
fi
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
fi
- i=$((i+1))
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
fi
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=$(save "$@")
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
- cd "$(dirname "$0")"
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
fi
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
exec "$JAVACMD" "$@"
diff --git a/idea-plugin/gradlew.bat b/idea-plugin/gradlew.bat
index 6d57edc70..93e3f59f1 100755
--- a/idea-plugin/gradlew.bat
+++ b/idea-plugin/gradlew.bat
@@ -1,4 +1,20 @@
-@if "%DEBUG%" == "" @echo off
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -9,19 +25,23 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m"
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
+if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -35,7 +55,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-if exist "%JAVA_EXE%" goto init
+if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -45,38 +65,26 @@ echo location of your Java installation.
goto fail
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
+if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
diff --git a/kotlin-dsl/.env.nix b/kotlin-dsl/.env.nix
deleted file mode 100644
index 8d1a410fa..000000000
--- a/kotlin-dsl/.env.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ nixpkgs ? import {} }:
-with nixpkgs;
-let
- jdk = openjdk17;
-in
-mkShell {
-
- buildInputs = [
- jdk
- ];
-
- JAVA_HOME="${jdk}/lib/openjdk";
-}
diff --git a/kotlin-dsl/.envrc b/kotlin-dsl/.envrc
deleted file mode 100644
index 2a674ed3a..000000000
--- a/kotlin-dsl/.envrc
+++ /dev/null
@@ -1,14 +0,0 @@
-# Setup a working environment without hassle using nix and direnv
-# For more information, visit https://direnv.net/
-
-# Install node, npm and geckodriver by loading .env.nix expression
-use_nix .env.nix
-
-# Some tools (ex. Intellij) might need to configure paths to node, npm etc.
-# You can use following symlinks provided in .env folder
-
-## Create .env folder
-[[ ! -d .env ]] && mkdir .env && echo "Create .env folder"
-
-## Symlink JDK
-ln -sfn $JAVA_HOME .env/jdk && echo "Symlink jdk \"$JAVA_HOME\""
diff --git a/kotlin-dsl/.github/ISSUE_TEMPLATE/bug_report_form.yml b/kotlin-dsl/.github/ISSUE_TEMPLATE/bug_report_form.yml
deleted file mode 100644
index 155359cd9..000000000
--- a/kotlin-dsl/.github/ISSUE_TEMPLATE/bug_report_form.yml
+++ /dev/null
@@ -1,63 +0,0 @@
-name: 🐛 Bug Report
-description: File a bug report
-title: "🐛 | "
-labels: ["bug", "triage"]
-body:
- - type: markdown
- attributes:
- value: |
- Thanks for taking the time to fill out this bug report!
-
- 🙌 Please, make sure your bug report is unique 🦄 !
- Did you search issues labeled with Bug ? If you find anything relevant to you, up-vote 👍 or add a comment 💬 !
-
- For more information, please visit our [contribute section](https://github.com/chutney-testing/chutney/blob/master/CONTRIBUTING.md)
- - type: textarea
- id: what-happened
- attributes:
- label: What happened?
- description: Describe the bug - What is the current behavior?
- placeholder: A clear and concise description of what actually happens
- validations:
- required: true
- - type: textarea
- id: steps-to-reproduce
- attributes:
- label: Steps to reproduce
- description: How one can reproduce the issue ?
- placeholder: This is very important - Use GIFs to record behavior if applicable
- validations:
- required: true
- - type: textarea
- id: relevant-logs
- attributes:
- label: Relevant logs and/or screenshots/GIFs
- description: If applicable, paste any relevant logs
- render: shell
- placeholder: Please use code blocks (```) to format console output, logs, and code, as it is very hard to read otherwise
- validations:
- required: false
- - type: textarea
- id: possible-fixes
- attributes:
- label: Possible fixes
- description: If you can, link to the line of code that might be responsible for the problem
- render: shell
- validations:
- required: false
- - type: textarea
- id: version
- attributes:
- label: Version
- description: Which version are you running ?
- validations:
- required: false
- - type: dropdown
- id: os
- attributes:
- label: What OS did you use?
- multiple: true
- options:
- - Mac OS
- - Windows
- - Linux
diff --git a/kotlin-dsl/.github/ISSUE_TEMPLATE/config.yml b/kotlin-dsl/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index afbb369c0..000000000
--- a/kotlin-dsl/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-blank_issues_enabled: false
-contact_links:
- - name: 🙋 Ask Questions, Get Help and Share ideas 💡
- url: https://github.com/chutney-testing/chutney/discussions
- about: A place to get help, Q&A, new ideas and discussions
- - name: 💬 Live chat and private messages
- url: https://chutney-testing.zulipchat.com/
- about: A more informal place to get in touch if you need it
- - name: 🌋 Security / Vulnerabilities
- url: https://chutney-testing.zulipchat.com/
- about: Please get in touch with us using private messages on our Zulip server
diff --git a/kotlin-dsl/.github/ISSUE_TEMPLATE/feature_request_form.yml b/kotlin-dsl/.github/ISSUE_TEMPLATE/feature_request_form.yml
deleted file mode 100644
index 2cee26167..000000000
--- a/kotlin-dsl/.github/ISSUE_TEMPLATE/feature_request_form.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-name: 🚀 Feature Request
-description: Suggest an idea for this project
-title: "🚀 | "
-labels: ["enhancement"]
-body:
- - type: markdown
- attributes:
- value: |
- 🙌 Please, make sure your feature request is unique 🦄 !
- Did you search issues labeled with Enhancement ? If you find anything relevant to you, up-vote 👍 or add a comment 💬 !
- - type: textarea
- id: use-case
- attributes:
- label: Describe your use case
- placeholder: Describes the context in which the feature will be used. Can you give a concrete example of how you'd use the feature?
- validations:
- required: true
- - type: textarea
- id: related-problems
- attributes:
- label: Is your feature request related to a problem ?
- placeholder: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
- validations:
- required: false
- - type: textarea
- id: solution
- attributes:
- label: Describe the solution you'd like
- placeholder: A clear and concise description of what you want to happen. Can you draw a picture of what you're imagining?
- validations:
- required: true
- - type: textarea
- id: examples
- attributes:
- label: Link to examples
- description: Is there other software that has the behavior you're interested in?
- placeholder: What is it, and how does it work? Are there any relevant existing standards or conventions?
- validations:
- required: false
diff --git a/kotlin-dsl/.github/pull_request_template.md b/kotlin-dsl/.github/pull_request_template.md
deleted file mode 100644
index db6d2b5d9..000000000
--- a/kotlin-dsl/.github/pull_request_template.md
+++ /dev/null
@@ -1,31 +0,0 @@
-#### Issue Number
-fixes #
-
-
-#### Describe the changes you've made
-
-
-
-#### Describe if there is any unusual behaviour of your code
-
-
-
-#### Additional context
-
-
-
-#### Test plan
-
-
-
-#### Checklist
-
-
-
-- [ ] Refer to issue(s) the PR solves
-- [ ] New kotlin code is covered by tests
-- [ ] Add screenshots or gifs of the new behavior, if applicable.
-- [ ] All new and existing tests pass
-- [ ] No git conflict
diff --git a/kotlin-dsl/.github/release.yml b/kotlin-dsl/.github/release.yml
deleted file mode 100644
index cd9dc467c..000000000
--- a/kotlin-dsl/.github/release.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-# Changelog template
-
-changelog:
- categories:
- - title: '⚡ Breaking changes:'
- labels:
- - breaking
- - title: '🚀 Implemented enhancements:'
- labels:
- - enhancement
- - title: '🐛 Fixed bugs:'
- labels:
- - bug
- - title: '🔧 Technical enhancements:'
- labels:
- - technical
- - title: '👒 Dependencies:'
- labels:
- - dependencies
- - title: 'to categorize manually:'
- labels:
- - '*'
- exclude:
- labels:
- - dependencies
- - enhancement
- - bug
- - technical
- - breaking
- - release
diff --git a/kotlin-dsl/.github/workflows/build.yml b/kotlin-dsl/.github/workflows/build.yml
deleted file mode 100644
index 9732c9f3a..000000000
--- a/kotlin-dsl/.github/workflows/build.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-name: Build
-
-on:
- push:
- branches: [ master ]
- pull_request:
- branches: [ master ]
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
-
- - name: Set up JDK 17
- uses: actions/setup-java@v2
- with:
- distribution: 'temurin'
- java-version: 17
-
- - name: Cache maven
- uses: actions/cache@v2.1.3
- with:
- path: ~/.m2/repository
- key: maven_cache
-
- - name: Build with Gradle
- run: ./gradlew clean build
diff --git a/kotlin-dsl/.github/workflows/release.yml b/kotlin-dsl/.github/workflows/release.yml
deleted file mode 100644
index 17b7edb89..000000000
--- a/kotlin-dsl/.github/workflows/release.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-name: Release
-
-on:
- push:
- tags:
- - '*.*.*'
-
-jobs:
- deploy:
- runs-on: ubuntu-latest
-
- name: Deploy to central
- steps:
- - uses: actions/checkout@v2
-
- - name: Set release version environment variable
- run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
-
- - name: Set up JDK 17
- uses: actions/setup-java@v2
- with:
- distribution: 'temurin'
- java-version: 17
-
- - name: Verify the project build
- run: ./gradlew clean build
-
- - name: Publish to OSSRH
- run: ./gradlew publish
- env:
- OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
- OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
- CHUTNEY_GPG_KEY_ID: ${{ secrets.CHUTNEY_GPG_KEY_ID }}
- CHUTNEY_GPG_KEY: ${{ secrets.CHUTNEY_GPG_PRIVATE_KEY }}
- CHUTNEY_GPG_PASSPHRASE: ${{ secrets.CHUTNEY_GPG_PASSPHRASE }}
-
- - name: Create github release
- id: create_release
- uses: actions/create-release@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- tag_name: ${{ github.ref }}
- release_name: Release ${{ github.ref }}
- body: 'TODO'
- draft: false
- prerelease: false
-
- - name: Upload jar to github release
- id: upload-release-asset-dsl-jar
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ${{ github.workspace }}/dsl/build/libs/chutney-kotlin-dsl-${{ env.RELEASE_VERSION }}.jar
- asset_name: chutney-kotlin-dsl-${{ env.RELEASE_VERSION }}.jar
- asset_content_type: application/jar
-
- - name: Upload signature to github release
- id: upload-release-asset-dsl-jar-sig
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ${{ github.workspace }}/dsl/build/libs/chutney-kotlin-dsl-${{ env.RELEASE_VERSION }}.jar.asc
- asset_name: chutney-kotlin-dsl-${{ env.RELEASE_VERSION }}.jar.asc
- asset_content_type: application/pgp-signature
diff --git a/kotlin-dsl/.gitignore b/kotlin-dsl/.gitignore
index ab4cc1f30..11f35a91c 100644
--- a/kotlin-dsl/.gitignore
+++ b/kotlin-dsl/.gitignore
@@ -1,8 +1,3 @@
-# IntelliJ project files
-.idea
-*.iml
-out
-gen
### Gradle template
###############################################################################
@@ -13,7 +8,6 @@ DEVREP
# Ignore Gradle GUI config
gradle-app.setting
-gradle.properties
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
@@ -24,12 +18,6 @@ gradle.properties
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties
-# Maven
-###############################################################################
-/log/
-**/target/
-.mvn/maven.config
-
# Chutney reports
###############################################################################
diff --git a/kotlin-dsl/CONTRIBUTING.md b/kotlin-dsl/CONTRIBUTING.md
index 833054c76..5e7848e2a 100644
--- a/kotlin-dsl/CONTRIBUTING.md
+++ b/kotlin-dsl/CONTRIBUTING.md
@@ -26,7 +26,7 @@ To contribute to this documentation (README, CONTRIBUTING, etc.), we conforms to
2. Create your working branches as you like
* **WARNING** - Do not modify the master branch nor any of our branches since it will break the automatic sync
3. When you are done, fetch all and rebase your branch onto our master or any other of ours
- * ex. on your branch, do :
+ * ex. on your branch, do :
* `git fetch --all --prune`
* `git rebase --no-ff origin/master`
4. Test your changes and make sure everything is working
@@ -34,7 +34,7 @@ To contribute to this documentation (README, CONTRIBUTING, etc.), we conforms to
* Do not forget to add reviewers ! Check out the last authors of the code you modified and add them.
* In case of doubts, here are active contributors :
-
+
## Code convention
Try to follow [Kotlin coding conventions](https://kotlinlang.org/docs/reference/coding-conventions.html).
@@ -46,7 +46,7 @@ Concerning tests mocking :
* Use `org.springframework.test.web.servlet.MockMvc` to mock REST HTTP endpoints
* **Do not use PowerMock**
* We consider it to be sign of a code-smell
-
+
## Branch convention
* **wip/** unstable code, to share between developers working on the same task
@@ -83,21 +83,14 @@ We use github actions to build and releas this library.
### Update Changelog file
-Do it first, because changelog updates should be part of the release being made.
+Do it first, because changelog updates should be part of the release being made.
Check page: [Automatically generated release notes](https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes)
Do not hesitate to update the release note generated especially the titles of pull request :)
Use it to update [CHANGELOG.md](https://github.com/chutney-testing/chutney-kotlin-dsl/blob/master/CHANGELOG.md)
### Releasing
-
-We use [Reckon gradle plugin](https://github.com/ajoberstar/reckon).
-
-Release is just pushing a tag with version information :
-```shell
- ./gradlew reckonTagCreate -Preckon.stage= -Preckon.scope=
- git push origin
-```
+Update `chutneyVersion` in `gradle.properties` file.
### Update Github release
@@ -145,7 +138,7 @@ ALv2 license compatibility as defined by the ASF can be found here : [http://apa
__As far as we understand :__
-If, by any mean, your contribution should rely on a Category X dependency, then you must provide a way to modularize it
+If, by any mean, your contribution should rely on a Category X dependency, then you must provide a way to modularize it
and make it's use optional to Chutney, as a plugin.
You may distribute your plugin under the terms of the Category X license.
diff --git a/kotlin-dsl/build.gradle.kts b/kotlin-dsl/build.gradle.kts
index 1838471e6..e8353d82d 100644
--- a/kotlin-dsl/build.gradle.kts
+++ b/kotlin-dsl/build.gradle.kts
@@ -1,21 +1,10 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
- id("org.ajoberstar.reckon") version "0.18.0"
-
- kotlin("jvm") version "1.9.21" apply false
-}
-
-reckon {
- setDefaultInferredScope("patch")
- stages("rc", "final")
- setScopeCalc(calcScopeFromProp().or(calcScopeFromCommitMessages()))
- setStageCalc(calcStageFromProp())
+ kotlin("jvm") version "1.9.21" apply false
}
subprojects {
- extra["chutneyTestingVersion"] = "2.7.0"
-
repositories {
mavenLocal()
mavenCentral()
@@ -33,15 +22,15 @@ subprojects {
testImplementation("org.junit.jupiter:junit-jupiter-params")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
- implementation(enforcedPlatform("com.chutneytesting:chutney-parent:${project.extra["chutneyTestingVersion"]}"))
+ implementation(enforcedPlatform("com.chutneytesting:chutney-parent:${properties["chutneyVersion"]}"))
// Resolve conflicts from chutney-parent for runtime classpath
- runtimeOnly("com.fasterxml.jackson.module:jackson-module-scala_2.13") // :2.15.3
- runtimeOnly("com.fasterxml.jackson.dataformat:jackson-dataformat-csv") // :2.15.3
- runtimeOnly("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml") // :2.15.3
- runtimeOnly("org.eclipse.jetty:jetty-client") // :12.0.5
- runtimeOnly("org.eclipse.jetty:jetty-security") // :12.0.5
- runtimeOnly("org.eclipse.jetty:jetty-xml") // :12.0.5
- runtimeOnly("org.eclipse.jetty.http2:http2-common:11.0.19")
+ runtimeOnly("com.fasterxml.jackson.module:jackson-module-scala_2.13") // :2.15.2
+ runtimeOnly("com.fasterxml.jackson.dataformat:jackson-dataformat-csv") // :2.15.2
+ runtimeOnly("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml") // :2.15.2
+ runtimeOnly("org.eclipse.jetty:jetty-client:11.0.15") // :11.0.15
+ runtimeOnly("org.eclipse.jetty:jetty-security:11.0.15") // :11.0.15
+ runtimeOnly("org.eclipse.jetty:jetty-xml:11.0.15") // :11.0.15
+ runtimeOnly("org.eclipse.jetty.http2:http2-common:11.0.15") // :11.0.15
}
tasks.withType {
diff --git a/kotlin-dsl/dsl/build.gradle.kts b/kotlin-dsl/dsl/build.gradle.kts
index fcdd34aa9..3a2cd28ef 100644
--- a/kotlin-dsl/dsl/build.gradle.kts
+++ b/kotlin-dsl/dsl/build.gradle.kts
@@ -1,6 +1,8 @@
import java.time.Instant
import java.time.format.DateTimeFormatter
+fun properties(key: String) = project.findProperty(key).toString()
+
plugins {
java
`maven-publish`
@@ -8,6 +10,7 @@ plugins {
}
val group = "com.chutneytesting"
+version = properties("chutneyVersion")
val timestamp: String = DateTimeFormatter.ISO_INSTANT.format(Instant.now())
val githubUrl = "https://github.com/chutney-testing/${project.name}"
val publicationName = "chutneyKotlinDSL"
@@ -22,9 +25,9 @@ configurations {
dependencies {
- api("com.chutneytesting:engine:${project.extra["chutneyTestingVersion"]}")
- implementation("com.chutneytesting:environment:${project.extra["chutneyTestingVersion"]}")
- runtimeOnly("com.chutneytesting:action-impl:${project.extra["chutneyTestingVersion"]}")
+ api("com.chutneytesting:engine:${properties["chutneyVersion"]}")
+ implementation("com.chutneytesting:environment:${properties["chutneyVersion"]}")
+ runtimeOnly("com.chutneytesting:action-impl:${properties["chutneyVersion"]}")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.slf4j:slf4j-api")
@@ -70,17 +73,28 @@ tasks.withType {
suppressedValidationErrors.add("enforced-platform")
}
+tasks.withType().configureEach {
+ val predicate = provider {
+ val publishToOssrh = repository == publishing.repositories["ossrh"] && project.findProperty("server-id") == "ossrh"
+ val publishToGithub = repository == publishing.repositories["github"] && project.findProperty("server-id") == "github"
+ publishToOssrh || publishToGithub
+ }
+ onlyIf("publish to ossrh or github") {
+ predicate.get()
+ }
+}
+
publishing {
publications {
create(publicationName) {
groupId = group
artifactId = project.name
- version = project.version.toString()
+ version = properties("chutneyVersion")
from(components["java"])
pom {
name.set("Chutney Kotlin DSL")
description.set("Generates Chutney scenarios using Kotlin.")
- inceptionYear.set("2020")
+ inceptionYear.set("2017")
url.set(githubUrl)
licenses {
license {
@@ -124,39 +138,45 @@ publishing {
id.set("KarimGl")
name.set("Karim Goubbaa")
}
+ developer {
+ id.set("DelaunayAlex")
+ name.set("Alexandre Delaunay")
+ }
}
}
}
}
repositories {
maven {
- name = "OSSRH"
-
- val releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
- val snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots"
-
- val ossrhUsername =
- System.getenv("OSSRH_USERNAME") // Use token ; https://s01.oss.sonatype.org/#profile;User%20Token
- val ossrhPassword = System.getenv("OSSRH_PASSWORD") // Use token
-
- url = uri(releasesRepoUrl)
+ name = "ossrh"
+ url = uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/")
+ credentials {
+ username = System.getenv("MAVEN_USERNAME")
+ password = System.getenv("MAVEN_PASSWORD")
+ }
+ }
+ maven {
+ name = "github"
+ url = uri("https://maven.pkg.github.com/chutney-testing/chutney-suite")
credentials {
- username = ossrhUsername
- password = ossrhPassword
+ username = System.getenv("MAVEN_USERNAME")
+ password = System.getenv("MAVEN_PASSWORD")
}
}
}
}
signing {
- //useGpgCmd()
-
- // Format: "0x12345678" ; gpg --list-keys --keyid-format 0xSHORT
- val signingKeyId: String? = System.getenv("CHUTNEY_GPG_KEY_ID")
-
- // gpg -a --export-secret-subkeys KEY_ID
- val signingKey: String? = System.getenv("CHUTNEY_GPG_KEY")
- val signingPassword: String? = System.getenv("CHUTNEY_GPG_PASSPHRASE")
- useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword)
- sign(publishing.publications[publicationName])
+ setRequired( false )
+ if (project.findProperty("server-id") == "ossrh") {
+ //useGpgCmd()
+ // Format: "0x12345678" ; gpg --list-keys --keyid-format 0xSHORT
+ val signingKeyId: String? = System.getenv("CHUTNEY_GPG_KEY_ID")
+ // gpg -a --export-secret-subkeys KEY_ID
+ val signingKey: String? = System.getenv("CHUTNEY_GPG_KEY")
+ val signingPassword: String? = System.getenv("CHUTNEY_GPG_PASSPHRASE")
+ useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword)
+ sign(publishing.publications[publicationName])
+ }
}
+
diff --git a/kotlin-dsl/dsl/src/test/kotlin/com/chutneytesting/kotlin/junit/engine/ChutneyTestEngineTest.kt b/kotlin-dsl/dsl/src/test/kotlin/com/chutneytesting/kotlin/junit/engine/ChutneyTestEngineTest.kt
index d9c402bcb..51c181559 100644
--- a/kotlin-dsl/dsl/src/test/kotlin/com/chutneytesting/kotlin/junit/engine/ChutneyTestEngineTest.kt
+++ b/kotlin-dsl/dsl/src/test/kotlin/com/chutneytesting/kotlin/junit/engine/ChutneyTestEngineTest.kt
@@ -30,7 +30,7 @@ private class ChutneyTestEngineTest {
fun emptySelectors(): Array {
return arrayOf(
selectClass("UnknownClass"),
- selectClasspathRoots(setOf(Path.of("../.github")))[0],
+ selectClasspathRoots(setOf(Path.of("./src/test/kotlin/com/chutneytesting/kotlin/junit/engine")))[0],
selectClasspathResource("unknownResource"),
selectMethod("com.chutneytesting.kotlin.junit.engine.ChutneyTest#unknownMethod()")
)
diff --git a/kotlin-dsl/example/build.gradle.kts b/kotlin-dsl/example/build.gradle.kts
index 09f9b9e27..e0cd2a7de 100644
--- a/kotlin-dsl/example/build.gradle.kts
+++ b/kotlin-dsl/example/build.gradle.kts
@@ -1,3 +1,5 @@
+fun properties(key: String) = project.findProperty(key).toString()
+version = properties("chutneyVersion")
dependencies {
implementation(project(":chutney-kotlin-dsl"))
testImplementation("org.testcontainers:testcontainers")
diff --git a/kotlin-dsl/example/src/main/kotlin/com/chutneytesting/example/scenario/selenium_scenario.kt b/kotlin-dsl/example/src/main/kotlin/com/chutneytesting/example/scenario/selenium_scenario.kt
index db47b4802..afe2c6c94 100644
--- a/kotlin-dsl/example/src/main/kotlin/com/chutneytesting/example/scenario/selenium_scenario.kt
+++ b/kotlin-dsl/example/src/main/kotlin/com/chutneytesting/example/scenario/selenium_scenario.kt
@@ -25,14 +25,6 @@ fun selenium_scenario(hub: String) = Scenario(title = "Selenium scenario") {
}
}
And("And scenario page are loaded") {
- Step("Menu has admin section") {
- SeleniumGetTextAction(
- selector = "//*[@class='menu-header'][2]",
- by = SELENIUM_BY.xpath,
- wait = 10,
- validations = mapOf("content is equals to ADMIN" to "#outputGetText.equals('ADMIN')".elEval())
- )
- }
Step("Scenario menu is selected") {
SeleniumGetAttributeAction(
selector = "//*[@href='#/scenario']",
diff --git a/kotlin-dsl/gradle.properties b/kotlin-dsl/gradle.properties
new file mode 100644
index 000000000..7be45d0ec
--- /dev/null
+++ b/kotlin-dsl/gradle.properties
@@ -0,0 +1 @@
+chutneyVersion = 2.7.1-SNAPSHOT
diff --git a/kotlin-dsl/gradle/wrapper/gradle-wrapper.jar b/kotlin-dsl/gradle/wrapper/gradle-wrapper.jar
index 7454180f2..033e24c4c 100644
Binary files a/kotlin-dsl/gradle/wrapper/gradle-wrapper.jar and b/kotlin-dsl/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/kotlin-dsl/gradle/wrapper/gradle-wrapper.properties b/kotlin-dsl/gradle/wrapper/gradle-wrapper.properties
index 00e33edef..9f4197d5f 100644
--- a/kotlin-dsl/gradle/wrapper/gradle-wrapper.properties
+++ b/kotlin-dsl/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/kotlin-dsl/gradlew b/kotlin-dsl/gradlew
index 744e882ed..fcb6fca14 100755
--- a/kotlin-dsl/gradlew
+++ b/kotlin-dsl/gradlew
@@ -1,7 +1,7 @@
-#!/usr/bin/env sh
+#!/bin/sh
#
-# Copyright 2015 the original author or authors.
+# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,67 +17,98 @@
#
##############################################################################
-##
-## Gradle start up script for UN*X
-##
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
##############################################################################
# Attempt to set APP_HOME
+
# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
+MAX_FD=maximum
warn () {
echo "$*"
-}
+} >&2
die () {
echo
echo "$*"
echo
exit 1
-}
+} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MSYS* | MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@@ -87,9 +118,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACMD=$JAVA_HOME/jre/sh/java
else
- JAVACMD="$JAVA_HOME/bin/java"
+ JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -98,88 +129,120 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+ JAVACMD=java
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
+ fi
fi
# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
fi
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
# Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
fi
- i=`expr $i + 1`
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
done
- case $i in
- 0) set -- ;;
- 1) set -- "$args0" ;;
- 2) set -- "$args0" "$args1" ;;
- 3) set -- "$args0" "$args1" "$args2" ;;
- 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
fi
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=`save "$@"`
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
exec "$JAVACMD" "$@"
diff --git a/kotlin-dsl/gradlew.bat b/kotlin-dsl/gradlew.bat
index 107acd32c..93e3f59f1 100644
--- a/kotlin-dsl/gradlew.bat
+++ b/kotlin-dsl/gradlew.bat
@@ -14,7 +14,7 @@
@rem limitations under the License.
@rem
-@if "%DEBUG%" == "" @echo off
+@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -25,7 +25,8 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
+if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end
@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
+if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal