From 7458f28ca9a2e31378ce1f92f6c9f1fe8a53dbeb Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sun, 21 Jan 2018 23:39:53 +0100 Subject: [PATCH 1/2] Fix intermittently failing test. Fixed in https://ci.appveyor.com/project/AvaloniaUI/Avalonia/build/0.1.4466: this should prevent that by keeping both of the data objects alive. --- .../Data/ExpressionObserverTests_Observable.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Observable.cs b/tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Observable.cs index 62d5c28f49..aa78c100c1 100644 --- a/tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Observable.cs +++ b/tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Observable.cs @@ -103,20 +103,22 @@ namespace Avalonia.Markup.UnitTests.Data { using (var sync = UnitTestSynchronizationContext.Begin()) { - var data = new Class1(); - var target = new ExpressionObserver(data, "Next^.Foo", true); + var data1 = new Class1(); + var data2 = new Class2("foo"); + var target = new ExpressionObserver(data1, "Next^.Foo", true); var result = new List(); var sub = target.Subscribe(x => result.Add(x)); - data.Next.OnNext(new Class2("foo")); + data1.Next.OnNext(data2); sync.ExecutePostedCallbacks(); Assert.Equal(new[] { new BindingNotification("foo") }, result); sub.Dispose(); - Assert.Equal(0, data.PropertyChangedSubscriptionCount); + Assert.Equal(0, data1.PropertyChangedSubscriptionCount); - GC.KeepAlive(data); + GC.KeepAlive(data1); + GC.KeepAlive(data2); } } From 51a47b3a946d693d54abbec0e9dd3b184aba1969 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 22 Jan 2018 00:07:19 +0100 Subject: [PATCH 2/2] Instance can be null here. Was causing intermittently failing test: https://ci.appveyor.com/project/AvaloniaUI/Avalonia/build/0.1.4468 --- .../Data/Plugins/AvaloniaPropertyAccessorPlugin.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Markup/Avalonia.Markup/Data/Plugins/AvaloniaPropertyAccessorPlugin.cs b/src/Markup/Avalonia.Markup/Data/Plugins/AvaloniaPropertyAccessorPlugin.cs index 3f6f15ed5b..90eabc69fb 100644 --- a/src/Markup/Avalonia.Markup/Data/Plugins/AvaloniaPropertyAccessorPlugin.cs +++ b/src/Markup/Avalonia.Markup/Data/Plugins/AvaloniaPropertyAccessorPlugin.cs @@ -104,7 +104,7 @@ namespace Avalonia.Markup.Data.Plugins protected override void SubscribeCore(IObserver observer) { - _subscription = Instance.GetWeakObservable(_property).Subscribe(observer); + _subscription = Instance?.GetWeakObservable(_property).Subscribe(observer); } } }