diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml
index dfb4e0e..f2635c0 100644
--- a/.github/workflows/dotnet.yml
+++ b/.github/workflows/dotnet.yml
@@ -11,21 +11,14 @@ on:
jobs:
build:
-
runs-on: ubuntu-latest
-
- env:
- CI: true
-
steps:
- - uses: actions/checkout@v4
+ - name: Initialize and update submodules
+ uses: actions/checkout@v4
with:
submodules: recursive
- - name: Initialize and update submodules
- run: git submodule update --init --recursive
-
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
@@ -39,9 +32,12 @@ jobs:
- name: Build projects
run: dotnet build --no-restore
+
+ - name: Install JetBrains dotCover CLI
+ run: dotnet tool install --global JetBrains.dotCover.CommandLineTools
- name: Run unit tests
- run: dotnet test BTCPayServer.Plugins.Monero.UnitTests/BTCPayServer.Plugins.UnitTests.csproj /p:CollectCoverage=true /p:CoverletOutputFormat=json /p:CoverletOutput=../coverage/coverage.json
+ run: dotCover cover-dotnet --TargetArguments="test BTCPayServer.Plugins.UnitTests --no-build" --output=coverage/dotCover.UnitTests.output.dcvr --filters="-:Assembly=BTCPayServer.Plugins.UnitTests;-:Assembly=testhost;-:Assembly=BTCPayServer;-:Class=AspNetCoreGeneratedDocument.*"
- name: Run integration tests
run: docker compose -f BTCPayServer.Plugins.IntegrationTests/docker-compose.yml run tests
@@ -54,4 +50,4 @@ jobs:
uses: actions/upload-artifact@v4.6.2
with:
name: coverage-report
- path: coverage/coverage.cobertura.xml
\ No newline at end of file
+ path: coverage/dotcover.xml
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 2e6b938..5b5ab00 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
.idea
Plugins/packed
.vs/
+coverage
diff --git a/BTCPayServer.Plugins.IntegrationTests/BTCPayServer.Plugins.IntegrationTests.csproj b/BTCPayServer.Plugins.IntegrationTests/BTCPayServer.Plugins.IntegrationTests.csproj
index ccb4ba0..561c6d8 100644
--- a/BTCPayServer.Plugins.IntegrationTests/BTCPayServer.Plugins.IntegrationTests.csproj
+++ b/BTCPayServer.Plugins.IntegrationTests/BTCPayServer.Plugins.IntegrationTests.csproj
@@ -4,7 +4,6 @@
net8.0
enable
enable
-
false
@@ -29,6 +28,7 @@
+
diff --git a/BTCPayServer.Plugins.IntegrationTests/Dockerfile b/BTCPayServer.Plugins.IntegrationTests/Dockerfile
index ccc945d..b607dc0 100644
--- a/BTCPayServer.Plugins.IntegrationTests/Dockerfile
+++ b/BTCPayServer.Plugins.IntegrationTests/Dockerfile
@@ -32,6 +32,7 @@ RUN mkdir -p ${MONERO_PLUGIN_FOLDER}
RUN cd Plugins/Monero && dotnet build BTCPayServer.Plugins.Monero.sln --configuration ${CONFIGURATION_NAME} /p:RazorCompileOnBuild=true --output ${MONERO_PLUGIN_FOLDER}
RUN cd BTCPayServer.Plugins.IntegrationTests && dotnet build --configuration ${CONFIGURATION_NAME} /p:CI_TESTS=true /p:RazorCompileOnBuild=true
RUN dotnet tool install --global Microsoft.Playwright.CLI
+RUN dotnet tool install --global JetBrains.DotCover.CommandLineTools
ENV PATH="$PATH:/root/.dotnet/tools"
RUN playwright install chromium --with-deps
WORKDIR /source/BTCPayServer.Plugins.IntegrationTests
diff --git a/BTCPayServer.Plugins.IntegrationTests/MoneroPluginTests/MoneroIntegrationTestBase.cs b/BTCPayServer.Plugins.IntegrationTests/Monero/MoneroIntegrationTestBase.cs
similarity index 89%
rename from BTCPayServer.Plugins.IntegrationTests/MoneroPluginTests/MoneroIntegrationTestBase.cs
rename to BTCPayServer.Plugins.IntegrationTests/Monero/MoneroIntegrationTestBase.cs
index 5b06f38..ccfb678 100644
--- a/BTCPayServer.Plugins.IntegrationTests/MoneroPluginTests/MoneroIntegrationTestBase.cs
+++ b/BTCPayServer.Plugins.IntegrationTests/Monero/MoneroIntegrationTestBase.cs
@@ -1,6 +1,7 @@
using Xunit.Abstractions;
+using BTCPayServer.Tests;
-namespace BTCPayServer.Tests
+namespace BTCPayServer.Plugins.IntegrationTests.Monero
{
public class MoneroAndBitcoinIntegrationTestBase : UnitTestBase
{
diff --git a/BTCPayServer.Plugins.IntegrationTests/MoneroPluginTests/MoneroPluginUITest.cs b/BTCPayServer.Plugins.IntegrationTests/Monero/MoneroPluginUITest.cs
similarity index 92%
rename from BTCPayServer.Plugins.IntegrationTests/MoneroPluginTests/MoneroPluginUITest.cs
rename to BTCPayServer.Plugins.IntegrationTests/Monero/MoneroPluginUITest.cs
index f873a37..7728371 100644
--- a/BTCPayServer.Plugins.IntegrationTests/MoneroPluginTests/MoneroPluginUITest.cs
+++ b/BTCPayServer.Plugins.IntegrationTests/Monero/MoneroPluginUITest.cs
@@ -2,7 +2,7 @@ using BTCPayServer.Tests;
using Xunit;
using Xunit.Abstractions;
-namespace BTCPayServer.Plugins.IntegrationTests.MoneroPluginTests;
+namespace BTCPayServer.Plugins.IntegrationTests.Monero;
public class MoneroPluginIntegrationTest(ITestOutputHelper helper) : MoneroAndBitcoinIntegrationTestBase(helper)
{
diff --git a/BTCPayServer.Plugins.IntegrationTests/docker-entrypoint.sh b/BTCPayServer.Plugins.IntegrationTests/docker-entrypoint.sh
index 72b3db1..66ff6f4 100755
--- a/BTCPayServer.Plugins.IntegrationTests/docker-entrypoint.sh
+++ b/BTCPayServer.Plugins.IntegrationTests/docker-entrypoint.sh
@@ -1,9 +1,28 @@
#!/bin/sh
set -e
-FILTERS=" "
-if [ ! -z "$TEST_FILTERS" ]; then
-FILTERS="--filter $TEST_FILTERS"
-fi
+dotCover cover-dotnet \
+ --TargetArguments="test -c ${CONFIGURATION_NAME} $FILTERS . --no-build" \
+ --Output=/coverage/dotCover.IntegrationTests.output.dcvr \
+ --filters="-:Assembly=BTCPayServer.Plugins.IntegrationTests;-:Assembly=testhost;-:Assembly=BTCPayServer;-:Assembly=ExchangeSharp;-:Assembly=BTCPayServer.Tests;-:Assembly=BTCPayServer.Client;-:Assembly=BTCPayServer.Abstractions;-:Assembly=BTCPayServer.Data;-:Assembly=BTCPayServer.Common;-:Assembly=BTCPayServer.Logging;-:Assembly=BTCPayServer.Rating;-:Assembly=Dapper;-:Assembly=Serilog.Extensions.Logging;-:Class=AspNetCoreGeneratedDocument.*"
-dotnet test -c ${CONFIGURATION_NAME} $FILTERS --no-build -v n --logger "console;verbosity=normal" /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=/coverage/coverage.cobertura.xml /p:MergeWith=/coverage/coverage.json< /dev/null
\ No newline at end of file
+dotCover merge \
+ --Source=/coverage/dotCover.IntegrationTests.output.dcvr,/coverage/dotCover.UnitTests.output.dcvr \
+ --Output=/coverage/mergedCoverage.dcvr
+
+dotCover report \
+ --Source=/coverage/mergedCoverage.dcvr \
+ --ReportType=HTML \
+ --Output=/coverage/mergedCoverage.html \
+ --ReportType=DetailedXML \
+ --Output=/coverage/dotcover.xml
+
+dotCover report \
+ --Source=/coverage/dotCover.UnitTests.output.dcvr \
+ --ReportType=HTML \
+ --Output=/coverage/unitCoverage.html
+
+dotCover report \
+ --Source=/coverage/dotCover.IntegrationTests.output.dcvr \
+ --ReportType=HTML \
+ --Output=/coverage/integrationCoverage.html
\ No newline at end of file
diff --git a/BTCPayServer.Plugins.Monero.UnitTests/BTCPayServer.Plugins.UnitTests.csproj b/BTCPayServer.Plugins.UnitTests/BTCPayServer.Plugins.UnitTests.csproj
similarity index 96%
rename from BTCPayServer.Plugins.Monero.UnitTests/BTCPayServer.Plugins.UnitTests.csproj
rename to BTCPayServer.Plugins.UnitTests/BTCPayServer.Plugins.UnitTests.csproj
index 75efe8d..719d431 100644
--- a/BTCPayServer.Plugins.Monero.UnitTests/BTCPayServer.Plugins.UnitTests.csproj
+++ b/BTCPayServer.Plugins.UnitTests/BTCPayServer.Plugins.UnitTests.csproj
@@ -5,7 +5,7 @@
enable
enable
false
- BTCPayServer.Plugins.Monero.UnitTests
+ BTCPayServer.Plugins.UnitTests
$(MSBuildProjectDirectory)/coverage/
true
diff --git a/BTCPayServer.Plugins.Monero.UnitTests/Configuration/MoneroLikeConfigurationTests.cs b/BTCPayServer.Plugins.UnitTests/Monero/Configuration/MoneroLikeConfigurationTests.cs
similarity index 98%
rename from BTCPayServer.Plugins.Monero.UnitTests/Configuration/MoneroLikeConfigurationTests.cs
rename to BTCPayServer.Plugins.UnitTests/Monero/Configuration/MoneroLikeConfigurationTests.cs
index 13ea3fa..6b67793 100644
--- a/BTCPayServer.Plugins.Monero.UnitTests/Configuration/MoneroLikeConfigurationTests.cs
+++ b/BTCPayServer.Plugins.UnitTests/Monero/Configuration/MoneroLikeConfigurationTests.cs
@@ -1,7 +1,7 @@
using BTCPayServer.Plugins.Monero.Configuration;
using Xunit;
-namespace BTCPayServer.Plugins.Monero.UnitTests.Configuration
+namespace BTCPayServer.Plugins.UnitTests.Monero.Configuration
{
public class MoneroLikeConfigurationTests
{
diff --git a/BTCPayServer.Plugins.Monero.UnitTests/Payments/MoneroLikePaymentDataTests.cs b/BTCPayServer.Plugins.UnitTests/Monero/Payments/MoneroLikePaymentDataTests.cs
similarity index 96%
rename from BTCPayServer.Plugins.Monero.UnitTests/Payments/MoneroLikePaymentDataTests.cs
rename to BTCPayServer.Plugins.UnitTests/Monero/Payments/MoneroLikePaymentDataTests.cs
index 7d3f5c9..62102e3 100644
--- a/BTCPayServer.Plugins.Monero.UnitTests/Payments/MoneroLikePaymentDataTests.cs
+++ b/BTCPayServer.Plugins.UnitTests/Monero/Payments/MoneroLikePaymentDataTests.cs
@@ -1,7 +1,7 @@
using BTCPayServer.Plugins.Monero.Payments;
using Xunit;
-namespace BTCPayServer.Plugins.Monero.UnitTests.Payments
+namespace BTCPayServer.Plugins.UnitTests.Monero.Payments
{
public class MoneroLikePaymentDataTests
{
diff --git a/BTCPayServer.Plugins.Monero.UnitTests/RPC/Models/ParseStringConverterTest.cs b/BTCPayServer.Plugins.UnitTests/Monero/RPC/Models/ParseStringConverterTest.cs
similarity index 95%
rename from BTCPayServer.Plugins.Monero.UnitTests/RPC/Models/ParseStringConverterTest.cs
rename to BTCPayServer.Plugins.UnitTests/Monero/RPC/Models/ParseStringConverterTest.cs
index a49ebaf..15b79ab 100644
--- a/BTCPayServer.Plugins.Monero.UnitTests/RPC/Models/ParseStringConverterTest.cs
+++ b/BTCPayServer.Plugins.UnitTests/Monero/RPC/Models/ParseStringConverterTest.cs
@@ -1,11 +1,8 @@
-using System;
-using System.IO;
-using System.Globalization;
+using BTCPayServer.Plugins.Monero.RPC.Models;
using Newtonsoft.Json;
using Xunit;
-using BTCPayServer.Plugins.Monero.RPC.Models;
-namespace BTCPayServer.Plugins.Monero.UnitTests.RPC.Models
+namespace BTCPayServer.Plugins.UnitTests.Monero.RPC.Models
{
public class ParseStringConverterTests
{
diff --git a/BTCPayServer.Plugins.Monero.UnitTests/RPC/MoneroEventTests.cs b/BTCPayServer.Plugins.UnitTests/Monero/RPC/MoneroEventTests.cs
similarity index 96%
rename from BTCPayServer.Plugins.Monero.UnitTests/RPC/MoneroEventTests.cs
rename to BTCPayServer.Plugins.UnitTests/Monero/RPC/MoneroEventTests.cs
index 83a5515..49e37d1 100644
--- a/BTCPayServer.Plugins.Monero.UnitTests/RPC/MoneroEventTests.cs
+++ b/BTCPayServer.Plugins.UnitTests/Monero/RPC/MoneroEventTests.cs
@@ -1,7 +1,7 @@
using BTCPayServer.Plugins.Monero.RPC;
using Xunit;
-namespace BTCPayServer.Plugins.Monero.Tests.RPC
+namespace BTCPayServer.Plugins.UnitTests.Monero.RPC
{
public class MoneroEventTest
{
diff --git a/BTCPayServer.Plugins.Monero.UnitTests/Utils/MoneroMoneyTests.cs b/BTCPayServer.Plugins.UnitTests/Monero/Utils/MoneroMoneyTests.cs
similarity index 96%
rename from BTCPayServer.Plugins.Monero.UnitTests/Utils/MoneroMoneyTests.cs
rename to BTCPayServer.Plugins.UnitTests/Monero/Utils/MoneroMoneyTests.cs
index 22d8c71..f606c83 100644
--- a/BTCPayServer.Plugins.Monero.UnitTests/Utils/MoneroMoneyTests.cs
+++ b/BTCPayServer.Plugins.UnitTests/Monero/Utils/MoneroMoneyTests.cs
@@ -2,7 +2,7 @@ using System.Globalization;
using Xunit;
using BTCPayServer.Plugins.Monero.Utils;
-namespace BTCPayServer.Plugins.Monero.UnitTests.Utils
+namespace BTCPayServer.Plugins.UnitTests.Monero.Utils
{
public class MoneroMoneyTests
{
diff --git a/BTCPayServer.Plugins.Monero.UnitTests/ViewModels/MoneroPaymentViewModelTests.cs b/BTCPayServer.Plugins.UnitTests/Monero/ViewModels/MoneroPaymentViewModelTests.cs
similarity index 95%
rename from BTCPayServer.Plugins.Monero.UnitTests/ViewModels/MoneroPaymentViewModelTests.cs
rename to BTCPayServer.Plugins.UnitTests/Monero/ViewModels/MoneroPaymentViewModelTests.cs
index 042a317..fe1e476 100644
--- a/BTCPayServer.Plugins.Monero.UnitTests/ViewModels/MoneroPaymentViewModelTests.cs
+++ b/BTCPayServer.Plugins.UnitTests/Monero/ViewModels/MoneroPaymentViewModelTests.cs
@@ -1,9 +1,8 @@
-using System;
-using Xunit;
-using BTCPayServer.Plugins.Monero.ViewModels;
using BTCPayServer.Payments;
+using BTCPayServer.Plugins.Monero.ViewModels;
+using Xunit;
-namespace BTCPayServer.Plugins.Monero.UnitTests.ViewModels
+namespace BTCPayServer.Plugins.UnitTests.Monero.ViewModels
{
public class MoneroPaymentViewModelTests
{
diff --git a/Plugins/Monero/MoneroLikeSpecificBtcPayNetwork.cs b/Plugins/Monero/MoneroLikeSpecificBtcPayNetwork.cs
index 9f4fd45..aa4968d 100644
--- a/Plugins/Monero/MoneroLikeSpecificBtcPayNetwork.cs
+++ b/Plugins/Monero/MoneroLikeSpecificBtcPayNetwork.cs
@@ -1,8 +1,7 @@
-namespace BTCPayServer.Plugins.Altcoins;
+namespace BTCPayServer.Plugins.Monero;
public class MoneroLikeSpecificBtcPayNetwork : BTCPayNetworkBase
{
public int MaxTrackedConfirmation = 10;
public string UriScheme { get; set; }
}
-
diff --git a/Plugins/Monero/RPC/Models/ParseStringConverter.cs b/Plugins/Monero/RPC/Models/ParseStringConverter.cs
index 6c67c04..18b0984 100644
--- a/Plugins/Monero/RPC/Models/ParseStringConverter.cs
+++ b/Plugins/Monero/RPC/Models/ParseStringConverter.cs
@@ -4,7 +4,7 @@ using Newtonsoft.Json;
namespace BTCPayServer.Plugins.Monero.RPC.Models
{
- internal class ParseStringConverter : JsonConverter
+ public class ParseStringConverter : JsonConverter
{
public override bool CanConvert(Type t) => t == typeof(long) || t == typeof(long?);
diff --git a/README.md b/README.md
index 25cf3ad..3dbc5c4 100644
--- a/README.md
+++ b/README.md
@@ -65,10 +65,15 @@ To build and run unit tests, run the following commands:
dotnet build btcpay-monero-plugin.sln
dotnet test BTCPayServer.Plugins.Monero.UnitTests --verbosity normal
```
-To run unit tests with coverage, run the following command:
+To run unit tests with coverage, install JetBrains dotCover CLI:
```bash
-dotnet test BTCPayServer.Plugins.Monero.UnitTests/BTCPayServer.Plugins.UnitTests.csproj /p:CollectCoverage=true /p:CoverletOutputFormat=json /p:CoverletOutput=../coverage/coverage.json
+dotnet tool install --global JetBrains.dotCover.CommandLineTools
+```
+Then run the following command:
+
+```bash
+dotCover cover-dotnet --TargetArguments="test BTCPayServer.Plugins.UnitTests --no-build" --ReportType=HTML --Output=coverage/dotCover.UnitTests.output.html --ReportType=detailedXML --Output=coverage/dotCover.UnitTests.output.xml --filters="-:Assembly=BTCPayServer.Plugins.UnitTests;-:Assembly=testhost;-:Assembly=BTCPayServer;-:Class=AspNetCoreGeneratedDocument.*"
```
To build and run integration tests, run the following commands:
diff --git a/btcpay-monero-plugin.sln b/btcpay-monero-plugin.sln
index dc22e9c..423d70e 100644
--- a/btcpay-monero-plugin.sln
+++ b/btcpay-monero-plugin.sln
@@ -36,7 +36,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{BDB6EEEA-4
README.md = README.md
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.Monero.UnitTests", "BTCPayServer.Plugins.Monero.UnitTests\BTCPayServer.Plugins.UnitTests.csproj", "{BC95362E-D430-4CB4-B888-EE1C054C1E7A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.UnitTests", "BTCPayServer.Plugins.UnitTests\BTCPayServer.Plugins.UnitTests.csproj", "{BC95362E-D430-4CB4-B888-EE1C054C1E7A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution