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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }