diff --git a/.github/workflows/check-pr-has-milestone.yml b/.github/workflows/check-pr-has-milestone.yml
index d2b5029d9a..86d5c1b473 100644
--- a/.github/workflows/check-pr-has-milestone.yml
+++ b/.github/workflows/check-pr-has-milestone.yml
@@ -13,6 +13,7 @@ concurrency:
jobs:
fail-on-bad-milestone:
+ if: github.event.pull_request.draft != true
name: Fail if Pull Request has no Associated Version Milestone
runs-on: ubuntu-latest
steps:
diff --git a/.github/workflows/ci-security.yml b/.github/workflows/ci-security.yml
index a8355c0baa..67b6feec54 100644
--- a/.github/workflows/ci-security.yml
+++ b/.github/workflows/ci-security.yml
@@ -22,7 +22,7 @@ concurrency:
jobs:
security-checkpoint:
name: Check CI Clearance
- if: github.event_name == 'pull_request_target' && (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id || github.event.pull_request.user.id == 49699333) && github.event.pull_request.state == 'open'
+ if: github.event_name == 'pull_request_target' && (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id || github.event.pull_request.user.id == 49699333) && github.event.pull_request.state == 'open' && github.event.pull_request.draft != true
runs-on: ubuntu-latest
steps:
- name: Generate App Token
@@ -60,7 +60,7 @@ jobs:
ci-pipline-workflow-call:
name: CI Pipeline
needs: security-checkpoint
- if: (!(cancelled() || failure()) && (needs.security-checkpoint.result == 'success' || (github.event_name != 'pull_request_target' && github.event.pull_request.head.repo.id == github.event.pull_request.base.repo.id && github.event.pull_request.user.id != 49699333)))
+ if: (!(cancelled() || failure()) && (needs.security-checkpoint.result == 'success' || (github.event_name != 'pull_request_target' && github.event.pull_request.head.repo.id == github.event.pull_request.base.repo.id && github.event.pull_request.user.id != 49699333)) && github.event.pull_request.draft != true)
uses: ./.github/workflows/ci-pipeline.yml
secrets: inherit
with:
diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs
index 7012a94baf..b1b384e814 100644
--- a/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs
+++ b/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs
@@ -9,6 +9,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
using Remora.Discord.API.Abstractions.Gateway.Commands;
using Remora.Discord.API.Abstractions.Gateway.Events;
@@ -72,9 +73,9 @@ public override string BotMention
readonly IAssemblyInformationProvider assemblyInformationProvider;
///
- /// The for the .
+ /// The for the .
///
- readonly GeneralConfiguration generalConfiguration;
+ readonly IOptionsMonitor generalConfigurationOptions;
///
/// The containing Discord services.
@@ -141,18 +142,18 @@ public override string BotMention
/// The for the .
/// The value of .
/// The for the .
- /// The value of .
+ /// The value of .
public DiscordProvider(
IJobManager jobManager,
IAsyncDelayer asyncDelayer,
ILogger logger,
IAssemblyInformationProvider assemblyInformationProvider,
- ChatBot chatBot,
- GeneralConfiguration generalConfiguration)
+ IOptionsMonitor generalConfigurationOptions,
+ ChatBot chatBot)
: base(jobManager, asyncDelayer, logger, chatBot)
{
this.assemblyInformationProvider = assemblyInformationProvider ?? throw new ArgumentNullException(nameof(assemblyInformationProvider));
- this.generalConfiguration = generalConfiguration ?? throw new ArgumentNullException(nameof(generalConfiguration));
+ this.generalConfigurationOptions = generalConfigurationOptions ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
mappedChannels = new List();
connectDisconnectLock = new object();
@@ -921,7 +922,7 @@ List BuildUpdateEmbedFields(
true),
EngineType.OpenDream => new EmbedField(
"OpenDream Version",
- $"[{engineVersion.SourceSHA![..7]}]({generalConfiguration.OpenDreamGitUrl}/commit/{engineVersion.SourceSHA})",
+ $"[{engineVersion.SourceSHA![..7]}]({generalConfigurationOptions.CurrentValue.OpenDreamGitUrl}/commit/{engineVersion.SourceSHA})",
true),
_ => throw new InvalidOperationException($"Invaild EngineType: {engineVersion.Engine.Value}"),
};
diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs
index 0eedc7c949..3f36964a25 100644
--- a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs
+++ b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs
@@ -8,6 +8,7 @@
using Meebey.SmartIrc4net;
using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
using Newtonsoft.Json;
@@ -91,7 +92,7 @@ sealed class IrcProvider : Provider
///
/// The for the .
///
- readonly FileLoggingConfiguration loggingConfiguration;
+ readonly IOptionsMonitor loggingConfigurationOptions;
///
/// The client.
@@ -116,18 +117,18 @@ sealed class IrcProvider : Provider
/// The for the .
/// The to get the from.
/// The for the .
- /// The for the .
+ /// The value of .
public IrcProvider(
IJobManager jobManager,
IAsyncDelayer asyncDelayer,
ILogger logger,
- IAssemblyInformationProvider assemblyInformationProvider,
Models.ChatBot chatBot,
- FileLoggingConfiguration loggingConfiguration)
+ IAssemblyInformationProvider assemblyInformationProvider,
+ IOptionsMonitor loggingConfigurationOptions)
: base(jobManager, asyncDelayer, logger, chatBot)
{
ArgumentNullException.ThrowIfNull(assemblyInformationProvider);
- ArgumentNullException.ThrowIfNull(loggingConfiguration);
+ ArgumentNullException.ThrowIfNull(loggingConfigurationOptions);
var builder = chatBot.CreateConnectionStringBuilder();
if (builder == null || !builder.Valid || builder is not IrcConnectionStringBuilder ircBuilder)
@@ -142,7 +143,7 @@ public IrcProvider(
passwordType = ircBuilder.PasswordType;
assemblyInfo = assemblyInformationProvider ?? throw new ArgumentNullException(nameof(assemblyInformationProvider));
- this.loggingConfiguration = loggingConfiguration ?? throw new ArgumentNullException(nameof(loggingConfiguration));
+ this.loggingConfigurationOptions = loggingConfigurationOptions ?? throw new ArgumentNullException(nameof(loggingConfigurationOptions));
client = InstantiateClient();
@@ -741,7 +742,7 @@ IrcFeatures InstantiateClient()
newClient.OnChannelMessage += Client_OnChannelMessage;
newClient.OnQueryMessage += Client_OnQueryMessage;
- if (loggingConfiguration.ProviderNetworkDebug)
+ if (loggingConfigurationOptions.CurrentValue.ProviderNetworkDebug)
{
newClient.OnReadLine += (sender, e) => Logger.LogTrace("READ: {line}", e.Line);
newClient.OnWriteLine += (sender, e) => Logger.LogTrace("WRITE: {line}", e.Line);
diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/ProviderFactory.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/ProviderFactory.cs
index 41113d196f..f8b3be51d0 100644
--- a/src/Tgstation.Server.Host/Components/Chat/Providers/ProviderFactory.cs
+++ b/src/Tgstation.Server.Host/Components/Chat/Providers/ProviderFactory.cs
@@ -36,14 +36,14 @@ sealed class ProviderFactory : IProviderFactory
readonly ILoggerFactory loggerFactory;
///
- /// The for the .
+ /// The for the .
///
- readonly GeneralConfiguration generalConfiguration;
+ readonly IOptionsMonitor generalConfigurationOptions;
///
- /// The for the .
+ /// The for the .
///
- readonly FileLoggingConfiguration loggingConfiguration;
+ readonly IOptionsMonitor loggingConfigurationOptions;
///
/// Initializes a new instance of the class.
@@ -52,22 +52,22 @@ sealed class ProviderFactory : IProviderFactory
/// The value of .
/// The value of .
/// The value of .
- /// The containing the value of .
- /// The containing the value of .
+ /// The value of .
+ /// The value of .
public ProviderFactory(
IJobManager jobManager,
IAssemblyInformationProvider assemblyInformationProvider,
IAsyncDelayer asyncDelayer,
ILoggerFactory loggerFactory,
- IOptions generalConfigurationOptions,
- IOptions loggingConfigurationOptions)
+ IOptionsMonitor generalConfigurationOptions,
+ IOptionsMonitor loggingConfigurationOptions)
{
this.jobManager = jobManager ?? throw new ArgumentNullException(nameof(jobManager));
this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
this.asyncDelayer = asyncDelayer ?? throw new ArgumentNullException(nameof(asyncDelayer));
this.assemblyInformationProvider = assemblyInformationProvider ?? throw new ArgumentNullException(nameof(assemblyInformationProvider));
- generalConfiguration = generalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
- loggingConfiguration = loggingConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(loggingConfigurationOptions));
+ this.generalConfigurationOptions = generalConfigurationOptions ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
+ this.loggingConfigurationOptions = loggingConfigurationOptions ?? throw new ArgumentNullException(nameof(loggingConfigurationOptions));
}
///
@@ -80,16 +80,16 @@ public IProvider CreateProvider(Models.ChatBot settings)
jobManager,
asyncDelayer,
loggerFactory.CreateLogger(),
- assemblyInformationProvider,
settings,
- loggingConfiguration),
+ assemblyInformationProvider,
+ loggingConfigurationOptions),
ChatProvider.Discord => new DiscordProvider(
jobManager,
asyncDelayer,
loggerFactory.CreateLogger(),
assemblyInformationProvider,
- settings,
- generalConfiguration),
+ generalConfigurationOptions,
+ settings),
_ => throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Invalid ChatProvider: {0}", settings.Provider)),
};
}
diff --git a/src/Tgstation.Server.Host/Components/Engine/OpenDreamInstaller.cs b/src/Tgstation.Server.Host/Components/Engine/OpenDreamInstaller.cs
index f37c4489b1..9a2915f38c 100644
--- a/src/Tgstation.Server.Host/Components/Engine/OpenDreamInstaller.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/OpenDreamInstaller.cs
@@ -54,12 +54,12 @@ class OpenDreamInstaller : EngineInstallerBase
///
/// The for the .
///
- protected GeneralConfiguration GeneralConfiguration { get; }
+ protected IOptionsMonitor GeneralConfiguration { get; }
///
/// The for the .
///
- protected SessionConfiguration SessionConfiguration { get; }
+ protected IOptionsMonitor SessionConfiguration { get; }
///
/// The for the .
@@ -101,8 +101,8 @@ public OpenDreamInstaller(
IRepositoryManager repositoryManager,
IAsyncDelayer asyncDelayer,
IAbstractHttpClientFactory httpClientFactory,
- IOptions generalConfigurationOptions,
- IOptions sessionConfigurationOptions)
+ IOptionsMonitor generalConfigurationOptions,
+ IOptionsMonitor sessionConfigurationOptions)
: base(ioManager, logger)
{
this.platformIdentifier = platformIdentifier ?? throw new ArgumentNullException(nameof(platformIdentifier));
@@ -110,8 +110,8 @@ public OpenDreamInstaller(
this.repositoryManager = repositoryManager ?? throw new ArgumentNullException(nameof(repositoryManager));
this.asyncDelayer = asyncDelayer ?? throw new ArgumentNullException(nameof(asyncDelayer));
this.httpClientFactory = httpClientFactory ?? throw new ArgumentNullException(nameof(httpClientFactory));
- GeneralConfiguration = generalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
- SessionConfiguration = sessionConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(sessionConfigurationOptions));
+ GeneralConfiguration = generalConfigurationOptions ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
+ SessionConfiguration = sessionConfigurationOptions ?? throw new ArgumentNullException(nameof(sessionConfigurationOptions));
}
///
@@ -143,10 +143,11 @@ public override async ValueTask DownloadVersion(EngineV
var progressSection1 = jobProgressReporter.CreateSection("Updating OpenDream git repository", 0.5f);
IRepository? repo;
+ var generalConfig = GeneralConfiguration.CurrentValue;
try
{
repo = await repositoryManager.CloneRepository(
- GeneralConfiguration.OpenDreamGitUrl,
+ generalConfig.OpenDreamGitUrl,
null,
null,
null,
@@ -183,7 +184,7 @@ public override async ValueTask DownloadVersion(EngineV
using (var progressSection2 = jobProgressReporter.CreateSection("Checking out OpenDream version", 0.5f))
{
var committish = version.SourceSHA
- ?? $"{GeneralConfiguration.OpenDreamGitTagPrefix}{version.Version!.Semver()}";
+ ?? $"{generalConfig.OpenDreamGitTagPrefix}{version.Version!.Semver()}";
await repo.CheckoutObject(
committish,
@@ -259,6 +260,7 @@ await HandleExtremelyLongPathOperation(
async shortenedPath =>
{
var shortenedDeployPath = IOManager.ConcatPath(shortenedPath, DeployDir);
+ var generalConfig = GeneralConfiguration.CurrentValue;
await using var buildProcess = await ProcessExecutor.LaunchProcess(
dotnetPath,
shortenedPath,
@@ -266,17 +268,17 @@ await HandleExtremelyLongPathOperation(
cancellationToken,
null,
null,
- !GeneralConfiguration.OpenDreamSuppressInstallOutput,
- !GeneralConfiguration.OpenDreamSuppressInstallOutput);
+ !generalConfig.OpenDreamSuppressInstallOutput,
+ !generalConfig.OpenDreamSuppressInstallOutput);
- if (deploymentPipelineProcesses && SessionConfiguration.LowPriorityDeploymentProcesses)
+ if (deploymentPipelineProcesses && SessionConfiguration.CurrentValue.LowPriorityDeploymentProcesses)
buildProcess.AdjustPriority(false);
using (cancellationToken.Register(() => buildProcess.Terminate()))
buildExitCode = await buildProcess.Lifetime;
string? output;
- if (!GeneralConfiguration.OpenDreamSuppressInstallOutput)
+ if (!GeneralConfiguration.CurrentValue.OpenDreamSuppressInstallOutput)
{
var buildOutputTask = buildProcess.GetCombinedOutput(cancellationToken);
if (!buildOutputTask.IsCompleted)
diff --git a/src/Tgstation.Server.Host/Components/Engine/WindowsByondInstaller.cs b/src/Tgstation.Server.Host/Components/Engine/WindowsByondInstaller.cs
index ce2c7704e2..971800885f 100644
--- a/src/Tgstation.Server.Host/Components/Engine/WindowsByondInstaller.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/WindowsByondInstaller.cs
@@ -77,14 +77,14 @@ sealed class WindowsByondInstaller : ByondInstallerBase, IDisposable
readonly IProcessExecutor processExecutor;
///
- /// The for the .
+ /// The for the .
///
- readonly GeneralConfiguration generalConfiguration;
+ readonly IOptionsMonitor generalConfigurationOptions;
///
- /// The for the .
+ /// The for the .
///
- readonly SessionConfiguration sessionConfiguration;
+ readonly IOptionsMonitor sessionConfigurationOptions;
///
/// The for the .
@@ -100,8 +100,8 @@ sealed class WindowsByondInstaller : ByondInstallerBase, IDisposable
/// Initializes a new instance of the class.
///
/// The value of .
- /// The containing the value of .
- /// The containing the value of .
+ /// The containing the value of .
+ /// The containing the value of .
/// The for the .
/// The for the .
/// The for the .
@@ -109,14 +109,14 @@ public WindowsByondInstaller(
IProcessExecutor processExecutor,
IIOManager ioManager,
IFileDownloader fileDownloader,
- IOptions generalConfigurationOptions,
- IOptions sessionConfigurationOptions,
+ IOptionsMonitor generalConfigurationOptions,
+ IOptionsMonitor sessionConfigurationOptions,
ILogger logger)
: base(ioManager, logger, fileDownloader)
{
this.processExecutor = processExecutor ?? throw new ArgumentNullException(nameof(processExecutor));
- generalConfiguration = generalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
- sessionConfiguration = sessionConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(sessionConfigurationOptions));
+ this.generalConfigurationOptions = generalConfigurationOptions ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
+ this.sessionConfigurationOptions = sessionConfigurationOptions ?? throw new ArgumentNullException(nameof(sessionConfigurationOptions));
var useServiceSpecialTactics = Environment.Is64BitProcess && Environment.UserName == $"{Environment.MachineName}$";
@@ -150,7 +150,7 @@ public override ValueTask Install(EngineVersion version, string path, bool deplo
installDirectXTask,
};
- if (!generalConfiguration.SkipAddingByondFirewallException)
+ if (!generalConfigurationOptions.CurrentValue.SkipAddingByondFirewallException)
{
var firewallTask = AddDreamDaemonToFirewall(version, path, deploymentPipelineProcesses, cancellationToken);
tasks.Add(firewallTask);
@@ -165,7 +165,7 @@ public override async ValueTask UpgradeInstallation(EngineVersion version, strin
CheckVersionValidity(version);
ArgumentNullException.ThrowIfNull(path);
- if (generalConfiguration.SkipAddingByondFirewallException)
+ if (generalConfigurationOptions.CurrentValue.SkipAddingByondFirewallException)
return;
if (version.Version < DDExeVersion)
@@ -224,7 +224,7 @@ public override async ValueTask TrustDmbPath(EngineVersion version, string fullD
///
protected override string GetDreamDaemonName(Version byondVersion, out bool supportsCli)
{
- supportsCli = byondVersion >= DDExeVersion && !sessionConfiguration.ForceUseDreamDaemonExe;
+ supportsCli = byondVersion >= DDExeVersion && !sessionConfigurationOptions.CurrentValue.ForceUseDreamDaemonExe;
return supportsCli ? "dd.exe" : "dreamdaemon.exe";
}
@@ -336,7 +336,7 @@ async ValueTask AddDreamDaemonToFirewall(EngineVersion version, string path, boo
Logger,
ruleName,
dreamDaemonPath,
- deploymentPipelineProcesses && sessionConfiguration.LowPriorityDeploymentProcesses,
+ deploymentPipelineProcesses && sessionConfigurationOptions.CurrentValue.LowPriorityDeploymentProcesses,
cancellationToken);
}
catch (Exception ex)
diff --git a/src/Tgstation.Server.Host/Components/Engine/WindowsOpenDreamInstaller.cs b/src/Tgstation.Server.Host/Components/Engine/WindowsOpenDreamInstaller.cs
index 1cc8da52c5..954197adec 100644
--- a/src/Tgstation.Server.Host/Components/Engine/WindowsOpenDreamInstaller.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/WindowsOpenDreamInstaller.cs
@@ -48,8 +48,8 @@ public WindowsOpenDreamInstaller(
IRepositoryManager repositoryManager,
IAsyncDelayer asyncDelayer,
IAbstractHttpClientFactory httpClientFactory,
- IOptions generalConfigurationOptions,
- IOptions sessionConfigurationOptions,
+ IOptionsMonitor generalConfigurationOptions,
+ IOptionsMonitor sessionConfigurationOptions,
IFilesystemLinkFactory linkFactory)
: base(
ioManager,
@@ -108,7 +108,7 @@ protected override async ValueTask HandleExtremelyLongPathOperation(FuncA representing the running operation.
async ValueTask AddServerFirewallException(EngineVersion version, string path, bool deploymentPipelineProcesses, CancellationToken cancellationToken)
{
- if (GeneralConfiguration.SkipAddingByondFirewallException)
+ if (GeneralConfiguration.CurrentValue.SkipAddingByondFirewallException)
return;
GetExecutablePaths(path, out var serverExePath, out _);
@@ -126,7 +126,7 @@ async ValueTask AddServerFirewallException(EngineVersion version, string path, b
Logger,
ruleName,
serverExePath,
- deploymentPipelineProcesses && SessionConfiguration.LowPriorityDeploymentProcesses,
+ deploymentPipelineProcesses && SessionConfiguration.CurrentValue.LowPriorityDeploymentProcesses,
cancellationToken);
}
catch (Exception ex)
diff --git a/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestDiscordProvider.cs b/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestDiscordProvider.cs
index 58c63c6a99..6260d3c3b0 100644
--- a/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestDiscordProvider.cs
+++ b/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestDiscordProvider.cs
@@ -4,6 +4,7 @@
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
@@ -64,9 +65,9 @@ public async Task TestConstructionAndDisposal()
Assert.ThrowsException(() => new DiscordProvider(mockJobManager, mockDel, mockLogger, null, null, null));
var mockAss = Mock.Of();
Assert.ThrowsException(() => new DiscordProvider(mockJobManager, mockDel, mockLogger, mockAss, null, null));
- Assert.ThrowsException(() => new DiscordProvider(mockJobManager, mockDel, mockLogger, mockAss, bot, null));
- var mockGen = new GeneralConfiguration();
- await new DiscordProvider(mockJobManager, mockDel, mockLogger, mockAss, bot, mockGen).DisposeAsync();
+ var mockGen = Mock.Of>();
+ Assert.ThrowsException(() => new DiscordProvider(mockJobManager, mockDel, mockLogger, mockAss, mockGen, null));
+ await new DiscordProvider(mockJobManager, mockDel, mockLogger, mockAss, mockGen, bot).DisposeAsync();
}
static ValueTask InvokeConnect(IProvider provider, CancellationToken cancellationToken = default) => (ValueTask)provider.GetType().GetMethod("Connect", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(provider, new object[] { cancellationToken });
@@ -75,12 +76,12 @@ public async Task TestConstructionAndDisposal()
public async Task TestConnectWithFakeTokenFails()
{
var mockLogger = new Mock>();
- await using var provider = new DiscordProvider(mockJobManager, Mock.Of(), mockLogger.Object, Mock.Of(), new ChatBot
+ await using var provider = new DiscordProvider(mockJobManager, Mock.Of(), mockLogger.Object, Mock.Of(), Mock.Of>(), new ChatBot
{
ReconnectionInterval = 1,
ConnectionString = "asdf",
Instance = new Models.Instance(),
- }, new GeneralConfiguration());
+ });
await Assert.ThrowsExceptionAsync(async () => await InvokeConnect(provider));
Assert.IsFalse(provider.Connected);
}
@@ -95,7 +96,7 @@ public async Task TestConnectAndDisconnect()
Assert.Fail("TGS_TEST_DISCORD_TOKEN is not a valid Discord connection string!");
var mockLogger = new Mock>();
- await using var provider = new DiscordProvider(mockJobManager, Mock.Of(), mockLogger.Object, Mock.Of(), testToken1, new GeneralConfiguration());
+ await using var provider = new DiscordProvider(mockJobManager, Mock.Of(), mockLogger.Object, Mock.Of(), Mock.Of>(), testToken1);
Assert.IsFalse(provider.Connected);
await InvokeConnect(provider);
Assert.IsTrue(provider.Connected);
diff --git a/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs b/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs
index bc1ecbf0a4..9bb8c75fb2 100644
--- a/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs
+++ b/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs
@@ -4,6 +4,7 @@
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
@@ -30,19 +31,21 @@ public async Task TestConstructionAndDisposal()
Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, mockAsyncDelayer.Object, null, null, null, null));
var mockLogger = new Mock>();
Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, mockAsyncDelayer.Object, mockLogger.Object, null, null, null));
- var mockAss = new Mock();
- Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, mockAsyncDelayer.Object, mockLogger.Object, mockAss.Object, null, null));
-
var mockBot = new ChatBot
{
Name = "test",
Instance = new Models.Instance(),
Provider = ChatProvider.Irc
};
- Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, mockAsyncDelayer.Object, mockLogger.Object, mockAss.Object, mockBot, null));
+ Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, mockAsyncDelayer.Object, mockLogger.Object, mockBot, null, null));
+
+ var mockAss = new Mock();
+
+ Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, mockAsyncDelayer.Object, mockLogger.Object, mockBot, mockAss.Object, null));
- var mockLogConf = new FileLoggingConfiguration();
- Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, mockAsyncDelayer.Object, mockLogger.Object, mockAss.Object, mockBot, mockLogConf));
+ var mockLogConf = new Mock>();
+ mockLogConf.SetupGet(x => x.CurrentValue).Returns(new FileLoggingConfiguration());
+ Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, mockAsyncDelayer.Object, mockLogger.Object, mockBot, mockAss.Object, mockLogConf.Object));
mockBot.ConnectionString = new IrcConnectionStringBuilder
{
@@ -52,7 +55,7 @@ public async Task TestConstructionAndDisposal()
Port = 6667
}.ToString();
- await new IrcProvider(mockJobManager.Object, mockAsyncDelayer.Object, mockLogger.Object, mockAss.Object, mockBot, mockLogConf).DisposeAsync();
+ await new IrcProvider(mockJobManager.Object, mockAsyncDelayer.Object, mockLogger.Object, mockBot, mockAss.Object, mockLogConf.Object).DisposeAsync();
}
static ValueTask InvokeConnect(IProvider provider, CancellationToken cancellationToken = default) => (ValueTask)provider.GetType().GetMethod("Connect", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(provider, new object[] { cancellationToken });
@@ -89,7 +92,9 @@ public async Task TestConnectAndDisconnect()
Instance = new Models.Instance(),
};
- await using var provider = new IrcProvider(mockJobManager, new AsyncDelayer(), loggerFactory.CreateLogger(), Mock.Of(), chatBot, new FileLoggingConfiguration());
+ var mockLogConf = new Mock>();
+ mockLogConf.SetupGet(x => x.CurrentValue).Returns(new FileLoggingConfiguration());
+ await using var provider = new IrcProvider(mockJobManager, new AsyncDelayer(), loggerFactory.CreateLogger(), chatBot, Mock.Of(), mockLogConf.Object);
Assert.IsFalse(provider.Connected);
await InvokeConnect(provider);
Assert.IsTrue(provider.Connected);
diff --git a/tests/Tgstation.Server.Host.Tests/Components/Engine/TestOpenDreamInstaller.cs b/tests/Tgstation.Server.Host.Tests/Components/Engine/TestOpenDreamInstaller.cs
index 8950acc6ab..148ade9ca0 100644
--- a/tests/Tgstation.Server.Host.Tests/Components/Engine/TestOpenDreamInstaller.cs
+++ b/tests/Tgstation.Server.Host.Tests/Components/Engine/TestOpenDreamInstaller.cs
@@ -36,13 +36,13 @@ public async Task TestDownloadsCloneRepositoryIfItDoesntExists()
static async Task RepoDownloadTest(bool needsClone)
{
- var mockGeneralConfigOptions = new Mock>();
+ var mockGeneralConfigOptions = new Mock>();
var generalConfig = new GeneralConfiguration();
- var mockSessionConfigOptions = new Mock>();
+ var mockSessionConfigOptions = new Mock>();
var sessionConfig = new SessionConfiguration();
Assert.IsNotNull(generalConfig.OpenDreamGitUrl);
- mockGeneralConfigOptions.SetupGet(x => x.Value).Returns(generalConfig);
- mockSessionConfigOptions.SetupGet(x => x.Value).Returns(sessionConfig);
+ mockGeneralConfigOptions.SetupGet(x => x.CurrentValue).Returns(generalConfig);
+ mockSessionConfigOptions.SetupGet(x => x.CurrentValue).Returns(sessionConfig);
var cloneAttempts = 0;
var mockRepository = new Mock();
diff --git a/tests/Tgstation.Server.Tests/Live/Instance/EngineTest.cs b/tests/Tgstation.Server.Tests/Live/Instance/EngineTest.cs
index ffdaeb63e4..dc19ed91de 100644
--- a/tests/Tgstation.Server.Tests/Live/Instance/EngineTest.cs
+++ b/tests/Tgstation.Server.Tests/Live/Instance/EngineTest.cs
@@ -284,10 +284,10 @@ async Task TestNoVersion(CancellationToken cancellationToken)
async Task TestCustomInstalls(CancellationToken cancellationToken)
{
- var generalConfigOptionsMock = new Mock>();
- generalConfigOptionsMock.SetupGet(x => x.Value).Returns(new GeneralConfiguration());
- var sessionConfigOptionsMock = new Mock>();
- sessionConfigOptionsMock.SetupGet(x => x.Value).Returns(new SessionConfiguration());
+ var generalConfigOptionsMock = new Mock>();
+ generalConfigOptionsMock.SetupGet(x => x.CurrentValue).Returns(new GeneralConfiguration());
+ var sessionConfigOptionsMock = new Mock>();
+ sessionConfigOptionsMock.SetupGet(x => x.CurrentValue).Returns(new SessionConfiguration());
var assemblyInformationProvider = new AssemblyInformationProvider();
diff --git a/tests/Tgstation.Server.Tests/Live/Instance/InstanceTest.cs b/tests/Tgstation.Server.Tests/Live/Instance/InstanceTest.cs
index 8bcd5ae04b..834cfb3837 100644
--- a/tests/Tgstation.Server.Tests/Live/Instance/InstanceTest.cs
+++ b/tests/Tgstation.Server.Tests/Live/Instance/InstanceTest.cs
@@ -98,12 +98,13 @@ public static async ValueTask DownloadEngineVersion(
"OpenDreamRepository");
var odRepoIoManager = new ResolvingIOManager(ioManager, odRepoDir);
- var mockOptions = new Mock>();
+ var mockOptions = new Mock>();
var genConfig = new GeneralConfiguration
{
OpenDreamGitUrl = openDreamUrl,
};
- mockOptions.SetupGet(x => x.Value).Returns(genConfig);
+
+ mockOptions.SetupGet(x => x.CurrentValue).Returns(genConfig);
IEngineInstaller byondInstaller =
compatVersion.Engine == EngineType.OpenDream
? new OpenDreamInstaller(
@@ -125,14 +126,14 @@ public static async ValueTask DownloadEngineVersion(
Mock.Of(),
Mock.Of(),
mockOptions.Object,
- Options.Create(new SessionConfiguration()))
+ Mock.Of>())
: new PlatformIdentifier().IsWindows
? new WindowsByondInstaller(
Mock.Of(),
Mock.Of(),
fileDownloader,
- Options.Create(genConfig),
- Options.Create(new SessionConfiguration()),
+ Mock.Of>(),
+ Mock.Of>(),
Mock.Of>())
: new PosixByondInstaller(
Mock.Of(),
diff --git a/tests/Tgstation.Server.Tests/TestVersions.cs b/tests/Tgstation.Server.Tests/TestVersions.cs
index a0809b78f6..0f13dd830a 100644
--- a/tests/Tgstation.Server.Tests/TestVersions.cs
+++ b/tests/Tgstation.Server.Tests/TestVersions.cs
@@ -105,10 +105,10 @@ public void TestApiLibraryVersion()
[TestMethod]
public async Task TestDDExeByondVersion()
{
- var mockGeneralConfigurationOptions = new Mock>();
- mockGeneralConfigurationOptions.SetupGet(x => x.Value).Returns(new GeneralConfiguration());
- var mockSessionConfigurationOptions = new Mock>();
- mockSessionConfigurationOptions.SetupGet(x => x.Value).Returns(new SessionConfiguration());
+ var mockGeneralConfigurationOptions = new Mock>();
+ mockGeneralConfigurationOptions.SetupGet(x => x.CurrentValue).Returns(new GeneralConfiguration());
+ var mockSessionConfigurationOptions = new Mock>();
+ mockSessionConfigurationOptions.SetupGet(x => x.CurrentValue).Returns(new SessionConfiguration());
using var loggerFactory = LoggerFactory.Create(builder =>
{
@@ -167,13 +167,13 @@ await byondInstaller.DownloadVersion(
[TestMethod]
public async Task TestMapThreadsByondVersion()
{
- var mockGeneralConfigurationOptions = new Mock>();
- mockGeneralConfigurationOptions.SetupGet(x => x.Value).Returns(new GeneralConfiguration
+ var mockGeneralConfigurationOptions = new Mock>();
+ mockGeneralConfigurationOptions.SetupGet(x => x.CurrentValue).Returns(new GeneralConfiguration
{
SkipAddingByondFirewallException = true,
});
- var mockSessionConfigurationOptions = new Mock>();
- mockSessionConfigurationOptions.SetupGet(x => x.Value).Returns(new SessionConfiguration());
+ var mockSessionConfigurationOptions = new Mock>();
+ mockSessionConfigurationOptions.SetupGet(x => x.CurrentValue).Returns(new SessionConfiguration());
using var loggerFactory = LoggerFactory.Create(builder =>
{