コード例 #1
0
            public void ErrorContainsCorrectLineNumbers()
            {
                // Given
                RemoveListener();
                Configurator configurator = GetConfigurator();
                const string configScript = @"
int z = 0;

foo bar;
";

                // When
                ScriptCompilationException exception = null;

                try
                {
                    configurator.Configure(configScript);
                }
                catch (ScriptCompilationException ex)
                {
                    exception = ex;
                }

                // Then
                exception.ErrorMessages.Count.ShouldBe(1);
                exception.ErrorMessages[0].ShouldStartWith("Line 4");
            }
コード例 #2
0
            public void ErrorAfterLambdaExpansionOnNewLineContainsCorrectLineNumbers()
            {
                // Given
                RemoveListener();
                Configurator configurator = GetConfigurator();
                const string configScript = @"
Pipelines.Add(
    Content(
        @doc.Bool(""Key"") == false
    )
);

foo bar;
";

                // When
                ScriptCompilationException exception = null;

                try
                {
                    configurator.Configure(configScript);
                }
                catch (ScriptCompilationException ex)
                {
                    exception = ex;
                }

                // Then
                exception.ErrorMessages.Count.ShouldBe(1);
                exception.ErrorMessages[0].ShouldStartWith("Line 8");
            }
コード例 #3
0
ファイル: ConfiguratorFixture.cs プロジェクト: olevett/Wyam-1
            public void ErrorAfterLambdaExpansionContainsCorrectLineNumbers()
            {
                // Given
                RemoveListener();
                Configurator configurator = GetConfigurator();
                string       configScript = @"
Pipelines.Add(
    Content(true
        && @doc.Bool(""Key"") == false
    )
);

foo bar;
";

                // When
                ScriptCompilationException exception = null;

                try
                {
                    configurator.Configure(configScript);
                }
                catch (ScriptCompilationException ex)
                {
                    exception = ex;
                }

                // Then
                Assert.AreEqual(1, exception.ErrorMessages.Count);
                StringAssert.StartsWith("Line 8", exception.ErrorMessages[0]);
            }
コード例 #4
0
ファイル: ConfiguratorFixture.cs プロジェクト: olevett/Wyam-1
            public void ErrorContainsCorrectLineNumbers()
            {
                // Given
                RemoveListener();
                Configurator configurator = GetConfigurator();
                string       configScript = @"
int z = 0;

foo bar;
";

                // When
                ScriptCompilationException exception = null;

                try
                {
                    configurator.Configure(configScript);
                }
                catch (ScriptCompilationException ex)
                {
                    exception = ex;
                }

                // Then
                Assert.AreEqual(1, exception.ErrorMessages.Count);
                StringAssert.StartsWith("Line 4", exception.ErrorMessages[0]);
            }
コード例 #5
0
            public void ErrorAfterLambdaExpansionWithArgumentSeparatorNewLinesContainsCorrectLineNumbers()
            {
                // Given
                RemoveListener();
                Configurator configurator = GetConfigurator();
                string       configScript = @"
Pipelines.Add(
    If(
        @doc.Get<bool>(""Key""),
        Content(""Baz"")
    )
);

foo bar;
";

                // When
                ScriptCompilationException exception = null;

                try
                {
                    configurator.Configure(configScript);
                }
                catch (ScriptCompilationException ex)
                {
                    exception = ex;
                }

                // Then
                Assert.AreEqual(1, exception.ErrorMessages.Count);
                StringAssert.StartsWith("Line 9", exception.ErrorMessages[0]);
            }
コード例 #6
0
        public async void CompilationService_TestDuplicateEntryPoints(ScriptErrorType errorType)
        {
            EntityMetadata metadata = ScriptTestDataHelper.GetRandomMetadata();

            metadata.ScriptText = ScriptTestDataHelper.GetInvalidCsxScript(errorType);

            var          serviceInstance = CompilationServiceFactory.CreateService(metadata, ScriptOptions.Default);
            ICompilation compilation     = await serviceInstance.GetCompilationAsync();

            ScriptCompilationException ex = Assert.Throws <ScriptCompilationException>(() =>
            {
                EntityMethodSignature methodSignature = compilation.GetEntryPointSignature();
            });

            Assert.NotEmpty(ex.CompilationOutput);
        }
コード例 #7
0
        public async void EntityInvoker_TestInvokeWithCompilationError(ScriptErrorType errorType)
        {
            EntityMetadata metadata = ScriptTestDataHelper.GetRandomMetadata();

            metadata.ScriptText = ScriptTestDataHelper.GetInvalidCsxScript(errorType);

            using (EntityInvoker invoker = new EntityInvoker(metadata, ImmutableArray.Create <string>()))
            {
                ScriptCompilationException ex = await Assert.ThrowsAsync <ScriptCompilationException>(async() =>
                {
                    await invoker.InitializeEntryPointAsync();
                    int result = (int)await invoker.Invoke(new object[] { 3 });
                    Assert.Equal(9, result);
                });

                Assert.NotEmpty(ex.CompilationOutput);
            }
        }
コード例 #8
0
        private static object CompileScript(IOperationTracker operationTracker, string scriptFilePath, string script)
        {
            Log.InfoFormat("Compiling '{0}'...", scriptFilePath);

            var evaluator = CSScript.Evaluator;

            evaluator.ReferenceAssembly(typeof(INode).Assembly);

            var operation = operationTracker.BeginCompileScript(scriptFilePath);

            try
            {
                var tmp = evaluator.LoadCode(script);
                operation.Success();
                return(tmp);
            }
            catch (CompilerException e)
            {
                var tmp = new ScriptCompilationException(scriptFilePath, e);
                operation.Failed(e);
                throw tmp;
            }
        }