diff --git a/.github/actions/run-database-tests/action.yml b/.github/actions/run-database-tests/action.yml
index f731ca4ca6..0cd4bafb42 100644
--- a/.github/actions/run-database-tests/action.yml
+++ b/.github/actions/run-database-tests/action.yml
@@ -7,6 +7,11 @@ inputs:
required: true
default: 'Release'
type: string
+ show_all_fails:
+ description: 'No mute tests'
+ type: boolean
+ default: false
+ required: true
test_output_verbosity:
description: 'Verbosity for dotnet test command'
required: true
@@ -36,21 +41,29 @@ runs:
using: "composite"
steps:
- name: Test Orm.Tests set of tests
+ env:
+ GA_NO_IGNORE: ${{ inputs.show_all_fails }}
if: ${{ !cancelled() && fromJSON(inputs.run_main) }}
shell: bash
run: dotnet test Orm/Xtensive.Orm.Tests/Xtensive.Orm.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Tests.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }}
- name: Test Orm.Tests.Sql set of tests
+ env:
+ GA_NO_IGNORE: ${{ inputs.show_all_fails }}
if: ${{ !cancelled() && fromJSON(inputs.run_sql) }}
shell: bash
run: dotnet test Orm/Xtensive.Orm.Tests.Sql/Xtensive.Orm.Tests.Sql.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Tests.Sql.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }}
- name: Test BulkOperations extension set of tests
+ env:
+ GA_NO_IGNORE: ${{ inputs.show_all_fails }}
if: ${{ !cancelled() && fromJSON(inputs.run_extensions) }}
shell: bash
run: dotnet test Extensions/Xtensive.Orm.BulkOperations.Tests/Xtensive.Orm.BulkOperations.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.BulkOperations.Tests.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }}
- name: Test Localization extension set of tests
+ env:
+ GA_NO_IGNORE: ${{ inputs.show_all_fails }}
if: ${{ !cancelled() && fromJSON(inputs.run_extensions) }}
shell: bash
run: dotnet test Extensions/Xtensive.Orm.Localization.Tests/Xtensive.Orm.Localization.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Localization.Tests.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }}
@@ -60,11 +73,15 @@ runs:
# step. To not disturb normal tests execution Reprocessing tests moved outside the action.
- name: Test Security extension set of tests
+ env:
+ GA_NO_IGNORE: ${{ inputs.show_all_fails }}
if: ${{ !cancelled() && fromJSON(inputs.run_extensions) }}
shell: bash
run: dotnet test Extensions/Xtensive.Orm.Security.Tests/Xtensive.Orm.Security.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Security.Tests.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }}
- name: Test Tracking extension set of tests
+ env:
+ GA_NO_IGNORE: ${{ inputs.show_all_fails }}
if: ${{ !cancelled() && fromJSON(inputs.run_extensions) }}
shell: bash
run: dotnet test Extensions/Xtensive.Orm.Tracking.Tests/Xtensive.Orm.Tracking.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Tracking.Tests.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }}
\ No newline at end of file
diff --git a/.github/scripts/delete_workflow_runs.ps1 b/.github/scripts/delete_workflow_runs.ps1
new file mode 100644
index 0000000000..b2f47aca77
--- /dev/null
+++ b/.github/scripts/delete_workflow_runs.ps1
@@ -0,0 +1,240 @@
+param(
+ [Parameter(Mandatory)]
+ [string] $repo,
+ [Parameter(Mandatory)]
+ [string] $token,
+ [Parameter(Mandatory)]
+ [string] $keepDays
+)
+
+$baseUri = "https://api.github.com"
+$repoBaseUri = "$baseUri/repos/$repo"
+$actionsBaseUri = "$repoBaseUri/actions"
+$runsBaseUri = "$actionsBaseUri/runs"
+
+$headers = @{
+ Authorization = "Bearer $token"
+ Accept = "application/vnd.github+json"
+}
+
+function Get() {
+ param(
+ [string] $uri
+ )
+ return Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
+}
+
+function DeleteRuns() {
+ param (
+ [System.Collections.ArrayList] $runIds
+ )
+
+ foreach ($id in $runIds) {
+ Write-Host "Deleting run $id"
+ $deleteUri = "$runsBaseUri/$id"
+ Invoke-RestMethod -Uri $deleteUri -Headers $headers -Method Delete
+ }
+}
+
+#
+# Gets all workflow runs, finds among them the ones that meet deletion requirements
+# (inactive workflow, closed pull-request or older than required days)
+# and sorts them into several buckets - "inactive", "pull_request", "workflow_dispatch", "push"
+# and "schedule"
+#
+function GetWorkflowRunsForDeletion()
+{
+ [OutputType([System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]])]
+ param (
+ [System.Int32] $storeDays
+ )
+
+ [System.Collections.Generic.HashSet[int]]$inactiveWorkflows = New-Object System.Collections.Generic.HashSet[int]
+
+ $allWorkflows = Invoke-RestMethod -Uri "$actionsBaseUri/workflows" -Headers $headers -Method Get
+
+ # number of workflows is less then number of runs
+ # so more efficient to get them all and find inactive ones
+ foreach ($wf in $allWorkflows.workflows) {
+ if ($wf.state -ne "active") {
+ $inactiveWorkflows.Add($wf.id) | Out-Null;
+ }
+ }
+
+ [System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]]$result = New-Object System.Collections.Generic.Dictionary"[System.String, System.Collections.ArrayList]"
+
+ #keys of the dictionary equal to events of workflows
+ $result["pull_request"] = New-Object System.Collections.ArrayList
+ $result["workflow_dispatch"] = New-Object System.Collections.ArrayList
+ $result["push"] = New-Object System.Collections.ArrayList
+ $result["schedule"] = New-Object System.Collections.ArrayList
+ #special bucket
+ $result["inactive"] = New-Object System.Collections.ArrayList
+
+
+ $page = 1
+ $per_page = 100
+
+ do {
+ $uri = "$runsBaseUri" + "?page=$page&per_page=$per_page"
+ $response = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
+
+ if ($response.total_count -eq 0) {
+ return $result
+ }
+
+ [System.DateTime]$created = (Get-Date).AddDays(-$storeDays)
+
+ foreach ($run in $response.workflow_runs) {
+ if ($result.ContainsKey($run.event) -eq $true) {
+ # Doesn't matter how old the run is - if the workflow is inactive
+ # put it for deletion
+ if ($inactiveWorkflows.Contains($run.workflow_id)) {
+ $result["inactive"].Add($run) | Out-Null
+ }
+ else {
+ if ($run.event -eq "pull_request") {
+ # for PRs we collect only closed ones
+ if ($run.pull_requests.Count -eq 0) {
+ $result[$run.event].Add($run) | Out-Null
+ }
+ }
+ else {
+ # for the rest, we apply date filter
+ $created_at = [System.DateTime]::Parse($run.created_at)
+ if ($created_at -lt $created) {
+ $result[$run.event].Add($run) | Out-Null
+ }
+ }
+ }
+ }
+ }
+
+ $page++
+ } while ($response.workflow_runs.Count -eq $per_page)
+
+ return $result
+}
+
+#
+# Deletes runs of inactive workflows (of pull_request, push, workflow_dispatch or schedule event)
+#
+function DeleteRunsOfInactiveWorkflows() {
+ param (
+ [System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]] $groups
+ )
+
+ [System.Collections.ArrayList]$runs = $groups["inactive"]
+
+ if ($runs.Count -eq 0) {
+ Write-Host "No runs of inactive workflows. Skipping"
+ return
+ }
+
+ Write-Host "Deleting runs of inactive workflows"
+ $run_ids = $runs | Select-Object -ExpandProperty id
+ DeleteRuns $run_ids
+}
+
+#
+# Deletes runs of closed pull-requests
+#
+function DeleteRunsForClosedPR() {
+ param (
+ [System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]] $groups
+ )
+
+ [System.Collections.ArrayList]$runs = $groups["pull_request"]
+
+ if ($runs.Count -eq 0) {
+ Write-Host "No runs for closed pull requests. Skipping"
+ return
+ }
+
+ Write-Host "Deleting runs for closed pull requests"
+ $run_ids = $runs | Select-Object -ExpandProperty id
+ DeleteRuns $run_ids
+}
+
+#
+# Deletes runs of 'workflow_dispatch' event marked for deletion
+#
+function DeleteOldDispatchedRuns() {
+ param (
+ [System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]] $groups
+ )
+
+ [System.Collections.ArrayList]$runs = $groups["workflow_dispatch"]
+
+ if ($runs.Count -eq 0) {
+ Write-Host "No dispatched runs to delete. Skipping"
+ return
+ }
+
+ Write-Host "Deleting old runs that were dispatched"
+ $run_ids = $runs | Select-Object -ExpandProperty id
+ DeleteRuns $run_ids
+}
+
+#
+# Deletes runs of 'push' event marked for deletion
+#
+function DeleteOldRunsOnPush() {
+ param (
+ [System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]] $groups
+ )
+
+ [System.Collections.ArrayList]$runs = $groups["push"]
+
+ if ($runs.Count -eq 0) {
+ Write-Host "No runs triggered by push to delete. Skipping"
+ return
+ }
+
+ Write-Host "Deleting old runs triggered by push"
+ $run_ids = $runs | Select-Object -ExpandProperty id
+ DeleteRuns $run_ids
+}
+
+#
+# Deletes runs of 'schedule' event marked for deletion
+#
+function DeleteOldScheduledRuns() {
+ param (
+ [System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]] $groups
+ )
+
+ [System.Collections.ArrayList]$runs = $groups["schedule"]
+
+ if ($runs.Count -eq 0) {
+ Write-Host "No scheduled runs to delete. Skipping"
+ return
+ }
+
+ Write-Host "Deleting old runs triggered on schedule"
+ $run_ids = $runs | Select-Object -ExpandProperty id
+ DeleteRuns $run_ids
+}
+
+Write-Host "Collecting runs for closed PRs, inactive workflow runs, and other runs older than $keepDays days"
+
+$preserveDays = [System.Int32]::Parse($keepDays)
+
+$runsForDeletion = GetWorkflowRunsForDeletion $preserveDays
+
+if ($runsForDeletion.ToString() -eq "System.Object[]")
+{
+ # just in case somebody screws up method and forgot to apply out-null to some operation
+ # and results of method became array of objects
+ $runsForDeletion = $runsForDeletion[$runsForDeletion.Length - 1];
+}
+
+DeleteRunsOfInactiveWorkflows $runsForDeletion
+
+DeleteRunsForClosedPR $runsForDeletion
+
+DeleteOldDispatchedRuns $runsForDeletion
+
+DeleteOldRunsOnPush $runsForDeletion
+
+DeleteOldScheduledRuns $runsForDeletion
\ No newline at end of file
diff --git a/.github/workflows/auto-databaseless-tests.yml b/.github/workflows/auto-databaseless-tests.yml
new file mode 100644
index 0000000000..9915c99e8a
--- /dev/null
+++ b/.github/workflows/auto-databaseless-tests.yml
@@ -0,0 +1,129 @@
+name: β Automated no-database tests
+run-name: Core tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # extensions
+ - 'Extensions/Xtensive.Orm.Logging.log4net/**'
+ - '!Extensions/Xtensive.Orm.Logging.log4net/NuGetContent/**'
+ - '!Extensions/Xtensive.Orm.Logging.log4net/**.csproj'
+ - 'Extensions/Xtensive.Orm.Logging.log4net.Tests/**'
+ - '!Extensions/Xtensive.Orm.Logging.log4net.Tests/**.csproj'
+ - 'Extensions/Xtensive.Orm.Logging.NLog/**'
+ - '!Extensions/Xtensive.Orm.Logging.NLog/NuGetContent/**'
+ - '!Extensions/Xtensive.Orm.Logging.NLog/**.csproj'
+ - 'Extensions/Xtensive.Orm.Logging.NLog.Tests/**'
+ - '!Extensions/Xtensive.Orm.Logging.NLog.Tests/**.csproj'
+ # main project
+ - 'Orm/Xtensive.Orm/Arithmetics/**'
+ - 'Orm/Xtensive.Orm/Caching/**'
+ - 'Orm/Xtensive.Orm/Collections/**'
+ - 'Orm/Xtensive.Orm/Comparison/**'
+ - 'Orm/Xtensive.Orm/Conversion/**'
+ - 'Orm/Xtensive.Orm/Ioc/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Tuples/**'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # extensions
+ - 'Extensions/Xtensive.Orm.Logging.log4net/**'
+ - '!Extensions/Xtensive.Orm.Logging.log4net/NuGetContent/**'
+ - '!Extensions/Xtensive.Orm.Logging.log4net/**.csproj'
+ - 'Extensions/Xtensive.Orm.Logging.log4net.Tests/**'
+ - '!Extensions/Xtensive.Orm.Logging.log4net.Tests/**.csproj'
+ - 'Extensions/Xtensive.Orm.Logging.NLog/**'
+ - '!Extensions/Xtensive.Orm.Logging.NLog/NuGetContent/**'
+ - '!Extensions/Xtensive.Orm.Logging.NLog/**.csproj'
+ - 'Extensions/Xtensive.Orm.Logging.NLog.Tests/**'
+ - '!Extensions/Xtensive.Orm.Logging.NLog.Tests/**.csproj'
+ # main project
+ - 'Orm/Xtensive.Orm/Arithmetics/**'
+ - 'Orm/Xtensive.Orm/Caching/**'
+ - 'Orm/Xtensive.Orm/Collections/**'
+ - 'Orm/Xtensive.Orm/Comparison/**'
+ - 'Orm/Xtensive.Orm/Conversion/**'
+ - 'Orm/Xtensive.Orm/Ioc/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Tuples/**'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # extensions
+ - 'Extensions/Xtensive.Orm.Logging.log4net/**'
+ - '!Extensions/Xtensive.Orm.Logging.log4net/NuGetContent/**'
+ - '!Extensions/Xtensive.Orm.Logging.log4net/**.csproj'
+ - 'Extensions/Xtensive.Orm.Logging.log4net.Tests/**'
+ - '!Extensions/Xtensive.Orm.Logging.log4net.Tests/**.csproj'
+ - 'Extensions/Xtensive.Orm.Logging.NLog/**'
+ - '!Extensions/Xtensive.Orm.Logging.NLog/NuGetContent/**'
+ - '!Extensions/Xtensive.Orm.Logging.NLog/**.csproj'
+ - 'Extensions/Xtensive.Orm.Logging.NLog.Tests/**'
+ - '!Extensions/Xtensive.Orm.Logging.NLog.Tests/**.csproj'
+ # main project
+ - 'Orm/Xtensive.Orm/Arithmetics/**'
+ - 'Orm/Xtensive.Orm/Caching/**'
+ - 'Orm/Xtensive.Orm/Collections/**'
+ - 'Orm/Xtensive.Orm/Comparison/**'
+ - 'Orm/Xtensive.Orm/Conversion/**'
+ - 'Orm/Xtensive.Orm/Ioc/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Tuples/**'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ databaseless_tests:
+ name: Core Tests
+ strategy:
+ matrix:
+ net: [ 'net6.0', 'net7.0', 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-independant-tests.yml@master
+ with:
+ storage: sqlite3
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 10
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-firebird3-tests.yml b/.github/workflows/auto-firebird3-tests.yml
new file mode 100644
index 0000000000..ce1ac6e209
--- /dev/null
+++ b/.github/workflows/auto-firebird3-tests.yml
@@ -0,0 +1,182 @@
+name: βπ¦ Automated Firebird 3 tests
+run-name: Tests on Firebird 3 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/firebird/do-firebird-3_0'
+ - 'Containers/firebird/**.sh'
+ - 'Containers/firebird/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.Firebird/**'
+ - '!Orm/Xtensive.Orm.Firebird/**.csproj'
+ - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/firebird/do-firebird-3_0'
+ - 'Containers/firebird/**.sh'
+ - 'Containers/firebird/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.Firebird/**'
+ - '!Orm/Xtensive.Orm.Firebird/**.csproj'
+ - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/firebird/do-firebird-3_0'
+ - 'Containers/firebird/**.sh'
+ - 'Containers/firebird/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.Firebird/**'
+ - '!Orm/Xtensive.Orm.Firebird/**.csproj'
+ - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_firebird30:
+ name: Tests on Firebird 3
+ strategy:
+ matrix:
+ net: [ 'net5.0', 'net6.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: firebird30
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-firebird4-tests.yml b/.github/workflows/auto-firebird4-tests.yml
new file mode 100644
index 0000000000..19e7b269c2
--- /dev/null
+++ b/.github/workflows/auto-firebird4-tests.yml
@@ -0,0 +1,149 @@
+name: βπ¦ Automated Firebird 4 tests
+run-name: Tests on Firebird 4 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/firebird/do-firebird-4_0'
+ - 'Containers/firebird/**.sh'
+ - 'Containers/firebird/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.Firebird/**'
+ - '!Orm/Xtensive.Orm.Firebird/**.csproj'
+ - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/firebird/do-firebird-4_0'
+ - 'Containers/firebird/**.sh'
+ - 'Containers/firebird/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.Firebird/**'
+ - '!Orm/Xtensive.Orm.Firebird/**.csproj'
+ - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/firebird/do-firebird-4_0'
+ - 'Containers/firebird/**.sh'
+ - 'Containers/firebird/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.Firebird/**'
+ - '!Orm/Xtensive.Orm.Firebird/**.csproj'
+ - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_firebird40:
+ name: Tests on Firebird 4
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: firebird40
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-firebird5-tests.yml b/.github/workflows/auto-firebird5-tests.yml
new file mode 100644
index 0000000000..9b3afb5188
--- /dev/null
+++ b/.github/workflows/auto-firebird5-tests.yml
@@ -0,0 +1,182 @@
+name: βπ¦ Automated Firebird 5 tests
+run-name: Tests on Firebird 5 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/firebird/do-firebird-5_0'
+ - 'Containers/firebird/**.sh'
+ - 'Containers/firebird/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.Firebird/**'
+ - '!Orm/Xtensive.Orm.Firebird/**.csproj'
+ - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/firebird/do-firebird-5_0'
+ - 'Containers/firebird/**.sh'
+ - 'Containers/firebird/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.Firebird/**'
+ - '!Orm/Xtensive.Orm.Firebird/**.csproj'
+ - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/firebird/do-firebird-5_0'
+ - 'Containers/firebird/**.sh'
+ - 'Containers/firebird/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.Firebird/**'
+ - '!Orm/Xtensive.Orm.Firebird/**.csproj'
+ - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_firebird50:
+ name: Tests on Firebird 5
+ strategy:
+ matrix:
+ net: [ 'net6.0', 'net7.0', 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: firebird50
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mssql2017-tests.yml b/.github/workflows/auto-mssql2017-tests.yml
new file mode 100644
index 0000000000..3abf4f099f
--- /dev/null
+++ b/.github/workflows/auto-mssql2017-tests.yml
@@ -0,0 +1,148 @@
+name: βπ Automated MS SQL Server 2017 tests
+run-name: Tests on MS SQL Server 2017 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mssql/do-mssql-2017'
+ - 'Containers/mssql/**.sh'
+ - 'Containers/mssql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.SqlServer/**'
+ - '!Orm/Xtensive.Orm.SqlServer/**.csproj'
+ - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mssql/do-mssql-2017'
+ - 'Containers/mssql/**.sh'
+ - 'Containers/mssql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.SqlServer/**'
+ - '!Orm/Xtensive.Orm.SqlServer/**.csproj'
+ - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mssql/do-mssql-2017'
+ - 'Containers/mssql/**.sh'
+ - 'Containers/mssql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.SqlServer/**'
+ - '!Orm/Xtensive.Orm.SqlServer/**.csproj'
+ - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mssql2017:
+ name: Tests on MS SQL Server 2017
+ strategy:
+ matrix:
+ net: [ 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mssql2017
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 50
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mssql2019-tests.yml b/.github/workflows/auto-mssql2019-tests.yml
new file mode 100644
index 0000000000..d5043d8749
--- /dev/null
+++ b/.github/workflows/auto-mssql2019-tests.yml
@@ -0,0 +1,173 @@
+name: βππ
Automated MS SQL Server 2019 tests
+run-name: Tests on MS SQL Server 2019 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mssql/do-mssql-2019'
+ - 'Containers/mssql/**.sh'
+ - 'Containers/mssql/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ #main project
+ - 'Orm/Xtensive.Orm/**'
+ - '!Orm/Xtensive.Orm/**.csproj'
+ # provider
+ - 'Orm/Xtensive.Orm.SqlServer/**'
+ - '!Orm/Xtensive.Orm.SqlServer/**.csproj'
+ - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
+ # tests framework
+ - 'Orm/Xtensive.Orm.Framework/**'
+ - '!Orm/Xtensive.Orm.Framework/**.csproj'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/**'
+ - '!Orm/Xtensive.Orm.Tests/**.csproj'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # weaver changes
+ - 'Weaver/**'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mssql/do-mssql-2019'
+ - 'Containers/mssql/**.sh'
+ - 'Containers/mssql/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ #main project
+ - 'Orm/Xtensive.Orm/**'
+ - '!Orm/Xtensive.Orm/**.csproj'
+ # provider
+ - 'Orm/Xtensive.Orm.SqlServer/**'
+ - '!Orm/Xtensive.Orm.SqlServer/**.csproj'
+ - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
+ # tests framework
+ - 'Orm/Xtensive.Orm.Framework/**'
+ - '!Orm/Xtensive.Orm.Framework/**.csproj'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/**'
+ - '!Orm/Xtensive.Orm.Tests/**.csproj'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # weaver changes
+ - 'Weaver/**'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mssql/do-mssql-2019'
+ - 'Containers/mssql/**.sh'
+ - 'Containers/mssql/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ #main project
+ - 'Orm/Xtensive.Orm/**'
+ - '!Orm/Xtensive.Orm/**.csproj'
+ # provider
+ - 'Orm/Xtensive.Orm.SqlServer/**'
+ - '!Orm/Xtensive.Orm.SqlServer/**.csproj'
+ - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
+ # tests framework
+ - 'Orm/Xtensive.Orm.Framework/**'
+ - '!Orm/Xtensive.Orm.Framework/**.csproj'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/**'
+ - '!Orm/Xtensive.Orm.Tests/**.csproj'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # weaver changes
+ - 'Weaver/**'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mssql2019:
+ name: Tests on MS SQL Server 2019
+ strategy:
+ matrix:
+ net: [ 'net6.0', 'net7.0', 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mssql2019
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 50
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mssql2022-tests.yml b/.github/workflows/auto-mssql2022-tests.yml
new file mode 100644
index 0000000000..b99b99ab62
--- /dev/null
+++ b/.github/workflows/auto-mssql2022-tests.yml
@@ -0,0 +1,148 @@
+name: βπ Automated MS SQL Server 2022 tests
+run-name: Tests on MS SQL Server 2022 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mssql/do-mssql-2022'
+ - 'Containers/mssql/**.sh'
+ - 'Containers/mssql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.SqlServer/**'
+ - '!Orm/Xtensive.Orm.SqlServer/**.csproj'
+ - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mssql/do-mssql-2022'
+ - 'Containers/mssql/**.sh'
+ - 'Containers/mssql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.SqlServer/**'
+ - '!Orm/Xtensive.Orm.SqlServer/**.csproj'
+ - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mssql/do-mssql-2022'
+ - 'Containers/mssql/**.sh'
+ - 'Containers/mssql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.SqlServer/**'
+ - '!Orm/Xtensive.Orm.SqlServer/**.csproj'
+ - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mssql2022:
+ name: Tests on MS SQL Server 2022
+ strategy:
+ matrix:
+ net: [ 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mssql2022
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 50
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mysql56-tests.yml b/.github/workflows/auto-mysql56-tests.yml
new file mode 100644
index 0000000000..fd6c965687
--- /dev/null
+++ b/.github/workflows/auto-mysql56-tests.yml
@@ -0,0 +1,149 @@
+name: βπ¬ Automated MySQL 5.6 tests
+run-name: Tests on MySQL 5.6 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-5_6'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-5_6'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-5_6'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mysql56:
+ name: Tests on MySQL 5.6
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mysql56
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mysql57-tests.yml b/.github/workflows/auto-mysql57-tests.yml
new file mode 100644
index 0000000000..25081d6d55
--- /dev/null
+++ b/.github/workflows/auto-mysql57-tests.yml
@@ -0,0 +1,179 @@
+name: βπ¬π
Automated MySQL 5.7 tests
+run-name: Tests on MySQL 5.7 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ - 'Containers/mysql/do-mysql-5_7'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.cnf'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ - 'Containers/mysql/do-mysql-5_7'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.cnf'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ - 'Containers/mysql/do-mysql-5_7'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.cnf'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mysql57:
+ name: Tests on MySQL 5.7
+ strategy:
+ matrix:
+ net: [ 'net6.0', 'net7.0', 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mysql57
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mysql80-tests.yml b/.github/workflows/auto-mysql80-tests.yml
new file mode 100644
index 0000000000..d80435e8b2
--- /dev/null
+++ b/.github/workflows/auto-mysql80-tests.yml
@@ -0,0 +1,182 @@
+name: βπ¬π
Automated MySQL 8.0 tests
+run-name: Tests on MySQL 8.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_0'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_0'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_0'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mysql80:
+ name: Tests on MySQL 8.0
+ strategy:
+ matrix:
+ net: [ 'net6.0', 'net7.0', 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mysql80
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mysql81-tests.yml b/.github/workflows/auto-mysql81-tests.yml
new file mode 100644
index 0000000000..7439a441e6
--- /dev/null
+++ b/.github/workflows/auto-mysql81-tests.yml
@@ -0,0 +1,149 @@
+name: βπ¬ Automated MySQL 8.1 tests
+run-name: Tests on MySQL 8.1 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_1'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_1'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_1'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mysql81:
+ name: Tests on MySQL 8.1
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mysql81
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mysql82-tests.yml b/.github/workflows/auto-mysql82-tests.yml
new file mode 100644
index 0000000000..54d29055cf
--- /dev/null
+++ b/.github/workflows/auto-mysql82-tests.yml
@@ -0,0 +1,149 @@
+name: βπ¬ Automated MySQL 8.2 tests
+run-name: Tests on MySQL 8.2 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_2'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_2'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_2'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mysql82:
+ name: Tests on MySQL 8.2
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mysql82
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mysql83-tests.yml b/.github/workflows/auto-mysql83-tests.yml
new file mode 100644
index 0000000000..48de399e14
--- /dev/null
+++ b/.github/workflows/auto-mysql83-tests.yml
@@ -0,0 +1,149 @@
+name: βπ¬ Automated MySQL 8.3 tests
+run-name: Tests on MySQL 8.3 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_3'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_3'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_3'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mysql83:
+ name: Tests on MySQL 8.3
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mysql83
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mysql84-tests.yml b/.github/workflows/auto-mysql84-tests.yml
new file mode 100644
index 0000000000..f195fff149
--- /dev/null
+++ b/.github/workflows/auto-mysql84-tests.yml
@@ -0,0 +1,149 @@
+name: βπ¬ Automated MySQL 8.4 tests
+run-name: Tests on MySQL 8.4 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_4'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_4'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-8_4'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mysql84:
+ name: Tests on MySQL 8.4
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mysql84
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mysql90-tests.yml b/.github/workflows/auto-mysql90-tests.yml
new file mode 100644
index 0000000000..d2238071f6
--- /dev/null
+++ b/.github/workflows/auto-mysql90-tests.yml
@@ -0,0 +1,182 @@
+name: βπ¬π
Automated MySQL 9.0 tests
+run-name: Tests on MySQL 9.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-9_0'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-9_0'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-9_0'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mysql90:
+ name: Tests on MySQL 9.0
+ strategy:
+ matrix:
+ net: [ 'net6.0', 'net7.0', 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mysql90
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mysql91-tests.yml b/.github/workflows/auto-mysql91-tests.yml
new file mode 100644
index 0000000000..3c2bc4d16f
--- /dev/null
+++ b/.github/workflows/auto-mysql91-tests.yml
@@ -0,0 +1,149 @@
+name: βπ¬ Automated MySQL 9.1 tests
+run-name: Tests on MySQL 9.1 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-9_1'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-9_1'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-9_1'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mysql91:
+ name: Tests on MySQL 9.1
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mysql91
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mysql92-tests.yml b/.github/workflows/auto-mysql92-tests.yml
new file mode 100644
index 0000000000..4261611f83
--- /dev/null
+++ b/.github/workflows/auto-mysql92-tests.yml
@@ -0,0 +1,149 @@
+name: βπ¬ Automated MySQL 9.2 tests
+run-name: Tests on MySQL 9.2 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-9_2'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-9_2'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-9_2'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mysql92:
+ name: Tests on MySQL 9.2
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mysql92
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-mysql93-tests.yml b/.github/workflows/auto-mysql93-tests.yml
new file mode 100644
index 0000000000..bf2532f79f
--- /dev/null
+++ b/.github/workflows/auto-mysql93-tests.yml
@@ -0,0 +1,149 @@
+name: βπ¬ Automated MySQL 9.3 tests
+run-name: Tests on MySQL 9.3 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-9_3'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-9_3'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mysql/do-mysql-9_3'
+ - 'Containers/mysql/**.sh'
+ - 'Containers/mysql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ #provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PosgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mysql93:
+ name: Tests on MySQL 9.3
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mysql93
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-pgsql100-tests.yml b/.github/workflows/auto-pgsql100-tests.yml
new file mode 100644
index 0000000000..4def5f5e8c
--- /dev/null
+++ b/.github/workflows/auto-pgsql100-tests.yml
@@ -0,0 +1,149 @@
+name: βπ Automated PostgreSQL 10.0 tests
+run-name: Tests on PostgreSQL 10.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-10'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-10'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-10'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_pgsql100:
+ name: Tests on PostgreSQL 10.0
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: pgsql100
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-pgsql110-tests.yml b/.github/workflows/auto-pgsql110-tests.yml
new file mode 100644
index 0000000000..a55775a8e7
--- /dev/null
+++ b/.github/workflows/auto-pgsql110-tests.yml
@@ -0,0 +1,149 @@
+name: βπ Automated PostgreSQL 11.0 tests
+run-name: Tests on PostgreSQL 11.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-11'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-11'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-11'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_pgsql110:
+ name: Tests on PostgreSQL 11.0
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: pgsql110
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-pgsql120-tests.yml b/.github/workflows/auto-pgsql120-tests.yml
new file mode 100644
index 0000000000..3197c06c62
--- /dev/null
+++ b/.github/workflows/auto-pgsql120-tests.yml
@@ -0,0 +1,149 @@
+name: βπ Automated PostgreSQL 12.0 tests
+run-name: Tests on PostgreSQL 12.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-12'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-12'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-12'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_pgsql120:
+ name: Tests on PostgreSQL 12.0
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: pgsql120
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-pgsql130-tests.yml b/.github/workflows/auto-pgsql130-tests.yml
new file mode 100644
index 0000000000..45c7d70de0
--- /dev/null
+++ b/.github/workflows/auto-pgsql130-tests.yml
@@ -0,0 +1,149 @@
+name: βπ Automated PostgreSQL 13.0 tests
+run-name: Tests on PostgreSQL 13.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-13'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-13'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-13'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_pgsql130:
+ name: Tests on PostgreSQL 13.0
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: pgsql130
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-pgsql140-tests.yml b/.github/workflows/auto-pgsql140-tests.yml
new file mode 100644
index 0000000000..02c247febb
--- /dev/null
+++ b/.github/workflows/auto-pgsql140-tests.yml
@@ -0,0 +1,173 @@
+name: βππ
Automated PostgreSQL 14.0 tests
+run-name: Tests on PostgreSQL 14.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-14'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ #main project
+ - 'Orm/Xtensive.Orm/**'
+ - '!Orm/Xtensive.Orm/**.csproj'
+ # provider
+ - 'Orm/Xtensive.Orm.PostgreSql/**'
+ - '!Orm/Xtensive.Orm.PostgreSql/**.csproj'
+ - '!Orm/Xtensive.Orm.PostgreSql/NuGetContent/**'
+ # tests framework
+ - 'Orm/Xtensive.Orm.Framework/**'
+ - '!Orm/Xtensive.Orm.Framework/**.csproj'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/**'
+ - '!Orm/Xtensive.Orm.Tests/**.csproj'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # weaver changes
+ - 'Weaver/**'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-14'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ #main project
+ - 'Orm/Xtensive.Orm/**'
+ - '!Orm/Xtensive.Orm/**.csproj'
+ # provider
+ - 'Orm/Xtensive.Orm.PostgreSql/**'
+ - '!Orm/Xtensive.Orm.PostgreSql/**.csproj'
+ - '!Orm/Xtensive.Orm.PostgreSql/NuGetContent/**'
+ # tests framework
+ - 'Orm/Xtensive.Orm.Framework/**'
+ - '!Orm/Xtensive.Orm.Framework/**.csproj'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/**'
+ - '!Orm/Xtensive.Orm.Tests/**.csproj'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # weaver changes
+ - 'Weaver/**'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-14'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ #main project
+ - 'Orm/Xtensive.Orm/**'
+ - '!Orm/Xtensive.Orm/**.csproj'
+ # provider
+ - 'Orm/Xtensive.Orm.PostgreSql/**'
+ - '!Orm/Xtensive.Orm.PostgreSql/**.csproj'
+ - '!Orm/Xtensive.Orm.PostgreSql/NuGetContent/**'
+ # tests framework
+ - 'Orm/Xtensive.Orm.Framework/**'
+ - '!Orm/Xtensive.Orm.Framework/**.csproj'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/**'
+ - '!Orm/Xtensive.Orm.Tests/**.csproj'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # weaver changes
+ - 'Weaver/**'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_pgsql140:
+ name: Tests on PostgreSQL 14.0
+ strategy:
+ matrix:
+ net: [ 'net6.0', 'net7.0', 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: pgsql140
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-pgsql150-tests.yml b/.github/workflows/auto-pgsql150-tests.yml
new file mode 100644
index 0000000000..b90cab88c3
--- /dev/null
+++ b/.github/workflows/auto-pgsql150-tests.yml
@@ -0,0 +1,149 @@
+name: βπ Automated PostgreSQL 15.0 tests
+run-name: Tests on PostgreSQL 15.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-15'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-15'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-15'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_pgsql150:
+ name: Tests on PostgreSQL 15.0
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: pgsql150
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-pgsql160-tests.yml b/.github/workflows/auto-pgsql160-tests.yml
new file mode 100644
index 0000000000..0d576a2d8b
--- /dev/null
+++ b/.github/workflows/auto-pgsql160-tests.yml
@@ -0,0 +1,149 @@
+name: βπ Automated PostgreSQL 16.0 tests
+run-name: Tests on PostgreSQL 16.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-16'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-16'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-16'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_pgsql160:
+ name: Tests on PostgreSQL 16.0
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: pgsql160
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-pgsql170-tests.yml b/.github/workflows/auto-pgsql170-tests.yml
new file mode 100644
index 0000000000..d2e6520bf1
--- /dev/null
+++ b/.github/workflows/auto-pgsql170-tests.yml
@@ -0,0 +1,182 @@
+name: βππ
Automated PostgreSQL 17.0 tests
+run-name: Tests on PostgreSQL 17.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-17'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-17'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-17'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_pgsql170:
+ name: Tests on PostgreSQL 17.0
+ strategy:
+ matrix:
+ net: [ 'net6.0', 'net7.0', 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: pgsql170
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-pgsql91-tests.yml b/.github/workflows/auto-pgsql91-tests.yml
new file mode 100644
index 0000000000..f838d04575
--- /dev/null
+++ b/.github/workflows/auto-pgsql91-tests.yml
@@ -0,0 +1,149 @@
+name: βπ Automated PostgreSQL 9.1 tests
+run-name: Tests on PostgreSQL 9.1 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-9_1'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-9_1'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-9_1'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_pgsql91:
+ name: Tests on PostgreSQL 9.1
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: pgsql91
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-pgsql92-tests.yml b/.github/workflows/auto-pgsql92-tests.yml
new file mode 100644
index 0000000000..26289aa96e
--- /dev/null
+++ b/.github/workflows/auto-pgsql92-tests.yml
@@ -0,0 +1,149 @@
+name: βπ Automated PostgreSQL 9.2 tests
+run-name: Tests on PostgreSQL 9.2 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-9_2'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-9_2'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-9_2'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_pgsql92:
+ name: Tests on PostgreSQL 9.2
+ strategy:
+ matrix:
+ net: [ 'net8.0' ] # for cold runs we run for one .net
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: pgsql92
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-pgsql96-tests.yml b/.github/workflows/auto-pgsql96-tests.yml
new file mode 100644
index 0000000000..5e8569db09
--- /dev/null
+++ b/.github/workflows/auto-pgsql96-tests.yml
@@ -0,0 +1,182 @@
+name: βππ
Automated PostgreSQL 9.6 tests
+run-name: Tests on PostgreSQL 9.6 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-9_6'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-9_6'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/postgres/do-postgres-9_6'
+ - 'Containers/postgres/**.sh'
+ - 'Containers/postgres/**.sql'
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.MySql/**'
+ - '!Orm/Xtensive.Orm.MySql/**.csproj'
+ - '!Orm/Xtensive.Orm.MySql/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_pgsql96:
+ name: Tests on PostgreSQL 9.6
+ strategy:
+ matrix:
+ net: [ 'net6.0', 'net7.0', 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: pgsql96
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/auto-sqlite3-tests.yml b/.github/workflows/auto-sqlite3-tests.yml
new file mode 100644
index 0000000000..85d53eefea
--- /dev/null
+++ b/.github/workflows/auto-sqlite3-tests.yml
@@ -0,0 +1,172 @@
+name: βπ¦
π
Automated SQLite 3 tests
+run-name: Tests on SQLite 3 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.Sqlite/**'
+ - '!Orm/Xtensive.Orm.Sqlite/**.csproj'
+ - '!Orm/Xtensive.Orm.Sqlite/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.Sqlite/**'
+ - '!Orm/Xtensive.Orm.Sqlite/**.csproj'
+ - '!Orm/Xtensive.Orm.Sqlite/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # extensions code only
+ - 'Extensions/**'
+ - '!Extensions/**.csproj'
+ - '!Extensions/**.md'
+ - '!Extensions/**.props'
+ - '!Extensions/**.snk'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Attributes/**'
+ - 'Orm/Xtensive.Orm/Orm/Building/**'
+ - 'Orm/Xtensive.Orm/Orm/Linq/**'
+ - 'Orm/Xtensive.Orm/Orm/Metadata/**'
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Reflection/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.Sqlite/**'
+ - '!Orm/Xtensive.Orm.Sqlite/**.csproj'
+ - '!Orm/Xtensive.Orm.Sqlite/NuGetContent/**'
+ # main test project - only most significant parts
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_sqlite3:
+ name: Tests on SQLite 3
+ strategy:
+ matrix:
+ net: [ 'net6.0', 'net7.0', 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: sqlite3
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 30
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/autobuild-on-push-and-pr.yml b/.github/workflows/autobuild-on-push-and-pr.yml
new file mode 100644
index 0000000000..0007163c92
--- /dev/null
+++ b/.github/workflows/autobuild-on-push-and-pr.yml
@@ -0,0 +1,71 @@
+name: βπ Automated build
+run-name: Auto-build run on '${{ github.event_name }}'. Build ${{ github.run_number }}
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths-ignore:
+ - '.github/**'
+ - 'ChangeLog/**'
+ - 'Containers/**'
+ - 'Documentation/**'
+ - '.editorconfig'
+ - '.gitattributes'
+ - '.mailmap'
+ - 'License.txt'
+ - 'ReadMe.md'
+ - 'User.Directory.Build.props.example'
+ - 'Version.props'
+
+ pull_request:
+ branches:
+ - 'master'
+ paths-ignore:
+ - '.github/**'
+ - 'ChangeLog/**'
+ - 'Containers/**'
+ - 'Documentation/**'
+ - '.editorconfig'
+ - '.gitattributes'
+ - '.mailmap'
+ - 'License.txt'
+ - 'ReadMe.md'
+ - 'User.Directory.Build.props.example'
+ - 'Version.props'
+
+env:
+ BUILD_CONFIG: Release
+ TEST_VERBOSITY: minimal
+
+concurrency:
+ # Groups will not be the same for push and pull_request events!
+ # If not skip jobs on condition two identical runs will happen wasting compute resources
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+
+permissions:
+ contents: read
+
+jobs:
+ build:
+ name: Build
+ runs-on: ubuntu-latest
+ timeout-minutes: 10
+ #We have this filter to avoid double runs on PRs and pushes when branch fits internal branching rules
+ if: |
+ github.event_name == 'push' ||
+ (github.event_name == 'pull_request' &&
+ (github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name ||
+ (github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name && !startsWith(github.head_ref, 'master-'))))
+
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v4
+
+ - name: Build Orm
+ if: ${{ success() }}
+ run: dotnet build Orm.sln --configuration $BUILD_CONFIG
+
diff --git a/.github/workflows/delete-workflow-runs.yml b/.github/workflows/delete-workflow-runs.yml
new file mode 100644
index 0000000000..9c8ef724e4
--- /dev/null
+++ b/.github/workflows/delete-workflow-runs.yml
@@ -0,0 +1,47 @@
+# Runs at 01:00 every tuesday and deletes workflow runs for closed pull requests,
+# inactive workflows' runs or runs older than defined days.
+# Can also be run manually
+
+name: "βΌDelete workflow runsβΌ"
+run-name: Delete workflow run on ${{ github.event_name }}
+
+on:
+ schedule:
+ - cron: "0 1 * * 2"
+ workflow_dispatch:
+ inputs:
+ keepDays:
+ description: 'Keep history existing runs of last X days'
+ required: true
+ default: 6
+ type: number
+
+env:
+ KEEP_DAYS_DEFAULT: '6' # to not let auto-cleanup delete runs during weekend
+
+permissions:
+ actions: write
+ contents: read
+
+jobs:
+ clear:
+ if: github.ref == 'refs/heads/master'
+ runs-on: ubuntu-22.04
+ timeout-minutes: 10
+
+ steps:
+ - name: Get cleanup scripts
+ uses: actions/checkout@v4
+ with:
+ sparse-checkout: |
+ .github/scripts
+
+ - name: Run workflow history manual cleanup
+ if: ${{ github.event_name == 'workflow_dispatch' }}
+ run: .github/scripts/delete_workflow_runs.ps1 -repo ${{ github.repository }} -token ${{ secrets.GITHUB_TOKEN }} -keepDays ${{ inputs.keepDays }}
+ shell: pwsh
+
+ - name: Run workflow history auto cleanup
+ if: ${{ github.event_name == 'schedule' }}
+ run: .github/scripts/delete_workflow_runs.ps1 -repo ${{ github.repository }} -token ${{ secrets.GITHUB_TOKEN }} -keepDays ${{ env.KEEP_DAYS_DEFAULT }}
+ shell: pwsh
\ No newline at end of file
diff --git a/.github/workflows/dispatched-build.yml b/.github/workflows/dispatched-build.yml
index 434d383758..1d83e7c056 100644
--- a/.github/workflows/dispatched-build.yml
+++ b/.github/workflows/dispatched-build.yml
@@ -27,11 +27,6 @@ on:
required: false
default: ''
type: string
- fetch_depth:
- description: 'Depth of repo fetch (change if SHA populated)'
- required: false
- default: 1
- type: number
publish_artifacts:
description: 'Publish artifacts'
required: true
@@ -54,15 +49,25 @@ jobs:
BUILD_CONFIG: ${{ inputs.buildConfiguration }}
BUILD_NUMBER: ${{ github.run_number }}
steps:
- - name: Checkout repo
+ - name: Checkout repo (last commit)
+ if: ${{ inputs.specific_sha == '' || github.reg_type != 'branch' }}
+ timeout-minutes: 1
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ github.ref_name }}
+
+ - name: Checkout repo (last 50 commit)
+ if: ${{ inputs.specific_sha != '' && github.reg_type == 'branch' }}
timeout-minutes: 1
uses: actions/checkout@v4
with:
- fetch-depth: ${{ inputs.fetch_depth }}
+ ref: ${{ github.ref_name }}
+ fetch-depth: 50
- - name: Manual checkout
- if: ${{ inputs.specific_sha != '' }}
- run: git checkout ${{ inputs.specific_sha }}
+ # it leads to detached HEAD, but we don't commit anything anyway
+ - name: Manual commit checkout if required
+ if: ${{ inputs.specific_sha != '' && github.reg_type == 'branch' }}
+ run: git checkout ${{ inputs.specific_sha }}
- name: Build Orm
if: ${{ success() }}
diff --git a/.github/workflows/dispatched-firebird-tests.yml b/.github/workflows/dispatched-firebird-tests.yml
index 93017a1799..78e794656c 100644
--- a/.github/workflows/dispatched-firebird-tests.yml
+++ b/.github/workflows/dispatched-firebird-tests.yml
@@ -3,16 +3,16 @@ run-name: Run database tests on Firebird on dispatch. Run No ${{ github.run_numb
on:
workflow_dispatch:
inputs:
- fetch_depth:
- description: 'Depth of repo fetch (change if SHA populated)'
- required: false
- default: 1
- type: number
specific_sha:
description: 'Commit SHA to checkout'
required: false
default: ''
type: string
+ show_all_fails:
+ description: 'No mute tests'
+ type: boolean
+ default: false
+ required: true
firebird30:
description: 'Firebird 3.0'
type: boolean
@@ -52,7 +52,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 40
run_main: true
@@ -72,7 +72,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 40
run_main: true
@@ -92,7 +92,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 40
run_main: true
diff --git a/.github/workflows/dispatched-mssql-tests.yml b/.github/workflows/dispatched-mssql-tests.yml
index 1616b4f084..f59347d1ce 100644
--- a/.github/workflows/dispatched-mssql-tests.yml
+++ b/.github/workflows/dispatched-mssql-tests.yml
@@ -3,16 +3,16 @@ run-name: Run database tests on MS SQL Server on dispatch. Run No ${{ github.run
on:
workflow_dispatch:
inputs:
- fetch_depth:
- description: 'Depth of repo fetch (change if SHA populated)'
- required: false
- default: 1
- type: number
specific_sha:
description: 'Commit SHA to checkout'
required: false
default: ''
type: string
+ show_all_fails:
+ description: 'No mute tests'
+ type: boolean
+ default: false
+ required: true
mssql2017:
description: 'MS SQL Server 2017'
type: boolean
@@ -52,7 +52,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 50
run_main: true
@@ -72,7 +72,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 50
run_main: true
@@ -92,7 +92,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 50
run_main: true
diff --git a/.github/workflows/dispatched-mysql5-tests.yml b/.github/workflows/dispatched-mysql5-tests.yml
index 310ae43127..dae1a0d57b 100644
--- a/.github/workflows/dispatched-mysql5-tests.yml
+++ b/.github/workflows/dispatched-mysql5-tests.yml
@@ -3,16 +3,16 @@ run-name: Run database tests on MySQL on dispatch. Run No ${{ github.run_number
on:
workflow_dispatch:
inputs:
- fetch_depth:
- description: 'Depth of repo fetch (change if SHA populated)'
- required: false
- default: 1
- type: number
specific_sha:
description: 'Commit SHA to checkout'
required: false
default: ''
type: string
+ show_all_fails:
+ description: 'No mute tests'
+ type: boolean
+ default: false
+ required: true
mysql55:
description: 'MySQL 5.5'
type: boolean
@@ -52,13 +52,13 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 20
run_main: true
run_sql: true
run_extensions: true
- publish_raw_results: false
+ publish_raw_results: true
test_on_mysql56:
name: Tests on MySQL 5.6
@@ -72,7 +72,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -92,7 +92,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 35
run_main: true
diff --git a/.github/workflows/dispatched-mysql8-tests.yml b/.github/workflows/dispatched-mysql8-tests.yml
index 114f1666e9..ab901e2821 100644
--- a/.github/workflows/dispatched-mysql8-tests.yml
+++ b/.github/workflows/dispatched-mysql8-tests.yml
@@ -3,16 +3,16 @@ run-name: Run database tests on MySQL on dispatch. Run No ${{ github.run_number
on:
workflow_dispatch:
inputs:
- fetch_depth:
- description: 'Depth of repo fetch (change if SHA populated)'
- required: false
- default: 1
- type: number
specific_sha:
description: 'Commit SHA to checkout'
required: false
default: ''
type: string
+ show_all_fails:
+ description: 'No mute tests'
+ type: boolean
+ default: false
+ required: true
mysql80:
description: 'MySQL 8.0'
type: boolean
@@ -62,7 +62,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -82,7 +82,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -102,7 +102,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -122,7 +122,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -142,7 +142,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
diff --git a/.github/workflows/dispatched-mysql9-tests.yml b/.github/workflows/dispatched-mysql9-tests.yml
index 2f4b118289..8a1f792a43 100644
--- a/.github/workflows/dispatched-mysql9-tests.yml
+++ b/.github/workflows/dispatched-mysql9-tests.yml
@@ -3,16 +3,16 @@ run-name: Run database tests on MySQL on dispatch. Run No ${{ github.run_number
on:
workflow_dispatch:
inputs:
- fetch_depth:
- description: 'Depth of repo fetch (change if SHA populated)'
- required: false
- default: 1
- type: number
specific_sha:
description: 'Commit SHA to checkout'
required: false
default: ''
type: string
+ show_all_fails:
+ description: 'No mute tests'
+ type: boolean
+ default: false
+ required: true
mysql90:
description: 'MySQL 9.0'
type: boolean
@@ -57,7 +57,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -77,7 +77,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -97,7 +97,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -117,7 +117,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
diff --git a/.github/workflows/dispatched-pgsql10-tests.yml b/.github/workflows/dispatched-pgsql10-tests.yml
index 6ba801fe10..a05c4ed2ae 100644
--- a/.github/workflows/dispatched-pgsql10-tests.yml
+++ b/.github/workflows/dispatched-pgsql10-tests.yml
@@ -3,16 +3,16 @@ run-name: Run database tests on PostgreSQL on dispatch. Run No ${{ github.run_nu
on:
workflow_dispatch:
inputs:
- fetch_depth:
- description: 'Depth of repo fetch (change if SHA populated)'
- required: false
- default: 1
- type: number
specific_sha:
description: 'Commit SHA to checkout'
required: false
default: ''
type: string
+ show_all_fails:
+ description: 'No mute tests'
+ type: boolean
+ default: false
+ required: true
pgsql100:
description: 'PostgreSQL 10'
type: boolean
@@ -77,7 +77,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -97,7 +97,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -117,7 +117,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -137,7 +137,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -157,7 +157,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -177,7 +177,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -197,7 +197,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
@@ -217,7 +217,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
diff --git a/.github/workflows/dispatched-pgsql9-tests.yml b/.github/workflows/dispatched-pgsql9-tests.yml
index 43961a0cee..f21c6ad6d7 100644
--- a/.github/workflows/dispatched-pgsql9-tests.yml
+++ b/.github/workflows/dispatched-pgsql9-tests.yml
@@ -3,16 +3,16 @@ run-name: Run database tests on PostgreSQL on dispatch. Run No ${{ github.run_nu
on:
workflow_dispatch:
inputs:
- fetch_depth:
- description: 'Depth of repo fetch (change if SHA populated)'
- required: false
- default: 1
- type: number
specific_sha:
description: 'Commit SHA to checkout'
required: false
default: ''
type: string
+ show_all_fails:
+ description: 'No mute tests'
+ type: boolean
+ default: false
+ required: true
pgsql91:
description: 'PostgreSQL 9.1'
type: boolean
@@ -50,7 +50,6 @@ jobs:
# build_config: Release
# target_frameworks: net6.0
# specific_sha: ${{ inputs.specific_sha }}
- # fetch_depth: 1
# test_output_verbosity: minimal
# test_run_timeout: 70
# run_main: true
@@ -70,13 +69,13 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
run_sql: true
run_extensions: true
- publish_raw_results: false
+ publish_raw_results: true
test_on_pgsql92:
name: Tests on PostgreSQL 9.2
@@ -90,13 +89,13 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
run_sql: true
run_extensions: true
- publish_raw_results: false
+ publish_raw_results: true
test_on_pgsql96:
name: Tests on PostgreSQL 9.6
@@ -110,10 +109,10 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
run_sql: true
run_extensions: true
- publish_raw_results: false
+ publish_raw_results: true
diff --git a/.github/workflows/dispatched-sqlite-tests.yml b/.github/workflows/dispatched-sqlite-tests.yml
index a315e65913..6feeb83959 100644
--- a/.github/workflows/dispatched-sqlite-tests.yml
+++ b/.github/workflows/dispatched-sqlite-tests.yml
@@ -3,16 +3,16 @@ run-name: Run database tests on SQLite on dispatch. Run No ${{ github.run_number
on:
workflow_dispatch:
inputs:
- fetch_depth:
- description: 'Depth of repo fetch (change if SHA populated)'
- required: false
- default: 1
- type: number
specific_sha:
description: 'Commit SHA to checkout'
required: false
default: ''
type: string
+ show_all_fails:
+ description: 'No mute tests'
+ type: boolean
+ default: false
+ required: true
sqlite3:
description: 'SQLite 3'
type: boolean
@@ -42,7 +42,7 @@ jobs:
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
- fetch_depth: ${{ fromJSON(inputs.fetch_depth) }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 30
run_main: true
diff --git a/.github/workflows/reusable-storage-dependant-tests.yml b/.github/workflows/reusable-storage-dependant-tests.yml
index 7183c19515..65faa4d546 100644
--- a/.github/workflows/reusable-storage-dependant-tests.yml
+++ b/.github/workflows/reusable-storage-dependant-tests.yml
@@ -23,11 +23,11 @@ on:
required: false
default: ''
type: string
- fetch_depth:
- description: 'Depth of repo fetch (change if SHA populated)'
+ show_all_fails:
+ description: 'No mute tests'
+ type: boolean
+ default: false
required: false
- default: 1
- type: number
test_output_verbosity:
description: 'Verbosity for dotnet test command'
required: true
@@ -58,11 +58,6 @@ on:
required: false
default: false
type: boolean
- reduced_results:
- description: 'Show failed only tests'
- required: false
- default: false
- type: boolean
permissions:
contents: read
@@ -83,12 +78,25 @@ jobs:
TEST_RESULTS_FOLDER: _Build/tests/${{ inputs.build_config }}/${{ inputs.target_framework }}/${{ inputs.storage }}
steps:
- - name: Checkout repo
+ - name: downgrade OpenSSL for net5.0
+ if: $${{ contains(inputs.target_framework, 'net5.0') }}
+ timeout-minutes: 3
+ run: |
+ wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb
+ sudo dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb
+
+ - name: Checkout repo (last commit)
+ if: ${{ github.event_name == 'pull_request_review' || github.event_name == 'pull_request' || inputs.specific_sha == '' || github.ref_type != 'branch' }}
timeout-minutes: 1
uses: actions/checkout@v4
+
+ - name: Checkout repo (last 50 commit)
+ if: ${{ github.event_name != 'pull_request_review' && github.event_name != 'pull_request' && inputs.specific_sha != '' && github.ref_type == 'branch' }}
+ timeout-minutes: 5
+ uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }}
- fetch-depth: ${{ inputs.fetch_depth }}
+ fetch-depth: 50
# it leads to detached HEAD, but we don't commit anything anyway
- name: Manual commit checkout if required
@@ -123,16 +131,21 @@ jobs:
# Since composite action syntax does not allow to define step timeout
# we have to run Reprocessing project here, because it may stuck in forever-loop
- name: Test Reprocessing extension set of tests
+ id: reprocessing
+ env:
+ GA_NO_IGNORE: ${{ inputs.show_all_fails }}
if: ${{ success() && inputs.run_extensions }}
timeout-minutes: 5 # timeout here is VERY important because reprocessing tests concurrent execution which can cause forever loop
run: dotnet test Extensions/Xtensive.Orm.Reprocessing.Tests/Xtensive.Orm.Reprocessing.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Reprocessing.Tests.trx" --results-directory ${{ env.TEST_RESULTS_FOLDER }} -v ${{ inputs.test_output_verbosity }}
- name: Run tests
+ id: complex_tests
if: ${{ !cancelled()}}
timeout-minutes: ${{ inputs.test_run_timeout }}
uses: ./.github/actions/run-database-tests
with:
build_config: ${{ inputs.build_config }}
+ show_all_fails: ${{ inputs.show_all_fails }}
test_output_verbosity: ${{ inputs.test_output_verbosity }}
test_results_folder: ${{ env.TEST_RESULTS_FOLDER }}
run_main: ${{ fromJSON(inputs.run_main) }}
@@ -146,7 +159,8 @@ jobs:
docker stop $(docker ps -a -q)
- name: Publish raw test results as files
- if: ${{ !cancelled() && inputs.publish_raw_results }}
+ if: |
+ (!cancelled() && inputs.publish_raw_results) || failure()
timeout-minutes: 1
uses: actions/upload-artifact@v4
with:
@@ -157,7 +171,9 @@ jobs:
retention-days: 1
- name: Make Final Test report
- if: ${{ !cancelled() }}
+ if: |
+ (github.event_name == 'workflow_dispatch' && (steps.reprocessing.outcome != 'cancelled' || steps.complex_tests.outcome != 'cancelled'))
+ || (github.event_name != 'workflow_dispatch' && (steps.reprocessing.outcome == 'failure' || steps.complex_tests.outcome == 'failure'))
timeout-minutes: 1
uses: dorny/test-reporter@v2.1.1
with:
diff --git a/.github/workflows/reusable-storage-independant-tests.yml b/.github/workflows/reusable-storage-independant-tests.yml
index 14586074ec..bcf8fb9292 100644
--- a/.github/workflows/reusable-storage-independant-tests.yml
+++ b/.github/workflows/reusable-storage-independant-tests.yml
@@ -43,11 +43,6 @@ on:
required: false
default: false
type: boolean
- reduced_results:
- description: 'Show failed only tests'
- required: false
- default: false
- type: boolean
permissions:
contents: read
@@ -64,13 +59,34 @@ jobs:
DO_TargetFrameworks: ${{ inputs.target_framework }}
TEST_RESULTS_FOLDER: _Build/tests/${{ inputs.build_config }}/${{ inputs.target_framework }}/no-database
steps:
- - name: Checkout repo
+ - name: downgrade OpenSSL for net5.0
+ if: $${{ contains(inputs.target_framework, 'net5.0') }}
+ timeout-minutes: 3
+ run: |
+ wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb
+ sudo dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb
+
+ - name: Checkout repo (last commit)
+ if: ${{ github.event_name == 'pull_request_review' || github.event_name == 'pull_request' || inputs.specific_sha == '' || github.ref_type != 'branch' }}
timeout-minutes: 1
uses: actions/checkout@v4
+
+ - name: Checkout repo (last 50 commit)
+ if: ${{ github.event_name != 'pull_request_review' && github.event_name != 'pull_request' && inputs.specific_sha != '' && github.ref_type == 'branch' }}
+ timeout-minutes: 5
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ github.ref_name }}
+ fetch-depth: 50
+
+ # it leads to detached HEAD, but we don't commit anything anyway
+ - name: Manual commit checkout if required
+ if: ${{ inputs.specific_sha != '' && github.reg_type == 'branch' }}
+ run: git checkout ${{ inputs.specific_sha }}
- name: Build Orm
if: ${{ success() }}
- timeout-minutes: 7
+ timeout-minutes: 5
run: dotnet build Orm.sln -c ${{ inputs.build_config }}
- name: Setup .NETs
@@ -81,6 +97,7 @@ jobs:
target_framework: ${{ env.DO_TargetFrameworks }}
- name: Run tests
+ id: complex_tests
if: ${{ success() }}
timeout-minutes: ${{ inputs.test_run_timeout }}
uses: ./.github/actions/run-databaseless-tests
@@ -93,7 +110,8 @@ jobs:
run_nlog: ${{ fromJSON(inputs.run_nlog) }}
- name: Publish raw test results as files
- if: ${{ !cancelled() && inputs.publish_raw_results }}
+ if: |
+ (!cancelled() && inputs.publish_raw_results) || failure()
timeout-minutes: 1
uses: actions/upload-artifact@v4
with:
@@ -104,7 +122,9 @@ jobs:
retention-days: 1
- name: Make Final Test report
- if: ${{ !cancelled() }}
+ if: |
+ (github.event_name == 'workflow_dispatch' && steps.complex_tests.outcome != 'cancelled')
+ || (github.event_name != 'workflow_dispatch' && steps.complex_tests.outcome == 'failure')
timeout-minutes: 1
uses: dorny/test-reporter@v2.1.1
with:
diff --git a/Extensions/Xtensive.Orm.Reprocessing/DomainBuilder.cs b/Extensions/Xtensive.Orm.Reprocessing/DomainBuilder.cs
index db59efe07a..68023fc050 100644
--- a/Extensions/Xtensive.Orm.Reprocessing/DomainBuilder.cs
+++ b/Extensions/Xtensive.Orm.Reprocessing/DomainBuilder.cs
@@ -1,4 +1,4 @@
-ο»Ώusing System;
+using System;
using System.Linq;
using System.Reflection;
using Xtensive.Orm.Configuration;
@@ -27,7 +27,7 @@ public virtual Domain Build(DomainConfiguration config)
var ex = e.InnerException as ReflectionTypeLoadException;
if (ex != null)
throw new InvalidOperationException(
- string.Join("\r\n", ex.LoaderExceptions.Select(a => a.Message)), ex);
+ string.Join(Environment.NewLine, ex.LoaderExceptions.Select(a => a.Message)), ex);
throw;
}
}
diff --git a/Orm/Xtensive.Orm.Tests.Framework/NUnitFrameworkExtensions/IgnoreIfGithubActionsAttribute.cs b/Orm/Xtensive.Orm.Tests.Framework/NUnitFrameworkExtensions/IgnoreIfGithubActionsAttribute.cs
index 4facda9dc2..cbb4bd3dd0 100644
--- a/Orm/Xtensive.Orm.Tests.Framework/NUnitFrameworkExtensions/IgnoreIfGithubActionsAttribute.cs
+++ b/Orm/Xtensive.Orm.Tests.Framework/NUnitFrameworkExtensions/IgnoreIfGithubActionsAttribute.cs
@@ -120,10 +120,12 @@ protected override void OnAfterTestCheck(ITest test)
private void Check()
{
+ if (TestInfo.NoIgnoreOnGithubActions) {
+ return;
+ }
if (Provider.HasValue && !StorageProviderInfo.Instance.CheckProviderIs(Provider.Value)) {
return;
}
-
if (TriggerEvent.HasValue && TriggerEvent != TestInfo.GithubActionTrigger) {
return;
}
diff --git a/Orm/Xtensive.Orm.Tests.Framework/TestInfo.cs b/Orm/Xtensive.Orm.Tests.Framework/TestInfo.cs
index e79b024ba2..1877b349c5 100644
--- a/Orm/Xtensive.Orm.Tests.Framework/TestInfo.cs
+++ b/Orm/Xtensive.Orm.Tests.Framework/TestInfo.cs
@@ -22,6 +22,7 @@ public enum GithubActionsEvents
PullRequest,
WorkflowDispatch,
WorkflowCall,
+ WorkflowRun,
Push,
Schedule
}
@@ -33,6 +34,8 @@ public static class TestInfo
{
private static readonly bool isBuildServer;
private static readonly bool isGithubActions;
+ private static readonly bool noIgnoreOnGithubActions;
+
private static readonly GithubActionsEvents? githubActionsTriggeredBy;
///
@@ -63,6 +66,11 @@ public static class TestInfo
///
public static bool IsGithubActions => isGithubActions;
+ ///
+ /// In case of run on GinHubActions, no test ignore happens in nor
+ ///
+ public static bool NoIgnoreOnGithubActions => noIgnoreOnGithubActions;
+
///
/// Gets the event that triggered test run within Github Actions environment.
///
@@ -93,6 +101,7 @@ private static IEnumerable GetMethodAttributes() where T : Attribute
"pull_request_target" => GithubActionsEvents.PullRequest,
"workflow_dispatch" => GithubActionsEvents.WorkflowDispatch,
"workflow_call" => GithubActionsEvents.WorkflowCall,
+ "workflow_run" => GithubActionsEvents.WorkflowRun,
"schedule" => GithubActionsEvents.Schedule,
_ => null
};
@@ -101,7 +110,8 @@ private static IEnumerable GetMethodAttributes() where T : Attribute
static TestInfo()
{
isBuildServer = Environment.GetEnvironmentVariable("TEAMCITY_VERSION") != null;
- isGithubActions = Environment.GetEnvironmentVariable("GITHUB_WORKSPACE") != null;
+ isGithubActions = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("GITHUB_WORKSPACE"));
+ noIgnoreOnGithubActions = isGithubActions && string.Equals(Environment.GetEnvironmentVariable("GA_NO_IGNORE"), "true", StringComparison.OrdinalIgnoreCase);
githubActionsTriggeredBy = TryParseGithubEventName(Environment.GetEnvironmentVariable("GITHUB_EVENT_NAME"));
}
}
diff --git a/Orm/Xtensive.Orm.Tests.Sql/ChinookSchemaCreator.cs b/Orm/Xtensive.Orm.Tests.Sql/ChinookSchemaCreator.cs
index 0d0c3897f6..ce97aaf173 100644
--- a/Orm/Xtensive.Orm.Tests.Sql/ChinookSchemaCreator.cs
+++ b/Orm/Xtensive.Orm.Tests.Sql/ChinookSchemaCreator.cs
@@ -36,6 +36,7 @@ public void DropSchemaContent(Schema defaultSchema)
public void DropSchemaContent(SqlConnection connection, Schema defaultSchema)
{
+ DropViews(connection, defaultSchema);
DropTables(connection, defaultSchema);
DropViews(connection, defaultSchema);
}
diff --git a/Orm/Xtensive.Orm.Tests.Sql/MySQL/Sakila.cs b/Orm/Xtensive.Orm.Tests.Sql/MySQL/Sakila.cs
index 250f675479..d3c0cccf18 100644
--- a/Orm/Xtensive.Orm.Tests.Sql/MySQL/Sakila.cs
+++ b/Orm/Xtensive.Orm.Tests.Sql/MySQL/Sakila.cs
@@ -22,7 +22,7 @@ namespace Xtensive.Orm.Tests.Sql.MySQL
public abstract class Sakila
{
private readonly string sakilaDataBackupPath = Path.Combine(
- Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"MySQL\SakilaDb\sakila-data.sql");
+ Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"MySQL/SakilaDb/sakila-data.sql");
protected ConnectionInfo ConnectionInfo = TestConnectionInfoProvider.GetConnectionInfo();
protected SqlDriver SqlDriver;
diff --git a/Orm/Xtensive.Orm.Tests/Issues/AggregatesRelatedIssues/IssueJira0786/MaxProcessingTest.cs b/Orm/Xtensive.Orm.Tests/Issues/AggregatesRelatedIssues/IssueJira0786/MaxProcessingTest.cs
index 02b4461d49..11551f82f7 100644
--- a/Orm/Xtensive.Orm.Tests/Issues/AggregatesRelatedIssues/IssueJira0786/MaxProcessingTest.cs
+++ b/Orm/Xtensive.Orm.Tests/Issues/AggregatesRelatedIssues/IssueJira0786/MaxProcessingTest.cs
@@ -1051,12 +1051,12 @@ public void NullableFloatFieldExpressionTest06() =>
[Test]
public void NullableDoubleFieldExpressionTest01() =>
- TestMax(i => i.NullableDoubleValue1 * i.NullableDoubleValue1);
+ TestMaxWithAccuracy(i => i.NullableDoubleValue1 * i.NullableDoubleValue1, DoubleValueAccuracy);
[Mute]
[Test]
public void NullableDoubleFieldExpressionTest02() =>
- TestMax(i => (decimal?) i.NullableDoubleValue1 * i.NullableDecimalValue);
+ TestMaxWithAccuracy(i => (decimal?) i.NullableDoubleValue1 * i.NullableDecimalValue, DoubleValueAccuracy);
[Test]
public void NullableDecimalFieldExpressionTest() =>
diff --git a/Orm/Xtensive.Orm.Tests/Issues/MysqlStrangeDoubleSemicolumnInCommandIssue.cs b/Orm/Xtensive.Orm.Tests/Issues/MysqlStrangeDoubleSemicolumnInCommandIssue.cs
new file mode 100644
index 0000000000..885fcaa82b
--- /dev/null
+++ b/Orm/Xtensive.Orm.Tests/Issues/MysqlStrangeDoubleSemicolumnInCommandIssue.cs
@@ -0,0 +1,107 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Xtensive.Orm.Configuration;
+using Xtensive.Orm.Model;
+using Xtensive.Orm.Tests.Issues.MysqlStrangeDoubleSemicolumnInCommandIssueModel;
+
+namespace Xtensive.Orm.Tests.Issues.MysqlStrangeDoubleSemicolumnInCommandIssueModel
+{
+ [HierarchyRoot(InheritanceSchema.ClassTable)]
+ public class Product : Entity
+ {
+ [Field, Key]
+ public long Id { get; set; }
+
+ [Field]
+ public string Name { get; set; }
+
+ [Field]
+ public DateTime CreationDate { get; set; }
+
+ [Field]
+ public Guid UIndentifier { get; set; }
+
+ public Product(Session session)
+ : base(session)
+ {
+ }
+ }
+
+ public class DerivedProduct : Product
+ {
+ [Field]
+ public TimeSpan TimeSpan { get; set; }
+
+ public DerivedProduct(Session session)
+ : base(session)
+ {
+ }
+ }
+}
+
+namespace Xtensive.Orm.Tests.Issues
+{
+ public sealed class MysqlStrangeDoubleSemicolumnInCommandIssue : AutoBuildTest
+ {
+ protected override void CheckRequirements() => Require.ProviderIs(StorageProvider.MySql);
+
+ protected override DomainConfiguration BuildConfiguration()
+ {
+ var config = base.BuildConfiguration();
+ config.Types.Register(typeof(Product));
+ config.Types.Register(typeof(DerivedProduct));
+ config.UpgradeMode = DomainUpgradeMode.Recreate;
+
+ return config;
+ }
+
+ [Test]
+ public void BatchingTest()
+ {
+ using (var session = Domain.OpenSession()) {
+ session.Events.DbCommandExecuting += BatchingHandler;
+ using (var transaction = session.OpenTransaction()) {
+ var product = new Product(session) {
+ Name = "BatchingTestProduct",
+ CreationDate = DateTime.UtcNow,
+ UIndentifier = Guid.NewGuid(),
+ };
+
+ var dProduct = new DerivedProduct(session) {
+ Name = "BatchingTestDerivedProduct",
+ CreationDate = DateTime.UtcNow,
+ UIndentifier = Guid.NewGuid(),
+ TimeSpan = TimeSpan.FromDays(3)
+ };
+ session.SaveChanges(); // split persist and transaction commit
+ transaction.Complete();
+ }
+ session.Events.DbCommandExecuting -= BatchingHandler;
+
+ using (var transaction = session.OpenTransaction()) {
+ var allProducts = session.Query.All().ToList();
+ Assert.That(allProducts.Count, Is.EqualTo(2));
+
+ var derivedProducts = session.Query.All().ToList();
+ Assert.That(derivedProducts.Count, Is.EqualTo(1));
+ }
+ }
+ }
+
+ private void BatchingHandler(object sender, DbCommandEventArgs e)
+ {
+ var commandText = e.Command.CommandText;
+ if (commandText.Contains("INSERT")) {
+ var firstInsertIdx = commandText.IndexOf("INSERT", StringComparison.OrdinalIgnoreCase);
+ var lastInsertIdx = commandText.LastIndexOf("INSERT", StringComparison.OrdinalIgnoreCase);
+ if (firstInsertIdx == lastInsertIdx) {
+ throw new Exception("No batching happened");
+ }
+ Assert.That(commandText.Contains(";;"), Is.False, $"Command = {commandText}");
+ }
+ }
+ }
+}
diff --git a/Orm/Xtensive.Orm.Tests/Linq/MsSamples/LinqToSqlSamples.cs b/Orm/Xtensive.Orm.Tests/Linq/MsSamples/LinqToSqlSamples.cs
index d29e94afcf..621396ee69 100644
--- a/Orm/Xtensive.Orm.Tests/Linq/MsSamples/LinqToSqlSamples.cs
+++ b/Orm/Xtensive.Orm.Tests/Linq/MsSamples/LinqToSqlSamples.cs
@@ -431,7 +431,7 @@ public void DLinqJoin2()
{
var q =
from i in Session.Query.All()
- where i.Customer.Address.Country=="USA" && i.Status==InvoiceStatus.Paid
+ where i.Customer.Address.Country=="United States" && i.Status==InvoiceStatus.Paid
select i;
QueryDumper.Dump(q);
diff --git a/Orm/Xtensive.Orm.Tests/Linq/OrderByTest.cs b/Orm/Xtensive.Orm.Tests/Linq/OrderByTest.cs
index 5e4655510e..fac0743add 100644
--- a/Orm/Xtensive.Orm.Tests/Linq/OrderByTest.cs
+++ b/Orm/Xtensive.Orm.Tests/Linq/OrderByTest.cs
@@ -99,34 +99,12 @@ public void OrderByAnonymous2Test()
[Test]
public void OrderByDescendingTest()
{
- Require.ProviderIsNot(StorageProvider.Sqlite | StorageProvider.Firebird, "Different ordering");
-
- var result = Session.Query.All()
- .OrderByDescending(c => c.Address.Country).ThenByDescending(c => c.CustomerId)
- .Select(c => c.Address.City)
- .AsEnumerable()
- .Where(c => c[0] != 'S').ToList();//There are Cites which cause slight deviation in order accross RDBMSs
- var expected = Customers
- .OrderByDescending(c => c.Address.Country).ThenByDescending(c => c.CustomerId)
- .Select(c => c.Address.City)
- .Where(c => c[0] != 'S');
- Assert.That(result, Is.Not.Empty);
- Assert.IsTrue(expected.SequenceEqual(result));
- }
-
- [Test]
- public void OrderByDescendingAlternativeTest()
- {
- Require.ProviderIs(StorageProvider.Sqlite | StorageProvider.Firebird, "Different ordering");
-
var result = Session.Query.All()
- .Where(c => !c.Address.Country.StartsWith("U"))
.OrderByDescending(c => c.Address.Country).ThenByDescending(c => c.CustomerId)
.Select(c => c.Address.City)
.AsEnumerable()
.Where(c => c[0] != 'S').ToList();//There are Cites which cause slight deviation in order accross RDBMSs
var expected = Customers
- .Where(c => !c.Address.Country.StartsWith('U'))
.OrderByDescending(c => c.Address.Country).ThenByDescending(c => c.CustomerId)
.Select(c => c.Address.City)
.Where(c => c[0] != 'S');
@@ -166,12 +144,12 @@ public void OrderByExpressionReducedDataTest()
// to avoid non-english characters, which cause different order
// we filter out everything that may have them
var serverSide = Session.Query.All()
- .Where(c => c.Address.Country.In("USA", "Canda", "France", "United Kingdom"))
+ .Where(c => c.Address.Country.In("United States", "Canda", "France", "United Kingdom"))
.OrderBy(c => c.LastName.ToUpper())
.Select(c => new { c.LastName, c.Address.Country })
.ToList();
var local = Customers
- .Where(c => c.Address.Country.In("USA", "Canda", "France", "United Kingdom"))
+ .Where(c => c.Address.Country.In("United States", "Canda", "France", "United Kingdom"))
.OrderBy(c => c.LastName.ToUpper()).Select(c => new { c.LastName, c.Address.Country }).ToList();
Assert.That(serverSide, Is.Not.Empty);
Assert.IsTrue(local.SequenceEqual(serverSide));
diff --git a/Orm/Xtensive.Orm.Tests/Linq/SkipTakeElementAtTest.cs b/Orm/Xtensive.Orm.Tests/Linq/SkipTakeElementAtTest.cs
index 9244a10511..67d74b8d4b 100644
--- a/Orm/Xtensive.Orm.Tests/Linq/SkipTakeElementAtTest.cs
+++ b/Orm/Xtensive.Orm.Tests/Linq/SkipTakeElementAtTest.cs
@@ -41,7 +41,7 @@ public void ReuseTake1Test()
public void TakeTest(int takeValue)
{
var query = Session.Query.All()
- .Where(c => c.Address.Country == "USA")
+ .Where(c => c.Address.Country == "United States")
.Select(c => c.Key)
.Take(takeValue);
if (takeValue <= 0) {
@@ -64,9 +64,9 @@ public void TakeTest(int takeValue)
public void SkipTest(int skipValue)
{
var customersFromGermanyOverallCount = Session.Query.All()
- .Where(c => c.Address.Country == "USA").Count();
+ .Where(c => c.Address.Country == "United States").Count();
var query = Session.Query.All()
- .Where(c => c.Address.Country == "USA")
+ .Where(c => c.Address.Country == "United States")
.Select(c => c.Key)
.Skip(skipValue);
diff --git a/Orm/Xtensive.Orm.Tests/ObjectModel/ChinookDO.cs b/Orm/Xtensive.Orm.Tests/ObjectModel/ChinookDO.cs
index 08d414c179..62e2a379cc 100644
--- a/Orm/Xtensive.Orm.Tests/ObjectModel/ChinookDO.cs
+++ b/Orm/Xtensive.Orm.Tests/ObjectModel/ChinookDO.cs
@@ -1,4 +1,4 @@
-ο»Ώ// Copyright (C) 2010 Xtensive LLC.
+// Copyright (C) 2010 Xtensive LLC.
// All rights reserved.
// For conditions of distribution and use, see license.
// Created by: Denis Kudelin
@@ -153,7 +153,9 @@ public override void Import(Dictionary fields, ImportContext con
StreetAddress = (string) fields["StreetAddress"],
City = (string) fields["City"],
State = (string) fields["State"],
- Country = (string) fields["Country"],
+ // USA and United Kingdom, depending on runtime and/or RDBMS, can be differently ordered
+ // so not having abbreviation should resolve this issue.
+ Country = ((string) fields["Country"]).Replace("USA", "United States", StringComparison.Ordinal),
PostalCode = (string) fields["PostalCode"],
},
Phone = (string) fields["Phone"],
@@ -179,7 +181,9 @@ public override void Import(Dictionary fields, ImportContext con
StreetAddress = (string) fields["BillingStreetAddress"],
City = (string) fields["BillingCity"],
State = (string) fields["BillingState"],
- Country = (string) fields["BillingCountry"],
+ // USA and United Kingdom, depending on runtime and/or RDBMS, can be differently ordered
+ // so not having abbreviation should resolve this issue.
+ Country = ((string) fields["BillingCountry"]).Replace("USA", "United States", StringComparison.Ordinal),
PostalCode = (string) fields["BillingPostalCode"],
},
Total = (decimal) fields["Total"],
diff --git a/Orm/Xtensive.Orm.Tests/TestInfoTest.cs b/Orm/Xtensive.Orm.Tests/TestInfoTest.cs
new file mode 100644
index 0000000000..dfaa4a126c
--- /dev/null
+++ b/Orm/Xtensive.Orm.Tests/TestInfoTest.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+
+namespace Xtensive.Orm.Tests
+{
+
+ [TestFixture]
+ public sealed class TestInfoTest
+ {
+ [Test]
+ public void IsBuildServerTest()
+ {
+ var teamCityVersion = Environment.GetEnvironmentVariable("TEAMCITY_VERSION");
+ Console.WriteLine($"TEAMCITY_VERSION : {teamCityVersion}; IsBuildServer : {TestInfo.IsBuildServer}");
+ Assert.That(TestInfo.IsBuildServer, Is.EqualTo(teamCityVersion != null));
+ }
+
+ [Test]
+ public void IsGithubActionsTest()
+ {
+ var githubActions = Environment.GetEnvironmentVariable("GITHUB_WORKSPACE");
+ Console.WriteLine($"GITHUB_WORKSPACE : {githubActions}; IsGithubActions : {TestInfo.IsGithubActions}");
+
+ if (githubActions is null) {
+ Assert.That(TestInfo.IsGithubActions, Is.False);
+
+ var githbuActionsNoIgnore = Environment.GetEnvironmentVariable("GA_NO_IGNORE");
+ Console.WriteLine($"GA_NO_IGNORE : {githbuActionsNoIgnore} ; NoIgnoreOnGithubActions : {TestInfo.NoIgnoreOnGithubActions}");
+ if (githbuActionsNoIgnore is null)
+ Assert.That(TestInfo.NoIgnoreOnGithubActions);
+ else
+ Assert.That(TestInfo.NoIgnoreOnGithubActions);
+ }
+ else {
+ Assert.That(TestInfo.IsGithubActions, Is.True);
+
+ var githubActionsTrigger = Environment.GetEnvironmentVariable("GITHUB_EVENT_NAME");
+ Console.WriteLine($"GITHUB_EVENT_NAME : {githubActionsTrigger} ; GithubActionTrigger : {TestInfo.GithubActionTrigger}");
+ if (githubActionsTrigger is null) {
+ Assert.That(TestInfo.GithubActionTrigger.HasValue, Is.False);
+ }
+ else {
+ Assert.That(TestInfo.GithubActionTrigger.HasValue, Is.True);
+ }
+
+ var githbuActionsNoIgnore = Environment.GetEnvironmentVariable("GA_NO_IGNORE");
+ Console.WriteLine($"GA_NO_IGNORE : {githbuActionsNoIgnore} ; NoIgnoreOnGithubActions : {TestInfo.NoIgnoreOnGithubActions}");
+ if (githbuActionsNoIgnore is null) {
+ Assert.That(TestInfo.NoIgnoreOnGithubActions, Is.False);
+ }
+ else {
+ Assert.That(TestInfo.NoIgnoreOnGithubActions, Is.EqualTo(githbuActionsNoIgnore.Equals("true", StringComparison.OrdinalIgnoreCase)));
+ }
+ }
+ }
+ }
+}
diff --git a/Orm/Xtensive.Orm/Orm/KeyMapping.cs b/Orm/Xtensive.Orm/Orm/KeyMapping.cs
index b4a6d625f5..13aa3aa50f 100644
--- a/Orm/Xtensive.Orm/Orm/KeyMapping.cs
+++ b/Orm/Xtensive.Orm/Orm/KeyMapping.cs
@@ -49,7 +49,7 @@ public void RemapEntityKeys(Session session)
///
public override string ToString()
{
- return $"{Strings.KeyMapping}:\r\n" + (
+ return $"{Strings.KeyMapping}:{Environment.NewLine}" + (
from pair in Map
let pairKeyString = pair.Key.ToString()
orderby pairKeyString
diff --git a/Orm/Xtensive.Orm/Orm/Operation.cs b/Orm/Xtensive.Orm/Orm/Operation.cs
index aeaaaa2031..d8983d81ee 100644
--- a/Orm/Xtensive.Orm/Orm/Operation.cs
+++ b/Orm/Xtensive.Orm/Orm/Operation.cs
@@ -118,7 +118,7 @@ public override string ToString()
private string FormatIdentifiedEntities()
{
// Shouldn't be moved to resources
- return " Identified entities:\r\n" + (
+ return " Identified entities:" + Environment.NewLine + (
from pair in IdentifiedEntities
orderby pair.Key
select $" {pair.Key}: {pair.Value}"
@@ -129,7 +129,7 @@ orderby pair.Key
private string FormatOperations(string title, IEnumerable operations)
{
// Shouldn't be moved to resources
- return $" {title}:\r\n" +
+ return string.Format(" {0}:", title) + Environment.NewLine +
operations.ToDelimitedString(Environment.NewLine).ToString().Indent(4);
}
diff --git a/Orm/Xtensive.Orm/Orm/OperationLog.cs b/Orm/Xtensive.Orm/Orm/OperationLog.cs
index 748daa89f8..fed7eeb901 100644
--- a/Orm/Xtensive.Orm/Orm/OperationLog.cs
+++ b/Orm/Xtensive.Orm/Orm/OperationLog.cs
@@ -110,7 +110,8 @@ public object Replay(object target)
///
public override string ToString()
{
- var sb = new StringBuilder($"{Strings.Operations}:\r\n");
+ var sb = new StringBuilder(string.Format("{0}:", Strings.Operations));
+ _ = sb.AppendLine();
foreach (var o in operations)
sb.AppendLine(o.ToString().Indent(2));
return sb.ToString().Trim();
diff --git a/Orm/Xtensive.Orm/Orm/Operations/KeySetOperation.cs b/Orm/Xtensive.Orm/Orm/Operations/KeySetOperation.cs
index 532522c8ab..1ed5a7da6f 100644
--- a/Orm/Xtensive.Orm/Orm/Operations/KeySetOperation.cs
+++ b/Orm/Xtensive.Orm/Orm/Operations/KeySetOperation.cs
@@ -28,7 +28,7 @@ public abstract class KeySetOperation : Operation,
public override string Description {
get
{
- return $"{Title}:\r\n{Keys.ToDelimitedString("\r\n").Indent(2)}";
+ return $"{Title}:{Environment.NewLine}{Keys.ToDelimitedString(Environment.NewLine).Indent(2)}";
}
}
diff --git a/Orm/Xtensive.Orm/Orm/Upgrade/SchemaComparisonResult.cs b/Orm/Xtensive.Orm/Orm/Upgrade/SchemaComparisonResult.cs
index 819e94ea0f..c23864dd8a 100644
--- a/Orm/Xtensive.Orm/Orm/Upgrade/SchemaComparisonResult.cs
+++ b/Orm/Xtensive.Orm/Orm/Upgrade/SchemaComparisonResult.cs
@@ -72,7 +72,7 @@ public override string ToString()
HasUnsafeActions.ToString().ToLower(),
HasColumnTypeChanges.ToString().ToLower(),
IsCompatibleInLegacyMode.HasValue ? IsCompatibleInLegacyMode.Value.ToString() : Strings.Unknown,
- UnsafeActions.Any() ? UnsafeActions.ToDelimitedString("\r\n").Indent(2) : string.Empty,
+ UnsafeActions.Any() ? UnsafeActions.ToDelimitedString(Environment.NewLine).Indent(2) : string.Empty,
Hints!=null ? Hints.ToString().Indent(2) : string.Empty,
Difference!=null ? Difference.ToString().Indent(2) : string.Empty);
}
diff --git a/Orm/Xtensive.Orm/Sql/Compiler/SqlTranslator.cs b/Orm/Xtensive.Orm/Sql/Compiler/SqlTranslator.cs
index b9ced3035f..4f74980e27 100644
--- a/Orm/Xtensive.Orm/Sql/Compiler/SqlTranslator.cs
+++ b/Orm/Xtensive.Orm/Sql/Compiler/SqlTranslator.cs
@@ -34,7 +34,7 @@ public abstract class SqlTranslator : SqlDriverBound
public NumberFormatInfo FloatNumberFormat { get; private set; }
public NumberFormatInfo DoubleNumberFormat { get; private set; }
- public virtual string NewLine => "\r\n";
+ public virtual string NewLine { get { return Environment.NewLine; } }
public virtual string OpeningParenthesis => "(";
public virtual string ClosingParenthesis => ")";
diff --git a/ReadMe.md b/ReadMe.md
index 88616b9ad9..2edf4fa093 100644
--- a/ReadMe.md
+++ b/ReadMe.md
@@ -1,5 +1,5 @@
## :exclamation: Important :exclamation:
-We discovered a serious issue connected to entity saving to storage for provider that use batching. Though its appearance is rare, version update is **strongly recommended**.
+We discovered a serious issue connected to entity saving to storage for providers that use batching. Though its appearance is rare, version update is **strongly recommended**.
Minimal versions in which the issue is addressed: [6.0.12](https://github.com/DataObjects-NET/dataobjects-net/releases/tag/6.0.12),
[7.0.4](https://github.com/DataObjects-NET/dataobjects-net/releases/tag/7.0.4),
diff --git a/Version.props b/Version.props
index ddbcf1662f..d989becc36 100644
--- a/Version.props
+++ b/Version.props
@@ -2,8 +2,8 @@
- 7.2.191
- servicetitan-test
+ 7.2.192
+ servicetitan