From 3ebf69717167eefcb204c8da922dc87e3e0a7728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lozier?= Date: Thu, 12 Nov 2026 08:28:45 -0500 Subject: [PATCH] Split IronPythonTests in two --- IronPython.slnx | 1 + .../IronPython/Properties/AssemblyInfo.cs | 1 + tests/IronPython.Tests/EngineTest.cs | 138 --------------- .../IronPython.Tests/IronPython.Tests.csproj | 22 +-- .../AssemblyInfo.cs | 0 .../AsyncInteropHelpers.cs | 0 .../AttrInjectorTest.cs | 0 .../BindTest.cs | 0 .../BinderTest.cs | 0 .../ClrType.cs | 0 .../Cmplx.cs | 0 .../Conversions.cs | 0 .../DeTest.cs | 0 .../DelegateTest.cs | 0 .../DynamicRegressions.cs | 0 tests/IronPythonTest/EngineTestTypes.cs | 165 ++++++++++++++++++ .../Enums.cs | 0 .../Events.cs | 0 .../ExceptionConverter.cs | 0 .../Exceptions.cs | 0 .../Explicit.cs | 0 .../ExtensionMethodTest.cs | 0 .../GenMeth.cs | 0 .../Indexable.cs | 0 .../InheritTest.cs | 0 .../IntegerTest.cs | 0 .../IronMath.cs | 0 tests/IronPythonTest/IronPythonTest.csproj | 36 ++++ .../LoadTest.cs | 0 .../MemberMappingTests.cs | 0 .../MemberOverloadTest.cs | 0 .../MethodParametersStubs.cs | 0 .../NestedClass.cs | 0 .../NullableTest.cs | 0 .../OperatorTest.cs | 0 .../ProtocolTest.cs | 2 - .../StaticTest.cs | 0 .../TestBuiltinModule.cs | 0 .../TypeDescriptor.cs | 0 tests/suite/test_exceptions.py | 2 +- 40 files changed, 205 insertions(+), 162 deletions(-) rename tests/{IronPython.Tests => IronPythonTest}/AssemblyInfo.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/AsyncInteropHelpers.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/AttrInjectorTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/BindTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/BinderTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/ClrType.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/Cmplx.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/Conversions.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/DeTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/DelegateTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/DynamicRegressions.cs (100%) create mode 100644 tests/IronPythonTest/EngineTestTypes.cs rename tests/{IronPython.Tests => IronPythonTest}/Enums.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/Events.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/ExceptionConverter.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/Exceptions.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/Explicit.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/ExtensionMethodTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/GenMeth.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/Indexable.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/InheritTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/IntegerTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/IronMath.cs (100%) create mode 100644 tests/IronPythonTest/IronPythonTest.csproj rename tests/{IronPython.Tests => IronPythonTest}/LoadTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/MemberMappingTests.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/MemberOverloadTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/MethodParametersStubs.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/NestedClass.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/NullableTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/OperatorTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/ProtocolTest.cs (96%) rename tests/{IronPython.Tests => IronPythonTest}/StaticTest.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/TestBuiltinModule.cs (100%) rename tests/{IronPython.Tests => IronPythonTest}/TypeDescriptor.cs (100%) diff --git a/IronPython.slnx b/IronPython.slnx index e8a180378..82d6dbbf6 100644 --- a/IronPython.slnx +++ b/IronPython.slnx @@ -67,4 +67,5 @@ + diff --git a/src/core/IronPython/Properties/AssemblyInfo.cs b/src/core/IronPython/Properties/AssemblyInfo.cs index 3c7aa8cfe..3ae9f08dc 100644 --- a/src/core/IronPython/Properties/AssemblyInfo.cs +++ b/src/core/IronPython/Properties/AssemblyInfo.cs @@ -45,5 +45,6 @@ [assembly: InternalsVisibleTo("IronPython.Modules, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c10ce00dd2e0ce5046d68183d3ad035b47e92bf0ce7bcf8a03a217ca5d0b0c7db973fdf97579b52b502a23d4069dbf043389e1ab65a1d6c508a9837f3e2350f15e05cc63c0fc4b0410867a51919090e4c33f80203e9b0035b21c32bae20f98b068f90d99a50133a5336480d94039b176519f5fd8524765f33be43da65c4b68ba")] [assembly: InternalsVisibleTo("IronPythonTest, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c10ce00dd2e0ce5046d68183d3ad035b47e92bf0ce7bcf8a03a217ca5d0b0c7db973fdf97579b52b502a23d4069dbf043389e1ab65a1d6c508a9837f3e2350f15e05cc63c0fc4b0410867a51919090e4c33f80203e9b0035b21c32bae20f98b068f90d99a50133a5336480d94039b176519f5fd8524765f33be43da65c4b68ba")] +[assembly: InternalsVisibleTo("IronPython.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c10ce00dd2e0ce5046d68183d3ad035b47e92bf0ce7bcf8a03a217ca5d0b0c7db973fdf97579b52b502a23d4069dbf043389e1ab65a1d6c508a9837f3e2350f15e05cc63c0fc4b0410867a51919090e4c33f80203e9b0035b21c32bae20f98b068f90d99a50133a5336480d94039b176519f5fd8524765f33be43da65c4b68ba")] [assembly: AllowPartiallyTrustedCallers] diff --git a/tests/IronPython.Tests/EngineTest.cs b/tests/IronPython.Tests/EngineTest.cs index 925f88543..9dd948add 100644 --- a/tests/IronPython.Tests/EngineTest.cs +++ b/tests/IronPython.Tests/EngineTest.cs @@ -19,9 +19,6 @@ #endif using System.Text; using System.Threading; -#if FEATURE_WPF -using System.Windows.Markup; -#endif using Microsoft.Scripting; using Microsoft.Scripting.Generation; @@ -38,10 +35,6 @@ using NUnit.Framework; -#if FEATURE_WPF -using DependencyObject = System.Windows.DependencyObject; -#endif - [assembly: ExtensionType(typeof(IronPythonTest.IFooable), typeof(IronPythonTest.FooableExtensions))] namespace IronPythonTest { internal class Common { @@ -73,113 +66,6 @@ private static string FindRoot() { } } - public static class TestHelpers { - public static LanguageContext GetContext(CodeContext context) { - return context.LanguageContext; - } - - public static int HashObject(object o) { - return o.GetHashCode(); - } - } - - public delegate int IntIntDelegate(int arg); - public delegate string RefStrDelegate(ref string arg); - public delegate int RefIntDelegate(ref int arg); - public delegate T GenericDelegate(U arg1, V arg2); - -#if FEATURE_WPF - [ContentProperty("Content")] - public class XamlTestObject : DependencyObject { - public event IntIntDelegate Event; - public int Method(int arg) { - if (Event != null) - return Event(arg); - - return -1; - } - - public object Content { - get; - set; - } - } - - [ContentProperty("Content")] - [RuntimeNameProperty("MyName")] - public class InnerXamlTextObject : DependencyObject { - public object Content { - get; - set; - } - - public string MyName { - get; - set; - } - } - - [ContentProperty("Content")] - [RuntimeNameProperty("Name")] - public class InnerXamlTextObject2 : DependencyObject { - public object Content { - get; - set; - } - - public string Name { - get; - set; - } - } -#endif - - public class ClsPart { - public int Field; - private int m_property; - public int Property { get { return m_property; } set { m_property = value; } } - public event IntIntDelegate Event; - public int Method(int arg) { - if (Event != null) - return Event(arg); - else - return -1; - } - - // Private members -#pragma warning disable 169 - // This field is accessed from the test - private int privateField; - private int privateProperty { get { return m_property; } set { m_property = value; } } - private event IntIntDelegate privateEvent; - private int privateMethod(int arg) { - if (privateEvent != null) - return privateEvent(arg); - else - return -1; - } - private static int privateStaticMethod() { - return 100; - } -#pragma warning restore 169 - } - - internal class InternalClsPart { -#pragma warning disable 649 - // This field is accessed from the test - internal int Field; -#pragma warning restore 649 - private int m_property; - internal int Property { get { return m_property; } set { m_property = value; } } - internal event IntIntDelegate Event; - internal int Method(int arg) { - if (Event != null) - return Event(arg); - else - return -1; - } - } - public class EngineTest #if FEATURE_REMOTING : MarshalByRefObject @@ -2806,28 +2692,4 @@ public static string Bar(IFooable self) { return "Bar Called"; } } - - [PythonHiddenBaseClass] - public class HiddenBase { - public void Inaccessible() { - } - } - - public class DerivedFromHiddenBase : HiddenBase { - public int Accessible() { - return 42; - } - } - - public class GenericProperty { - private T _value; - public T Value { - get { - return this._value; - } - set { - this._value = value; - } - } - } } diff --git a/tests/IronPython.Tests/IronPython.Tests.csproj b/tests/IronPython.Tests/IronPython.Tests.csproj index 2e8c614b4..aca87003e 100644 --- a/tests/IronPython.Tests/IronPython.Tests.csproj +++ b/tests/IronPython.Tests/IronPython.Tests.csproj @@ -2,7 +2,6 @@ net462;net8.0;net10.0 - IronPythonTest true M:System.IO.Path.GetRelativePath(System.String, System.String); @@ -12,11 +11,7 @@ - - - - - + @@ -37,21 +32,6 @@ - - - - false - - - - - - - - - - - diff --git a/tests/IronPython.Tests/AssemblyInfo.cs b/tests/IronPythonTest/AssemblyInfo.cs similarity index 100% rename from tests/IronPython.Tests/AssemblyInfo.cs rename to tests/IronPythonTest/AssemblyInfo.cs diff --git a/tests/IronPython.Tests/AsyncInteropHelpers.cs b/tests/IronPythonTest/AsyncInteropHelpers.cs similarity index 100% rename from tests/IronPython.Tests/AsyncInteropHelpers.cs rename to tests/IronPythonTest/AsyncInteropHelpers.cs diff --git a/tests/IronPython.Tests/AttrInjectorTest.cs b/tests/IronPythonTest/AttrInjectorTest.cs similarity index 100% rename from tests/IronPython.Tests/AttrInjectorTest.cs rename to tests/IronPythonTest/AttrInjectorTest.cs diff --git a/tests/IronPython.Tests/BindTest.cs b/tests/IronPythonTest/BindTest.cs similarity index 100% rename from tests/IronPython.Tests/BindTest.cs rename to tests/IronPythonTest/BindTest.cs diff --git a/tests/IronPython.Tests/BinderTest.cs b/tests/IronPythonTest/BinderTest.cs similarity index 100% rename from tests/IronPython.Tests/BinderTest.cs rename to tests/IronPythonTest/BinderTest.cs diff --git a/tests/IronPython.Tests/ClrType.cs b/tests/IronPythonTest/ClrType.cs similarity index 100% rename from tests/IronPython.Tests/ClrType.cs rename to tests/IronPythonTest/ClrType.cs diff --git a/tests/IronPython.Tests/Cmplx.cs b/tests/IronPythonTest/Cmplx.cs similarity index 100% rename from tests/IronPython.Tests/Cmplx.cs rename to tests/IronPythonTest/Cmplx.cs diff --git a/tests/IronPython.Tests/Conversions.cs b/tests/IronPythonTest/Conversions.cs similarity index 100% rename from tests/IronPython.Tests/Conversions.cs rename to tests/IronPythonTest/Conversions.cs diff --git a/tests/IronPython.Tests/DeTest.cs b/tests/IronPythonTest/DeTest.cs similarity index 100% rename from tests/IronPython.Tests/DeTest.cs rename to tests/IronPythonTest/DeTest.cs diff --git a/tests/IronPython.Tests/DelegateTest.cs b/tests/IronPythonTest/DelegateTest.cs similarity index 100% rename from tests/IronPython.Tests/DelegateTest.cs rename to tests/IronPythonTest/DelegateTest.cs diff --git a/tests/IronPython.Tests/DynamicRegressions.cs b/tests/IronPythonTest/DynamicRegressions.cs similarity index 100% rename from tests/IronPython.Tests/DynamicRegressions.cs rename to tests/IronPythonTest/DynamicRegressions.cs diff --git a/tests/IronPythonTest/EngineTestTypes.cs b/tests/IronPythonTest/EngineTestTypes.cs new file mode 100644 index 000000000..c85dde15a --- /dev/null +++ b/tests/IronPythonTest/EngineTestTypes.cs @@ -0,0 +1,165 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. + +using System; +#if FEATURE_WPF +using System.Windows.Markup; +#endif + +using Microsoft.Scripting; +using Microsoft.Scripting.Hosting; +using Microsoft.Scripting.Runtime; + +using IronPython.Hosting; +using IronPython.Runtime; + +#if FEATURE_WPF +using DependencyObject = System.Windows.DependencyObject; +#endif + +namespace IronPythonTest { + public static class TestHelpers { + public static LanguageContext GetContext(CodeContext context) { + return context.LanguageContext; + } + + public static int HashObject(object o) { + return o.GetHashCode(); + } + } + + public delegate int IntIntDelegate(int arg); + public delegate string RefStrDelegate(ref string arg); + public delegate int RefIntDelegate(ref int arg); + public delegate T GenericDelegate(U arg1, V arg2); + +#if FEATURE_WPF + [ContentProperty("Content")] + public class XamlTestObject : DependencyObject { + public event IntIntDelegate Event; + public int Method(int arg) { + if (Event != null) + return Event(arg); + + return -1; + } + + public object Content { + get; + set; + } + } + + [ContentProperty("Content")] + [RuntimeNameProperty("MyName")] + public class InnerXamlTextObject : DependencyObject { + public object Content { + get; + set; + } + + public string MyName { + get; + set; + } + } + + [ContentProperty("Content")] + [RuntimeNameProperty("Name")] + public class InnerXamlTextObject2 : DependencyObject { + public object Content { + get; + set; + } + + public string Name { + get; + set; + } + } +#endif + + public class ClsPart { + public int Field; + private int m_property; + public int Property { get { return m_property; } set { m_property = value; } } + public event IntIntDelegate Event; + public int Method(int arg) { + if (Event != null) + return Event(arg); + else + return -1; + } + + // Private members +#pragma warning disable 169 + // This field is accessed from the test + private int privateField; + private int privateProperty { get { return m_property; } set { m_property = value; } } + private event IntIntDelegate privateEvent; + private int privateMethod(int arg) { + if (privateEvent != null) + return privateEvent(arg); + else + return -1; + } + private static int privateStaticMethod() { + return 100; + } +#pragma warning restore 169 + } + + internal class InternalClsPart { +#pragma warning disable 649 + // This field is accessed from the test + internal int Field; +#pragma warning restore 649 + private int m_property; + internal int Property { get { return m_property; } set { m_property = value; } } + internal event IntIntDelegate Event; + internal int Method(int arg) { + if (Event != null) + return Event(arg); + else + return -1; + } + } + + [PythonHiddenBaseClass] + public class HiddenBase { + public void Inaccessible() { + } + } + + public class DerivedFromHiddenBase : HiddenBase { + public int Accessible() { + return 42; + } + } + + public class GenericProperty { + private T _value; + public T Value { + get { + return this._value; + } + set { + this._value = value; + } + } + } + + // Used to test exception thrown in another domain can be shown correctly. + public class ScriptRunner +#if FEATURE_REMOTING + : MarshalByRefObject +#endif + { + private readonly ScriptEngine _engine = Python.CreateEngine(); + + public void Run(string script) { + _engine.CreateScriptSourceFromString(script, SourceCodeKind.File).Execute(_engine.CreateScope()); + } + } +} diff --git a/tests/IronPython.Tests/Enums.cs b/tests/IronPythonTest/Enums.cs similarity index 100% rename from tests/IronPython.Tests/Enums.cs rename to tests/IronPythonTest/Enums.cs diff --git a/tests/IronPython.Tests/Events.cs b/tests/IronPythonTest/Events.cs similarity index 100% rename from tests/IronPython.Tests/Events.cs rename to tests/IronPythonTest/Events.cs diff --git a/tests/IronPython.Tests/ExceptionConverter.cs b/tests/IronPythonTest/ExceptionConverter.cs similarity index 100% rename from tests/IronPython.Tests/ExceptionConverter.cs rename to tests/IronPythonTest/ExceptionConverter.cs diff --git a/tests/IronPython.Tests/Exceptions.cs b/tests/IronPythonTest/Exceptions.cs similarity index 100% rename from tests/IronPython.Tests/Exceptions.cs rename to tests/IronPythonTest/Exceptions.cs diff --git a/tests/IronPython.Tests/Explicit.cs b/tests/IronPythonTest/Explicit.cs similarity index 100% rename from tests/IronPython.Tests/Explicit.cs rename to tests/IronPythonTest/Explicit.cs diff --git a/tests/IronPython.Tests/ExtensionMethodTest.cs b/tests/IronPythonTest/ExtensionMethodTest.cs similarity index 100% rename from tests/IronPython.Tests/ExtensionMethodTest.cs rename to tests/IronPythonTest/ExtensionMethodTest.cs diff --git a/tests/IronPython.Tests/GenMeth.cs b/tests/IronPythonTest/GenMeth.cs similarity index 100% rename from tests/IronPython.Tests/GenMeth.cs rename to tests/IronPythonTest/GenMeth.cs diff --git a/tests/IronPython.Tests/Indexable.cs b/tests/IronPythonTest/Indexable.cs similarity index 100% rename from tests/IronPython.Tests/Indexable.cs rename to tests/IronPythonTest/Indexable.cs diff --git a/tests/IronPython.Tests/InheritTest.cs b/tests/IronPythonTest/InheritTest.cs similarity index 100% rename from tests/IronPython.Tests/InheritTest.cs rename to tests/IronPythonTest/InheritTest.cs diff --git a/tests/IronPython.Tests/IntegerTest.cs b/tests/IronPythonTest/IntegerTest.cs similarity index 100% rename from tests/IronPython.Tests/IntegerTest.cs rename to tests/IronPythonTest/IntegerTest.cs diff --git a/tests/IronPython.Tests/IronMath.cs b/tests/IronPythonTest/IronMath.cs similarity index 100% rename from tests/IronPython.Tests/IronMath.cs rename to tests/IronPythonTest/IronMath.cs diff --git a/tests/IronPythonTest/IronPythonTest.csproj b/tests/IronPythonTest/IronPythonTest.csproj new file mode 100644 index 000000000..ef8939bb4 --- /dev/null +++ b/tests/IronPythonTest/IronPythonTest.csproj @@ -0,0 +1,36 @@ + + + + net462;net8.0;net10.0 + true + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + diff --git a/tests/IronPython.Tests/LoadTest.cs b/tests/IronPythonTest/LoadTest.cs similarity index 100% rename from tests/IronPython.Tests/LoadTest.cs rename to tests/IronPythonTest/LoadTest.cs diff --git a/tests/IronPython.Tests/MemberMappingTests.cs b/tests/IronPythonTest/MemberMappingTests.cs similarity index 100% rename from tests/IronPython.Tests/MemberMappingTests.cs rename to tests/IronPythonTest/MemberMappingTests.cs diff --git a/tests/IronPython.Tests/MemberOverloadTest.cs b/tests/IronPythonTest/MemberOverloadTest.cs similarity index 100% rename from tests/IronPython.Tests/MemberOverloadTest.cs rename to tests/IronPythonTest/MemberOverloadTest.cs diff --git a/tests/IronPython.Tests/MethodParametersStubs.cs b/tests/IronPythonTest/MethodParametersStubs.cs similarity index 100% rename from tests/IronPython.Tests/MethodParametersStubs.cs rename to tests/IronPythonTest/MethodParametersStubs.cs diff --git a/tests/IronPython.Tests/NestedClass.cs b/tests/IronPythonTest/NestedClass.cs similarity index 100% rename from tests/IronPython.Tests/NestedClass.cs rename to tests/IronPythonTest/NestedClass.cs diff --git a/tests/IronPython.Tests/NullableTest.cs b/tests/IronPythonTest/NullableTest.cs similarity index 100% rename from tests/IronPython.Tests/NullableTest.cs rename to tests/IronPythonTest/NullableTest.cs diff --git a/tests/IronPython.Tests/OperatorTest.cs b/tests/IronPythonTest/OperatorTest.cs similarity index 100% rename from tests/IronPython.Tests/OperatorTest.cs rename to tests/IronPythonTest/OperatorTest.cs diff --git a/tests/IronPython.Tests/ProtocolTest.cs b/tests/IronPythonTest/ProtocolTest.cs similarity index 96% rename from tests/IronPython.Tests/ProtocolTest.cs rename to tests/IronPythonTest/ProtocolTest.cs index 43649545e..c0f972415 100644 --- a/tests/IronPython.Tests/ProtocolTest.cs +++ b/tests/IronPythonTest/ProtocolTest.cs @@ -5,10 +5,8 @@ using System; using System.Collections; using System.Runtime.CompilerServices; -using NUnit.Framework; namespace IronPythonTest { - [TestFixture(Category = "IronPython")] public class DisposableTest : IDisposable { public bool Called; diff --git a/tests/IronPython.Tests/StaticTest.cs b/tests/IronPythonTest/StaticTest.cs similarity index 100% rename from tests/IronPython.Tests/StaticTest.cs rename to tests/IronPythonTest/StaticTest.cs diff --git a/tests/IronPython.Tests/TestBuiltinModule.cs b/tests/IronPythonTest/TestBuiltinModule.cs similarity index 100% rename from tests/IronPython.Tests/TestBuiltinModule.cs rename to tests/IronPythonTest/TestBuiltinModule.cs diff --git a/tests/IronPython.Tests/TypeDescriptor.cs b/tests/IronPythonTest/TypeDescriptor.cs similarity index 100% rename from tests/IronPython.Tests/TypeDescriptor.cs rename to tests/IronPythonTest/TypeDescriptor.cs diff --git a/tests/suite/test_exceptions.py b/tests/suite/test_exceptions.py index d8a2c1862..881e4d5db 100644 --- a/tests/suite/test_exceptions.py +++ b/tests/suite/test_exceptions.py @@ -724,7 +724,7 @@ def test_serializable_clionly(self): import System from IronPythonTest import ExceptionsTest path = clr.GetClrType(ExceptionsTest).Assembly.Location - mbro = System.AppDomain.CurrentDomain.CreateInstanceFromAndUnwrap(path, "IronPythonTest.EngineTest") + mbro = System.AppDomain.CurrentDomain.CreateInstanceFromAndUnwrap(path, "IronPythonTest.ScriptRunner") self.assertRaises(AssertionError, mbro.Run, 'raise AssertionError') import builtins