internal static SentryUnityOptions LoadFromJson(TextAsset sentryOptionsTextAsset) { var options = new SentryUnityOptions(); var json = JsonDocument.Parse(sentryOptionsTextAsset.bytes).RootElement; if (json.GetPropertyOrNull("enabled") is { } enabled) { options.Enabled = enabled.GetBoolean(); } if (json.GetPropertyOrNull("dsn") is { } dsn) { options.Dsn = string.Equals(dsn.GetString(), string.Empty) ? null : dsn.GetString(); } if (json.GetPropertyOrNull("captureInEditor") is { } captureInEditor) { options.CaptureInEditor = captureInEditor.GetBoolean(); } if (json.GetPropertyOrNull("debug") is { } debug) { options.Debug = debug.GetBoolean(); } if (json.GetPropertyOrNull("debugOnlyInEditor") is { } debugOnlyInEditor) { options.DebugOnlyInEditor = debugOnlyInEditor.GetBoolean(); } if (json.GetEnumOrNull <SentryLevel>("diagnosticLevel") is { } diagnosticLevel) { options.DiagnosticLevel = diagnosticLevel; } if (json.GetEnumOrNull <CompressionLevelWithAuto>("requestBodyCompressionLevel") is { } requestBodyCompressionLevel) { options.RequestBodyCompressionLevel = requestBodyCompressionLevel; } if (json.GetPropertyOrNull("attachStacktrace") is { } attachStacktrace) { options.AttachStacktrace = attachStacktrace.GetBoolean(); } if (json.GetPropertyOrNull("sampleRate") is { } sampleRate) { options.SampleRate = sampleRate.GetSingle() >= 1.0f ? null : sampleRate.GetSingle(); } if (json.GetPropertyOrNull("release") is { } release) { options.Release = release.GetString(); } if (json.GetPropertyOrNull("environment") is { } environment) { options.Environment = environment.GetString(); } SentryOptionsUtility.TryAttachLogger(options); return(options); }
public void ToScriptableOptions_ConvertJsonOptions_AreEqual(bool isBuilding) { var jsonTextAsset = new TextAsset(File.ReadAllText(GetTestOptionsFilePath())); var expectedOptions = JsonSentryUnityOptions.LoadFromJson(jsonTextAsset); var scriptableOptions = ScriptableObject.CreateInstance <ScriptableSentryUnityOptions>(); SentryOptionsUtility.SetDefaults(scriptableOptions); JsonSentryUnityOptions.ToScriptableOptions(jsonTextAsset, scriptableOptions); var actualOptions = ScriptableSentryUnityOptions.ToSentryUnityOptions(scriptableOptions, isBuilding); AssertOptions(expectedOptions, actualOptions); }
public void ToSentryOptions_OptionsCreated_AreEqualToNewOptions(bool isBuilding) { var expectedOptions = new SentryUnityOptions(_fixture.Application, isBuilding); var scriptableOptions = ScriptableObject.CreateInstance <ScriptableSentryUnityOptions>(); SentryOptionsUtility.SetDefaults(scriptableOptions); // These are config window specific differences in default values we actually want scriptableOptions.Debug = false; scriptableOptions.DebugOnlyInEditor = false; scriptableOptions.DiagnosticLevel = SentryLevel.Debug; var actualOptions = ScriptableSentryUnityOptions.ToSentryUnityOptions(scriptableOptions, isBuilding, _fixture.Application); AssertOptions(expectedOptions, actualOptions); }
internal static ScriptableSentryUnityOptions CreateOptions(string?notDefaultConfigName = null) { if (!AssetDatabase.IsValidFolder("Assets/Resources")) { AssetDatabase.CreateFolder("Assets", "Resources"); } if (!AssetDatabase.IsValidFolder($"Assets/Resources/{ScriptableSentryUnityOptions.ConfigRootFolder}")) { AssetDatabase.CreateFolder("Assets/Resources", ScriptableSentryUnityOptions.ConfigRootFolder); } var scriptableOptions = CreateInstance <ScriptableSentryUnityOptions>(); SentryOptionsUtility.SetDefaults(scriptableOptions); AssetDatabase.CreateAsset(scriptableOptions, ScriptableSentryUnityOptions.GetConfigPath(notDefaultConfigName)); AssetDatabase.SaveAssets(); return(scriptableOptions); }