diff --git a/.github/workflows/develop.yml b/.github/workflows/master.yml similarity index 54% rename from .github/workflows/develop.yml rename to .github/workflows/master.yml index b9a6f31b..9d4dad45 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/master.yml @@ -1,23 +1,15 @@ -name: Develop Workflow +name: Master Push Workflow on: push: - branches-ignore: - - 'release' - pull_request: - branches-ignore: - - 'release' + branches: [master] permissions: - actions: write - checks: write contents: write - issues: write - pull-requests: write jobs: - build-and-test: - name: Build & Test + build-and-tag: + name: Build & Tag runs-on: windows-latest steps: - name: Checkout @@ -25,18 +17,17 @@ jobs: with: fetch-depth: 0 - name: Setup .NET - uses: actions/setup-dotnet@v5 + uses: actions/setup-dotnet@v6 with: - dotnet-version: 10.0.x + dotnet-version: 10.x - name: Setup GitVersion - uses: gittools/actions/gitversion/setup@v4.5.0 + uses: gittools/actions/gitversion/setup@v4 with: - versionSpec: '6.4.x' + versionSpec: '6.8.x' - name: Determine Version id: version_step - uses: gittools/actions/gitversion/execute@v4.5.0 + uses: gittools/actions/gitversion/execute@v4 - name: Push New Version Tag - if: github.ref == 'refs/heads/master' && github.event_name == 'push' run: | $gv = 'v${{ steps.version_step.outputs.majorMinorPatch }}' #gitversion result $lt = $( git describe --tags --abbrev=0 ) # last tag version result @@ -60,32 +51,17 @@ jobs: --coverage --coverage-output-format cobertura --coverage-output coverage.cobertura.xml ` --coverage-settings tests/coverage-exclude.xml mkdir coverage-report - - name: Code Coverage Summary Report For Merge Request - if: github.event_name == 'pull_request' - uses: 5monkeys/cobertura-action@master - with: - path: ./tests/HydraScript.IntegrationTests/bin/Debug/net10.0/TestResults/coverage.cobertura.xml - repo_token: ${{ secrets.GITHUB_TOKEN }} - minimum_coverage: 80 - fail_below_threshold: true - show_class_names: true - show_missing: true - link_missing_lines: true - show_branch: true - only_changed_files: true - name: ReportGenerator - uses: danielpalme/ReportGenerator-GitHub-Action@5.5.10 + uses: danielpalme/ReportGenerator-GitHub-Action@5.5.11 with: - reports: './tests/HydraScript.IntegrationTests/bin/Debug/net10.0/TestResults/coverage.cobertura.xml' - targetdir: './coverage-report' + reports: './TestResults/coverage.cobertura.xml' + targetdir: './coverage-report' - name: Upload coverage report artifact - if: github.event_name == 'push' uses: actions/upload-artifact@v7 with: - name: CoverageReport + name: CoverageReport path: coverage-report - name: Upload Windows Build - if: github.ref != 'refs/heads/master' && github.event_name == 'push' uses: actions/upload-artifact@v7 with: name: windows_build_${{ steps.version_step.outputs.fullSemVer }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 00000000..cb58a6ad --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,55 @@ +name: Pull Request Workflow + +on: + pull_request: + branches-ignore: [release] + +permissions: + checks: write + contents: read + pull-requests: write + +jobs: + build-and-cover: + name: Build & Coverage + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 0 + - name: Setup .NET + uses: actions/setup-dotnet@v6 + with: + dotnet-version: 10.x + - name: Restore dependencies + run: dotnet restore + - name: Build + run: dotnet build --no-restore -c Debug -v n + - name: Unit Tests + run: dotnet test -c Debug --no-build -v n --filter-trait Category=Unit + - name: Integration Tests + run: | + dotnet test --project tests/HydraScript.IntegrationTests \ + -c Debug --no-build -v n \ + --coverage --coverage-output-format cobertura --coverage-output coverage.cobertura.xml \ + --coverage-settings tests/coverage-exclude.xml + mkdir coverage-report + - name: Code Coverage Summary Report For Merge Request + uses: Affanmir/diff-cover-action@v2 + with: + coverage-files: ./TestResults/coverage.cobertura.xml + compare-branch: 'origin/master' + fail-under: 80 + title: 'HydraScript PR Coverage' + create-badge: 'true' + - name: ReportGenerator + uses: danielpalme/ReportGenerator-GitHub-Action@5.5.11 + with: + reports: './TestResults/coverage.cobertura.xml' + targetdir: './coverage-report' + - name: Upload coverage report artifact + uses: actions/upload-artifact@v7 + with: + name: CoverageReport + path: coverage-report diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml new file mode 100644 index 00000000..dd7857df --- /dev/null +++ b/.github/workflows/push.yml @@ -0,0 +1,33 @@ +name: Push Workflow + +on: + push: + branches-ignore: [release, master] + +permissions: + contents: read + +jobs: + build-and-test: + name: Build & Test + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 0 + - name: Setup .NET + uses: actions/setup-dotnet@v6 + with: + dotnet-version: 10.x + - name: Restore dependencies + run: dotnet restore + - name: Build + run: dotnet build --no-restore -c Debug -v n + - name: Tests + run: dotnet test -c Debug --no-build -v n + - name: Upload Windows Build + uses: actions/upload-artifact@v7 + with: + name: windows_build_${{ github.sha }} + path: ./src/HydraScript/bin/Debug/net10.0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4be9b1ab..7d409ab9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,8 +2,7 @@ name: Release Workflow on: push: - branches: - - 'release' + branches: [release] permissions: contents: write @@ -24,7 +23,7 @@ jobs: with: fetch-depth: 0 - name: Setup .NET - uses: actions/setup-dotnet@v5 + uses: actions/setup-dotnet@v6 - name: Determine Version id: version_step run: | @@ -32,11 +31,11 @@ jobs: echo "majorMinorPatch=$tag" >> $GITHUB_OUTPUT echo "publishVersion=${tag:1}" >> $GITHUB_OUTPUT - name: Setup GitReleaseManager - uses: gittools/actions/gitreleasemanager/setup@v4.5.0 + uses: gittools/actions/gitreleasemanager/setup@v4 with: versionSpec: '0.20.x' - name: Create release with GitReleaseManager - uses: gittools/actions/gitreleasemanager/create@v4.5.0 + uses: gittools/actions/gitreleasemanager/create@v4 with: token: ${{ secrets.GITHUB_TOKEN }} repository: 'Stepami/hydrascript' @@ -63,11 +62,11 @@ jobs: - name: Checkout uses: actions/checkout@v6 - name: Setup .NET - uses: actions/setup-dotnet@v5 + uses: actions/setup-dotnet@v6 with: - dotnet-version: 10.0.x + dotnet-version: 10.x - name: Setup GitReleaseManager - uses: gittools/actions/gitreleasemanager/setup@v4.5.0 + uses: gittools/actions/gitreleasemanager/setup@v4 with: versionSpec: '0.20.x' - name: Publish @@ -80,7 +79,7 @@ jobs: mv ./output/HydraScript${{ matrix.config.rid == 'win-x64' && '.exe' || '' }} ./output/hydrascript_${{ matrix.config.rid }}${{ matrix.config.rid == 'win-x64' && '.exe' || '' }} - name: Add asset to a release with GitReleaseManager - uses: gittools/actions/gitreleasemanager/addasset@v4.5.0 + uses: gittools/actions/gitreleasemanager/addasset@v4 with: token: ${{ secrets.GITHUB_TOKEN }} repository: 'Stepami/hydrascript' @@ -112,19 +111,19 @@ jobs: publish_version: ${{ needs.upload-release-assets.outputs.publish_version }} steps: - name: Setup .NET - uses: actions/setup-dotnet@v5 + uses: actions/setup-dotnet@v6 - name: Setup GitReleaseManager - uses: gittools/actions/gitreleasemanager/setup@v4.5.0 + uses: gittools/actions/gitreleasemanager/setup@v4 with: versionSpec: '0.20.x' - name: Publish release with GitReleaseManager - uses: gittools/actions/gitreleasemanager/publish@v4.5.0 + uses: gittools/actions/gitreleasemanager/publish@v4 with: token: ${{ secrets.GITHUB_TOKEN }} repository: 'Stepami/hydrascript' milestone: ${{ needs.upload-release-assets.outputs.determined_version }} - name: Close release with GitReleaseManager - uses: gittools/actions/gitreleasemanager/close@v4.5.0 + uses: gittools/actions/gitreleasemanager/close@v4 with: token: ${{ secrets.GITHUB_TOKEN }} repository: 'Stepami/hydrascript' @@ -138,9 +137,9 @@ jobs: - name: Checkout uses: actions/checkout@v6 - name: Setup .NET - uses: actions/setup-dotnet@v5 + uses: actions/setup-dotnet@v6 with: - dotnet-version: 10.0.x + dotnet-version: 10.x - name: Pack run: >- dotnet pack ./src/HydraScript/HydraScript.csproj -c Release -o ./pack-output -v n diff --git a/.gitignore b/.gitignore index 629f5fff..dca452d4 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ _UpgradeReport_Files [Pp]ackages -tests/**/coverage.cobertura.xml +**/coverage.cobertura.xml Thumbs.db Desktop.ini diff --git a/Directory.Packages.props b/Directory.Packages.props index 8d372a20..b195c398 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,21 +3,24 @@ true true false + 10.0.11 + 5.6.0 + 5.0.0-rc.1 - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - + + + + + + + @@ -25,18 +28,18 @@ - - - - - - - - - + + + + + + + + + - + diff --git a/ExtendedJavaScriptSubset.slnx b/ExtendedJavaScriptSubset.slnx index 94a939ee..33d2e5ff 100644 --- a/ExtendedJavaScriptSubset.slnx +++ b/ExtendedJavaScriptSubset.slnx @@ -24,8 +24,10 @@ - + + + diff --git a/tests/HydraScript.UnitTests/Domain/IR/ObjectTypeTests.cs b/tests/HydraScript.UnitTests/Domain/IR/ObjectTypeTests.cs index 7af297e5..95febba1 100644 --- a/tests/HydraScript.UnitTests/Domain/IR/ObjectTypeTests.cs +++ b/tests/HydraScript.UnitTests/Domain/IR/ObjectTypeTests.cs @@ -8,32 +8,32 @@ public class ObjectTypeTests public void ObjectTypeEqualityTest() { var number = new Type("number"); - var p2d1 = new ObjectType(new Dictionary( + var point2Num1 = new ObjectType(new Dictionary( [ new("x", number), new("y", number) ])); - var p2d2 = new ObjectType(new Dictionary( + var point2Num2 = new ObjectType(new Dictionary( [ new("x", number), new("y", number) ])); - Assert.Equal(p2d1, p2d2); + Assert.Equal(point2Num1, point2Num2); - var p3d1 = new ObjectType(new Dictionary( + var point3Num1 = new ObjectType(new Dictionary( [ new("a", number), new("x", number), new("y", number) ])); - var p3d2 = new ObjectType(new Dictionary( + var point3Num2 = new ObjectType(new Dictionary( [ new("y", number), new("x", number), new("z", number) ])); - Assert.NotEqual(p3d1, p3d2); - Assert.NotEqual(p3d2, p2d1); + Assert.NotEqual(point3Num1, point3Num2); + Assert.NotEqual(point3Num2, point2Num1); } [Fact]