10000 Merge branch 'master' into PR/PyArgConverter · pythonnet/pythonnet@b5b0c69 · GitHub
[go: up one dir, main page]

Skip to content

Commit b5b0c69

Browse files
authored
Merge branch 'master' into PR/PyArgConverter
2 parents 54f65d4 + 2bc514f commit b5b0c69

File tree

4 files changed

+24
-68
lines changed

4 files changed

+24
-68
lines changed

src/embed_tests/Python.EmbeddingTest.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@
8989
<Compile Include="TestDomainReload.cs" />
9090
<Compile Include="TestExample.cs" />
9191
<Compile Include="TestFinalizer.cs" />
92-
<Compile Include="TestInstanceWrapping.cs" />
9392
<Compile Include="TestPyAnsiString.cs" />
9493
<Compile Include="TestPyFloat.cs" />
9594
<Compile Include="TestPyInt.cs" />

src/embed_tests/TestFinalizer.cs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public void CollectBasicObject()
4545
called = true;
4646
};
4747

48-
Assert.IsFalse(called);
48+
Assert.IsFalse(called, "The event handler was called before it was installed");
4949
Finalizer.Instance.CollectOnce += handler;
5050

5151
WeakReference shortWeak;
@@ -55,13 +55,25 @@ public void CollectBasicObject()
5555
}
5656
FullGCCollect();
5757
// The object has been resurrected
58-
Assert.IsFalse(shortWeak.IsAlive);
59-
Assert.IsTrue(longWeak.IsAlive);
58+
Warn.If(
59+
shortWeak.IsAlive,
60+
"The referenced object is alive although it should have been collected",
61+
shortWeak
62+
);
63+
Assert.IsTrue(
64+
longWeak.IsAlive,
65+
"The reference object is not alive although it should still be",
66+
longWeak
67+
);
6068

6169
{
6270
var garbage = Finalizer.Instance.GetCollectedObjects();
63-
Assert.NotZero(garbage.Count);
64-
Assert.IsTrue(garbage.Any(T => ReferenceEquals(T.Target, longWeak.Target)));
71+
Assert.NotZero(garbage.Count, "There should still be garbage around");
72+
Warn.Unless(
73+
garbage.Any(T => ReferenceEquals(T.Target, longWeak.Target)),
74+
$"The {nameof(longWeak)} reference doesn't show up in the garbage list",
75+
garbage
76+
);
6577
}
6678
try
6779
{
@@ -71,7 +83,7 @@ public void CollectBasicObject()
7183
{
7284
Finalizer.Instance.CollectOnce -= handler;
7385
}
74-
Assert.IsTrue(called);
86+
Assert.IsTrue(called, "The event handler was not called during finalization");
7587
Assert.GreaterOrEqual(objectCount, 1);
7688
}
7789

src/embed_tests/TestInstanceWrapping.cs

Lines changed: 0 additions & 58 deletions
This file was deleted.

src/runtime/converter.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -382,9 +382,12 @@ internal static bool ToManagedValue(IntPtr value, Type obType,
382382
return ToArray(value, typeof(object[]), out result, setError);
383383
}
384384

385-
Runtime.XIncref(value); // PyObject() assumes ownership
386-
result = new PyObject(value);
387-
return true;
385+
if (setError)
386+
{
387+
Exceptions.SetError(Exceptions.TypeError, "value cannot be converted to Object");
388+
}
389+
390+
return false;
388391
}
389392

390393
// Conversion to 'Type' is done using the same mappings as above for objects.

0 commit comments

Comments
 (0)
0