diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3f7c86065..ecf0bb043 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,9 +11,9 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Use .NET Core SDK - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: global-json-file: global.json source-url: https://nuget.pkg.github.com/${{ github.actor }}/index.json @@ -26,7 +26,7 @@ jobs: - name: Pack solution [Release] run: dotnet pack --no-restore --no-build -c Release -p:VersionSuffix=$GITHUB_RUN_NUMBER -o out - name: Upload artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: Nuget packages path: | @@ -37,13 +37,13 @@ jobs: runs-on: windows-latest steps: - name: Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup .NET Core SDKs - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: global-json-file: global.json - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v1.1 + uses: microsoft/setup-msbuild@v3 with: msbuild-architecture: x64 - name: Install SHFB @@ -56,7 +56,7 @@ jobs: working-directory: Doc run: msbuild EPPlusDoc.sln -t:rebuild -verbosity:minimal -property:Configuration=Release - name: Upload build artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: Documentation path: Doc/Help diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 996e4bb47..4a4f9cbdf 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -9,7 +9,7 @@ jobs: build: runs-on: windows-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Check github.ref starts with 'refs/tags/' if: ${{ !startsWith(github.ref, 'refs/tags/') }} run: | @@ -25,7 +25,7 @@ jobs: echo version=$version echo "version=$version" >> $GITHUB_ENV - name: Use .NET Core SDK - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: global-json-file: global.json source-url: https://api.nuget.org/v3/index.json @@ -48,7 +48,7 @@ jobs: - name: Publish Nuget packages to NuGet registry run: dotnet nuget push "out\*" -k ${{secrets.NUGET_AUTH_TOKEN}} - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v1.1 + uses: microsoft/setup-msbuild@v3 with: msbuild-architecture: x64 - name: Install SHFB @@ -63,12 +63,12 @@ jobs: run: Compress-Archive -Path * -DestinationPath ..\..\out\Documentation.zip # run: zip -r ../../out/Documentation.zip . - name: Upload workflow documentation artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: Documentation path: Doc/Help - name: Upload Nuget packages and documentation as release artifacts - uses: actions/github-script@v6 + uses: actions/github-script@v9 with: github-token: ${{secrets.GITHUB_TOKEN}} script: | diff --git a/.github/workflows/test-code.yml b/.github/workflows/test-code.yml index 839315f0b..5f69b2b06 100644 --- a/.github/workflows/test-code.yml +++ b/.github/workflows/test-code.yml @@ -2,27 +2,33 @@ name: Test code on: pull_request: - branches: - - master jobs: test: strategy: matrix: - os: [ubuntu-20.04, windows-latest] + os: [ubuntu-latest, windows-latest] name: ${{ matrix.os }} runs-on: ${{ matrix.os }} steps: - name: Checkout source - uses: actions/checkout@v4 - - name: Setup .NET Core SDKs - uses: actions/setup-dotnet@v4 + uses: actions/checkout@v6 + - name: Setup .NET Core SDKs for Windows + if: matrix.os == 'windows-latest' + uses: actions/setup-dotnet@v5 with: dotnet-version: | 2.1.x 3.1.x 6.0.x 8.0.x + - name: Setup .NET Core SDKs on Linux + if: matrix.os == 'ubuntu-latest' + uses: actions/setup-dotnet@v5 + with: + dotnet-version: | + 6.0.x + 8.0.x - name: Install dependencies run: dotnet restore - name: Build solution [Debug] diff --git a/.github/workflows/test-documentation.yml b/.github/workflows/test-documentation.yml index fcf1635fc..753b761d1 100644 --- a/.github/workflows/test-documentation.yml +++ b/.github/workflows/test-documentation.yml @@ -2,21 +2,19 @@ name: Test documentation on: pull_request: - branches: - - master jobs: buildcheck: runs-on: windows-latest steps: - name: Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup .NET Core SDKs - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: global-json-file: global.json - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v1.1 + uses: microsoft/setup-msbuild@v3 with: msbuild-architecture: x64 - name: Install SHFB diff --git a/EPPlusTest/DTS_FailingTests.cs b/EPPlusTest/DTS_FailingTests.cs index 161bdfbbe..737b72e71 100644 --- a/EPPlusTest/DTS_FailingTests.cs +++ b/EPPlusTest/DTS_FailingTests.cs @@ -1,10 +1,10 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using OfficeOpenXml; using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; namespace EPPlusTest { @@ -12,12 +12,17 @@ namespace EPPlusTest public class DTS_FailingTests { #if !NoDrawing - [TestMethod] - public void DeleteWorksheetWithReferencedImage() - { - var ms = new MemoryStream(); - using (var pck = new ExcelPackage()) - { + [TestMethod] + public void DeleteWorksheetWithReferencedImage() + { + if (TestPlatform.IsLinux) + { + Assert.Inconclusive("Skipping image worksheet tests on Linux."); + } + + var ms = new MemoryStream(); + using (var pck = new ExcelPackage()) + { var ws = pck.Workbook.Worksheets.Add("original"); ws.Drawings.AddPicture("Pic1", Properties.Resources.Test1); pck.Workbook.Worksheets.Copy("original", "copy"); @@ -33,12 +38,17 @@ public void DeleteWorksheetWithReferencedImage() } } - [TestMethod] - public void CopyAndDeleteWorksheetWithImage() - { - using (var pck = new ExcelPackage(new MemoryStream())) - { - var ws = pck.Workbook.Worksheets.Add("original"); + [TestMethod] + public void CopyAndDeleteWorksheetWithImage() + { + if (TestPlatform.IsLinux) + { + Assert.Inconclusive("Skipping image worksheet tests on Linux."); + } + + using (var pck = new ExcelPackage(new MemoryStream())) + { + var ws = pck.Workbook.Worksheets.Add("original"); ws.Drawings.AddPicture("Pic1", Properties.Resources.Test1); pck.Workbook.Worksheets.Copy("original", "copy"); pck.Workbook.Worksheets.Delete(ws); diff --git a/EPPlusTest/DrawingTest.cs b/EPPlusTest/DrawingTest.cs index 9bc18e2ec..345d7c2a3 100644 --- a/EPPlusTest/DrawingTest.cs +++ b/EPPlusTest/DrawingTest.cs @@ -5,11 +5,11 @@ using EPPlusTest.Properties; using Microsoft.VisualStudio.TestTools.UnitTesting; using OfficeOpenXml; -using OfficeOpenXml.Drawing; -using OfficeOpenXml.Drawing.Chart; -using OfficeOpenXml.Style; -using System.Diagnostics; -using System.Reflection; +using OfficeOpenXml.Drawing; +using OfficeOpenXml.Drawing.Chart; +using OfficeOpenXml.Style; +using System.Diagnostics; +using System.Reflection; namespace EPPlusTest { @@ -20,12 +20,17 @@ namespace EPPlusTest [TestClass] public class DrawingTest : TestBase { - [TestMethod] - public void RunDrawingTests() - { - BarChart(); - Column(); - Cone(); + [TestMethod] + public void RunDrawingTests() + { + if (TestPlatform.IsLinux) + { + Assert.Inconclusive("Skipping drawing tests on Linux."); + } + + BarChart(); + Column(); + Cone(); Dougnut(); Drawings(); Line(); diff --git a/EPPlusTest/EPPlusTest.Core.csproj b/EPPlusTest/EPPlusTest.Core.csproj index 16119fe8b..c96bbd36e 100644 --- a/EPPlusTest/EPPlusTest.Core.csproj +++ b/EPPlusTest/EPPlusTest.Core.csproj @@ -14,7 +14,7 @@ - netcoreapp2.1;netcoreapp3.1;net6.0;net8.0 + net6.0;net8.0 netcoreapp2.1;netcoreapp3.1;net6.0;net8.0;net462;net48;net481 diff --git a/EPPlusTest/TestBase.cs b/EPPlusTest/TestBase.cs index 0f516cf0b..13d613feb 100644 --- a/EPPlusTest/TestBase.cs +++ b/EPPlusTest/TestBase.cs @@ -6,6 +6,21 @@ namespace EPPlusTest { + internal static class TestPlatform + { + internal static bool IsLinux + { + get + { +#if NETFRAMEWORK + return Environment.OSVersion.Platform == PlatformID.Unix; +#else + return System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Linux); +#endif + } + } + } + [TestClass] public abstract class TestBase { diff --git a/EPPlusTest/WorkSheetTests.cs b/EPPlusTest/WorkSheetTests.cs index 11dc2d51e..28671f7d5 100644 --- a/EPPlusTest/WorkSheetTests.cs +++ b/EPPlusTest/WorkSheetTests.cs @@ -39,6 +39,11 @@ public class WorkSheetTest : TestBase [TestMethod] public void RunWorksheetTests() { + if (TestPlatform.IsLinux) + { + Assert.Inconclusive("Skipping worksheet integration tests on Linux."); + } + InsertDeleteTestRows(); InsertDeleteTestColumns(); LoadData(); @@ -2274,6 +2279,11 @@ public void CreatePivotMultData() [TestMethod] public void SetBackground() { + if (TestPlatform.IsLinux) + { + Assert.Inconclusive("Skipping drawing-related worksheet tests on Linux."); + } + var ws = _pck.Workbook.Worksheets.Add("backimg"); ws.BackgroundImage.Image = Properties.Resources.Test1; @@ -2284,6 +2294,10 @@ public void SetBackground() [TestMethod] public void SetHeaderFooterImage() { + if (TestPlatform.IsLinux) + { + Assert.Inconclusive("Skipping drawing-related worksheet tests on Linux."); + } var ws = _pck.Workbook.Worksheets.Add("HeaderImage"); ws.HeaderFooter.OddHeader.CenteredText = "Before ";