From 2f8547eeba85351acd5a1e7f8bd21c69a9e9703c Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 3 Jan 2025 00:56:26 -0500 Subject: [PATCH 01/13] Removing FlakeyNetworkTests --- .../DownloaderTests.cs | 45 ------------------- 1 file changed, 45 deletions(-) diff --git a/Wabbajack.Downloaders.Dispatcher.Test/DownloaderTests.cs b/Wabbajack.Downloaders.Dispatcher.Test/DownloaderTests.cs index 9f0598a9e..885e512ce 100644 --- a/Wabbajack.Downloaders.Dispatcher.Test/DownloaderTests.cs +++ b/Wabbajack.Downloaders.Dispatcher.Test/DownloaderTests.cs @@ -219,51 +219,6 @@ public DownloaderTests(DownloadDispatcher dispatcher, TemporaryFileManager temp) */ }; - private bool AutoPassTest(Archive archive) - { - return false; - } - - [Theory] - [Trait("Category", "FlakeyNetwork")] - [MemberData(nameof(TestStates))] - public async Task TestDownloadingFile(Archive archive, Archive badArchive) - { - if (AutoPassTest(archive)) return; - await using var tempFile = _temp.CreateFile(); - var hash = await _dispatcher.Download(archive, tempFile.Path, CancellationToken.None); - Assert.Equal(archive.Hash, hash); - } - - [Theory] - [Trait("Category", "FlakeyNetwork")] - [MemberData(nameof(TestStates))] - public async Task TestFileVerification(Archive goodArchive, Archive badArchive) - { - if (AutoPassTest(goodArchive)) return; - Assert.True(await _dispatcher.Verify(goodArchive, CancellationToken.None)); - Assert.False(await _dispatcher.Verify(badArchive, CancellationToken.None)); - } - - [Theory] - [Trait("Category", "FlakeyNetwork")] - [MemberData(nameof(TestStates))] - public async Task CanParseAndUnParseUrls(Archive goodArchive, Archive badArchive) - { - if (AutoPassTest(goodArchive)) return; - var downloader = _dispatcher.Downloader(goodArchive); - if (downloader is IUrlDownloader urlDownloader) - { - var unparsed = urlDownloader.UnParse(goodArchive.State); - - var parsed = urlDownloader.Parse(unparsed); - Assert.NotNull(parsed); - - Assert.Equal(goodArchive.State.GetType(), parsed.GetType()); - Assert.True(await _dispatcher.Verify(new Archive {State = parsed, Hash = goodArchive.Hash}, CancellationToken.None)); - } - } - [Theory] [MemberData(nameof(TestStates))] public async Task CanParseAndUnParseMetaInis(Archive goodArchive, Archive badArchive) From d4699dbc4ab49b0f6bd05080ffc3aab30490ffd7 Mon Sep 17 00:00:00 2001 From: AlexDickerson <59901692+AlexDickerson@users.noreply.github.com> Date: Fri, 3 Jan 2025 01:05:01 -0500 Subject: [PATCH 02/13] Update tests.yaml --- .github/workflows/tests.yaml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 030b6f588..874ebab25 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -14,12 +14,6 @@ jobs: name: Test ${{ matrix.project }} (${{ matrix.os }}) runs-on: ${{ matrix.os }} - - env: - NEXUS_API_KEY: ${{ secrets.NEXUS_API_KEY }} - NEXUS_LOGIN: ${{ secrets.NEXUS_LOGIN }} - VECTOR_PLEXUS: ${{ secrets.VECTOR_PLEXUS }} - LOVERS_LAB: ${{ secrets.LOVERS_LAB }} strategy: matrix: From a40e9210cf9e94fa941530c62cdb2b3a082452dc Mon Sep 17 00:00:00 2001 From: AlexDickerson <59901692+AlexDickerson@users.noreply.github.com> Date: Fri, 3 Jan 2025 01:06:52 -0500 Subject: [PATCH 03/13] Update tests.yaml --- .github/workflows/tests.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 874ebab25..4ff74d48c 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -4,7 +4,6 @@ on: push: branches: [ main ] pull_request: - branches: [ main ] env: VERSION: 3.7.5.1 From 6035f532a355d4ac020b04ce646c0c8461a18f78 Mon Sep 17 00:00:00 2001 From: AlexDickerson <59901692+AlexDickerson@users.noreply.github.com> Date: Fri, 3 Jan 2025 01:10:54 -0500 Subject: [PATCH 04/13] Update tests.yaml --- .github/workflows/tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 4ff74d48c..a3678fcc1 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -32,7 +32,7 @@ jobs: include-prerelease: true - name: Test - run: dotnet test /p:EnableWindowsTargeting=true --filter "Category!=FlakeyNetwork" + run: dotnet test /p:EnableWindowsTargeting=true #- name: Upload Test Folder on Failure # if: ${{ failure() }} From 3fe986ab525adcdc4828e7ff54788325b7e6c2e1 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 3 Jan 2025 01:55:58 -0500 Subject: [PATCH 05/13] Ignoring mirrors when running unit tests asa it is requiring a nexus api key that isn't reliably being set --- Wabbajack.Installer.Test/StandardInstallerTest.cs | 4 ++++ Wabbajack.Networking.WabbajackClientApi/Client.cs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/Wabbajack.Installer.Test/StandardInstallerTest.cs b/Wabbajack.Installer.Test/StandardInstallerTest.cs index bb8ac293a..3385565df 100644 --- a/Wabbajack.Installer.Test/StandardInstallerTest.cs +++ b/Wabbajack.Installer.Test/StandardInstallerTest.cs @@ -3,6 +3,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Wabbajack.DTOs.JsonConverters; +using Wabbajack.Networking.WabbajackClientApi; using Wabbajack.Paths; using Wabbajack.Paths.IO; using Xunit; @@ -52,6 +53,9 @@ public async Task CanInstallAList() VideoMemorySize = 8L * 1024 * 1024 * 1024 }; + var configuration = _provider.GetService(); + configuration.IgnoreMirrorList = true; + var installer = _provider.GetService(); Assert.True(await installer.Begin(CancellationToken.None)); diff --git a/Wabbajack.Networking.WabbajackClientApi/Client.cs b/Wabbajack.Networking.WabbajackClientApi/Client.cs index 1b7aff4f0..b20b08b5c 100644 --- a/Wabbajack.Networking.WabbajackClientApi/Client.cs +++ b/Wabbajack.Networking.WabbajackClientApi/Client.cs @@ -50,6 +50,7 @@ public class Client private readonly ITokenProvider _token; private bool _inited; + public bool IgnoreMirrorList { get; set; } = false; public Client(ILogger logger, HttpClient client, ITokenProvider token, DTOSerializer dtos, @@ -108,6 +109,9 @@ public async Task LoadDownloadAllowList() public async Task LoadMirrors() { + if (IgnoreMirrorList) + return Array.Empty(); + var str = await _client.GetStringAsync(_configuration.MirrorList); return JsonSerializer.Deserialize(str, _dtos.Options) ?? []; } From 998b47c0c5009e712aa08cef558e0934d5a89a00 Mon Sep 17 00:00:00 2001 From: AlexDickerson <59901692+AlexDickerson@users.noreply.github.com> Date: Fri, 3 Jan 2025 02:07:57 -0500 Subject: [PATCH 06/13] Update tests.yaml Adding filter for tests requiring oauth --- .github/workflows/tests.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index a3678fcc1..d6f3887f9 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -30,9 +30,14 @@ jobs: with: dotnet-version: '9.0.x' include-prerelease: true - + + if: ${{ github.ref == 'refs/heads/main' }} - name: Test run: dotnet test /p:EnableWindowsTargeting=true + + if: ${{ github.ref != 'refs/heads/main' }} + - name: Test + run: dotnet test /p:EnableWindowsTargeting=true --filter "Category!=RequiresOAuth" #- name: Upload Test Folder on Failure # if: ${{ failure() }} From 411539253b049397641149efd9738b97ef7e2449 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 3 Jan 2025 02:08:57 -0500 Subject: [PATCH 07/13] Adding RequiresOAuth trait to two unit tests --- Wabbajack.Networking.NexusApi.Test/NexusApiTests.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Wabbajack.Networking.NexusApi.Test/NexusApiTests.cs b/Wabbajack.Networking.NexusApi.Test/NexusApiTests.cs index c30c6661f..80eea1246 100644 --- a/Wabbajack.Networking.NexusApi.Test/NexusApiTests.cs +++ b/Wabbajack.Networking.NexusApi.Test/NexusApiTests.cs @@ -14,6 +14,7 @@ public NexusApiTests(NexusApi api) } [Fact] + [Trait("Category", "RequiresOAuth")] public async Task CanValidateUser() { var (info, headers) = await _api.Validate(); @@ -21,6 +22,7 @@ public async Task CanValidateUser() } [Fact] + [Trait("Category", "RequiresOAuth")] public async Task CanGetModInfo() { var (_, originalHeaders) = await _api.Validate(); From 048515c45559fd1c5b2c09f0df0572de8667bfc2 Mon Sep 17 00:00:00 2001 From: AlexDickerson <59901692+AlexDickerson@users.noreply.github.com> Date: Fri, 3 Jan 2025 02:11:45 -0500 Subject: [PATCH 08/13] Update tests.yaml --- .github/workflows/tests.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index d6f3887f9..9e9e45b17 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -2,7 +2,6 @@ name: Tests on: push: - branches: [ main ] pull_request: env: From 893f00c1799210be9b188d55cb58ac38f012dedc Mon Sep 17 00:00:00 2001 From: AlexDickerson <59901692+AlexDickerson@users.noreply.github.com> Date: Fri, 3 Jan 2025 02:12:29 -0500 Subject: [PATCH 09/13] Update tests.yaml --- .github/workflows/tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 9e9e45b17..c69b617e2 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -15,7 +15,7 @@ jobs: strategy: matrix: - os: [ubuntu-latest, windows-latest] + os: [windows-latest] steps: - uses: actions/checkout@v2 From ea36fdd39346c6267daa6486a6a7ae559bc6457a Mon Sep 17 00:00:00 2001 From: AlexDickerson <59901692+AlexDickerson@users.noreply.github.com> Date: Fri, 3 Jan 2025 02:13:52 -0500 Subject: [PATCH 10/13] Update tests.yaml --- .github/workflows/tests.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index c69b617e2..d54f1fe97 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -30,12 +30,12 @@ jobs: dotnet-version: '9.0.x' include-prerelease: true - if: ${{ github.ref == 'refs/heads/main' }} - name: Test + if: ${{ github.ref == 'refs/heads/main' }} run: dotnet test /p:EnableWindowsTargeting=true - if: ${{ github.ref != 'refs/heads/main' }} - name: Test + if: ${{ github.ref != 'refs/heads/main' }} run: dotnet test /p:EnableWindowsTargeting=true --filter "Category!=RequiresOAuth" #- name: Upload Test Folder on Failure From 099754a206313963da6b5fe58985ac8336605ad8 Mon Sep 17 00:00:00 2001 From: AlexDickerson <59901692+AlexDickerson@users.noreply.github.com> Date: Fri, 3 Jan 2025 02:20:33 -0500 Subject: [PATCH 11/13] Update tests.yaml --- .github/workflows/tests.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index d54f1fe97..078677caa 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -2,7 +2,9 @@ name: Tests on: push: + branches: [ main ] pull_request: + branches: [ main ] env: VERSION: 3.7.5.1 From 645821deb6fb08901b74c6af1903c8095d371c47 Mon Sep 17 00:00:00 2001 From: AlexDickerson <59901692+AlexDickerson@users.noreply.github.com> Date: Fri, 3 Jan 2025 02:21:59 -0500 Subject: [PATCH 12/13] Update tests.yaml --- .github/workflows/tests.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 078677caa..cd1006896 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -14,6 +14,12 @@ jobs: name: Test ${{ matrix.project }} (${{ matrix.os }}) runs-on: ${{ matrix.os }} + + env: + NEXUS_API_KEY: ${{ secrets.NEXUS_API_KEY }} + NEXUS_LOGIN: ${{ secrets.NEXUS_LOGIN }} + VECTOR_PLEXUS: ${{ secrets.VECTOR_PLEXUS }} + LOVERS_LAB: ${{ secrets.LOVERS_LAB }} strategy: matrix: From 5aee2410b60b331ed401404868be7d872ef05caa Mon Sep 17 00:00:00 2001 From: trawzified <55751269+tr4wzified@users.noreply.github.com> Date: Sun, 5 Jan 2025 13:09:40 +0100 Subject: [PATCH 13/13] Keep Ubuntu in unit tests I would like to keep the tests running on the other platform just to be sure. I would like to know if something happens to break on the Linux end --- .github/workflows/tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index cd1006896..0d6e617a5 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -23,7 +23,7 @@ jobs: strategy: matrix: - os: [windows-latest] + os: [ubuntu-latest, windows-latest] steps: - uses: actions/checkout@v2