From d5e79753e7fcd19b2723455ac478325d4193e077 Mon Sep 17 00:00:00 2001 From: "rs@merchello.com" Date: Wed, 16 Mar 2016 13:24:23 -0700 Subject: [PATCH 01/25] Fixes issue #111 by calling by determining what type of SentryEvent is being passed as a parameter (Exception or Message) and calling other existing factory methods to fully build the JsonPacket model. --- src/app/SharpRaven/Data/JsonPacketFactory.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/app/SharpRaven/Data/JsonPacketFactory.cs b/src/app/SharpRaven/Data/JsonPacketFactory.cs index 95e1e3c0..a5c8a1df 100644 --- a/src/app/SharpRaven/Data/JsonPacketFactory.cs +++ b/src/app/SharpRaven/Data/JsonPacketFactory.cs @@ -132,8 +132,10 @@ public JsonPacket Create(string project, /// public JsonPacket Create(string project, SentryEvent @event) { - var json = new JsonPacket(project, @event); - return OnCreate(json); + + return @event.Exception == null ? + Create(project, @event.Message, @event.Level, @event.Tags, @event.Fingerprint.ToArray(), @event.Extra) : + Create(project, @event.Exception, @event.Message, @event.Level, @event.Tags, @event.Fingerprint.ToArray(), @event.Extra); } From 2888c324e2ec7406d12916cd7d50ffda33af62ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 20:01:01 +0100 Subject: [PATCH 02/25] Moved async tests to RavenClientTests.Net45.cs Duplicated all `CaptureMessage` tests to `async` counterparts and moved all `async` tests to `RavenClientTests.Net45.cs`. --- .../RavenClientTests.Net45.cs | 208 ++++++++++++++++++ .../SharpRaven.UnitTests/RavenClientTests.cs | 17 +- .../SharpRaven.UnitTests.csproj | 5 +- 3 files changed, 212 insertions(+), 18 deletions(-) create mode 100644 src/tests/SharpRaven.UnitTests/RavenClientTests.Net45.cs diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests.Net45.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests.Net45.cs new file mode 100644 index 00000000..0835f841 --- /dev/null +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests.Net45.cs @@ -0,0 +1,208 @@ +#region License + +// Copyright (c) 2014 The Sentry Team and individual contributors. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are permitted +// provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list of +// conditions and the following disclaimer in the documentation and/or other materials +// provided with the distribution. +// +// 3. Neither the name of the Sentry nor the names of its contributors may be used to +// endorse or promote products derived from this software without specific prior written +// permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#endregion + +#if (!net40) + +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +using NSubstitute; + +using NUnit.Framework; + +using SharpRaven.Data; +using SharpRaven.Logging; +using SharpRaven.UnitTests.Utilities; + +namespace SharpRaven.UnitTests +{ + [TestFixture] + public partial class RavenClientTests + { + [Test] + public async Task CaptureMessageAsync_ClientEnvironmentIsIgnored() + { + var jsonPacketFactory = new TestableJsonPacketFactory(environment : "keep-me"); + var client = new TestableRavenClient(dsnUri, jsonPacketFactory) { Environment = "foobar" }; + await client.CaptureMessageAsync("Test"); + + var lastEvent = client.LastPacket; + + Assert.That(lastEvent.Environment, Is.EqualTo("keep-me")); + } + + + [Test] + public async Task CaptureMessageAsync_ClientLoggerIsIgnored() + { + var jsonPacketFactory = new TestableJsonPacketFactory(logger : "keep-me"); + var client = new TestableRavenClient(dsnUri, jsonPacketFactory) { Logger = "foobar" }; + await client.CaptureMessageAsync("Test"); + + var lastEvent = client.LastPacket; + + Assert.That(lastEvent.Logger, Is.EqualTo("keep-me")); + } + + + [Test] + public async Task CaptureMessageAsync_ClientReleaseIsIgnored() + { + var jsonPacketFactory = new TestableJsonPacketFactory(release : "keep-me"); + var client = new TestableRavenClient(dsnUri, jsonPacketFactory) { Release = "foobar" }; + await client.CaptureMessageAsync("Test"); + + var lastEvent = client.LastPacket; + + Assert.That(lastEvent.Release, Is.EqualTo("keep-me")); + } + + + [Test] + public async Task CaptureMessageAsync_InvokesSend_AndJsonPacketFactoryOnCreate() + { + var project = Guid.NewGuid().ToString(); + var jsonPacketFactory = new TestableJsonPacketFactory(project); + var client = new TestableRavenClient(dsnUri, jsonPacketFactory); + var result = await client.CaptureMessageAsync("Test"); + + Assert.That(result, Is.EqualTo(project)); + } + + + [Test] + public async Task CaptureMessageAsync_OnlyDefaultTags() + { + var client = new TestableRavenClient(dsnUri); + client.Tags.Add("key", "value"); + client.Tags.Add("foo", "bar"); + // client.Tags = defaultTags; + await client.CaptureMessageAsync("Test", ErrorLevel.Info); + + var lastEvent = client.LastPacket; + + Assert.That(lastEvent.Tags["key"], Is.EqualTo("value")); + Assert.That(lastEvent.Tags["foo"], Is.EqualTo("bar")); + } + + + [Test] + public async Task CaptureMessageAsync_OnlyMessageTags() + { + var messageTags = new Dictionary { { "key", "value" }, { "foo", "bar" } }; + + var client = new TestableRavenClient(dsnUri); + await client.CaptureMessageAsync("Test", ErrorLevel.Info, messageTags); + + var lastEvent = client.LastPacket; + + Assert.That(lastEvent.Tags["key"], Is.EqualTo("value")); + Assert.That(lastEvent.Tags["foo"], Is.EqualTo("bar")); + } + + + [Test] + public async Task CaptureMessageAsync_ScrubberIsInvoked() + { + string message = Guid.NewGuid().ToString("n"); + + var client = new RavenClient(TestHelper.DsnUri); + client.LogScrubber = Substitute.For(); + client.LogScrubber.Scrub(Arg.Any()) + .Returns(c => + { + string json = c.Arg(); + Assert.That(json, Is.StringContaining(message)); + return json; + }); + + await client.CaptureMessageAsync(message); + + // Verify that we actually received a Scrub() call: + client.LogScrubber.Received().Scrub(Arg.Any()); + } + + + [Test] + public async Task CaptureMessageAsync_SendsEnvironment() + { + var client = new TestableRavenClient(dsnUri) { Environment = "foobar" }; + await client.CaptureMessageAsync("Test"); + + var lastEvent = client.LastPacket; + + Assert.That(lastEvent.Environment, Is.EqualTo("foobar")); + } + + + [Test] + public async Task CaptureMessageAsync_SendsLogger() + { + var client = new TestableRavenClient(dsnUri) { Logger = "foobar" }; + await client.CaptureMessageAsync("Test"); + + var lastEvent = client.LastPacket; + + Assert.That(lastEvent.Logger, Is.EqualTo("foobar")); + } + + + [Test] + public async Task CaptureMessageAsync_SendsRelease() + { + var client = new TestableRavenClient(dsnUri) { Release = "foobar" }; + await client.CaptureMessageAsync("Test"); + + var lastEvent = client.LastPacket; + + Assert.That(lastEvent.Release, Is.EqualTo("foobar")); + } + + + [Test] + public async Task CaptureMessageAsync_TagHandling() + { + var messageTags = new Dictionary { { "key", "another value" } }; + + var client = new TestableRavenClient(dsnUri); + client.Tags.Add("key", "value"); + client.Tags.Add("foo", "bar"); + await client.CaptureMessageAsync("Test", ErrorLevel.Info, messageTags); + + var lastEvent = client.LastPacket; + + Assert.That(lastEvent.Tags["key"], Is.EqualTo("another value")); + Assert.That(lastEvent.Tags["foo"], Is.EqualTo("bar")); + } + } +} + +#endif \ No newline at end of file diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests.cs index f41bcdbb..831b7adc 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests.cs @@ -46,7 +46,7 @@ namespace SharpRaven.UnitTests { [TestFixture] - public class RavenClientTests + public partial class RavenClientTests { [Test] public void CaptureMessage_ClientEnvironmentIsIgnored() @@ -205,21 +205,6 @@ public void CaptureMessage_TagHandling() } -#if (!net40) - [Test] - public async Task CaptureMessageAsync_InvokesSend_AndJsonPacketFactoryOnCreate() - { - const string dsnUri = - "http://7d6466e66155431495bdb4036ba9a04b:4c1cfeab7ebd4c1cb9e18008173a3630@app.getsentry.com/3739"; - var project = Guid.NewGuid().ToString(); - var jsonPacketFactory = new TestableJsonPacketFactory(project); - var client = new TestableRavenClient(dsnUri, jsonPacketFactory); - var result = await client.CaptureMessageAsync("Test"); - - Assert.That(result, Is.EqualTo(project)); - } -#endif - [Test] public void Constructor_NullDsn_ThrowsArgumentNullException() diff --git a/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj b/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj index 784595c8..4fbb44f3 100644 --- a/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj +++ b/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj @@ -1,4 +1,4 @@ - + @@ -90,6 +90,7 @@ + @@ -132,4 +133,4 @@ --> - + \ No newline at end of file From 9542e08ed488b85d2839eac975d358eaa9bd0bf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 20:14:19 +0100 Subject: [PATCH 03/25] Set LastPacket in async as well --- src/tests/SharpRaven.UnitTests/RavenClientTests.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests.cs index 831b7adc..15c73188 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests.cs @@ -300,6 +300,8 @@ protected override string Send(JsonPacket packet) #if(!net40) protected override Task SendAsync(JsonPacket packet) { + packet = PreparePacket(packet); + LastPacket = packet; return Task.FromResult(packet.Project); } #endif From 9db2734186da8760303eb3f3cfe13b35c2979436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 20:55:34 +0100 Subject: [PATCH 04/25] Harmonization of code paths to SentryEvent - Harmonized all code paths to revolve around `SentryEvent` so there's less code duplication and fewer bugs. - Obsoleted the JsonPacketFactory.Create() methods that don't take `SentryEvent` to make it clear that `SentryEvent` is the way forward. - Made `SentryEvent.Tags` and `.Fingerprint` internally settable, but not nullable, so they can be set without tedious loops. --- src/app/SharpRaven/Data/IJsonPacketFactory.cs | 2 + src/app/SharpRaven/Data/JsonPacket.cs | 55 ++++++++++++++ src/app/SharpRaven/Data/JsonPacketFactory.cs | 76 +++---------------- src/app/SharpRaven/Data/SentryEvent.cs | 17 +++-- src/app/SharpRaven/RavenClient.Net45.cs | 32 ++------ src/app/SharpRaven/RavenClient.cs | 40 +++++----- 6 files changed, 110 insertions(+), 112 deletions(-) diff --git a/src/app/SharpRaven/Data/IJsonPacketFactory.cs b/src/app/SharpRaven/Data/IJsonPacketFactory.cs index ead5e2a7..647a40c6 100644 --- a/src/app/SharpRaven/Data/IJsonPacketFactory.cs +++ b/src/app/SharpRaven/Data/IJsonPacketFactory.cs @@ -53,6 +53,7 @@ public interface IJsonPacketFactory /// /// A new instance of for the specified . /// + [Obsolete("Use Create(string, SentryEvent) instead.")] JsonPacket Create(string project, SentryMessage message, ErrorLevel level = ErrorLevel.Info, @@ -76,6 +77,7 @@ JsonPacket Create(string project, /// A new instance of for the specified /// , with the given . /// + [Obsolete("Use Create(string, SentryEvent) instead.")] JsonPacket Create(string project, Exception exception, SentryMessage message = null, diff --git a/src/app/SharpRaven/Data/JsonPacket.cs b/src/app/SharpRaven/Data/JsonPacket.cs index 94bbc090..3fdd1c0a 100644 --- a/src/app/SharpRaven/Data/JsonPacket.cs +++ b/src/app/SharpRaven/Data/JsonPacket.cs @@ -30,9 +30,11 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Reflection; using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using SharpRaven.Serialization; using SharpRaven.Utilities; @@ -72,10 +74,63 @@ public JsonPacket(string project, SentryEvent @event) Initialize(@event.Exception); Message = @event.Message != null ? @event.Message.ToString() : null; + Extra = Merge(@event); + Tags = @event.Tags; + Fingerprint = @event.Fingerprint.ToArray(); MessageObject = @event.Message; } + private static object Merge(SentryEvent @event) + { + var exception = @event.Exception; + var extra = @event.Extra; + + if (exception == null && extra == null) + return null; + + if (extra != null && exception == null) + return extra; + + var exceptionData = new ExceptionData(exception); + + if (extra == null) + return exceptionData; + + JObject result; + + if (extra.GetType().IsArray) + { + result = new JObject(); + var array = JArray.FromObject(extra); + + foreach (var o in array) + { + var jo = o as JObject; + JProperty[] properties; + + if (jo == null || (properties = jo.Properties().ToArray()).Length != 2 || properties[0].Name != "Key" + || properties[1].Name != "Value") + { + result.Merge(o); + continue; + } + + var key = properties[0].Value.ToString(); + var value = properties[1].Value; + result.Add(key, value); + } + } + else + result = JObject.FromObject(extra); + + var jExceptionData = JObject.FromObject(exceptionData); + result.Merge(jExceptionData); + + return result; + } + + /// /// Initializes a new instance of the class. /// diff --git a/src/app/SharpRaven/Data/JsonPacketFactory.cs b/src/app/SharpRaven/Data/JsonPacketFactory.cs index a5c8a1df..042457a4 100644 --- a/src/app/SharpRaven/Data/JsonPacketFactory.cs +++ b/src/app/SharpRaven/Data/JsonPacketFactory.cs @@ -32,8 +32,6 @@ using System.Collections.Generic; using System.Linq; -using Newtonsoft.Json.Linq; - namespace SharpRaven.Data { /// @@ -56,6 +54,7 @@ public class JsonPacketFactory : IJsonPacketFactory /// /// A new instance of for the specified . /// + [Obsolete("Use Create(string, SentryEvent) instead.")] public JsonPacket Create(string project, SentryMessage message, ErrorLevel level = ErrorLevel.Info, @@ -63,17 +62,15 @@ public JsonPacket Create(string project, string[] fingerprint = null, object extra = null) { - var json = new JsonPacket(project) + var @event = new SentryEvent(message) { - Message = message != null ? message.ToString() : null, - MessageObject = message, Level = level, + Extra = extra, Tags = tags, - Fingerprint = fingerprint, - Extra = Merge(extra) + Fingerprint = fingerprint }; - return OnCreate(json); + return Create(project, @event); } @@ -98,6 +95,7 @@ public JsonPacket Create(string project, /// given /// . /// + [Obsolete("Use Create(string, SentryEvent) instead.")] public JsonPacket Create(string project, Exception exception, SentryMessage message = null, @@ -106,17 +104,16 @@ public JsonPacket Create(string project, string[] fingerprint = null, object extra = null) { - var json = new JsonPacket(project, exception) + var @event = new SentryEvent(exception) { - Message = message != null ? message.ToString() : exception.Message, - MessageObject = message, + Message = message, Level = level, + Extra = extra, Tags = tags, Fingerprint = fingerprint, - Extra = Merge(extra, exception) }; - return OnCreate(json); + return Create(project, @event); } @@ -132,10 +129,8 @@ public JsonPacket Create(string project, /// public JsonPacket Create(string project, SentryEvent @event) { - - return @event.Exception == null ? - Create(project, @event.Message, @event.Level, @event.Tags, @event.Fingerprint.ToArray(), @event.Extra) : - Create(project, @event.Exception, @event.Message, @event.Level, @event.Tags, @event.Fingerprint.ToArray(), @event.Extra); + var json = new JsonPacket(project, @event); + return OnCreate(json); } @@ -151,52 +146,5 @@ protected virtual JsonPacket OnCreate(JsonPacket jsonPacket) { return jsonPacket; } - - - private static object Merge(object extra, Exception exception = null) - { - if (exception == null && extra == null) - return null; - - if (extra != null && exception == null) - return extra; - - var exceptionData = new ExceptionData(exception); - - if (extra == null) - return exceptionData; - - JObject result; - - if (extra.GetType().IsArray) - { - result = new JObject(); - var array = JArray.FromObject(extra); - - foreach (var o in array) - { - var jo = o as JObject; - JProperty[] properties; - - if (jo == null || (properties = jo.Properties().ToArray()).Length != 2 || properties[0].Name != "Key" - || properties[1].Name != "Value") - { - result.Merge(o); - continue; - } - - var key = properties[0].Value.ToString(); - var value = properties[1].Value; - result.Add(key, value); - } - } - else - result = JObject.FromObject(extra); - - var jExceptionData = JObject.FromObject(exceptionData); - result.Merge(jExceptionData); - - return result; - } } } \ No newline at end of file diff --git a/src/app/SharpRaven/Data/SentryEvent.cs b/src/app/SharpRaven/Data/SentryEvent.cs index c63ae4d0..542a593c 100644 --- a/src/app/SharpRaven/Data/SentryEvent.cs +++ b/src/app/SharpRaven/Data/SentryEvent.cs @@ -39,8 +39,9 @@ namespace SharpRaven.Data public class SentryEvent { private readonly Exception exception; - private readonly IList fingerprint; - private readonly IDictionary tags; + private IList fingerprint; + private SentryMessage message; + private IDictionary tags; /// Initializes a new instance of the class. @@ -65,8 +66,8 @@ public SentryEvent(SentryMessage message) /// Prevents a default instance of the class from being created. private SentryEvent() { - this.tags = new Dictionary(); - this.fingerprint = new List(); + Tags = new Dictionary(); + Fingerprint = new List(); } @@ -92,6 +93,7 @@ public Exception Exception public IList Fingerprint { get { return this.fingerprint; } + internal set { this.fingerprint = value ?? new List(); } } /// @@ -108,7 +110,11 @@ public IList Fingerprint /// /// The optional message to capture instead of the default . /// - public SentryMessage Message { get; set; } + public SentryMessage Message + { + get { return this.message ?? (Exception != null ? Exception.Message : null); } + set { this.message = value; } + } /// Gets the tags to annotate the captured or with. /// @@ -117,6 +123,7 @@ public IList Fingerprint public IDictionary Tags { get { return this.tags; } + internal set { this.tags = value ?? new Dictionary(); } } } } \ No newline at end of file diff --git a/src/app/SharpRaven/RavenClient.Net45.cs b/src/app/SharpRaven/RavenClient.Net45.cs index c2fa5c71..30945459 100644 --- a/src/app/SharpRaven/RavenClient.Net45.cs +++ b/src/app/SharpRaven/RavenClient.Net45.cs @@ -84,21 +84,11 @@ public async Task CaptureExceptionAsync(Exception exception, { Message = message, Level = level, - Extra = extra + Extra = extra, + Tags = MergeTags(tags), + Fingerprint = fingerprint }; - if (tags != null) - { - foreach (var tag in tags) - @event.Tags.Add(tag.Key, tag.Value); - } - - if (fingerprint != null) - { - foreach (var f in fingerprint) - @event.Fingerprint.Add(f); - } - return await CaptureAsync(@event); } @@ -124,21 +114,11 @@ public async Task CaptureMessageAsync(SentryMessage message, var @event = new SentryEvent(message) { Level = level, - Extra = extra + Extra = extra, + Tags = MergeTags(tags), + Fingerprint = fingerprint }; - if (tags != null) - { - foreach (var tag in tags) - @event.Tags.Add(tag.Key, tag.Value); - } - - if (fingerprint != null) - { - foreach (var f in fingerprint) - @event.Fingerprint.Add(f); - } - return await CaptureAsync(@event); } diff --git a/src/app/SharpRaven/RavenClient.cs b/src/app/SharpRaven/RavenClient.cs index bef4c211..a7a4aa45 100644 --- a/src/app/SharpRaven/RavenClient.cs +++ b/src/app/SharpRaven/RavenClient.cs @@ -177,6 +177,10 @@ public IDictionary Tags /// public string Capture(SentryEvent @event) { + if (@event == null) + throw new ArgumentNullException("event"); + + @event.Tags = MergeTags(@event.Tags); var packet = this.jsonPacketFactory.Create(CurrentDsn.ProjectID, @event); return Send(packet); } @@ -227,15 +231,16 @@ public string CaptureException(Exception exception, string[] fingerprint = null, object extra = null) { - var finalTags = MergeTags(tags); - var packet = this.jsonPacketFactory.Create(CurrentDsn.ProjectID, - exception, - message, - level, - finalTags, - fingerprint, - extra); - return Send(packet); + var @event = new SentryEvent(exception) + { + Message = message, + Level = level, + Extra = extra, + Tags = MergeTags(tags), + Fingerprint = fingerprint + }; + + return Capture(@event); } @@ -257,14 +262,15 @@ public string CaptureMessage(SentryMessage message, string[] fingerprint = null, object extra = null) { - var finalTags = MergeTags(tags); - var packet = this.jsonPacketFactory.Create(CurrentDsn.ProjectID, - message, - level, - finalTags, - fingerprint, - extra); - return Send(packet); + var @event = new SentryEvent(message) + { + Level = level, + Extra = extra, + Tags = MergeTags(tags), + Fingerprint = fingerprint + }; + + return Capture(@event); } From 5a4d23345b5355326ca5badec5de4344c957de53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 18:51:15 +0100 Subject: [PATCH 05/25] Rename RavenClientTests to RavenClientTester --- ...venClientTests.cs => RavenClientTester.cs} | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) rename src/tests/SharpRaven.UnitTests/{RavenClientTests.cs => RavenClientTester.cs} (93%) diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTester.cs similarity index 93% rename from src/tests/SharpRaven.UnitTests/RavenClientTests.cs rename to src/tests/SharpRaven.UnitTests/RavenClientTester.cs index 15c73188..42fff5f7 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTester.cs @@ -46,7 +46,7 @@ namespace SharpRaven.UnitTests { [TestFixture] - public partial class RavenClientTests + public class RavenClientTester { [Test] public void CaptureMessage_ClientEnvironmentIsIgnored() @@ -205,6 +205,21 @@ public void CaptureMessage_TagHandling() } +#if (!net40) + [Test] + public async Task CaptureMessageAsync_InvokesSend_AndJsonPacketFactoryOnCreate() + { + const string dsnUri = + "http://7d6466e66155431495bdb4036ba9a04b:4c1cfeab7ebd4c1cb9e18008173a3630@app.getsentry.com/3739"; + var project = Guid.NewGuid().ToString(); + var jsonPacketFactory = new TestableJsonPacketFactory(project); + var client = new TestableRavenClient(dsnUri, jsonPacketFactory); + var result = await client.CaptureMessageAsync("Test"); + + Assert.That(result, Is.EqualTo(project)); + } +#endif + [Test] public void Constructor_NullDsn_ThrowsArgumentNullException() @@ -300,8 +315,6 @@ protected override string Send(JsonPacket packet) #if(!net40) protected override Task SendAsync(JsonPacket packet) { - packet = PreparePacket(packet); - LastPacket = packet; return Task.FromResult(packet.Project); } #endif From ce0b011989df811fc2d287c98a09e83601cf0d19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 19:55:59 +0100 Subject: [PATCH 06/25] Add CaptureMessageAsync tests Copy all `CaptureMessage` tests to `async` counterparts by rewriting the `RavenClientTester` to a reusable tester class used in both synchronous and asynchronous tests. --- .../RavenClient.CaptureMessageAsyncTests.cs | 134 ++++++++++++++++++ .../RavenClient.CaptureMessageTests.cs | 129 +++++++++++++++++ .../SharpRaven.UnitTests/RavenClientTester.cs | 103 ++++++-------- .../SharpRaven.UnitTests.csproj | 5 +- 4 files changed, 307 insertions(+), 64 deletions(-) create mode 100644 src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs create mode 100644 src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageTests.cs diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs new file mode 100644 index 00000000..d565c96f --- /dev/null +++ b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs @@ -0,0 +1,134 @@ +#region License + +// Copyright (c) 2014 The Sentry Team and individual contributors. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are permitted +// provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list of +// conditions and the following disclaimer in the documentation and/or other materials +// provided with the distribution. +// +// 3. Neither the name of the Sentry nor the names of its contributors may be used to +// endorse or promote products derived from this software without specific prior written +// permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#endregion + +using System.Threading.Tasks; + +using NUnit.Framework; + +using SharpRaven.Data; + +namespace SharpRaven.UnitTests +{ + [TestFixture] + public class RavenClientCaptureMessageAsyncTests + { + #region SetUp/Teardown + + [SetUp] + public void SetUp() + { + this.tester = new RavenClientTester(); + } + + #endregion + + [Test] + public void ClientEnvironmentIsIgnored() + { + this.tester.ClientEnvironmentIsIgnored(client => + { + client.CaptureMessageAsync("Test").GetAwaiter().GetResult(); + }); + } + + + [Test] + public async Task ClientLoggerIsIgnored() + { + this.tester.ClientLoggerIsIgnored(async client => await client.CaptureMessageAsync("Test")); + } + + + [Test] + public async Task ClientReleaseIsIgnored() + { + this.tester.ClientReleaseIsIgnored(async client => await client.CaptureMessageAsync("Test")); + } + + + [Test] + public async Task InvokesSendAndJsonPacketFactoryOnCreate() + { + // this.tester.InvokesSendAndJsonPacketFactoryOnCreate(async client => await client.CaptureMessageAsync("Test")); + } + + + [Test] + public async Task OnlyDefaultTags() + { + this.tester.OnlyDefaultTags(async client => await client.CaptureMessageAsync("Test")); + } + + + [Test] + public async Task OnlyMessageTags() + { + this.tester.OnlyMessageTags(async (client, tags) => await client.CaptureMessageAsync("Test", ErrorLevel.Info, tags)); + } + + + [Test] + public async Task ScrubberIsInvoked() + { + this.tester.ScrubberIsInvoked(async (client, message) => await client.CaptureMessageAsync(message)); + } + + + [Test] + public async Task SendsEnvironment() + { + this.tester.SendsEnvironment(async client => await client.CaptureMessageAsync("Test")); + } + + + [Test] + public async Task SendsLogger() + { + this.tester.SendsLogger(async client => await client.CaptureMessageAsync("Test")); + } + + + [Test] + public async Task SendsRelease() + { + this.tester.SendsRelease(async client => await client.CaptureMessageAsync("Test")); + } + + + [Test] + public async Task TagHandling() + { + this.tester.TagHandling(async (client, tags) => await client.CaptureMessageAsync("Test", ErrorLevel.Info, tags)); + } + + + private RavenClientTester tester; + } +} \ No newline at end of file diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageTests.cs b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageTests.cs new file mode 100644 index 00000000..5403e09a --- /dev/null +++ b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageTests.cs @@ -0,0 +1,129 @@ +#region License + +// Copyright (c) 2014 The Sentry Team and individual contributors. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are permitted +// provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list of +// conditions and the following disclaimer in the documentation and/or other materials +// provided with the distribution. +// +// 3. Neither the name of the Sentry nor the names of its contributors may be used to +// endorse or promote products derived from this software without specific prior written +// permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#endregion + +using NUnit.Framework; + +using SharpRaven.Data; + +namespace SharpRaven.UnitTests +{ + [TestFixture] + public class RavenClientCaptureMessageTests + { + #region SetUp/Teardown + + [SetUp] + public void SetUp() + { + this.tester = new RavenClientTester(); + } + + #endregion + + [Test] + public void ClientEnvironmentIsIgnored() + { + this.tester.ClientEnvironmentIsIgnored(client => client.CaptureMessage("Test")); + } + + + [Test] + public void ClientLoggerIsIgnored() + { + this.tester.ClientLoggerIsIgnored(client => client.CaptureMessage("Test")); + } + + + [Test] + public void ClientReleaseIsIgnored() + { + this.tester.ClientReleaseIsIgnored(client => client.CaptureMessage("Test")); + } + + + [Test] + public void InvokesSendAndJsonPacketFactoryOnCreate() + { + this.tester.InvokesSendAndJsonPacketFactoryOnCreate(client => client.CaptureMessage("Test")); + } + + + [Test] + public void OnlyDefaultTags() + { + this.tester.OnlyDefaultTags(client => client.CaptureMessage("Test")); + } + + + [Test] + public void OnlyMessageTags() + { + this.tester.OnlyMessageTags((client, tags) => client.CaptureMessage("Test", ErrorLevel.Info, tags)); + } + + + [Test] + public void ScrubberIsInvoked() + { + this.tester.ScrubberIsInvoked((client, message) => client.CaptureMessage(message)); + } + + + [Test] + public void SendsEnvironment() + { + this.tester.SendsEnvironment(client => client.CaptureMessage("Test")); + } + + + [Test] + public void SendsLogger() + { + this.tester.SendsLogger(client => client.CaptureMessage("Test")); + } + + + [Test] + public void SendsRelease() + { + this.tester.SendsRelease(client => client.CaptureMessage("Test")); + } + + + [Test] + public void TagHandling() + { + this.tester.TagHandling((client, tags) => client.CaptureMessage("Test", ErrorLevel.Info, tags)); + } + + + private RavenClientTester tester; + } +} \ No newline at end of file diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTester.cs b/src/tests/SharpRaven.UnitTests/RavenClientTester.cs index 42fff5f7..fe72b6a0 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTester.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTester.cs @@ -45,68 +45,51 @@ namespace SharpRaven.UnitTests { - [TestFixture] public class RavenClientTester { - [Test] - public void CaptureMessage_ClientEnvironmentIsIgnored() - { - var jsonPacketFactory = new TestableJsonPacketFactory(environment : "keep-me"); - var client = new TestableRavenClient(dsnUri, jsonPacketFactory) { Environment = "foobar" }; - client.CaptureMessage("Test"); - - var lastEvent = client.LastPacket; - - Assert.That(lastEvent.Environment, Is.EqualTo("keep-me")); - } + private const string dsnUri = + "http://7d6466e66155431495bdb4036ba9a04b:4c1cfeab7ebd4c1cb9e18008173a3630@app.getsentry.com/3739"; - [Test] - public void CaptureMessage_ClientLoggerIsIgnored() + public void ClientLoggerIsIgnored(Action capture) { var jsonPacketFactory = new TestableJsonPacketFactory(logger : "keep-me"); var client = new TestableRavenClient(dsnUri, jsonPacketFactory) { Logger = "foobar" }; - client.CaptureMessage("Test"); - + capture.Invoke(client); var lastEvent = client.LastPacket; Assert.That(lastEvent.Logger, Is.EqualTo("keep-me")); } - [Test] - public void CaptureMessage_ClientReleaseIsIgnored() + public void ClientReleaseIsIgnored(Action capture) { var jsonPacketFactory = new TestableJsonPacketFactory(release : "keep-me"); var client = new TestableRavenClient(dsnUri, jsonPacketFactory) { Release = "foobar" }; - client.CaptureMessage("Test"); - + capture.Invoke(client); var lastEvent = client.LastPacket; Assert.That(lastEvent.Release, Is.EqualTo("keep-me")); } - [Test] - public void CaptureMessage_InvokesSend_AndJsonPacketFactoryOnCreate() + public void InvokesSendAndJsonPacketFactoryOnCreate(Func capture) { var project = Guid.NewGuid().ToString(); var jsonPacketFactory = new TestableJsonPacketFactory(project); var client = new TestableRavenClient(dsnUri, jsonPacketFactory); - var result = client.CaptureMessage("Test"); + var result = capture.Invoke(client); Assert.That(result, Is.EqualTo(project)); } - [Test] - public void CaptureMessage_OnlyDefaultTags() + public void OnlyDefaultTags(Action capture) { var client = new TestableRavenClient(dsnUri); client.Tags.Add("key", "value"); client.Tags.Add("foo", "bar"); - // client.Tags = defaultTags; - client.CaptureMessage("Test", ErrorLevel.Info); + capture.Invoke(client); var lastEvent = client.LastPacket; @@ -115,14 +98,11 @@ public void CaptureMessage_OnlyDefaultTags() } - [Test] - public void CaptureMessage_OnlyMessageTags() + public void OnlyMessageTags(Action> capture) { var messageTags = new Dictionary { { "key", "value" }, { "foo", "bar" } }; - var client = new TestableRavenClient(dsnUri); - client.CaptureMessage("Test", ErrorLevel.Info, messageTags); - + capture.Invoke(client, messageTags); var lastEvent = client.LastPacket; Assert.That(lastEvent.Tags["key"], Is.EqualTo("value")); @@ -130,45 +110,42 @@ public void CaptureMessage_OnlyMessageTags() } - [Test] - public void CaptureMessage_ScrubberIsInvoked() + public void ScrubberIsInvoked(Action capture) { - string message = Guid.NewGuid().ToString("n"); - - IRavenClient ravenClient = new RavenClient(TestHelper.DsnUri); - ravenClient.LogScrubber = Substitute.For(); + var message = Guid.NewGuid().ToString("n"); + var ravenClient = new RavenClient(TestHelper.DsnUri) + { + LogScrubber = Substitute.For() + }; ravenClient.LogScrubber.Scrub(Arg.Any()) .Returns(c => { - string json = c.Arg(); + var json = c.Arg(); Assert.That(json, Is.StringContaining(message)); return json; }); - ravenClient.CaptureMessage(message); + capture.Invoke(ravenClient, message); // Verify that we actually received a Scrub() call: ravenClient.LogScrubber.Received().Scrub(Arg.Any()); } - [Test] - public void CaptureMessage_SendsEnvironment() + public void SendsEnvironment(Action capture) { var client = new TestableRavenClient(dsnUri) { Environment = "foobar" }; - client.CaptureMessage("Test"); - + capture.Invoke(client); var lastEvent = client.LastPacket; Assert.That(lastEvent.Environment, Is.EqualTo("foobar")); } - [Test] - public void CaptureMessage_SendsLogger() + public void SendsLogger(Action capture) { var client = new TestableRavenClient(dsnUri) { Logger = "foobar" }; - client.CaptureMessage("Test"); + capture.Invoke(client); var lastEvent = client.LastPacket; @@ -176,11 +153,10 @@ public void CaptureMessage_SendsLogger() } - [Test] - public void CaptureMessage_SendsRelease() + public void SendsRelease(Action capture) { var client = new TestableRavenClient(dsnUri) { Release = "foobar" }; - client.CaptureMessage("Test"); + capture.Invoke(client); var lastEvent = client.LastPacket; @@ -188,15 +164,14 @@ public void CaptureMessage_SendsRelease() } - [Test] - public void CaptureMessage_TagHandling() + public void TagHandling(Action> capture) { var messageTags = new Dictionary { { "key", "another value" } }; var client = new TestableRavenClient(dsnUri); client.Tags.Add("key", "value"); client.Tags.Add("foo", "bar"); - client.CaptureMessage("Test", ErrorLevel.Info, messageTags); + capture.Invoke(client, messageTags); var lastEvent = client.LastPacket; @@ -206,7 +181,7 @@ public void CaptureMessage_TagHandling() #if (!net40) - [Test] + public async Task CaptureMessageAsync_InvokesSend_AndJsonPacketFactoryOnCreate() { const string dsnUri = @@ -221,7 +196,18 @@ public async Task CaptureMessageAsync_InvokesSend_AndJsonPacketFactoryOnCreate() #endif - [Test] + public void ClientEnvironmentIsIgnored(Action capture) + { + var jsonPacketFactory = new TestableJsonPacketFactory(environment : "keep-me"); + var client = new TestableRavenClient(dsnUri, jsonPacketFactory) { Environment = "foobar" }; + capture.Invoke(client); + + var lastEvent = client.LastPacket; + + Assert.That(lastEvent.Environment, Is.EqualTo("keep-me")); + } + + public void Constructor_NullDsn_ThrowsArgumentNullException() { var exception = Assert.Throws(() => new RavenClient((Dsn)null)); @@ -229,7 +215,6 @@ public void Constructor_NullDsn_ThrowsArgumentNullException() } - [Test] public void Constructor_NullDsnString_ThrowsArgumentNullException() { var exception = Assert.Throws(() => new RavenClient((string)null)); @@ -237,7 +222,6 @@ public void Constructor_NullDsnString_ThrowsArgumentNullException() } - [Test] public void Constructor_StringDsn_CurrentDsnEqualsDsn() { IRavenClient ravenClient = new RavenClient(TestHelper.DsnUri); @@ -245,7 +229,6 @@ public void Constructor_StringDsn_CurrentDsnEqualsDsn() } - [Test] public void Logger_IsRoot() { IRavenClient ravenClient = new RavenClient(TestHelper.DsnUri); @@ -253,7 +236,6 @@ public void Logger_IsRoot() } - [Test] public void Release_IsNullByDefault() { IRavenClient ravenClient = new RavenClient(TestHelper.DsnUri); @@ -262,9 +244,6 @@ public void Release_IsNullByDefault() } - private const string dsnUri = - "http://7d6466e66155431495bdb4036ba9a04b:4c1cfeab7ebd4c1cb9e18008173a3630@app.getsentry.com/3739"; - private class TestableJsonPacketFactory : JsonPacketFactory { private readonly string environment; diff --git a/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj b/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj index 4fbb44f3..96809415 100644 --- a/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj +++ b/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj @@ -90,8 +90,9 @@ - - + + + From 308346a6ea48928acd5e3bfd185504d40eafc0cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 20:14:19 +0100 Subject: [PATCH 07/25] Set LastPacket in async as well --- src/tests/SharpRaven.UnitTests/RavenClientTester.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTester.cs b/src/tests/SharpRaven.UnitTests/RavenClientTester.cs index fe72b6a0..375852c1 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTester.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTester.cs @@ -294,6 +294,8 @@ protected override string Send(JsonPacket packet) #if(!net40) protected override Task SendAsync(JsonPacket packet) { + packet = PreparePacket(packet); + LastPacket = packet; return Task.FromResult(packet.Project); } #endif From b910d010f32ebe642f2c8b6d8c2e458c21743d3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 21:09:02 +0100 Subject: [PATCH 08/25] Fixed InvokesSendAndJsonPacketFactoryOnCreate async test --- .../RavenClient.CaptureMessageAsyncTests.cs | 7 +- .../SharpRaven.UnitTests/RavenClientTester.cs | 122 ++++++++---------- 2 files changed, 62 insertions(+), 67 deletions(-) diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs index d565c96f..79027324 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs @@ -28,6 +28,7 @@ #endregion +using System; using System.Threading.Tasks; using NUnit.Framework; @@ -76,7 +77,11 @@ public async Task ClientReleaseIsIgnored() [Test] public async Task InvokesSendAndJsonPacketFactoryOnCreate() { - // this.tester.InvokesSendAndJsonPacketFactoryOnCreate(async client => await client.CaptureMessageAsync("Test")); + var project = Guid.NewGuid().ToString(); + var client = this.tester.GetTestableRavenClient(project); + var result = await client.CaptureMessageAsync("Test"); + + Assert.That(result, Is.EqualTo(project)); } diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTester.cs b/src/tests/SharpRaven.UnitTests/RavenClientTester.cs index 375852c1..e1072cec 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTester.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTester.cs @@ -51,6 +51,18 @@ public class RavenClientTester "http://7d6466e66155431495bdb4036ba9a04b:4c1cfeab7ebd4c1cb9e18008173a3630@app.getsentry.com/3739"; + public void ClientEnvironmentIsIgnored(Action capture) + { + var jsonPacketFactory = new TestableJsonPacketFactory(environment : "keep-me"); + var client = new TestableRavenClient(dsnUri, jsonPacketFactory) { Environment = "foobar" }; + capture.Invoke(client); + + var lastEvent = client.LastPacket; + + Assert.That(lastEvent.Environment, Is.EqualTo("keep-me")); + } + + public void ClientLoggerIsIgnored(Action capture) { var jsonPacketFactory = new TestableJsonPacketFactory(logger : "keep-me"); @@ -73,17 +85,51 @@ public void ClientReleaseIsIgnored(Action capture) } + public void Constructor_NullDsn_ThrowsArgumentNullException() + { + var exception = Assert.Throws(() => new RavenClient((Dsn)null)); + Assert.That(exception.ParamName, Is.EqualTo("dsn")); + } + + + public void Constructor_NullDsnString_ThrowsArgumentNullException() + { + var exception = Assert.Throws(() => new RavenClient((string)null)); + Assert.That(exception.ParamName, Is.EqualTo("dsn")); + } + + + public void Constructor_StringDsn_CurrentDsnEqualsDsn() + { + IRavenClient ravenClient = new RavenClient(TestHelper.DsnUri); + Assert.That(ravenClient.CurrentDsn.ToString(), Is.EqualTo(TestHelper.DsnUri)); + } + + + public IRavenClient GetTestableRavenClient(string project) + { + var jsonPacketFactory = new TestableJsonPacketFactory(project); + return new TestableRavenClient(dsnUri, jsonPacketFactory); + } + + public void InvokesSendAndJsonPacketFactoryOnCreate(Func capture) { var project = Guid.NewGuid().ToString(); - var jsonPacketFactory = new TestableJsonPacketFactory(project); - var client = new TestableRavenClient(dsnUri, jsonPacketFactory); + var client = GetTestableRavenClient(project); var result = capture.Invoke(client); Assert.That(result, Is.EqualTo(project)); } + public void Logger_IsRoot() + { + IRavenClient ravenClient = new RavenClient(TestHelper.DsnUri); + Assert.That(ravenClient.Logger, Is.EqualTo("root")); + } + + public void OnlyDefaultTags(Action capture) { var client = new TestableRavenClient(dsnUri); @@ -110,6 +156,14 @@ public void OnlyMessageTags(Action> ca } + public void Release_IsNullByDefault() + { + IRavenClient ravenClient = new RavenClient(TestHelper.DsnUri); + + Assert.That(ravenClient.Release, Is.Null); + } + + public void ScrubberIsInvoked(Action capture) { var message = Guid.NewGuid().ToString("n"); @@ -180,70 +234,6 @@ public void TagHandling(Action> captur } -#if (!net40) - - public async Task CaptureMessageAsync_InvokesSend_AndJsonPacketFactoryOnCreate() - { - const string dsnUri = - "http://7d6466e66155431495bdb4036ba9a04b:4c1cfeab7ebd4c1cb9e18008173a3630@app.getsentry.com/3739"; - var project = Guid.NewGuid().ToString(); - var jsonPacketFactory = new TestableJsonPacketFactory(project); - var client = new TestableRavenClient(dsnUri, jsonPacketFactory); - var result = await client.CaptureMessageAsync("Test"); - - Assert.That(result, Is.EqualTo(project)); - } -#endif - - - public void ClientEnvironmentIsIgnored(Action capture) - { - var jsonPacketFactory = new TestableJsonPacketFactory(environment : "keep-me"); - var client = new TestableRavenClient(dsnUri, jsonPacketFactory) { Environment = "foobar" }; - capture.Invoke(client); - - var lastEvent = client.LastPacket; - - Assert.That(lastEvent.Environment, Is.EqualTo("keep-me")); - } - - - public void Constructor_NullDsn_ThrowsArgumentNullException() - { - var exception = Assert.Throws(() => new RavenClient((Dsn)null)); - Assert.That(exception.ParamName, Is.EqualTo("dsn")); - } - - - public void Constructor_NullDsnString_ThrowsArgumentNullException() - { - var exception = Assert.Throws(() => new RavenClient((string)null)); - Assert.That(exception.ParamName, Is.EqualTo("dsn")); - } - - - public void Constructor_StringDsn_CurrentDsnEqualsDsn() - { - IRavenClient ravenClient = new RavenClient(TestHelper.DsnUri); - Assert.That(ravenClient.CurrentDsn.ToString(), Is.EqualTo(TestHelper.DsnUri)); - } - - - public void Logger_IsRoot() - { - IRavenClient ravenClient = new RavenClient(TestHelper.DsnUri); - Assert.That(ravenClient.Logger, Is.EqualTo("root")); - } - - - public void Release_IsNullByDefault() - { - IRavenClient ravenClient = new RavenClient(TestHelper.DsnUri); - - Assert.That(ravenClient.Release, Is.Null); - } - - private class TestableJsonPacketFactory : JsonPacketFactory { private readonly string environment; From e443a0d840f3f69595366878ad95fed05b3d3405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 21:13:42 +0100 Subject: [PATCH 09/25] Merge tags in Capture(SentryEvent) Ensure that tags are always merged by doing it in the single code path culminating in `SentryClient.Capture(SentryEvent)`. --- src/app/SharpRaven/RavenClient.Net45.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/app/SharpRaven/RavenClient.Net45.cs b/src/app/SharpRaven/RavenClient.Net45.cs index 30945459..ae73e3dd 100644 --- a/src/app/SharpRaven/RavenClient.Net45.cs +++ b/src/app/SharpRaven/RavenClient.Net45.cs @@ -55,6 +55,7 @@ public partial class RavenClient /// public async Task CaptureAsync(SentryEvent @event) { + @event.Tags = MergeTags(@event.Tags); var packet = this.jsonPacketFactory.Create(CurrentDsn.ProjectID, @event); return await SendAsync(packet); } @@ -85,7 +86,7 @@ public async Task CaptureExceptionAsync(Exception exception, Message = message, Level = level, Extra = extra, - Tags = MergeTags(tags), + Tags = tags, Fingerprint = fingerprint }; @@ -115,7 +116,7 @@ public async Task CaptureMessageAsync(SentryMessage message, { Level = level, Extra = extra, - Tags = MergeTags(tags), + Tags = tags, Fingerprint = fingerprint }; From 4375c10ddf147b2ef4e16d47110c02215eef5ddc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 21:13:57 +0100 Subject: [PATCH 10/25] Added CaptureAsync() tests --- .../RavenClient.CaptureAsyncTests.cs | 144 ++++++++++++++++++ .../SharpRaven.UnitTests.csproj | 1 + 2 files changed, 145 insertions(+) create mode 100644 src/tests/SharpRaven.UnitTests/RavenClient.CaptureAsyncTests.cs diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureAsyncTests.cs new file mode 100644 index 00000000..468439dc --- /dev/null +++ b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureAsyncTests.cs @@ -0,0 +1,144 @@ +#region License + +// Copyright (c) 2014 The Sentry Team and individual contributors. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are permitted +// provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list of +// conditions and the following disclaimer in the documentation and/or other materials +// provided with the distribution. +// +// 3. Neither the name of the Sentry nor the names of its contributors may be used to +// endorse or promote products derived from this software without specific prior written +// permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#endregion + +using System; +using System.Threading.Tasks; + +using NUnit.Framework; + +using SharpRaven.Data; + +namespace SharpRaven.UnitTests +{ + [TestFixture] + public class RavenClientCaptureAsyncTests + { + #region SetUp/Teardown + + [SetUp] + public void SetUp() + { + this.tester = new RavenClientTester(); + } + + #endregion + + [Test] + public void ClientEnvironmentIsIgnored() + { + this.tester.ClientEnvironmentIsIgnored(client => { client.CaptureAsync(new SentryEvent("Test")).GetAwaiter().GetResult(); }); + } + + + [Test] + public async Task ClientLoggerIsIgnored() + { + this.tester.ClientLoggerIsIgnored(async client => await client.CaptureAsync(new SentryEvent("Test"))); + } + + + [Test] + public async Task ClientReleaseIsIgnored() + { + this.tester.ClientReleaseIsIgnored(async client => await client.CaptureAsync(new SentryEvent("Test"))); + } + + + [Test] + public async Task InvokesSendAndJsonPacketFactoryOnCreate() + { + var project = Guid.NewGuid().ToString(); + var client = this.tester.GetTestableRavenClient(project); + var result = await client.CaptureAsync(new SentryEvent("Test")); + + Assert.That(result, Is.EqualTo(project)); + } + + + [Test] + public async Task OnlyDefaultTags() + { + this.tester.OnlyDefaultTags(async client => await client.CaptureAsync(new SentryEvent("Test"))); + } + + + [Test] + public async Task OnlyMessageTags() + { + this.tester.OnlyMessageTags(async (client, tags) => await client.CaptureAsync(new SentryEvent("Test") + { + Level = ErrorLevel.Info, + Tags = tags + })); + } + + + [Test] + public async Task ScrubberIsInvoked() + { + this.tester.ScrubberIsInvoked(async (client, message) => await client.CaptureAsync(new SentryEvent(message))); + } + + + [Test] + public async Task SendsEnvironment() + { + this.tester.SendsEnvironment(async client => await client.CaptureAsync(new SentryEvent("Test"))); + } + + + [Test] + public async Task SendsLogger() + { + this.tester.SendsLogger(async client => await client.CaptureAsync(new SentryEvent("Test"))); + } + + + [Test] + public async Task SendsRelease() + { + this.tester.SendsRelease(async client => await client.CaptureAsync(new SentryEvent("Test"))); + } + + + [Test] + public async Task TagHandling() + { + this.tester.TagHandling(async (client, tags) => await client.CaptureAsync(new SentryEvent("Test") + { + Level = ErrorLevel.Info, + Tags = tags + })); + } + + + private RavenClientTester tester; + } +} \ No newline at end of file diff --git a/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj b/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj index 96809415..ef4d5737 100644 --- a/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj +++ b/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj @@ -90,6 +90,7 @@ + From 86b9adae57fd19513caa78ed5fe3fc51cc04d10d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 21:17:14 +0100 Subject: [PATCH 11/25] Added Capture tests --- .../RavenClient.CaptureTests.cs | 144 ++++++++++++++++++ .../SharpRaven.UnitTests.csproj | 1 + 2 files changed, 145 insertions(+) create mode 100644 src/tests/SharpRaven.UnitTests/RavenClient.CaptureTests.cs diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureTests.cs b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureTests.cs new file mode 100644 index 00000000..c7adacdc --- /dev/null +++ b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureTests.cs @@ -0,0 +1,144 @@ +#region License + +// Copyright (c) 2014 The Sentry Team and individual contributors. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are permitted +// provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list of +// conditions and the following disclaimer in the documentation and/or other materials +// provided with the distribution. +// +// 3. Neither the name of the Sentry nor the names of its contributors may be used to +// endorse or promote products derived from this software without specific prior written +// permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#endregion + +using System; + +using NUnit.Framework; + +using SharpRaven.Data; + +namespace SharpRaven.UnitTests +{ + [TestFixture] + public class RavenClientCaptureTests + { + #region SetUp/Teardown + + [SetUp] + public void SetUp() + { + this.tester = new RavenClientTester(); + } + + #endregion + + [Test] + public void ClientEnvironmentIsIgnored() + { + this.tester.ClientEnvironmentIsIgnored(client => client.Capture(new SentryEvent("Test"))); + ; + } + + + [Test] + public void ClientLoggerIsIgnored() + { + this.tester.ClientLoggerIsIgnored(client => client.Capture(new SentryEvent("Test"))); + } + + + [Test] + public void ClientReleaseIsIgnored() + { + this.tester.ClientReleaseIsIgnored(client => client.Capture(new SentryEvent("Test"))); + } + + + [Test] + public void InvokesSendAndJsonPacketFactoryOnCreate() + { + var project = Guid.NewGuid().ToString(); + var client = this.tester.GetTestableRavenClient(project); + var result = client.Capture(new SentryEvent("Test")); + + Assert.That(result, Is.EqualTo(project)); + } + + + [Test] + public void OnlyDefaultTags() + { + this.tester.OnlyDefaultTags(client => client.Capture(new SentryEvent("Test"))); + } + + + [Test] + public void OnlyMessageTags() + { + this.tester.OnlyMessageTags((client, tags) => client.Capture(new SentryEvent("Test") + { + Level = ErrorLevel.Info, + Tags = tags + })); + } + + + [Test] + public void ScrubberIsInvoked() + { + this.tester.ScrubberIsInvoked((client, message) => client.Capture(new SentryEvent(message))); + } + + + [Test] + public void SendsEnvironment() + { + this.tester.SendsEnvironment(client => client.Capture(new SentryEvent("Test"))); + } + + + [Test] + public void SendsLogger() + { + this.tester.SendsLogger(client => client.Capture(new SentryEvent("Test"))); + } + + + [Test] + public void SendsRelease() + { + this.tester.SendsRelease(client => client.Capture(new SentryEvent("Test"))); + } + + + [Test] + public void TagHandling() + { + this.tester.TagHandling((client, tags) => client.Capture(new SentryEvent("Test") + { + Level = ErrorLevel.Info, + Tags = tags + })); + } + + + private RavenClientTester tester; + } +} \ No newline at end of file diff --git a/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj b/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj index ef4d5737..8754c15e 100644 --- a/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj +++ b/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj @@ -90,6 +90,7 @@ + From f1d150ee631054b075b407f0f8e5a5b012fe428c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 21:17:38 +0100 Subject: [PATCH 12/25] Tidied up async tests --- .../RavenClient.CaptureAsyncTests.cs | 20 ++++++++-------- .../RavenClient.CaptureMessageAsyncTests.cs | 23 ++++++++----------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureAsyncTests.cs index 468439dc..58e703d6 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureAsyncTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureAsyncTests.cs @@ -53,19 +53,19 @@ public void SetUp() [Test] public void ClientEnvironmentIsIgnored() { - this.tester.ClientEnvironmentIsIgnored(client => { client.CaptureAsync(new SentryEvent("Test")).GetAwaiter().GetResult(); }); + this.tester.ClientEnvironmentIsIgnored(client => client.CaptureAsync(new SentryEvent("Test"))); } [Test] - public async Task ClientLoggerIsIgnored() + public void ClientLoggerIsIgnored() { this.tester.ClientLoggerIsIgnored(async client => await client.CaptureAsync(new SentryEvent("Test"))); } [Test] - public async Task ClientReleaseIsIgnored() + public void ClientReleaseIsIgnored() { this.tester.ClientReleaseIsIgnored(async client => await client.CaptureAsync(new SentryEvent("Test"))); } @@ -83,14 +83,14 @@ public async Task InvokesSendAndJsonPacketFactoryOnCreate() [Test] - public async Task OnlyDefaultTags() + public void OnlyDefaultTags() { this.tester.OnlyDefaultTags(async client => await client.CaptureAsync(new SentryEvent("Test"))); } [Test] - public async Task OnlyMessageTags() + public void OnlyMessageTags() { this.tester.OnlyMessageTags(async (client, tags) => await client.CaptureAsync(new SentryEvent("Test") { @@ -101,35 +101,35 @@ public async Task OnlyMessageTags() [Test] - public async Task ScrubberIsInvoked() + public void ScrubberIsInvoked() { this.tester.ScrubberIsInvoked(async (client, message) => await client.CaptureAsync(new SentryEvent(message))); } [Test] - public async Task SendsEnvironment() + public void SendsEnvironment() { this.tester.SendsEnvironment(async client => await client.CaptureAsync(new SentryEvent("Test"))); } [Test] - public async Task SendsLogger() + public void SendsLogger() { this.tester.SendsLogger(async client => await client.CaptureAsync(new SentryEvent("Test"))); } [Test] - public async Task SendsRelease() + public void SendsRelease() { this.tester.SendsRelease(async client => await client.CaptureAsync(new SentryEvent("Test"))); } [Test] - public async Task TagHandling() + public void TagHandling() { this.tester.TagHandling(async (client, tags) => await client.CaptureAsync(new SentryEvent("Test") { diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs index 79027324..b199e3da 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs @@ -53,22 +53,19 @@ public void SetUp() [Test] public void ClientEnvironmentIsIgnored() { - this.tester.ClientEnvironmentIsIgnored(client => - { - client.CaptureMessageAsync("Test").GetAwaiter().GetResult(); - }); + this.tester.ClientEnvironmentIsIgnored(async client => await client.CaptureMessageAsync("Test")); } [Test] - public async Task ClientLoggerIsIgnored() + public void ClientLoggerIsIgnored() { this.tester.ClientLoggerIsIgnored(async client => await client.CaptureMessageAsync("Test")); } [Test] - public async Task ClientReleaseIsIgnored() + public void ClientReleaseIsIgnored() { this.tester.ClientReleaseIsIgnored(async client => await client.CaptureMessageAsync("Test")); } @@ -86,49 +83,49 @@ public async Task InvokesSendAndJsonPacketFactoryOnCreate() [Test] - public async Task OnlyDefaultTags() + public void OnlyDefaultTags() { this.tester.OnlyDefaultTags(async client => await client.CaptureMessageAsync("Test")); } [Test] - public async Task OnlyMessageTags() + public void OnlyMessageTags() { this.tester.OnlyMessageTags(async (client, tags) => await client.CaptureMessageAsync("Test", ErrorLevel.Info, tags)); } [Test] - public async Task ScrubberIsInvoked() + public void ScrubberIsInvoked() { this.tester.ScrubberIsInvoked(async (client, message) => await client.CaptureMessageAsync(message)); } [Test] - public async Task SendsEnvironment() + public void SendsEnvironment() { this.tester.SendsEnvironment(async client => await client.CaptureMessageAsync("Test")); } [Test] - public async Task SendsLogger() + public void SendsLogger() { this.tester.SendsLogger(async client => await client.CaptureMessageAsync("Test")); } [Test] - public async Task SendsRelease() + public void SendsRelease() { this.tester.SendsRelease(async client => await client.CaptureMessageAsync("Test")); } [Test] - public async Task TagHandling() + public void TagHandling() { this.tester.TagHandling(async (client, tags) => await client.CaptureMessageAsync("Test", ErrorLevel.Info, tags)); } From 92f188feba3ec600e7b6acd4f99b38166149f6a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 21:21:18 +0100 Subject: [PATCH 13/25] Added CaptureException tests Added both `async` and synchronous `CaptureException()` tests. --- .../RavenClient.CaptureExceptionAsyncTests.cs | 137 ++++++++++++++++++ .../RavenClient.CaptureExceptionTests .cs | 131 +++++++++++++++++ .../SharpRaven.UnitTests.csproj | 2 + 3 files changed, 270 insertions(+) create mode 100644 src/tests/SharpRaven.UnitTests/RavenClient.CaptureExceptionAsyncTests.cs create mode 100644 src/tests/SharpRaven.UnitTests/RavenClient.CaptureExceptionTests .cs diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureExceptionAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureExceptionAsyncTests.cs new file mode 100644 index 00000000..7d3dd62e --- /dev/null +++ b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureExceptionAsyncTests.cs @@ -0,0 +1,137 @@ +#region License + +// Copyright (c) 2014 The Sentry Team and individual contributors. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are permitted +// provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list of +// conditions and the following disclaimer in the documentation and/or other materials +// provided with the distribution. +// +// 3. Neither the name of the Sentry nor the names of its contributors may be used to +// endorse or promote products derived from this software without specific prior written +// permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#endregion + +using System; +using System.Threading.Tasks; + +using NUnit.Framework; + +using SharpRaven.Data; + +namespace SharpRaven.UnitTests +{ + [TestFixture] + public class RavenClientCaptureExceptionAsyncTests + { + #region SetUp/Teardown + + [SetUp] + public void SetUp() + { + this.tester = new RavenClientTester(); + } + + #endregion + + [Test] + public void ClientEnvironmentIsIgnored() + { + this.tester.ClientEnvironmentIsIgnored(async client => await client.CaptureExceptionAsync(new Exception("Test"))); + } + + + [Test] + public void ClientLoggerIsIgnored() + { + this.tester.ClientLoggerIsIgnored(async client => await client.CaptureExceptionAsync(new Exception("Test"))); + } + + + [Test] + public void ClientReleaseIsIgnored() + { + this.tester.ClientReleaseIsIgnored(async client => await client.CaptureExceptionAsync(new Exception("Test"))); + } + + + [Test] + public async Task InvokesSendAndJsonPacketFactoryOnCreate() + { + var project = Guid.NewGuid().ToString(); + var client = this.tester.GetTestableRavenClient(project); + var result = await client.CaptureExceptionAsync(new Exception("Test")); + + Assert.That(result, Is.EqualTo(project)); + } + + + [Test] + public void OnlyDefaultTags() + { + this.tester.OnlyDefaultTags(async client => await client.CaptureExceptionAsync(new Exception("Test"))); + } + + + [Test] + public void OnlyMessageTags() + { + this.tester.OnlyMessageTags( + async (client, tags) => await client.CaptureExceptionAsync(new Exception("Test"), level : ErrorLevel.Info, tags : tags)); + } + + + [Test] + public void ScrubberIsInvoked() + { + this.tester.ScrubberIsInvoked(async (client, message) => await client.CaptureExceptionAsync(new Exception(message))); + } + + + [Test] + public void SendsEnvironment() + { + this.tester.SendsEnvironment(async client => await client.CaptureExceptionAsync(new Exception("Test"))); + } + + + [Test] + public void SendsLogger() + { + this.tester.SendsLogger(async client => await client.CaptureExceptionAsync(new Exception("Test"))); + } + + + [Test] + public void SendsRelease() + { + this.tester.SendsRelease(async client => await client.CaptureExceptionAsync(new Exception("Test"))); + } + + + [Test] + public void TagHandling() + { + this.tester.TagHandling(async (client, tags) => await client.CaptureExceptionAsync(new Exception("Test"), level: ErrorLevel.Info, tags: tags)); + } + + + private RavenClientTester tester; + } +} \ No newline at end of file diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureExceptionTests .cs b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureExceptionTests .cs new file mode 100644 index 00000000..df32a56e --- /dev/null +++ b/src/tests/SharpRaven.UnitTests/RavenClient.CaptureExceptionTests .cs @@ -0,0 +1,131 @@ +#region License + +// Copyright (c) 2014 The Sentry Team and individual contributors. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are permitted +// provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list of +// conditions and the following disclaimer in the documentation and/or other materials +// provided with the distribution. +// +// 3. Neither the name of the Sentry nor the names of its contributors may be used to +// endorse or promote products derived from this software without specific prior written +// permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#endregion + +using System; + +using NUnit.Framework; + +using SharpRaven.Data; + +namespace SharpRaven.UnitTests +{ + [TestFixture] + public class RavenClientCaptureExceptionTests + { + #region SetUp/Teardown + + [SetUp] + public void SetUp() + { + this.tester = new RavenClientTester(); + } + + #endregion + + [Test] + public void ClientEnvironmentIsIgnored() + { + this.tester.ClientEnvironmentIsIgnored(client => client.CaptureException(new Exception("Test"))); + } + + + [Test] + public void ClientLoggerIsIgnored() + { + this.tester.ClientLoggerIsIgnored(client => client.CaptureException(new Exception("Test"))); + } + + + [Test] + public void ClientReleaseIsIgnored() + { + this.tester.ClientReleaseIsIgnored(client => client.CaptureException(new Exception("Test"))); + } + + + [Test] + public void InvokesSendAndJsonPacketFactoryOnCreate() + { + this.tester.InvokesSendAndJsonPacketFactoryOnCreate(client => client.CaptureException(new Exception("Test"))); + } + + + [Test] + public void OnlyDefaultTags() + { + this.tester.OnlyDefaultTags(client => client.CaptureException(new Exception("Test"))); + } + + + [Test] + public void OnlyMessageTags() + { + this.tester.OnlyMessageTags((client, tags) => client.CaptureException(new Exception("Test"), level: ErrorLevel.Info, tags: tags)); + } + + + [Test] + public void ScrubberIsInvoked() + { + this.tester.ScrubberIsInvoked((client, message) => client.CaptureException(new Exception(message))); + } + + + [Test] + public void SendsEnvironment() + { + this.tester.SendsEnvironment(client => client.CaptureException(new Exception("Test"))); + } + + + [Test] + public void SendsLogger() + { + this.tester.SendsLogger(client => client.CaptureException(new Exception("Test"))); + } + + + [Test] + public void SendsRelease() + { + this.tester.SendsRelease(client => client.CaptureException(new Exception("Test"))); + } + + + [Test] + public void TagHandling() + { + this.tester.TagHandling((client, tags) => client.CaptureException(new Exception("Test"), level: ErrorLevel.Info, tags: tags)); + } + + + private RavenClientTester tester; + } +} \ No newline at end of file diff --git a/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj b/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj index 8754c15e..b697c9e9 100644 --- a/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj +++ b/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj @@ -90,6 +90,8 @@ + + From 7bfb8037efcefa39600e987deefb2dc64c05a80d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 21:21:56 +0100 Subject: [PATCH 14/25] Moved RavenClient tests into a RavenClientTests folder --- .../CaptureAsyncTests.cs} | 0 .../CaptureExceptionAsyncTests.cs} | 0 .../CaptureExceptionTests .cs} | 0 .../CaptureMessageAsyncTests.cs} | 0 .../CaptureMessageTests.cs} | 0 .../CaptureTests.cs} | 0 .../{ => RavenClientTests}/RavenClientTester.cs | 0 .../SharpRaven.UnitTests.csproj | 14 +++++++------- 8 files changed, 7 insertions(+), 7 deletions(-) rename src/tests/SharpRaven.UnitTests/{RavenClient.CaptureAsyncTests.cs => RavenClientTests/CaptureAsyncTests.cs} (100%) rename src/tests/SharpRaven.UnitTests/{RavenClient.CaptureExceptionAsyncTests.cs => RavenClientTests/CaptureExceptionAsyncTests.cs} (100%) rename src/tests/SharpRaven.UnitTests/{RavenClient.CaptureExceptionTests .cs => RavenClientTests/CaptureExceptionTests .cs} (100%) rename src/tests/SharpRaven.UnitTests/{RavenClient.CaptureMessageAsyncTests.cs => RavenClientTests/CaptureMessageAsyncTests.cs} (100%) rename src/tests/SharpRaven.UnitTests/{RavenClient.CaptureMessageTests.cs => RavenClientTests/CaptureMessageTests.cs} (100%) rename src/tests/SharpRaven.UnitTests/{RavenClient.CaptureTests.cs => RavenClientTests/CaptureTests.cs} (100%) rename src/tests/SharpRaven.UnitTests/{ => RavenClientTests}/RavenClientTester.cs (100%) diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureAsyncTests.cs similarity index 100% rename from src/tests/SharpRaven.UnitTests/RavenClient.CaptureAsyncTests.cs rename to src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureAsyncTests.cs diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureExceptionAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionAsyncTests.cs similarity index 100% rename from src/tests/SharpRaven.UnitTests/RavenClient.CaptureExceptionAsyncTests.cs rename to src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionAsyncTests.cs diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureExceptionTests .cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionTests .cs similarity index 100% rename from src/tests/SharpRaven.UnitTests/RavenClient.CaptureExceptionTests .cs rename to src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionTests .cs diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageAsyncTests.cs similarity index 100% rename from src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageAsyncTests.cs rename to src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageAsyncTests.cs diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageTests.cs similarity index 100% rename from src/tests/SharpRaven.UnitTests/RavenClient.CaptureMessageTests.cs rename to src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageTests.cs diff --git a/src/tests/SharpRaven.UnitTests/RavenClient.CaptureTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureTests.cs similarity index 100% rename from src/tests/SharpRaven.UnitTests/RavenClient.CaptureTests.cs rename to src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureTests.cs diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTester.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/RavenClientTester.cs similarity index 100% rename from src/tests/SharpRaven.UnitTests/RavenClientTester.cs rename to src/tests/SharpRaven.UnitTests/RavenClientTests/RavenClientTester.cs diff --git a/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj b/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj index b697c9e9..5f4327ae 100644 --- a/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj +++ b/src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj @@ -90,13 +90,13 @@ - - - - - - - + + + + + + + From d3c4329dba84cb7cf9c9b9173345e55565a73d09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 21:28:33 +0100 Subject: [PATCH 15/25] Adjusted namespace and removed the RavenClient prefix of the RavenClient test classes --- .../RavenClientTests/CaptureAsyncTests.cs | 4 ++-- .../RavenClientTests/CaptureExceptionAsyncTests.cs | 4 ++-- .../RavenClientTests/CaptureExceptionTests .cs | 4 ++-- .../RavenClientTests/CaptureMessageAsyncTests.cs | 4 ++-- .../RavenClientTests/CaptureMessageTests.cs | 4 ++-- .../SharpRaven.UnitTests/RavenClientTests/CaptureTests.cs | 4 ++-- .../RavenClientTests/RavenClientTester.cs | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureAsyncTests.cs index 58e703d6..5cdfc01c 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureAsyncTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureAsyncTests.cs @@ -35,10 +35,10 @@ using SharpRaven.Data; -namespace SharpRaven.UnitTests +namespace SharpRaven.UnitTests.RavenClientTests { [TestFixture] - public class RavenClientCaptureAsyncTests + public class CaptureAsyncTests { #region SetUp/Teardown diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionAsyncTests.cs index 7d3dd62e..b494f851 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionAsyncTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionAsyncTests.cs @@ -35,10 +35,10 @@ using SharpRaven.Data; -namespace SharpRaven.UnitTests +namespace SharpRaven.UnitTests.RavenClientTests { [TestFixture] - public class RavenClientCaptureExceptionAsyncTests + public class CaptureExceptionAsyncTests { #region SetUp/Teardown diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionTests .cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionTests .cs index df32a56e..9b4d62fa 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionTests .cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionTests .cs @@ -34,10 +34,10 @@ using SharpRaven.Data; -namespace SharpRaven.UnitTests +namespace SharpRaven.UnitTests.RavenClientTests { [TestFixture] - public class RavenClientCaptureExceptionTests + public class CaptureExceptionTests { #region SetUp/Teardown diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageAsyncTests.cs index b199e3da..61d9cf72 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageAsyncTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageAsyncTests.cs @@ -35,10 +35,10 @@ using SharpRaven.Data; -namespace SharpRaven.UnitTests +namespace SharpRaven.UnitTests.RavenClientTests { [TestFixture] - public class RavenClientCaptureMessageAsyncTests + public class CaptureMessageAsyncTests { #region SetUp/Teardown diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageTests.cs index 5403e09a..6f870086 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageTests.cs @@ -32,10 +32,10 @@ using SharpRaven.Data; -namespace SharpRaven.UnitTests +namespace SharpRaven.UnitTests.RavenClientTests { [TestFixture] - public class RavenClientCaptureMessageTests + public class CaptureMessageTests { #region SetUp/Teardown diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureTests.cs index c7adacdc..aaae9317 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureTests.cs @@ -34,10 +34,10 @@ using SharpRaven.Data; -namespace SharpRaven.UnitTests +namespace SharpRaven.UnitTests.RavenClientTests { [TestFixture] - public class RavenClientCaptureTests + public class CaptureTests { #region SetUp/Teardown diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests/RavenClientTester.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/RavenClientTester.cs index e1072cec..0fb949c6 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests/RavenClientTester.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests/RavenClientTester.cs @@ -43,7 +43,7 @@ #endif -namespace SharpRaven.UnitTests +namespace SharpRaven.UnitTests.RavenClientTests { public class RavenClientTester { From 1ccd9eb30cfc5af9ab248cc2aaa39045dea22004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 21:31:31 +0100 Subject: [PATCH 16/25] Wrap async in !net40 regions --- .../RavenClientTests/CaptureAsyncTests.cs | 6 +++++- .../RavenClientTests/CaptureExceptionAsyncTests.cs | 9 +++++++-- .../RavenClientTests/CaptureMessageAsyncTests.cs | 6 +++++- .../RavenClientTests/CaptureTests.cs | 1 - 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureAsyncTests.cs index 5cdfc01c..715d8ff6 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureAsyncTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureAsyncTests.cs @@ -28,6 +28,8 @@ #endregion +#if (!net40) + using System; using System.Threading.Tasks; @@ -141,4 +143,6 @@ public void TagHandling() private RavenClientTester tester; } -} \ No newline at end of file +} + +#endif \ No newline at end of file diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionAsyncTests.cs index b494f851..be8412b7 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionAsyncTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureExceptionAsyncTests.cs @@ -28,6 +28,8 @@ #endregion +#if (!net40) + using System; using System.Threading.Tasks; @@ -128,10 +130,13 @@ public void SendsRelease() [Test] public void TagHandling() { - this.tester.TagHandling(async (client, tags) => await client.CaptureExceptionAsync(new Exception("Test"), level: ErrorLevel.Info, tags: tags)); + this.tester.TagHandling( + async (client, tags) => await client.CaptureExceptionAsync(new Exception("Test"), level : ErrorLevel.Info, tags : tags)); } private RavenClientTester tester; } -} \ No newline at end of file +} + +#endif \ No newline at end of file diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageAsyncTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageAsyncTests.cs index 61d9cf72..c3a8cc87 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageAsyncTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureMessageAsyncTests.cs @@ -28,6 +28,8 @@ #endregion +#if (!net40) + using System; using System.Threading.Tasks; @@ -133,4 +135,6 @@ public void TagHandling() private RavenClientTester tester; } -} \ No newline at end of file +} + +#endif \ No newline at end of file diff --git a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureTests.cs b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureTests.cs index aaae9317..21428d41 100644 --- a/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureTests.cs +++ b/src/tests/SharpRaven.UnitTests/RavenClientTests/CaptureTests.cs @@ -53,7 +53,6 @@ public void SetUp() public void ClientEnvironmentIsIgnored() { this.tester.ClientEnvironmentIsIgnored(client => client.Capture(new SentryEvent("Test"))); - ; } From 469383a7bc8f61568d751cdc32ea5530863237d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 21:35:07 +0100 Subject: [PATCH 17/25] Set the next version to 2.1 --- GitVersionConfig.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GitVersionConfig.yaml b/GitVersionConfig.yaml index 3156c744..95673f6f 100644 --- a/GitVersionConfig.yaml +++ b/GitVersionConfig.yaml @@ -1,4 +1,4 @@ -next-version: 2.0 +next-version: 2.1 branches: feature[/-]: mode: ContinuousDeployment From df0de5c1d19bb9080dbf7bfdebbf51c2ee06b2e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Thu, 17 Mar 2016 21:36:07 +0100 Subject: [PATCH 18/25] Upgraded GitVersionTask from v3.3.0 to v3.4.1 --- src/app/SharpRaven.Nancy/SharpRaven.Nancy.csproj | 6 +++--- src/app/SharpRaven.Nancy/packages.config | 2 +- src/app/SharpRaven/SharpRaven.csproj | 6 +++--- src/app/SharpRaven/packages.config | 2 +- .../SharpRaven.Nancy.UnitTests.csproj | 6 +++--- src/tests/SharpRaven.Nancy.UnitTests/packages.config | 2 +- src/tests/SharpRaven.UnitTests/SharpRaven.UnitTests.csproj | 6 +++--- src/tests/SharpRaven.UnitTests/packages.config | 2 +- src/tests/SharpRaven.WebTest/SharpRaven.WebTest.csproj | 6 +++--- src/tests/SharpRaven.WebTest/packages.config | 2 +- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/app/SharpRaven.Nancy/SharpRaven.Nancy.csproj b/src/app/SharpRaven.Nancy/SharpRaven.Nancy.csproj index 069242e2..7165b526 100644 --- a/src/app/SharpRaven.Nancy/SharpRaven.Nancy.csproj +++ b/src/app/SharpRaven.Nancy/SharpRaven.Nancy.csproj @@ -13,7 +13,7 @@ 512 ..\ - 05c78a3e + ec5b9b6c true @@ -102,11 +102,11 @@ - + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/src/app/SharpRaven.Nancy/packages.config b/src/app/SharpRaven.Nancy/packages.config index adf4268e..9019375f 100644 --- a/src/app/SharpRaven.Nancy/packages.config +++ b/src/app/SharpRaven.Nancy/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/src/app/SharpRaven/SharpRaven.csproj b/src/app/SharpRaven/SharpRaven.csproj index 9c98c455..92f1dbd2 100644 --- a/src/app/SharpRaven/SharpRaven.csproj +++ b/src/app/SharpRaven/SharpRaven.csproj @@ -13,7 +13,7 @@ 512 ..\ - 51b56455 + 7a5c1353 true @@ -117,11 +117,11 @@ - + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/src/app/SharpRaven/packages.config b/src/app/SharpRaven/packages.config index ffddf1af..e7c24c6a 100644 --- a/src/app/SharpRaven/packages.config +++ b/src/app/SharpRaven/packages.config @@ -1,5 +1,5 @@  - + diff --git a/src/tests/SharpRaven.Nancy.UnitTests/SharpRaven.Nancy.UnitTests.csproj b/src/tests/SharpRaven.Nancy.UnitTests/SharpRaven.Nancy.UnitTests.csproj index 747be04a..b5b61c82 100644 --- a/src/tests/SharpRaven.Nancy.UnitTests/SharpRaven.Nancy.UnitTests.csproj +++ b/src/tests/SharpRaven.Nancy.UnitTests/SharpRaven.Nancy.UnitTests.csproj @@ -13,7 +13,7 @@ 512 true - c36e810a + a120c3a0 bin\Release\net40\ @@ -122,12 +122,12 @@ - + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - +