Skip to content

Commit

Permalink
feat: Release & Env sync with native options (#298)
Browse files Browse the repository at this point in the history
* writing release and environment to native options

* added/updated tests

* updated CHANGELOG.md
  • Loading branch information
bitsandfoxes authored Aug 27, 2021
1 parent cbaa814 commit 126171e
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 19 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## Unreleased

### Features

- Release & Environment now sync with native options ([#298](https://github.com/getsentry/sentry-unity/pull/298))

## 0.5.1

### Fixes
Expand Down
2 changes: 1 addition & 1 deletion src/Sentry.Unity.Editor.iOS/BuildPostProcess.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public static void OnPostProcessBuild(BuildTarget target, string pathToProject)
return;
}

var options = ScriptableSentryUnityOptions.LoadSentryUnityOptions();
var options = ScriptableSentryUnityOptions.LoadSentryUnityOptions(BuildPipeline.isBuildingPlayer);
if (!options.Validate())
{
new UnityLogger(new SentryOptions()).LogWarning(
Expand Down
5 changes: 4 additions & 1 deletion src/Sentry.Unity.Editor.iOS/NativeOptions.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.IO;
using UnityEngine;

namespace Sentry.Unity.Editor.iOS
{
Expand Down Expand Up @@ -29,7 +30,9 @@ internal string Generate(SentryOptions options)
@""maxBreadcrumbs"": @{options.MaxBreadcrumbs},
@""maxCacheItems"": @{options.MaxCacheItems},
@""enableAutoSessionTracking"": @NO,
@""sendDefaultPii"" : @{ToObjCString(options.SendDefaultPii)}
@""sendDefaultPii"" : @{ToObjCString(options.SendDefaultPii)},
@""release"" : @""{options.Release}"",
@""environment"" : @""{options.Environment}""
}};
return options;
Expand Down
8 changes: 4 additions & 4 deletions src/Sentry.Unity/ScriptableSentryUnityOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ internal static string GetConfigPath(string? notDefaultConfigName = null)
[field: SerializeField] internal bool DebugOnlyInEditor { get; set; }
[field: SerializeField] internal SentryLevel DiagnosticLevel { get; set; }

public static SentryUnityOptions? LoadSentryUnityOptions()
public static SentryUnityOptions? LoadSentryUnityOptions(bool isBuilding = false)
{
// TODO: Deprecated and to be removed once we update far enough.
var sentryOptionsTextAsset = Resources.Load<TextAsset>($"{ConfigRootFolder}/{ConfigName}");
Expand All @@ -64,16 +64,16 @@ internal static string GetConfigPath(string? notDefaultConfigName = null)
var scriptableOptions = Resources.Load<ScriptableSentryUnityOptions>($"{ConfigRootFolder}/{ConfigName}");
if (scriptableOptions is not null)
{
return ToSentryUnityOptions(scriptableOptions);
return ToSentryUnityOptions(scriptableOptions, isBuilding);
}

return null;
}

internal static SentryUnityOptions ToSentryUnityOptions(ScriptableSentryUnityOptions scriptableOptions)
internal static SentryUnityOptions ToSentryUnityOptions(ScriptableSentryUnityOptions scriptableOptions, bool isBuilding)
{
var options = new SentryUnityOptions();
SentryOptionsUtility.SetDefaults(options);
SentryOptionsUtility.SetDefaults(options, isBuilding: isBuilding);

options.Enabled = scriptableOptions.Enabled;

Expand Down
13 changes: 7 additions & 6 deletions src/Sentry.Unity/SentryOptionsUtility.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ namespace Sentry.Unity
{
internal static class SentryOptionsUtility
{
public static void SetDefaults(SentryUnityOptions options, IApplication? application = null)
public static void SetDefaults(SentryUnityOptions options, IApplication? application = null,
bool isBuilding = false)
{
application ??= ApplicationAdapter.Instance;

Expand All @@ -20,7 +21,7 @@ public static void SetDefaults(SentryUnityOptions options, IApplication? applica
options.IsEnvironmentUser = false;

options.Release = Release(application);
options.Environment = Environment(application);
options.Environment = Environment(application, isBuilding);

options.CacheDirectoryPath = application.PersistentDataPath;
}
Expand All @@ -35,7 +36,7 @@ public static void SetDefaults(ScriptableSentryUnityOptions scriptableOptions)
scriptableOptions.Dsn = options.Dsn;
scriptableOptions.CaptureInEditor = options.CaptureInEditor;
scriptableOptions.TracesSampleRate = options.TracesSampleRate;
scriptableOptions.AutoSessionTrackingInterval = (int) options.AutoSessionTrackingInterval.TotalMilliseconds;
scriptableOptions.AutoSessionTrackingInterval = (int)options.AutoSessionTrackingInterval.TotalMilliseconds;
scriptableOptions.AutoSessionTracking = options.AutoSessionTracking;

scriptableOptions.AttachStacktrace = options.AttachStacktrace;
Expand All @@ -45,9 +46,9 @@ public static void SetDefaults(ScriptableSentryUnityOptions scriptableOptions)
scriptableOptions.IsEnvironmentUser = options.IsEnvironmentUser;

scriptableOptions.MaxCacheItems = options.MaxCacheItems;
scriptableOptions.InitCacheFlushTimeout = (int) options.InitCacheFlushTimeout.TotalMilliseconds;
scriptableOptions.InitCacheFlushTimeout = (int)options.InitCacheFlushTimeout.TotalMilliseconds;
scriptableOptions.SampleRate = options.SampleRate;
scriptableOptions.ShutdownTimeout = (int) options.ShutdownTimeout.TotalMilliseconds;
scriptableOptions.ShutdownTimeout = (int)options.ShutdownTimeout.TotalMilliseconds;
scriptableOptions.MaxQueueItems = options.MaxQueueItems;

// Config window specifics
Expand All @@ -69,7 +70,7 @@ application.ProductName is string productName
? $"{productName}@{application.Version}"
: $"{application.Version}";

private static string Environment(IApplication application) => application.IsEditor ? "editor" : "production";
private static string Environment(IApplication application, bool isBuilding) => (application.IsEditor && !isBuilding) ? "editor" : "production";

public static void TryAttachLogger(SentryUnityOptions options, IApplication? application = null)
{
Expand Down
19 changes: 16 additions & 3 deletions test/Sentry.Unity.Tests/SentryOptionsUtilityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,17 @@ public void SetDefaults_Environment_IsProductionOutsideEditor()
Assert.AreEqual("production", options.Environment);
}

[Test]
public void SetDefaults_Environment_IsProductionWhenBuilding()
{
var options = new SentryUnityOptions();
var application = new TestApplication(isEditor: true);

SentryOptionsUtility.SetDefaults(options, application, isBuilding: true);

Assert.AreEqual("production", options.Environment);
}

[Test]
public void SetDefaults_CacheDirectoryPath_IsPersistentDataPath()
{
Expand All @@ -74,10 +85,12 @@ public void SetDefaults_IsEnvironmentUser_IsFalse()
}

[Test]
public void SetDefaults_OptionsCreated_AreEqual()
[TestCase(true)]
[TestCase(false)]
public void SetDefaults_OptionsCreated_AreEqual(bool isBuilding)
{
var expectedOptions = new SentryUnityOptions();
SentryOptionsUtility.SetDefaults(expectedOptions);
SentryOptionsUtility.SetDefaults(expectedOptions, isBuilding: isBuilding);

var scriptableOptions = ScriptableObject.CreateInstance<ScriptableSentryUnityOptions>();
SentryOptionsUtility.SetDefaults(scriptableOptions);
Expand All @@ -87,7 +100,7 @@ public void SetDefaults_OptionsCreated_AreEqual()
scriptableOptions.DebugOnlyInEditor = false;
scriptableOptions.DiagnosticLevel = SentryLevel.Debug;

var actualOptions = ScriptableSentryUnityOptions.ToSentryUnityOptions(scriptableOptions);
var actualOptions = ScriptableSentryUnityOptions.ToSentryUnityOptions(scriptableOptions, isBuilding);

SentryUnityOptionsTests.AssertOptions(expectedOptions, actualOptions);
}
Expand Down
12 changes: 8 additions & 4 deletions test/Sentry.Unity.Tests/SentryUnityOptionsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ public void Options_ReadFromJson_Success()
}

[Test]
public void ToSentryUnityOptions_ValueMapping_AreEqual()
[TestCase(true)]
[TestCase(false)]
public void ToSentryUnityOptions_ValueMapping_AreEqual(bool isBuilding)
{
var expectedOptions = new SentryUnityOptions
{
Expand Down Expand Up @@ -73,13 +75,15 @@ public void ToSentryUnityOptions_ValueMapping_AreEqual()
scriptableOptions.DebugOnlyInEditor = expectedOptions.DebugOnlyInEditor;
scriptableOptions.DiagnosticLevel = expectedOptions.DiagnosticLevel;

var optionsActual = ScriptableSentryUnityOptions.ToSentryUnityOptions(scriptableOptions);
var optionsActual = ScriptableSentryUnityOptions.ToSentryUnityOptions(scriptableOptions, isBuilding);

AssertOptions(expectedOptions, optionsActual);
}

[Test]
public void ToScriptableOptions_ConvertJsonOptions_AreEqual()
[TestCase(true)]
[TestCase(false)]
public void ToScriptableOptions_ConvertJsonOptions_AreEqual(bool isBuilding)
{
var jsonTextAsset = new TextAsset(File.ReadAllText(GetTestOptionsFilePath()));
var expectedOptions = JsonSentryUnityOptions.LoadFromJson(jsonTextAsset);
Expand All @@ -88,7 +92,7 @@ public void ToScriptableOptions_ConvertJsonOptions_AreEqual()
SentryOptionsUtility.SetDefaults(scriptableOptions);
JsonSentryUnityOptions.ToScriptableOptions(jsonTextAsset, scriptableOptions);

var actualOptions = ScriptableSentryUnityOptions.ToSentryUnityOptions(scriptableOptions);
var actualOptions = ScriptableSentryUnityOptions.ToSentryUnityOptions(scriptableOptions, isBuilding);

AssertOptions(expectedOptions, actualOptions);
}
Expand Down

0 comments on commit 126171e

Please sign in to comment.