Пример #1
0
        public TestRuntime(Driver/*!*/ driver, TestCase/*!*/ testCase) {
            _driver = driver;
            _testName = testCase.Name;

            if (testCase.Options.NoRuntime) {
                return;
            }

            if (_driver.SaveToAssemblies) {
                Environment.SetEnvironmentVariable("DLR_AssembliesFileName", _testName);
            }

            var runtimeSetup = ScriptRuntimeSetup.ReadConfiguration();
            var languageSetup = runtimeSetup.AddRubySetup();

            runtimeSetup.DebugMode = _driver.IsDebug;
            runtimeSetup.PrivateBinding = testCase.Options.PrivateBinding;
            runtimeSetup.HostType = typeof(TestHost);
            runtimeSetup.HostArguments = new object[] { testCase.Options };
            languageSetup.Options["NoAdaptiveCompilation"] = _driver.NoAdaptiveCompilation;
            languageSetup.Options["CompilationThreshold"] = _driver.CompilationThreshold;
            languageSetup.Options["Verbosity"] = 2;
            languageSetup.Options["Compatibility"] = testCase.Options.Compatibility;

            _runtime = Ruby.CreateRuntime(runtimeSetup);
            _engine = Ruby.GetEngine(_runtime);
            _context = (RubyContext)HostingHelpers.GetLanguageContext(_engine);
        }
Пример #2
0
        public TestRuntime(Driver/*!*/ driver, TestCase/*!*/ testCase) {
            _driver = driver;
            _testName = testCase.Name;

            if (_driver.SaveToAssemblies) {
                Environment.SetEnvironmentVariable("DLR_AssembliesFileName", _testName);
            }

            var runtimeSetup = ScriptRuntimeSetup.ReadConfiguration();
            LanguageSetup languageSetup = null;
            foreach (var language in runtimeSetup.LanguageSetups) {
                if (language.TypeName == typeof(RubyContext).AssemblyQualifiedName) {
                    languageSetup = language;
                    break;
                }
            }

            runtimeSetup.DebugMode = _driver.IsDebug;
            languageSetup.Options["InterpretedMode"] = _driver.Interpret;
            languageSetup.Options["Verbosity"] = 2;
            languageSetup.Options["Compatibility"] = testCase.Compatibility;

            _env = Ruby.CreateRuntime(runtimeSetup);
            _engine = Ruby.GetEngine(_env);
            _context = Ruby.GetExecutionContext(_engine);
        }
Пример #3
0
        public TestRuntime(Driver/*!*/ driver, TestCase/*!*/ testCase) {
            _driver = driver;
            _testName = testCase.Name;

            if (testCase.Options.NoRuntime) {
                return;
            }

            if (_driver.SaveToAssemblies) {
                Environment.SetEnvironmentVariable("DLR_AssembliesFileName", _testName);
            }

            var runtimeSetup = ScriptRuntimeSetup.ReadConfiguration();
            var languageSetup = runtimeSetup.AddRubySetup();

            runtimeSetup.DebugMode = _driver.IsDebug;
            runtimeSetup.PrivateBinding = testCase.Options.PrivateBinding;
            languageSetup.Options["NoAdaptiveCompilation"] = _driver.NoAdaptiveCompilation;
            languageSetup.Options["Verbosity"] = 2;
            languageSetup.Options["Compatibility"] = testCase.Options.Compatibility;

            _runtime = Ruby.CreateRuntime(runtimeSetup);
            _engine = Ruby.GetEngine(_runtime);
            _context = Ruby.GetExecutionContext(_engine);
        }
Пример #4
0
        public static int Run(List<string>/*!*/ args) {
            if (!ParseArguments(args)) {
                return -3;
            }

            int status = 0;

            if (_runTokenizerDriver) {
                TokenizerTestDriver driver = new TokenizerTestDriver(Ruby.GetExecutionContext(Ruby.CreateRuntime()));
                if (!driver.ParseArgs(args)) {
                    return -3;
                }

                status = driver.RunTests();
            } else {
                InitializeDomain();
                Driver driver = new Driver();

                if (Manual.TestCode.Trim().Length == 0) {
                    status = driver.RunUnitTests(args);
                } else {
                    driver.RunManualTest();

                    // for case the test is forgotten, this would fail the test suite:
                    status = -2;
                }
            }

            // return failure on bad filter (any real failures throw)
            return status;
        }
Пример #5
0
        public Tests(Driver/*!*/ driver) {
            _driver = driver;

            _methods = new Action[] {
                Scenario_Startup, // must be the first test
                
                MutableString1,
                MutableString2,
                RubyArray_Ctors,
                RubyArray_Basic,
                RubyArray_Add,
                RubyArray_Remove,
                RubyArray_Insert,
                RubyArray_Misc,

                Scenario_ParserLogging,
                Scenario_RubyTokenizer1,
                Identifiers1,
                Identifiers2,
                Scenario_ParseBigInts1,
                ParseIntegers1,
                Scenario_ParseNumbers1,
                Scenario_ParseInstanceClassVariables1,
                ParseGlobalVariables1,
                ParseEscapes1,
                ParseEolns1,
                Scenario_ParseRegex1,

                Scenario_RubyCategorizer1,
                NameMangling1,
                NameMangling2,

                OverloadResolution_Block1,
                OverloadResolution_ParamArrays1,
                OverloadResolution_Numeric1,
                AmbiguousMatch1,
                Interpreter1,
                Interpreter2,
                Interpreter3,
                Interpreter4,

                Scenario_RubySimpleCall1,
                Scenario_RubySimpleCall2, 
                Scenario_RubySimpleCall3, 
                Scenario_RubySimpleCall4, 
                Scenario_RubySimpleCall5, 
                MethodCallCaching1,
                MethodCallCaching2,
                MethodCallCaching3,
                MethodCallCaching4,
                MethodCallCaching5,
                MethodCallCaching6,

                NumericLiterals1,
                NumericOps1,
                StringLiterals1,
                Escapes1,
                UnicodeEscapes1,
                UnicodeEscapes2,

                Heredoc1,
                Symbols1,
                
                KCode1,
                KCode2,

                Encoding1,
                Encoding2,
                Encoding3,
                Encoding4,
                Encoding_Host1,
                Encoding_Host2,

                AstLocations1,

                Scenario_Globals1,

                Scenario_RubyMethodMissing1, 
                Scenario_RubyMethodMissing2, 
                Scenario_RubySingletonConstants1,
                Scenario_RubyMath1,

                StringsPlus,
                Strings0,
                Strings1,
                Strings2,
                Strings3,
                Strings4,
                Strings5,
                Strings6,
                Strings7,
                Strings8,
                Strings9,
                ToSConversion1,
                ToSConversion2,
                Inspect1,
                Inspect2,
                File1,
                File2,
                
                Regex1,
                Regex2,
                RegexTransform1,
                RegexTransform2,
                RegexEscape1,
                RegexCondition1,
                RegexCondition2,
                
                Scenario_RubyScopeParsing,
                Scenario_RubyScopes1,
                Scenario_RubyScopes2A,
                Scenario_RubyScopes2B,
                Scenario_RubyScopes3,
                Scenario_RubyScopes4,
                Scenario_RubyScopes5,
                Scenario_RubyScopes6,

                Send1,
                Send2,
                MethodCallCaching7,
                MethodCallCaching8,
                
                AttributeAccessors1,
                AttributeAccessors2,
                AttributeAccessors3,
                
                Scenario_RubyDeclarations1,
                Scenario_RubyDeclarations1A,
                Scenario_RubyDeclarations1B,
                Scenario_RubyDeclarations1C,
                Scenario_RubyDeclarations2,
                Scenario_RubyDeclarations3,
                Scenario_RubyDeclarations4,
                Scenario_RubyInclusions1,
                Scenario_RubyClassVersions1,
                Scenario_RubyClassVersions2,
                InvokeMemberCache1,
                Scenario_RubyBlockExpressions1,
                
                Constants1A,
                Constants1B,
                ConstantNames,
                Constants3,
                Constants4,
                UnqualifiedConstants1,
                LoadAndGlobalConstants,
                GlobalConstantsInterop,
                
                Scenario_ClassVariables1,
                Scenario_ClassVariables2,
                Scenario_RubyLocals1,
                Scenario_MethodAliases1,
                Scenario_MethodAliases2,
                Scenario_MethodUndef1,
                Scenario_MethodUndef2,
                MethodUndefExpression,
                Scenario_Assignment1,
                SetterCallValue,
                SimpleInplaceAsignmentToIndirectLeftValues1,
                MemberAssignmentExpression1,
                MemberAssignmentExpression2,
                MemberAssignmentExpression3,

                Scenario_ParallelAssignment1,
                Scenario_ParallelAssignment2,
                Scenario_ParallelAssignment4,
                Scenario_ParallelAssignment5,
                Scenario_ParallelAssignment6,
                Scenario_ParallelAssignment7,
                Scenario_ParallelAssignment8,
                Scenario_ParallelAssignment9,
                Scenario_ParallelAssignment10,

                BlockEmpty,
                RubyBlocks0,
                RubyBlocks_Params1,
                RubyBlocks_Params2,
                ProcYieldCaching1,
                ProcCallCaching1,
                ProcSelf1,
                RubyBlocks2,
                RubyBlocks3,
                RubyBlocks5,
                RubyBlocks6,
                RubyBlocks7,
                RubyBlocks8,
                RubyBlocks9,
                RubyBlocks10,
                RubyBlocks11,
                RubyBlocks12,
                RubyBlocks13,
                RubyBlocks14,
                RubyBlocks15,
                RubyBlocks16,
                RubyBlocks17,
                RubyBlocks18,
                BlockArity1,
                
                Scenario_RubyBlockArgs1,
                Scenario_RubyProcYieldArgs1,
                Scenario_RubyProcCallArgs1A,
                Scenario_RubyProcCallArgs1B,
                Scenario_RubyBlockArgs2,
                Scenario_RubyProcCallArgs2A,
                Scenario_RubyProcCallArgs2B,
                Scenario_RubyProcCallArgs2C,
                Scenario_RubyProcCallArgs2D,
                Scenario_RubyBlockArgs3,
                Scenario_RubyBlockArgs4A,
                Scenario_RubyBlockArgs4B,
                Scenario_RubyBlockArgs5,
                Scenario_RubyBlockArgs6,
                // TODO: Scenario_RubyBlockArgs7,
                Scenario_RubyBlockArgs8,
                Scenario_RubyBlockArgs9,
                Scenario_RubyBlockArgs10,
                Proc_RhsAndBlockArguments1,

                RubyProcs1,
                RubyProcs2,
                RubyProcArgConversion1,
                RubyProcArgConversion2,
                RubyProcArgConversion3,
                RubyProcArgConversion4,
                ProcNew1,
                ProcNew2,
                MethodToProc1,
                DefineMethod1,
                DefineMethod2,
                ProcPosition1,
                
                Scenario_RubyInitializers0,
                Scenario_RubyInitializers1,
                Scenario_RubyInitializers2A,
                Scenario_RubyInitializers2B,
                Scenario_RubyInitializers3,
                Scenario_RubyInitializers4A,
                Scenario_RubyInitializers4B,
                Scenario_RubyInitializers4C,
                Scenario_RubyInitializers5,
                RubyInitializersCaching1,
                RubyInitializersCaching2,
                RubyInitializersCaching3,
                RubyAllocators1,

                Scenario_RubyForLoop1,
                // TODO: Python interop: Scenario_RubyForLoop2,
                Scenario_RubyWhileLoop1,
                Scenario_RubyWhileLoop2,
                Scenario_RubyWhileLoop3,
                Scenario_RubyWhileLoop4,
                Scenario_RubyWhileLoop5,
                Scenario_RubyWhileLoop6,
                Scenario_RubyUntilLoop1,
                Scenario_WhileLoopCondition1,
                PostTestWhile1,
                PostTestUntil1,
                WhileModifier1,
                UntilModifier1,
                WhileModifier2,
                UntilModifier2,

                RangeConditionInclusive1,
                RangeConditionExclusive1,
                RangeCondition1A,
                RangeCondition1B,
                RangeCondition1C,
                RangeCondition2,
                
                Scenario_RubyClosures1,
                Scenario_RubyParams1,
                Scenario_RubyParams2,
                Scenario_RubyReturn1,
                Scenario_RubyArrays1,
                Scenario_RubyArrays2,
                Scenario_RubyArrays3,
                Scenario_RubyArrays4,
                Scenario_RubyArrays5,
                Scenario_RubyArrays6,
                Scenario_RubyHashes1A,
                Scenario_RubyHashes1B,
                Scenario_RubyHashes1C,
                Scenario_RubyHashes2,
                Scenario_RubyHashes3,
                Scenario_RubyHashes4,
                Scenario_RubyArgSplatting1,
                Scenario_RubyArgSplatting2,
                Scenario_RubyArgSplatting3,
                Scenario_RubyArgSplatting4,
                Scenario_RubyArgSplatting5,
                Scenario_RubyArgSplatting6,
                Scenario_CaseSplatting1,
                Scenario_RubyBoolExpressions1,
                Scenario_RubyBoolExpressions2,
                Scenario_RubyBoolExpressions3,
                Scenario_RubyBoolExpressions4,
                Scenario_RubyBoolExpressionsWithReturn1,
                Scenario_RubyBoolExpressionsWithReturn2,
                TernaryConditionalWithJumpStatements1,
                TernaryConditionalWithJumpStatements2,
                Scenario_RubyBoolAssignment,
                Scenario_RubyIfExpression1,
                Scenario_RubyIfExpression2,
                Scenario_RubyUnlessExpression1,
                Scenario_RubyConditionalExpression1,
                ConditionalStatement1,
                ConditionalStatement2,

                Scenario_UninitializedVars1,
                Scenario_UninitializedVars2,
                InstanceVariables1,
                InstanceVariables2,
                RubyHosting_DelegateConversions,
                RubyHosting1A,
                RubyHosting1B,
                RubyHosting1C,
                RubyHosting1D,
                RubyHosting2,
                RubyHosting3,
                CrossRuntime1,
                CrossRuntime2,

                Scenario_RubyConsole1,
                ObjectOperations1,
                ObjectOperations2,
                PythonInterop1,
                PythonInterop2,
                PythonInterop3,
                PythonInterop4,
                PythonInterop5,
                // TODO (bug in IronPython): PythonInterop6,

                CustomTypeDescriptor1,
                CustomTypeDescriptor2,
                
                Loader_Assemblies1,

                Require1,
                RequireInterop1,
                RequireInterop2,
                Load1,
                LibraryLoader1,

                ClrFields1,
                ClrTypes1,
                ClrNamespaces1,
                ClrGenerics1,
                ClrGenerics2,
                ClrMethods1,
                ClrMethods2,
                ClrMethods3,
                ClrMethods4,
                ClrMembers1,
                ClrVisibility1,
                ClrVisibility2,
                ClrOverloadInheritance1,
                ClrOverloadInheritance2,
                ClrOverloadInheritance3,
                ClrOverloadInheritance4,
                ClrOverloadInheritance5,
                ClrOverloadInheritance6,
                ClrMethodEnumeration1,
                ClrMethodEnumeration2,
                ClrIndexers1,
                ClrGenericMethods1,
                ClrOverloadSelection1,
                ClrOverloadSelection2,
                ClrInterfaces1,
                ClrInterfaces2,
                ClrInclude1,
                ClrNew1,
                ClrNew2,
                ClrAlias1,
                ClrEnums1, 
                ClrEnums2, 
                ClrDelegates1,
                ClrDelegates2,
                ClrEvents1,
                ClrEvents2,
                ClrEvents3,
                ClrEvents4,
                ClrOverride1,
                ClrOverride2,
                ClrOverride3,
                //TODO: Fix ClrOverride4,
                ClrEventImpl1,
                ClrDetachedVirtual1,
                ClrConstructor1,
                ClrConstructor2,
                ClrConstructor3,
                ClrConstructor4,
                ClrConstructor5,
                ClrPrimitiveNumericTypes1,
                ClrArrays1,
                ClrArrays2,
                ClrChar1,
                ClrOperators1,
                ClrOperators2,
                ClrOperators3,
                ClrConversions1,
                ClrHashEqualsToString1,
                ClrHashEqualsToString2,
                ClrHashEqualsToString3,
                ClrHashEquals4,
                Scenario_RubyEngine1,
                Scenario_RubyInteractive1,
                Scenario_RubyInteractive2,
                
                Scenario_RubyReturnValues1,
                Scenario_RubyReturnValues2,
                Scenario_RubyReturnValues3,
                Scenario_RubyReturnValues4,
                Scenario_RubyReturnValues5,
                Scenario_RubyReturnValues6,

                Scenario_RubyExceptions1,
                Scenario_RubyExceptions1A,
                Scenario_RubyExceptions2A,
                Scenario_RubyExceptions2B,
                Scenario_RubyExceptions2C,
                Scenario_RubyExceptions2D,
                Scenario_RubyExceptions3,
                Scenario_RubyExceptions4,
                Scenario_RubyExceptions5,
                Scenario_RubyExceptions6,
                Scenario_RubyExceptions7,
                Scenario_RubyExceptions8,
                Scenario_RubyExceptions9,
                Scenario_RubyExceptions10,
                Scenario_RubyExceptions11,
                Scenario_RubyExceptions12,
                Scenario_RubyExceptions12A,
                Scenario_RubyExceptions13,
                Scenario_RubyExceptions14,
                Scenario_RubyExceptions15,
                Scenario_RubyExceptions16,
                JumpFromEnsure1,
                Scenario_RubyExceptions_Globals,
                Scenario_RubyRescueStatement1,
                Scenario_RubyRescueExpression1,
                Scenario_RubyRescueExpression2,
                ExceptionArg1,
                ExceptionArg2,
                RescueSplat1,
                RescueSplat2,
                RescueSplat3,
                ExceptionMapping1,
                ExceptionMapping2,
                ExceptionMapping3,

                ClassVariables1,
                UnqualifiedConstants2,

                AliasMethodLookup1,
                
                UndefMethodLookup,
                MethodAdded1,
                MethodLookup1,
                Visibility1,
                Visibility2A,
                Visibility2B,
                Visibility2C,
                Visibility3,
                Visibility4,
                VisibilityCaching1,
                VisibilityCaching2,
                DefineMethodVisibility1,
                DefineMethodVisibility2A,
                DefineMethodVisibility2B,
                AliasedMethodVisibility1,
                AttributeAccessorsVisibility1,
                ModuleFunctionVisibility1,
                ModuleFunctionVisibility2,

                MethodDefinitionInDefineMethod1A,
                MethodDefinitionInDefineMethod1B,
                MethodDefinitionInDefineMethod2A,
                MethodDefinitionInDefineMethod2B,
                MethodDefinitionInModuleEval1A,
                MethodDefinitionInModuleEval1B,

                MainSingleton1,
                MainSingleton2,
                Singletons1A,
                Singletons1B,
                Singletons1C,
                Singletons1D,
                Singletons2,
                Singletons3,
                SingletonCaching1,
                SingletonCaching2A,
                SingletonCaching2B,
                SingletonCaching2C,
                Scenario_ClassVariables_Singletons,
                AllowedSingletons1,

                Super1,
                SuperParameterless1,
                SuperParameterless2,
                SuperParameterless3,
                Super2,
                SuperToAttribute1,
                SuperAndMethodMissing1,
                SuperAndMethodMissing2,
                SuperCaching1,
                SuperInDefineMethod1,
                SuperInDefineMethod2,
                // TODO: SuperInDefineMethod3,
                SuperInTopLevelCode1,
                SuperInAliasedDefinedMethod1,

                Scenario_RubyDefinedOperator_Globals1,
                Scenario_RubyDefinedOperator_Globals2,
                Scenario_RubyDefinedOperator_Methods1,
                Scenario_RubyDefinedOperator_Methods2,
                Scenario_RubyDefinedOperator_Constants1,
                Scenario_RubyDefinedOperator_Constants2,
                Scenario_RubyDefinedOperator_Expressions1,
                Scenario_RubyDefinedOperator_InstanceVariables1,
                Scenario_RubyDefinedOperator_ClassVariables1,
                Scenario_RubyDefinedOperator_ClassVariables2,
                Scenario_RubyDefinedOperator_Yield1,
                Scenario_RubyDefinedOperator_Locals1,

                Scenario_ModuleOps_Methods,
                Scenario_MainSingleton,

                Scenario_RubyThreads1,
                Scenario_YieldCodeGen,
                Methods1, 
                MethodDef1, 
                ToIntegerConversion1,
                ToIntToStrConversion1,
                ConvertToFixnum1,
                ProtocolCaching1,
                ProtocolCaching2,
                ProtocolCaching3,
                ProtocolCaching4,
                MethodAliasExpression,
                ClassDuplication1,
                ClassDuplication2,
                ClassDuplication3,
                ClassDuplication4,
                ClassDuplication5,
                StructDup1,
                ClassDuplication6,
                Clone1,
                Dup1,
                Structs1,
                MetaModules1,
                MetaModulesDuplication1,
                Autoload1,
                ModuleFreezing1,
                ModuleFreezing2,

                // eval, binding:
                Eval1,
                Eval2,
                Eval3,
                Eval4,
                Eval5,
                Eval6,
                EvalReturn1,
                EvalReturn2,
                EvalReturn3,
                EvalBreak1,
                EvalBreak2,
                EvalRetry1,
                EvalRetry2,
                EvalRedo1,
                EvalNext1,
                LocalNames1,
                LocalNames2,
                LocalNames3,
                LocalNames4,
                LiftedParameters1,
                Binding1,
                TopLevelBinding_RubyProgram,
                EvalWithProcBinding1,
                ModuleEvalProc1,
                ModuleEvalProc2,
                ModuleEvalProc3,
                InstanceEvalProc1,
                // TODO: InstanceEvalProc2,
                ModuleInstanceEvalProc3,
                ModuleClassNew1,
                ModuleClassNew2,
                ModuleEvalString1,
                InstanceEvalString1,
                ModuleEvalString2,
                InstanceEvalString2,
                ModuleInstanceEvalString3,
                AliasInModuleEval1,
                MethodAliasInModuleEval1,
                SuperInModuleEval1,
                // TODO: SuperParameterlessEval1,
                // TODO: SuperParameterlessEval2,
                SuperInDefineMethodEval1,
                // TODO: NamesEncoding1,

                Backtrace1,
                Backtrace2,
                Backtrace3,
                Backtrace4,

                Dlr_RubySnippet,
                Dlr_ClrSubtype,
                Dlr_MethodMissing,
                Dlr_Miscellaneous,
                Dlr_Conversions,
                Dlr_Indexable,
                Dlr_Number,
                Dlr_Comparable,
                Dlr_RubyObjects,
                Dlr_Methods,
                Dlr_Visibility,
                Dlr_Languages,
            };
        }
Пример #6
0
        public Tests(Driver/*!*/ driver) {
            _driver = driver;

            _methods = new Action[] {
                Scenario_Startup, // must be the first test
                
                MutableString_Factories,
                MutableString_GetHashCode,
                MutableString_IsAscii,
                MutableString_Length,
                MutableString_CompareTo,
                MutableString_Append_Byte,
                MutableString_Append_Char,
                MutableString_Append,
                MutableString_Insert_Byte,
                MutableString_Insert_Char,
                MutableString_Remove_Byte,
                MutableString_Remove_Char,
                MutableString_SwitchRepr,
                MutableString_Concatenate,
                MutableString_Reverse,
                MutableString_Translate1,
                MutableString_StartsWith1,
                MutableString_IndexOf1,
                MutableString_LastIndexOf1,
                MutableString_Index1,
                MutableString_IndexRegex1,
                MutableString_Characters1,
                MutableString_Bytes1,
                MutableString_ChangeEncoding1,
                MutableString_ValidEncoding1,
                RubyArray_Ctors,
                RubyArray_Basic,
                RubyArray_Add,
                RubyArray_Remove,
                RubyArray_Insert,
                RubyArray_Misc,
     
                Scenario_ParserLogging,
                Parser1,
                ParserErrors1,
                TokenizeIdentifiers1,
                Identifiers2,
                ParseBigInts1,
                ParseIntegers1,
                TokenizeNumbers1,
                TokenizeInstanceClassVariables1,
                TokenizeGlobalVariables1,
                TokenizeEscapes1,
                TokenizeEolns1,
                TokenizeRegex1,
                TokenizeStrings1,
                TokenizeStrings2,
                TokenizeEscapes2,
                Heredoc1,
                LexicalState1,
                ParseSymbols1,

                TokenCategorizer1,
                TokenCategorizer2,
                NameMangling1,
                NameMangling2,
                DelegateChainClone1,

                Constants1A,
                Constants1B,
                ConstantNames,
                Constants3,
                Constants4,
                
                OverloadResolution_Block1,
                OverloadResolution_ParamArrays1,
                OverloadResolution_Numeric1,
                AmbiguousMatch1,
                Interpreter1A,
                Interpreter1B,
                Interpreter1C,
                Interpreter1D,
                Interpreter_JumpFromFinally1,
                Interpreter_JumpFromFinally2,
                Interpreter2,
                Interpreter3,
                Interpreter4,
                Interpreter5,
                Interpreter6,
                InterpreterNumeric1,
                InterpreterMethodCalls1,
                InterpreterLoops1,
                InterpreterLoops2,
                InterpreterLoops3,
                InterpreterLoops4,

                SimpleCall1,
                SimpleCall2, 
                SimpleCall3, 
                SimpleCall4, 
                SimpleCall5, 
                SimpleCall6, 
                MethodParams1, 

                MethodCallCaching1,
                MethodCallCaching2,
                MethodCallCaching3,
                MethodCallCaching_MethodMissing1,
                MethodCallCaching_MethodMissing2,
                MethodCallCaching_MethodMissing3,
                MethodCallCaching_MethodMissing4,
                MethodCallCaching_MethodMissing5,

                NumericLiterals1,
                NumericOps1,
                UnicodeEscapes1,
                CharacterToken1,

                Encoding1,
                Encoding2,
                Encoding4,
                Encoding_Host1,
                Encoding_Host2,

                AstLocations1,

                Scenario_Globals1,

                Scenario_RubyMethodMissing1, 
                Scenario_RubyMethodMissing2, 
                Scenario_RubySingletonConstants1,
                Scenario_RubyMath1,

                StringsPlus,
                Strings0,
                Strings1,
                Strings2,
                Strings3,
                Strings4,
                Strings5,
                Strings6,
                Strings7,
                Strings8,
                Strings9,
                ToSConversion1,
                ToSConversion2,
                Symbols1,
                Inspect2,
                File1,
                File_AppendBytes1,
                File_WriteBytes1,
                File_ReadLine1,
                Dir2,
                
                Regex1,
                Regex2,
                RegexTransform1,
                RegexTransform2,
                RegexEscape1,
                RegexCondition1,
                RegexCondition2,
                
                Scenario_RubyScopeParsing,
                Scenario_RubyScopes1,
                Scenario_RubyScopes2A,
                Scenario_RubyScopes2B,
                Scenario_RubyScopes3,
                Scenario_RubyScopes4,
                Scenario_RubyScopes5,
                Scenario_RubyScopes6,

                Send1,
                Send2,
                MethodCallCaching7,
                MethodCallCaching8,
                
                AttributeAccessors1,
                AttributeAccessors2,
                AttributeAccessors3,
                
                Scenario_RubyDeclarations1,
                Scenario_RubyDeclarations1A,
                Scenario_RubyDeclarations1B,
                Scenario_RubyDeclarations1C,
                Scenario_RubyDeclarations2,
                Scenario_RubyDeclarations3,
                Scenario_RubyDeclarations4,
                Scenario_RubyInclusions1,
                Scenario_RubyClassVersions1,
                Scenario_RubyClassVersions2,
                InvokeMemberCache1,
                Scenario_RubyBlockExpressions1,
           
                UnqualifiedConstants1,
                LoadAndGlobalConstants,
                GlobalConstants1,
                ConstantCaching_Unqualified1,
                ConstantCaching_Unqualified2,
                ConstantCaching_Unqualified3,
                ConstantCaching_Unqualified4,
                ConstantCaching_Unqualified5,
                ConstantCaching_Unqualified6,
                ConstantCaching_Unqualified7,
                ConstantCaching_Unqualified_IsDefined1,
                ConstantCaching_Qualified1,
                ConstantCaching_Qualified2,
                ConstantCaching_Qualified_IsDefined1,
                ConstantCaching_Qualified_IsDefined2,
                ConstantCaching_CrossRuntime1,
                ConstantCaching_AutoUpdating1A,
                ConstantCaching_AutoUpdating1B,

                Scenario_ClassVariables1,
                Scenario_ClassVariables2,
                Scenario_RubyLocals1,
                Scenario_MethodAliases1,
                Scenario_MethodAliases2,
                Scenario_MethodUndef1,
                Scenario_MethodUndef2,
                MethodUndefExpression,
                Scenario_Assignment1,
                SetterCallValue,

                SimpleInplaceAsignmentToIndirectLeftValues1,
                MemberAssignmentExpression1,
                MemberAssignmentExpression2,
                MemberAssignmentExpression3,

                Scenario_ParallelAssignment1,
                Scenario_ParallelAssignment2,
                Scenario_ParallelAssignment4,
                Scenario_ParallelAssignment5,
                Scenario_ParallelAssignment6,
                Scenario_ParallelAssignment7,
                Scenario_ParallelAssignment8,
                Scenario_ParallelAssignment9,
                Scenario_ParallelAssignment10,

                BlockEmpty,
                RubyBlocks0,
                RubyBlocks_Params1,
                RubyBlocks_Params2,
                RubyBlocks_Params3,

                ProcYieldCaching1,
                ProcCallCaching1,
                BlockDefinition1,
                ProcSelf1,
                RubyBlocks2,
                RubyBlocks3,
                RubyBlocks5,
                RubyBlocks6,
                RubyBlocks7,
                RubyBlocks8,
                RubyBlocks9,
                RubyBlocks10A,
                RubyBlocks10B,
                RubyBlocks11,
                RubyBlocks12,
                RubyBlocks13,
                RubyBlocks14A,
                RubyBlocks14B,
                RubyBlocks14C,
                RubyBlocks15,
                RubyBlocks16,
                RubyBlocks17,
                RubyBlocks18,

                BlockReturnOptimization1,
                BlockReturnOptimization2,
                BlockReturnOptimization3,
                BlockReturnOptimization4,
                BlockReturnOptimization5,
                BlockReturnOptimization6,
                BlockReturnOptimization7,

                BlockArity1,

                Scenario_RubyProcYieldArgs1,
                Scenario_RubyProcYieldArgs2,
                Scenario_RubyProcYieldArgs3,
                Scenario_RubyProcYieldArgs4,
                Scenario_RubyProcCallArgs1,
                Scenario_RubyProcCallArgs2A,
                Scenario_RubyProcCallArgs2B,
                Scenario_RubyProcCallArgs2C,
                Scenario_RubyProcCallArgs2D,
                Scenario_RubyBlockArgs3,
                Scenario_RubyBlockArgs4A,
                Scenario_RubyBlockArgs4B,
                Scenario_RubyBlockArgs5,
                Scenario_RubyBlockArgs6,
                Proc_RhsAndBlockArguments1,
                Block_ProcParams1,

                RubyProcs1,
                RubyProcs2,
                RubyProcArgConversion1,
                RubyProcArgConversion2,
                RubyProcArgConversion3,
                RubyProcArgConversion4,
                ProcNew1,
                ProcNew2,
                ProcNew3,
                ProcNew4,
                MethodToProc1,
                DefineMethod1,
                // TODO: DefineMethod2,
                ProcPosition1,
                
                Scenario_RubyInitializers0,
                Scenario_RubyInitializers1,
                Scenario_RubyInitializers2A,
                Scenario_RubyInitializers2B,
                Scenario_RubyInitializers3,
                Scenario_RubyInitializers4A,
                Scenario_RubyInitializers4B,
                Scenario_RubyInitializers4C,
                Scenario_RubyInitializers5,
                Scenario_RubyInitializers6,
                RubyInitializersCaching1,
                RubyInitializersCaching2,
                RubyInitializersCaching3,
                RubyAllocators1,

                RubyForLoop1,
                // TODO: Python interop: Scenario_RubyForLoop2,
                WhileLoop1,
                LoopBreak1,
                LoopBreak2,
                LoopBreak3,
                LoopRedo1,
                LoopNext1,
                MethodBreakRetryRedoNext1,
                Scenario_RubyUntilLoop1,
                Scenario_WhileLoopCondition1,
                PostTestWhile1,
                PostTestUntil1,
                WhileModifier1,
                UntilModifier1,
                WhileModifier2,
                UntilModifier2,

                RangeConditionInclusive1,
                RangeConditionExclusive1,
                RangeCondition1A,
                RangeCondition1B,
                RangeCondition1C,
                RangeCondition2,
                
                Scenario_RubyClosures1,
                Scenario_RubyParams1,
                Scenario_RubyParams2,

                Scenario_RubyArrays1,
                Scenario_RubyArrays2,
                Scenario_RubyArrays3,
                Scenario_RubyArrays4,
                Scenario_RubyArrays5,
                Scenario_RubyArrays6,

                Scenario_RubyHashes1A,
                Scenario_RubyHashes1B,
                Scenario_RubyHashes1C,
                Scenario_RubyHashes2,
                Scenario_RubyHashes3,
                Scenario_RubyHashes4,
                Scenario_RubyHashes5,
                Scenario_RubyArgSplatting1,
                Scenario_RubyArgSplatting2,
                Scenario_RubyArgSplatting3,
                Scenario_RubyArgSplatting4,
                Scenario_RubyArgSplatting5,
                Scenario_RubyArgSplatting6,
                Scenario_CaseSplatting1,
                SplattingProtocol1,
                Scenario_RubyBoolExpressions1,
                Scenario_RubyBoolExpressions2,
                Scenario_RubyBoolExpressions3,
                Scenario_RubyBoolExpressions4,
                Scenario_RubyBoolExpressions5,
                Scenario_RubyBoolExpressionsWithReturn1,
                Scenario_RubyBoolExpressionsWithReturn2,
                TernaryConditionalWithJumpStatements1,
                TernaryConditionalWithJumpStatements2,
                Scenario_RubyBoolAssignment,
                Scenario_RubyIfExpression1,
                Scenario_RubyIfExpression2,
                Scenario_RubyUnlessExpression1,
                Scenario_RubyConditionalExpression1,
                ConditionalStatement1,
                ConditionalStatement2,

                Scenario_UninitializedVars1,
                Scenario_UninitializedVars2,
                InstanceVariables1,
                InstanceVariables2,
                InstanceVariables3,
                InstanceVariables4,
                InstanceVariables5,
                InstanceVariables6,
                InstanceVariables7,
                InstanceVariables10,
                InstanceVariables20,
                RubyHosting_DelegateConversions,
                RubyHosting1A,
                RubyHosting1B,
                RubyHosting1C,
                RubyHosting1D,
                RubyHosting1E,
                RubyHosting1F,
                RubyHosting2,
                RubyHosting3,
                RubyHosting4,
                RubyHosting5,
                RubyHosting_Scopes1,
                RubyHosting_Scopes2,
                CrossRuntime1,
                CrossRuntime2,

                Scenario_RubyConsole1,
                ObjectOperations1,
                ObjectOperations2,
                PythonInterop1,
                PythonInterop2,
                PythonInterop3,
                PythonInterop4,
                PythonInterop5,
                // TODO: PythonInterop_InvokeMember_Fallback1,
                PythonInterop_InvokeMember_Fallback2,
                // TODO: PythonInterop_Indexers_Fallback1,
                // TODO: PythonInterop_Operators_Fallback1,
                PythonInterop_NamedIndexers1,

                CustomTypeDescriptor1,
                CustomTypeDescriptor2,
                
                Loader_Assemblies1,

                Require1,
                RequireInterop1,
                RequireInterop2,
                Load1,
                LibraryLoader1,
                LibraryLoader2,

                ClrFields1,
                ClrTypes1,
                ClrNamespaces1,
                ClrNamespaces2,
                ClrGenerics1,
                ClrGenerics2,
                ClrGenerics3,
                ClrMethods1,
                ClrMethods2,
                ClrMethods3,
                ClrMethods4,
                ClrMembers1,
                ClrVisibility1,
                ClrVisibility2,
                ClrExtensionMethods0,
                ClrExtensionMethods1,
                ClrExtensionMethods2,
                ClrExtensionMethods3,
                ClrExtensionMethods4,
                ClrExtensionMethods5,
                ClrOverloadInheritance1,
                ClrOverloadInheritance2,
                ClrOverloadInheritance3,
                ClrOverloadInheritance4,
                ClrOverloadInheritance5,
                ClrOverloadInheritance6,
                ClrOverloadInheritance7,
                ClrOverloadInheritance_ClrMembers1,
                ClrOverloadInheritance_ExtensionMethods1,
                ClrOverloadInheritance_ExtensionMethods2,
                ClrMethodEnumeration1,
                ClrMethodEnumeration2,
                ClrMethodEnumeration_InvalidNames1,
                ClrIndexers1,
                ClrGenericMethods1,
                ClrGenericMethods2,
                ClrGenericParametersInference1,
                ClrOverloadSelection1,
                ClrOverloadSelection2,
                ClrNewSlot1,
                ClrInterfaces1,
                ClrExplicitInterfaces1,
                ClrInclude1,
                ClrNew1,
                ClrNew2,
                ClrAlias1,
                ClrEnums1, 
                ClrEnums2, 
                ClrEnums3, 
                ClrDelegates1,
                ClrDelegates2,
                ClrEvents1,
                ClrEvents2,
                ClrEvents3,
                ClrEvents4,
                ClrOverride1,
                ClrOverride2,
                ClrOverride3,
                ClrOverride4,
                ClrOverride5,
                ClrOverride6,
                ClrEventImpl1,
                ClrDetachedVirtual1,
                ClrConstructor1,
                ClrConstructor2,
                ClrConstructor3,
                ClrConstructor4,
                ClrConstructor5,
                ClrPrimitiveNumericTypes1,
                ClrArrays1,
                ClrArrays2,
                ClrChar1,
                ClrOperators1,
                ClrOperators2,
                ClrOperators3,
                ClrConversions1,
                ClrHashEqualsToString1,
                ClrHashEqualsToString2,
                ClrHashEqualsToString3,
                ClrToString1,
                ClrHashEquals4,
                ClrTypeVariance1,
                HostingDefaultOptions1,
                Interactive1,
                Interactive2,

                Return1,
                Return2,
                Return3,
                Return4,
                Return5,
                Return6,
                Return7,
                Return8,

                Scenario_RubyExceptions1,
                Scenario_RubyExceptions1A,
                Scenario_RubyExceptions2A,
                Scenario_RubyExceptions2B,
                Scenario_RubyExceptions2C,
                Scenario_RubyExceptions2D,
                Scenario_RubyExceptions3,
                Scenario_RubyExceptions4,
                Scenario_RubyExceptions5,
                Scenario_RubyExceptions6,
                Scenario_RubyExceptions7,
                Scenario_RubyExceptions8,
                Scenario_RubyExceptions9,
                Scenario_RubyExceptions10,
                Scenario_RubyExceptions11,
                Scenario_RubyExceptions12,
                Scenario_RubyExceptions12A,
                Scenario_RubyExceptions13,
                Scenario_RubyExceptions14,
                Scenario_RubyExceptions15,
                Scenario_RubyExceptions16,
                JumpFromEnsure1,
                Scenario_RubyExceptions_Globals,
                Scenario_RubyRescueStatement1,
                Scenario_RubyRescueExpression1,
                Scenario_RubyRescueExpression2,
                ExceptionArg1,
                ExceptionArg2,

                RescueSplat1,
                RescueSplat2,
                RescueSplat3,
                RescueSplat4,
                RescueSplat5,

                ExceptionMapping1,
                ExceptionMapping2,
                ExceptionMapping3,

                ClassVariables1,
                UnqualifiedConstants2,

                AliasMethodLookup1,
                AliasMethodLookup3,
                
                UndefMethodLookup1,
                UndefMethodLookup2,
                UndefMethodLookup3,
                UndefMethodLookup4,
                UndefMethodLookup6,
                MethodAdded1,
                MethodLookup1,
                Visibility1,
                Visibility2A,
                Visibility2B,
                Visibility2C,
                Visibility3,
                Visibility4,
                VisibilityCaching1,
                VisibilityCaching2,
                DefineMethodVisibility1,
                DefineMethodVisibility2B,
                AliasedMethodVisibility1,
                AttributeAccessorsVisibility1,
                ModuleFunctionVisibility1,
                ModuleFunctionVisibility2,

                MethodDefinitionInDefineMethod1A,
                MethodDefinitionInDefineMethod2A,
                MethodDefinitionInModuleEval1A,

                MainSingleton1,
                MainSingleton2,
                Singletons1A,
                Singletons1B,
                Singletons1C,
                Singletons1D,
                Singletons2,
                Singletons3,
                SingletonCaching1,
                SingletonCaching2A,
                SingletonCaching2B,
                SingletonCaching2C,
                Scenario_ClassVariables_Singletons,
                AllowedSingletons1,
                AllowedSingletons2,
                SingletonMethodDefinitionOnSingletons1,
                ModuleSingletons1, 
                ClassSingletons1, 
                DummySingletons1, 
                DummySingletons2, 

                Super1,
                SuperParameterless1,
                SuperParameterless2A,
                SuperParameterless2B,
                SuperParameterless3,
                Super2,
                SuperToAttribute1,
                SuperAndMethodMissing1,
                SuperAndMethodMissing2,
                SuperCaching1,
                SuperInBlocks1,
                SuperInDefineMethod1,
                SuperInDefineMethod2,
                SuperInDefineMethod3,
                SuperInDefineMethod4,
                SuperInDefineMethod5,
                SuperInTopLevelCode1,
                SuperInAliasedDefinedMethod1,

                DefinedOperator_Globals1,
                DefinedOperator_Globals2,
                DefinedOperator_Methods1,
                DefinedOperator_Methods2,
                DefinedOperator_Constants1,
                DefinedOperator_Constants2,
                DefinedOperator_Constants3,
                DefinedOperator_Expressions1,
                DefinedOperator_InstanceVariables1,
                DefinedOperator_ClassVariables1,
                DefinedOperator_ClassVariables2,
                DefinedOperator_Yield1,
                DefinedOperator_Locals1,
                DefinedOperator_Super1,

                Scenario_ModuleOps_Methods,
                Scenario_MainSingleton,

                Scenario_RubyThreads1,
                Scenario_YieldCodeGen,
                Methods1, 
                MethodDef1, 
                ToIntegerConversion1,
                ToIntToStrConversion1,
                ConvertToFixnum1,
                ProtocolCaching1,
                ProtocolCaching2,
                ProtocolCaching3,
                ProtocolCaching4,
                MethodAliasExpression,
                BasicObject1,
                BasicObject2,
                ClassDuplication1,
                ClassDuplication2,
                ClassDuplication3,
                ClassDuplication4,
                ClassDuplication5,
                StructDup1,
                ClassDuplication6,
                ClassDuplication7,
                Clone1,
                Dup1,
                Structs1,
                MetaModules1,
                MetaModulesDuplication1,
                Autoload1,
                ModuleFreezing1,
                ModuleFreezing2,

                // eval, binding:
                Eval1,
                Eval2,
                Eval3,
                Eval4,
                Eval5,
                Eval6,
                EvalReturn1,
                EvalReturn2,
                EvalReturn3,
                EvalReturn4,
                EvalBreak1,
                EvalBreak2,
                EvalBreak3,
                EvalRetry1,
                EvalRetry2,
                EvalRedo1,
                EvalNext1,
                LocalNames1,
                LocalNames2,
                LocalNames3,
                LocalNames4,
                LiftedParameters1,
                Binding1,
                TopLevelBinding_RubyProgram,
                EvalWithProcBinding1,
                ModuleEvalProc1,
                ModuleEvalProc2,
                ModuleEvalProc3,
                InstanceEvalProc1,
                InstanceEvalProc2,
                ModuleInstanceEvalProc3,
                ModuleClassNew1,
                ModuleClassNew2,
                ModuleEvalString1,
                InstanceEvalString1,
                ModuleEvalString2,
                InstanceEvalString2,
                ModuleInstanceEvalString3,
                AliasInModuleEval1,
                MethodAliasInModuleEval1,
                SuperInModuleEval1,
                SuperCallInEvalWithBinding19,
                // TODO: SuperParameterlessEval1,
                // TODO: SuperParameterlessEval2,
                SuperInDefineMethodEval1,
                // TODO: NamesEncoding1,
                BEGIN1,
                BEGIN2,
                SymbolToProc1,

                Backtrace1,
                Backtrace2,
                Backtrace3,
                Backtrace4,
                Backtrace5,
                Backtrace6,
                Backtrace7,

                Dlr_RubySnippet,
                Dlr_ClrSubtype,
                Dlr_MethodMissing,
                Dlr_Miscellaneous,
                Dlr_Conversions1,
                Dlr_Splatting1,
                Dlr_Indexable,
                Dlr_Number,
                Dlr_Comparable,
                Dlr_Equatable,
                Dlr_RubyObjects,
                Dlr_Methods,
                Dlr_Visibility,
                Dlr_Languages,
                Dlr_DynamicObject1, 
                Dlr_DynamicObject2, 
                Dlr_DynamicObject3, 

                Serialization1,
#if !CLR2
                ClrBigIntegerV4,
#endif
                BigInteger1,
                GcdLcm1,
            };
        }
Пример #7
0
        public static int Run(List<string>/*!*/ args) {
            if (Thread.CurrentThread.CurrentCulture.ToString() != "en-US") {
                Console.WriteLine("Current culture: {0}", Thread.CurrentThread.CurrentCulture);
            }

            if (!ParseArguments(args)) {
                return -3;
            }

            int status = 0;

            if (_runTokenizerDriver) {
                TokenizerTestDriver driver = new TokenizerTestDriver((RubyContext)HostingHelpers.GetLanguageContext(Ruby.CreateEngine()));
                if (!driver.ParseArgs(args)) {
                    return -3;
                }

                status = driver.RunTests();
            } else {
                InitializeDomain();
                Driver driver = new Driver();

                if (Manual.TestCode.Trim().Length == 0) {
                    status = driver.RunUnitTests(args);
                } else {
                    driver.RunManualTest();

                    // for case the test is forgotten, this would fail the test suite:
                    status = -2;
                }
            }

            // return failure on bad filter (any real failures throw)
            return status;
        }
Пример #8
0
        public Tests(Driver/*!*/ driver) {
            _driver = driver;

            _methods = new Action[] {
                Scenario_Startup, // must be the first test
                Scenario_ParserLogging,
                Scenario_RubyTokenizer1,
                Identifiers1,
                Identifiers2,
                Scenario_ParseBigInts1,
                Scenario_ParseNumbers1,
                Scenario_ParseInstanceClassVariables1,
                Scenario_ParseRegex1,

                Scenario_RubyCategorizer1,
                Scenario_RubyNameMangling1,
                Scenario_RubyNameMangling2,

                OverloadResolution_Block,

                Scenario_RubySimpleCall1,
                Scenario_RubySimpleCall2, 
                Scenario_RubySimpleCall3, 
                Scenario_RubySimpleCall4, 
                Scenario_RubySimpleCall5, 

                NumericLiterals1,
                StringLiterals1,
                Escapes1,
                UnicodeEscapes1,
                UnicodeEscapes2,

                Heredoc1,
                Symbols1,
                UnicodeIdentifiers1,

                Encoding1,
                Encoding2,
                Encoding3,
                Encoding4,
                Encoding5,
                Encoding_Host1,
                Encoding_Host2,

                AstLocations1,

                Scenario_Globals1,

                Scenario_RubyMethodMissing1, 
                Scenario_RubyMethodMissing2, 
                Scenario_RubySingletonConstants1,
                Scenario_RubyMath1,

                StringsPlus,
                Strings0,
                Strings1,
                Strings2,
                Strings3,
                Strings4,
                Strings5,
                Strings6,
                Strings7,
                Strings8,
                // TODO: Strings9,

                Regex1,
                Regex2,
                RegexTransform1,
                RegexTransform2,
                RegexEscape1,
                RegexCondition1,
                RegexCondition2,
                
                Scenario_RubyScopeParsing,
                Scenario_RubyScopes1,
                Scenario_RubyScopes2A,
                Scenario_RubyScopes2B,
                Scenario_RubyScopes3,
                Scenario_RubyScopes4,
                Scenario_RubyScopes5,
                Scenario_RubyScopes6,

                Send1,
                
                AttributeAccessors1,
                AttributeAccessors2,
                
                Scenario_RubyDeclarations1,
                Scenario_RubyDeclarations1A,
                Scenario_RubyDeclarations1B,
                Scenario_RubyDeclarations1C,
                Scenario_RubyDeclarations2,
                Scenario_RubyDeclarations3,
                Scenario_RubyDeclarations4,
                Scenario_RubyInclusions1,
                Scenario_RubyClassVersions1,
                Scenario_RubyClassVersions2,
                InvokeMemberCache1,
                Scenario_RubyBlockExpressions1,
                
                Constants1A,
                Constants1B,
                ConstantNames,
                Constants3,
                Constants4,
                UnqualifiedConstants1,
                LoadAndGlobalConstants,
                GlobalConstantsInterop,
                
                Scenario_ClassVariables1,
                Scenario_ClassVariables2,
                Scenario_RubyLocals1,
                Scenario_MethodAliases1,
                Scenario_MethodAliases2,
                Scenario_MethodUndef1,
                Scenario_MethodUndef2,
                MethodUndefExpression,
                Scenario_Assignment1,
                SetterCallValue,
                SimpleInplaceAsignmentToIndirectLeftValues1,
                MemberAssignmentExpression1,
                MemberAssignmentExpression2,
                MemberAssignmentExpression3,

                Scenario_ParallelAssignment1,
                Scenario_ParallelAssignment2,
                Scenario_ParallelAssignment4,
                Scenario_ParallelAssignment5,
                Scenario_ParallelAssignment6,
                Scenario_ParallelAssignment7,
                Scenario_ParallelAssignment8,
                Scenario_ParallelAssignment9,
                Scenario_ParallelAssignment10,

                BlockEmpty,
                Scenario_RubyBlocks0,
                Scenario_RubyBlocks_Params1,
                Scenario_RubyBlocks_Params2,
                ProcYieldCaching1,
                ProcCallCaching1,
                ProcSelf1,
                Scenario_RubyBlocks2,
                Scenario_RubyBlocks3,
                Scenario_RubyBlocks5,
                Scenario_RubyBlocks6,
                Scenario_RubyBlocks7,
                Scenario_RubyBlocks8,
                Scenario_RubyBlocks9,
                Scenario_RubyBlocks10,
                Scenario_RubyBlocks11,
                Scenario_RubyBlocks12,
                Scenario_RubyBlocks13,
                Scenario_RubyBlocks14,
                Scenario_RubyBlocks15,
                Scenario_RubyBlocks16,
                Scenario_RubyBlocks17,
                BlockArity1,
                
                Scenario_RubyBlockArgs1,
                Scenario_RubyProcYieldArgs1,
                Scenario_RubyProcCallArgs1A,
                Scenario_RubyProcCallArgs1B,
                Scenario_RubyBlockArgs2,
                Scenario_RubyProcCallArgs2A,
                Scenario_RubyProcCallArgs2B,
                Scenario_RubyProcCallArgs2C,
                Scenario_RubyProcCallArgs2D,
                Scenario_RubyBlockArgs3,
                Scenario_RubyBlockArgs4A,
                Scenario_RubyBlockArgs4B,
                Scenario_RubyBlockArgs5,
                Scenario_RubyBlockArgs6,
                // TODO: Scenario_RubyBlockArgs7,
                Scenario_RubyBlockArgs8,
                Scenario_RubyBlockArgs9,
                Scenario_RubyBlockArgs10,
                Proc_RhsAndBlockArguments1,

                Scenario_RubyProcs1,
                RubyProcArgConversion1,
                RubyProcArgConversion2,
                RubyProcArgConversion3,
                RubyProcArgConversion4,
                ProcNew1,
                ProcNew2,
                DefineMethod1,
                DefineMethod2,
                
                Scenario_RubyInitializers0,
                Scenario_RubyInitializers1,
                Scenario_RubyInitializers2A,
                Scenario_RubyInitializers2B,
                Scenario_RubyInitializers3,
                Scenario_RubyInitializers4A,
                Scenario_RubyInitializers4B,
                Scenario_RubyInitializers4C,
                Scenario_RubyInitializers5,
                RubyInitializersCaching1,
                RubyInitializersCaching2,
                RubyAllocators1,

                Scenario_RubyForLoop1,
                // TODO: Python interop: Scenario_RubyForLoop2,
                Scenario_RubyWhileLoop1,
                Scenario_RubyWhileLoop2,
                Scenario_RubyWhileLoop3,
                Scenario_RubyWhileLoop4,
                Scenario_RubyWhileLoop5,
                Scenario_RubyWhileLoop6,
                Scenario_RubyUntilLoop1,
                Scenario_WhileLoopCondition1,
                PostTestWhile1,
                PostTestUntil1,
                WhileModifier1,
                UntilModifier1,
                WhileModifier2,
                UntilModifier2,

                RangeConditionInclusive1,
                RangeConditionExclusive1,
                RangeCondition1,
                RangeCondition2,
                
                Scenario_RubyClosures1,
                Scenario_RubyParams1,
                Scenario_RubyParams2,
                Scenario_RubyReturn1,
                Scenario_RubyArrays1,
                Scenario_RubyArrays2,
                Scenario_RubyArrays3,
                Scenario_RubyArrays4,
                Scenario_RubyArrays5,
                Scenario_RubyArrays6,
                Scenario_RubyHashes1A,
                Scenario_RubyHashes1B,
                Scenario_RubyHashes1C,
                Scenario_RubyHashes2,
                Scenario_RubyHashes3,
                Scenario_RubyHashes4,
                Scenario_RubyArgSplatting1,
                Scenario_RubyArgSplatting2,
                Scenario_RubyArgSplatting3,
                Scenario_RubyBoolExpressions1,
                Scenario_RubyBoolExpressions2,
                Scenario_RubyBoolExpressions3,
                Scenario_RubyBoolExpressions4,
                Scenario_RubyBoolExpressionsWithReturn1,
                Scenario_RubyBoolExpressionsWithReturn2,
                TernaryConditionalWithJumpStatements1,
                TernaryConditionalWithJumpStatements2,
                Scenario_RubyBoolAssignment,
                Scenario_RubyIfExpression1,
                Scenario_RubyIfExpression2,
                Scenario_RubyUnlessExpression1,
                Scenario_RubyConditionalExpression1,
                ConditionalStatement1,
                ConditionalStatement2,

                Scenario_UninitializedVars1,
                Scenario_UninitializedVars2,
                InstanceVariables1,
                InstanceVariables2,
                RubyHosting1,
                RubyHosting2,
                RubyHosting3,
                RubyHosting4,

                Scenario_RubyConsole1,
                // TODO: interop, hosting: Scenario_RubyConsole2,
                Scenario_RubyConsole3,
                Scenario_RubyConsole4,
                ObjectOperations1,
                ObjectOperations2,
                // TODO (python needs to run this suite): PythonInterop1,
                // TODO (python needs to run this suite): PythonInterop2,
                CustomTypeDescriptor1,
                CustomTypeDescriptor2,
                
                Loader_Assemblies1,

                Require1,
                RequireInterop1,
                Load1,
                LibraryLoader1,

                ClrFields1,
                ClrTypes1,
                ClrGenerics1,
                ClrMethods1,
                ClrMethodsVisibility1,
                ClrInterfaces1,
                ClrRequireAssembly1,
                ClrInclude1,
                ClrNew1,
                ClrAlias1,
                // TODO: ClrEnums1, 
                ClrDelegates1,
                ClrDelegates2,
                ClrEvents1,
                ClrOverride1,
                ClrConstructor1,
                // TODO: ClrConstructor2,
                Scenario_RubyEngine1,
                Scenario_RubyInteractive,
                
                Scenario_RubyReturnValues1,
                Scenario_RubyReturnValues2,
                Scenario_RubyReturnValues3,
                Scenario_RubyReturnValues4,
                Scenario_RubyReturnValues5,
                Scenario_RubyReturnValues6,

                Scenario_RubyExceptions1,
                Scenario_RubyExceptions1A,
                Scenario_RubyExceptions2A,
                Scenario_RubyExceptions2B,
                Scenario_RubyExceptions2C,
                Scenario_RubyExceptions2D,
                Scenario_RubyExceptions3,
                Scenario_RubyExceptions4,
                Scenario_RubyExceptions5,
                Scenario_RubyExceptions6,
                Scenario_RubyExceptions7,
                Scenario_RubyExceptions8,
                Scenario_RubyExceptions9,
                Scenario_RubyExceptions10,
                Scenario_RubyExceptions11,
                Scenario_RubyExceptions12,
                Scenario_RubyExceptions12A,
                Scenario_RubyExceptions13,
                Scenario_RubyExceptions14,
                Scenario_RubyExceptions15,
                Scenario_RubyExceptions16,
                Scenario_RubyExceptions_Globals,
                Scenario_RubyRescueStatement1,
                Scenario_RubyRescueExpression1,
                Scenario_RubyRescueExpression2,
                ExceptionArg1,
                ExceptionArg2,
                RescueSplat1,
                RescueSplat2,
                RescueSplat3,

                ClassVariables1,
                UnqualifiedConstants2,

                AliasMethodLookup1,
                
                UndefMethodLookup,
                MethodAdded1,
                MethodLookup1,
                VisibilityCaching1,
                ModuleFunctionVisibility1,

                Scenario_Singletons1,
                Scenario_Singletons2,
                Scenario_Singletons3,
                Scenario_Singletons4,
                Scenario_Singletons5,
                SingletonCaching1,
                Scenario_ClassVariables_Singletons,
                AllowedSingletons1,

                Super1,
                SuperParameterless1,
                SuperParameterless2,
                SuperParameterless3,
                Super2,
                SuperInDefineMethod1,
                SuperInDefineMethod2,
                // TODO: SuperInDefineMethod3,
                SuperInTopLevelCode1,
                SuperInAliasedDefinedMethod1,

                Scenario_RubyDefinedOperator_Globals1,
                Scenario_RubyDefinedOperator_Globals2,
                Scenario_RubyDefinedOperator_Methods1,
                Scenario_RubyDefinedOperator_Methods2,
                Scenario_RubyDefinedOperator_Constants1,
                Scenario_RubyDefinedOperator_Constants2,
                Scenario_RubyDefinedOperator_Expressions1,
                Scenario_RubyDefinedOperator_InstanceVariables1,
                Scenario_RubyDefinedOperator_ClassVariables1,
                Scenario_RubyDefinedOperator_ClassVariables2,
                Scenario_RubyDefinedOperator_Yield1,
                Scenario_RubyDefinedOperator_Locals1,

                Scenario_ModuleOps_Methods,
                Scenario_MainSingleton,

                Scenario_RubyThreads1,
                Scenario_YieldCodeGen,
                Methods, 
                MethodAliasExpression,
                ClassDuplication1,
                ClassDuplication2,
                ClassDuplication3,
                ClassDuplication4,
                ClassDuplication5,
                StructDup1,
                ClassDuplication6,
                Clone1,
                Dup1,
                MetaModules1,
                MetaModulesDuplication1,
  
                // eval, binding:
                Eval1,
                Eval2,
                Eval3,
                EvalReturn1,
                EvalReturn2,
                LocalNames1,
                LocalNames2,
                LocalNames3,
                LocalNames4,
                LiftedParameters1,
                Binding1,
                TopLevelBinding_RubyProgram,
                EvalWithProcBinding1,
                ModuleEvalProc1,
                ModuleEvalProc2,
                ModuleEvalProc3,
                InstanceEvalProc1,
                // TODO: InstanceEvalProc2,
                ModuleInstanceEvalProc3,
                ModuleClassNew1,
                ModuleClassNew2,
                ModuleEvalString1,
                InstanceEvalString1,
                ModuleEvalString2,
                InstanceEvalString2,
                ModuleInstanceEvalString3,
                AliasInModuleEval1,
                MethodAliasInModuleEval1,
                SuperInModuleEval1,
                
                SuperEval1,
                // TODO: SuperParameterlessEval1,
                // TODO: SuperParameterlessEval2,
                SuperInDefineMethodEval1,

                Backtrace1,
                Backtrace2,
                Backtrace3,
            };
        }
Пример #9
0
        public Tests(Driver/*!*/ driver) {
            _driver = driver;

            _methods = new Action[] {
                Scenario_Startup, // must be the first test
                Scenario_ParserLogging,
                Scenario_RubyTokenizer1,
                Identifiers1,
                Identifiers2,
                Scenario_ParseBigInts1,
                ParseIntegers1,
                Scenario_ParseNumbers1,
                Scenario_ParseInstanceClassVariables1,
                ParseGlobalVariables1,
                ParseEscapes1,
                ParseEolns1,
                Scenario_ParseRegex1,

                Scenario_RubyCategorizer1,
                Scenario_RubyNameMangling1,
                Scenario_RubyNameMangling2,

                OverloadResolution_Block,

                Scenario_RubySimpleCall1,
                Scenario_RubySimpleCall2, 
                Scenario_RubySimpleCall3, 
                Scenario_RubySimpleCall4, 
                Scenario_RubySimpleCall5, 

                NumericLiterals1,
                StringLiterals1,
                Escapes1,
                UnicodeEscapes1,
                UnicodeEscapes2,

                Heredoc1,
                Symbols1,
                UnicodeIdentifiers1,

                Encoding1,
                Encoding2,
                Encoding3,
                Encoding4,
                Encoding5,
                Encoding_Host1,
                Encoding_Host2,

                AstLocations1,

                Scenario_Globals1,

                Scenario_RubyMethodMissing1, 
                Scenario_RubyMethodMissing2, 
                Scenario_RubySingletonConstants1,
                Scenario_RubyMath1,

                StringsPlus,
                Strings0,
                Strings1,
                Strings2,
                Strings3,
                Strings4,
                Strings5,
                Strings6,
                Strings7,
                Strings8,
                ToSConversion1,
                ToSConversion2,

                Regex1,
                Regex2,
                RegexTransform1,
                RegexTransform2,
                RegexEscape1,
                RegexCondition1,
                RegexCondition2,
                
                Scenario_RubyScopeParsing,
                Scenario_RubyScopes1,
                Scenario_RubyScopes2A,
                Scenario_RubyScopes2B,
                Scenario_RubyScopes3,
                Scenario_RubyScopes4,
                Scenario_RubyScopes5,
                Scenario_RubyScopes6,

                Send1,
                
                AttributeAccessors1,
                AttributeAccessors2,
                
                Scenario_RubyDeclarations1,
                Scenario_RubyDeclarations1A,
                Scenario_RubyDeclarations1B,
                Scenario_RubyDeclarations1C,
                Scenario_RubyDeclarations2,
                Scenario_RubyDeclarations3,
                Scenario_RubyDeclarations4,
                Scenario_RubyInclusions1,
                Scenario_RubyClassVersions1,
                Scenario_RubyClassVersions2,
                InvokeMemberCache1,
                Scenario_RubyBlockExpressions1,
                
                Constants1A,
                Constants1B,
                ConstantNames,
                Constants3,
                Constants4,
                UnqualifiedConstants1,
                LoadAndGlobalConstants,
                GlobalConstantsInterop,
                
                Scenario_ClassVariables1,
                Scenario_ClassVariables2,
                Scenario_RubyLocals1,
                Scenario_MethodAliases1,
                Scenario_MethodAliases2,
                Scenario_MethodUndef1,
                Scenario_MethodUndef2,
                MethodUndefExpression,
                Scenario_Assignment1,
                SetterCallValue,
                SimpleInplaceAsignmentToIndirectLeftValues1,
                MemberAssignmentExpression1,
                MemberAssignmentExpression2,
                MemberAssignmentExpression3,

                Scenario_ParallelAssignment1,
                Scenario_ParallelAssignment2,
                Scenario_ParallelAssignment4,
                Scenario_ParallelAssignment5,
                Scenario_ParallelAssignment6,
                Scenario_ParallelAssignment7,
                Scenario_ParallelAssignment8,
                Scenario_ParallelAssignment9,
                Scenario_ParallelAssignment10,

                BlockEmpty,
                Scenario_RubyBlocks0,
                Scenario_RubyBlocks_Params1,
                Scenario_RubyBlocks_Params2,
                ProcYieldCaching1,
                ProcCallCaching1,
                ProcSelf1,
                Scenario_RubyBlocks2,
                Scenario_RubyBlocks3,
                Scenario_RubyBlocks5,
                Scenario_RubyBlocks6,
                Scenario_RubyBlocks7,
                Scenario_RubyBlocks8,
                Scenario_RubyBlocks9,
                Scenario_RubyBlocks10,
                Scenario_RubyBlocks11,
                Scenario_RubyBlocks12,
                Scenario_RubyBlocks13,
                Scenario_RubyBlocks14,
                Scenario_RubyBlocks15,
                Scenario_RubyBlocks16,
                Scenario_RubyBlocks17,
                BlockArity1,
                
                Scenario_RubyBlockArgs1,
                Scenario_RubyProcYieldArgs1,
                Scenario_RubyProcCallArgs1A,
                Scenario_RubyProcCallArgs1B,
                Scenario_RubyBlockArgs2,
                Scenario_RubyProcCallArgs2A,
                Scenario_RubyProcCallArgs2B,
                Scenario_RubyProcCallArgs2C,
                Scenario_RubyProcCallArgs2D,
                Scenario_RubyBlockArgs3,
                Scenario_RubyBlockArgs4A,
                Scenario_RubyBlockArgs4B,
                Scenario_RubyBlockArgs5,
                Scenario_RubyBlockArgs6,
                // TODO: Scenario_RubyBlockArgs7,
                Scenario_RubyBlockArgs8,
                Scenario_RubyBlockArgs9,
                Scenario_RubyBlockArgs10,
                Proc_RhsAndBlockArguments1,

                Scenario_RubyProcs1,
                RubyProcArgConversion1,
                RubyProcArgConversion2,
                RubyProcArgConversion3,
                RubyProcArgConversion4,
                ProcNew1,
                ProcNew2,
                DefineMethod1,
                DefineMethod2,
                
                Scenario_RubyInitializers0,
                Scenario_RubyInitializers1,
                Scenario_RubyInitializers2A,
                Scenario_RubyInitializers2B,
                Scenario_RubyInitializers3,
                Scenario_RubyInitializers4A,
                Scenario_RubyInitializers4B,
                Scenario_RubyInitializers4C,
                Scenario_RubyInitializers5,
                RubyInitializersCaching1,
                RubyInitializersCaching2,
                RubyAllocators1,

                Scenario_RubyForLoop1,
                // TODO: Python interop: Scenario_RubyForLoop2,
                Scenario_RubyWhileLoop1,
                Scenario_RubyWhileLoop2,
                Scenario_RubyWhileLoop3,
                Scenario_RubyWhileLoop4,
                Scenario_RubyWhileLoop5,
                Scenario_Rub
Пример #10
0
        public TestRuntime(Driver/*!*/ driver, TestCase/*!*/ testCase)
        {
            _driver = driver;
            _testName = testCase.Name;

            if (testCase.Options.NoRuntime) {
                return;
            }

            #if !WIN8
            if (_driver.SaveToAssemblies) {
                Environment.SetEnvironmentVariable("DLR_AssembliesFileName", _testName);
            }
            #endif
            _engine = _driver.CreateRubyEngine(testCase.Options.PrivateBinding, testCase.Options);
            _runtime = _engine.Runtime;
            _context = (RubyContext)HostingHelpers.GetLanguageContext(_engine);
        }
Пример #11
0
        public static int Run(List<string>/*!*/ args, string baseDirectory)
        {
            #if !WIN8
            if (Thread.CurrentThread.CurrentCulture.ToString() != "en-US") {
                WriteOutput("Current culture: {0}", Thread.CurrentThread.CurrentCulture);
            }
            #endif
            if (!ParseArguments(args)) {
                return -3;
            }

            #if !WIN8
            if (_runTokenizerDriver) {
                TokenizerTestDriver tokenizerDriver = new TokenizerTestDriver((RubyContext)HostingHelpers.GetLanguageContext(Ruby.CreateEngine()));
                if (!tokenizerDriver.ParseArgs(args)) {
                    return -3;
                }

                return tokenizerDriver.RunTests();
            }
            #endif
            InitializeDomain();
            Driver driver = new Driver(baseDirectory);

            if (Manual.TestCode.Trim().Length == 0) {
                return driver.RunUnitTests(args);
            }

            #if !WIN8
            driver.RunManualTest();
            #endif
            // for case the test is forgotten, this would fail the test suite:
            return -2;
        }