From bc7f37a506acbfdd6002573896af185441d4e853 Mon Sep 17 00:00:00 2001 From: bitsandfoxes Date: Thu, 26 Aug 2021 12:14:58 +0200 Subject: [PATCH 1/5] split options should initialize check --- .../BuildPostProcess.cs | 2 +- .../SentryUnityOptionsExtensions.cs | 24 +++++++++---- .../SentryUnityOptionsExtensionsTests.cs | 36 +++++++++---------- 3 files changed, 36 insertions(+), 26 deletions(-) diff --git a/src/Sentry.Unity.Editor.iOS/BuildPostProcess.cs b/src/Sentry.Unity.Editor.iOS/BuildPostProcess.cs index 49899e79d..a21524e9f 100644 --- a/src/Sentry.Unity.Editor.iOS/BuildPostProcess.cs +++ b/src/Sentry.Unity.Editor.iOS/BuildPostProcess.cs @@ -16,7 +16,7 @@ public static void OnPostProcessBuild(BuildTarget target, string pathToProject) } var options = ScriptableSentryUnityOptions.LoadSentryUnityOptions(); - if (!options.ShouldInitializeSdk()) + if (!options.Validate()) { return; } diff --git a/src/Sentry.Unity/SentryUnityOptionsExtensions.cs b/src/Sentry.Unity/SentryUnityOptionsExtensions.cs index a22b6ed76..1336258ef 100644 --- a/src/Sentry.Unity/SentryUnityOptionsExtensions.cs +++ b/src/Sentry.Unity/SentryUnityOptionsExtensions.cs @@ -9,22 +9,32 @@ public static class SentryUnityOptionsExtensions internal static bool ShouldInitializeSdk(this SentryUnityOptions? options, IApplication? application = null) { - if (options is null) + if (!Validate(options)) { - new UnityLogger(new SentryOptions()).LogWarning( - "Sentry has not been configured. You can do that through the editor: Tools -> Sentry"); return false; } - if (!options.Enabled) + application ??= ApplicationAdapter.Instance; + if (!options!.CaptureInEditor && application.IsEditor) { + options.DiagnosticLogger?.LogInfo("Disabled while in the Editor."); return false; } - application ??= ApplicationAdapter.Instance; - if (!options.CaptureInEditor && application.IsEditor) + return true; + } + + internal static bool Validate(this SentryUnityOptions? options) + { + if (options is null) + { + new UnityLogger(new SentryOptions()).LogWarning( + "Sentry has not been configured. You can do that through the editor: Tools -> Sentry"); + return false; + } + + if (!options.Enabled) { - options.DiagnosticLogger?.LogInfo("Disabled while in the Editor."); return false; } diff --git a/test/Sentry.Unity.Tests/SentryUnityOptionsExtensionsTests.cs b/test/Sentry.Unity.Tests/SentryUnityOptionsExtensionsTests.cs index 874c3b7b0..cafeef828 100644 --- a/test/Sentry.Unity.Tests/SentryUnityOptionsExtensionsTests.cs +++ b/test/Sentry.Unity.Tests/SentryUnityOptionsExtensionsTests.cs @@ -26,51 +26,51 @@ private class Fixture public void SetUp() => _fixture = new Fixture(); [Test] - public void ShouldInitializeSdk_OptionsIsNull_ReturnsFalse() + public void Validate_OptionsIsNull_ReturnsFalse() { SentryUnityOptions? options = null; - var shouldInitialize = options.ShouldInitializeSdk(); + var isValid = options.Validate(); - Assert.IsFalse(shouldInitialize); + Assert.IsFalse(isValid); } [Test] - public void ShouldInitializeSdk_OptionsDisabled_ReturnsFalse() + public void Validate_OptionsDisabled_ReturnsFalse() { _fixture.Enabled = false; var options = _fixture.GetSut(); - var shouldInitialize = options.ShouldInitializeSdk(); + var isValid = options.Validate(); - Assert.IsFalse(shouldInitialize); + Assert.IsFalse(isValid); } [Test] - public void ShouldInitializeSdk_NotCaptureInEditorAndApplicationIsEditor_ReturnsFalse() + public void Validate_DsnEmpty_ReturnsFalse() { - _fixture.CaptureInEditor = false; + _fixture.Dsn = string.Empty; var options = _fixture.GetSut(); - var shouldInitialize = options.ShouldInitializeSdk(_fixture.TestApplication); + var isValid = options.Validate(); - Assert.IsFalse(shouldInitialize); + Assert.IsFalse(isValid); } [Test] - public void ShouldInitializeSdk_DsnEmpty_ReturnsFalse() + public void ShouldInitializeSdk_CorrectlyConfiguredForEditor_ReturnsTrue() { - _fixture.Dsn = string.Empty; var options = _fixture.GetSut(); - var shouldInitialize = options.ShouldInitializeSdk(); + var shouldInitialize = options.ShouldInitializeSdk(_fixture.TestApplication); - Assert.IsFalse(shouldInitialize); + Assert.IsTrue(shouldInitialize); } [Test] - public void ShouldInitializeSdk_CorrectlyConfiguredForEditor_ReturnsTrue() + public void ShouldInitializeSdk_CorrectlyConfigured_ReturnsTrue() { + _fixture.TestApplication = new TestApplication(false); var options = _fixture.GetSut(); var shouldInitialize = options.ShouldInitializeSdk(_fixture.TestApplication); @@ -79,14 +79,14 @@ public void ShouldInitializeSdk_CorrectlyConfiguredForEditor_ReturnsTrue() } [Test] - public void ShouldInitializeSdk_CorrectlyConfigured_ReturnsTrue() + public void ShouldInitializeSdk_NotCaptureInEditorAndApplicationIsEditor_ReturnsFalse() { - _fixture.TestApplication = new TestApplication(false); + _fixture.CaptureInEditor = false; var options = _fixture.GetSut(); var shouldInitialize = options.ShouldInitializeSdk(_fixture.TestApplication); - Assert.IsTrue(shouldInitialize); + Assert.IsFalse(shouldInitialize); } } } From 8dc755d07c9ffb35d84faeca13c2ced7b3d82f0b Mon Sep 17 00:00:00 2001 From: bitsandfoxes Date: Thu, 26 Aug 2021 12:27:16 +0200 Subject: [PATCH 2/5] removed dsn deletion block from sentry config window --- src/Sentry.Unity.Editor/SentryWindow.cs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/Sentry.Unity.Editor/SentryWindow.cs b/src/Sentry.Unity.Editor/SentryWindow.cs index 96738bf2e..99b254a82 100644 --- a/src/Sentry.Unity.Editor/SentryWindow.cs +++ b/src/Sentry.Unity.Editor/SentryWindow.cs @@ -146,15 +146,10 @@ private void DisplayCore() { GUILayout.Label("Base Options", EditorStyles.boldLabel); - var dsn = Options.Dsn; - dsn = EditorGUILayout.TextField( + Options.Dsn = EditorGUILayout.TextField( new GUIContent("DSN", "The URL to your Sentry project. " + "Get yours on sentry.io -> Project Settings."), - dsn); - if (!string.IsNullOrWhiteSpace(dsn)) - { - Options.Dsn = dsn; - } + Options.Dsn); Options.CaptureInEditor = EditorGUILayout.Toggle( new GUIContent("Capture In Editor", "Capture errors while running in the Editor."), From 5f44af4d4c2f7f3b7f3e82eff278f595eeda1630 Mon Sep 17 00:00:00 2001 From: bitsandfoxes Date: Thu, 26 Aug 2021 12:28:42 +0200 Subject: [PATCH 3/5] updated CHANGELOG.md --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0017f9718..a02040ec1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Fixes + +- Removed editor flag checks from options validation during build process ([#295](https://github.com/getsentry/sentry-unity/pull/295)) + ## 0.5.0 ### Features From c7de16c0ed31aeb7ee7aad3bcdc4953d715ffdd1 Mon Sep 17 00:00:00 2001 From: bitsandfoxes Date: Thu, 26 Aug 2021 14:38:36 +0200 Subject: [PATCH 4/5] added debug log to options being disabled --- src/Sentry.Unity/SentryUnityOptionsExtensions.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Sentry.Unity/SentryUnityOptionsExtensions.cs b/src/Sentry.Unity/SentryUnityOptionsExtensions.cs index 1336258ef..4bc85057e 100644 --- a/src/Sentry.Unity/SentryUnityOptionsExtensions.cs +++ b/src/Sentry.Unity/SentryUnityOptionsExtensions.cs @@ -35,6 +35,8 @@ internal static bool Validate(this SentryUnityOptions? options) if (!options.Enabled) { + options.DiagnosticLogger?.LogDebug("Sentry SDK has been disabled." + + "\nYou can disable this log by raising the debug verbosity level above 'Debug'."); return false; } From 1c02a819d2b320724975530002479928dd1554cd Mon Sep 17 00:00:00 2001 From: bitsandfoxes Date: Thu, 26 Aug 2021 14:45:27 +0200 Subject: [PATCH 5/5] added log warning to build process in case of validation fail --- src/Sentry.Unity.Editor.iOS/BuildPostProcess.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Sentry.Unity.Editor.iOS/BuildPostProcess.cs b/src/Sentry.Unity.Editor.iOS/BuildPostProcess.cs index a21524e9f..d7b283791 100644 --- a/src/Sentry.Unity.Editor.iOS/BuildPostProcess.cs +++ b/src/Sentry.Unity.Editor.iOS/BuildPostProcess.cs @@ -1,5 +1,6 @@ using System; using Sentry.Extensibility; +using Sentry.Infrastructure; using UnityEditor; using UnityEditor.Callbacks; @@ -18,6 +19,8 @@ public static void OnPostProcessBuild(BuildTarget target, string pathToProject) var options = ScriptableSentryUnityOptions.LoadSentryUnityOptions(); if (!options.Validate()) { + new UnityLogger(new SentryOptions()).LogWarning( + "Failed to validate Sentry Options. Xcode project will not be modified."); return; }