Exemple #1
0
 ScriptCSSession(IScriptEngine engine, ScriptPackSession scriptPackSession, CurrentCmdletScriptPack currentCmdletScriptPack, CurrentLogger logger)
 {
     _engine                  = engine;
     _scriptPackSession       = scriptPackSession;
     _currentCmdletScriptPack = currentCmdletScriptPack;
     _logger                  = logger;
 }
        public void CanPushCustomCmdletContext()
        {
            var pack          = new CurrentCmdletScriptPack();
            var cmdletContext = pack.GetContext() as ScriptCS.CurrentCmdletContext;

            Assert.NotNull(cmdletContext);

            var mock = new Mock <ICmdletContext>();

            mock.Setup(c => c.GetVariableValue("test"))
            .Returns("ok")
            .Verifiable();

            ICmdletContext context = mock.Object;

            object result = null;

            Assert.Equal(cmdletContext, pack.GetContext());
            using (pack.CreateActiveCmdletSession(context))
            {
                Assert.Equal <object>(context, cmdletContext.ActiveCmdletContext);
                result = cmdletContext.GetVariableValue("test");
            }

            Assert.Equal("ok", result);
            mock.Verify();
        }
        public void DefaultCmdletContextDoesNothing()
        {
            var pack = new CurrentCmdletScriptPack();


            AssertNullCmdletContextBehavior(pack);
        }
 ScriptCSSession( IScriptEngine engine, ScriptPackSession scriptPackSession, CurrentCmdletScriptPack currentCmdletScriptPack, CurrentLogger logger)
 {
     _engine = engine;
     _scriptPackSession = scriptPackSession;
     _currentCmdletScriptPack = currentCmdletScriptPack;
     _logger = logger;
 }
Exemple #5
0
        static public ScriptCSSession Create(Cmdlet cmdlet)
        {
            ScriptCSSession session = null;
            var             logger  = new CurrentLogger();

            using (logger.CreateActiveLoggerSession(new CmdletLogger(cmdlet)))
            {
                IScriptHostFactory factory = new ScriptHostFactory();
                var engine = new RoslynScriptEngine(factory, logger);
                engine.BaseDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                var currentCmdletScriptPack = new CurrentCmdletScriptPack();
                var scriptPackSession       = new ScriptPackSession(new IScriptPack[] { currentCmdletScriptPack });
                scriptPackSession.InitializePacks();

                session = new ScriptCSSession(engine, scriptPackSession, currentCmdletScriptPack, logger);
            }

            return(session);
        }
        public static ScriptCSSession Create(Cmdlet cmdlet)
        {
            ScriptCSSession session = null;
            var logger = new CurrentLogger();

            using (logger.CreateActiveLoggerSession(new CmdletLogger(cmdlet)))
            {
                IScriptHostFactory factory = new ScriptHostFactory();
                var engine = new RoslynScriptEngine(factory, logger);
                engine.BaseDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                var currentCmdletScriptPack = new CurrentCmdletScriptPack();
                var scriptPackSession = new ScriptPackSession(new IScriptPack[] { currentCmdletScriptPack });
                scriptPackSession.InitializePacks();

                session = new ScriptCSSession( engine, scriptPackSession, currentCmdletScriptPack, logger );
            }

            return session;
        }
        public void CanPopCustomCmdletContext()
        {
            var mock = new Mock<ICmdletContext>();
            mock.Setup(c => c.GetVariableValue("test"))
                   .Returns("ok")
                   .Verifiable();

            ICmdletContext context = mock.Object;

            var pack = new CurrentCmdletScriptPack();
            var cmdletContext = pack.GetContext() as ScriptCS.CurrentCmdletContext;
            Assert.NotNull(cmdletContext);

            using (pack.CreateActiveCmdletSession(context))
            {
                var result = cmdletContext.GetVariableValue("test");
                Assert.Equal("ok", result);
                mock.Verify();
            }

            AssertNullCmdletContextBehavior( pack );
        }
        private static void AssertNullCmdletContextBehavior(CurrentCmdletScriptPack pack)
        {
            var cmdletContext = pack.GetContext() as ScriptCS.CurrentCmdletContext;
            Assert.NotNull(cmdletContext);

            var path = cmdletContext.GetUnresolvedProviderPathFromPSPath("nullpath");
            Assert.Equal(null, path);

            path = cmdletContext.GetResourceString("basename", "resourceid");
            Assert.Equal(null, path);

            ProviderInfo pi = null;
            var paths = cmdletContext.GetResolvedProviderPathFromPSPath("nullpath", out pi);
            Assert.Equal(null, paths);
            Assert.Equal(null, pi);

            var pathLocation = cmdletContext.CurrentProviderLocation("nullpath");
            Assert.Null(pathLocation);

            Assert.Null(cmdletContext.CurrentPSTransaction);
            Assert.Null(cmdletContext.CommandRuntime);
            Assert.Null(cmdletContext.Events);
            Assert.Null(cmdletContext.CommandRuntime);
            Assert.Equal(CommandOrigin.Runspace, cmdletContext.CommandOrigin);
            Assert.Null(cmdletContext.Host);
            Assert.Null(cmdletContext.Input);
            Assert.Null(cmdletContext.InvokeCommand);
            Assert.Null(cmdletContext.InvokeProvider);
            Assert.Null(cmdletContext.JobRepository);
            Assert.Null(cmdletContext.MyInvocation);
            Assert.Null(cmdletContext.ParameterSetName);
            Assert.Null(cmdletContext.SessionState);
            Assert.False(cmdletContext.Stopping);

            var result = cmdletContext.ShouldContinue("query", "caption");
            Assert.False(result);
            result = cmdletContext.ShouldContinue("query", "caption", ref result, ref result);
            Assert.False(result);
            result = cmdletContext.ShouldProcess("target");
            Assert.False(result);
            result = cmdletContext.ShouldProcess("target", "action");
            Assert.False(result);
            result = cmdletContext.ShouldProcess("target", "action", "warn");
            Assert.False(result);
            ShouldProcessReason reason;
            result = cmdletContext.ShouldProcess("target", "action", "warn", out reason);
            Assert.False(result);
            Assert.Equal(ShouldProcessReason.None, reason);

            cmdletContext.ThrowTerminatingError(new ErrorRecord(new ApplicationException(), "id", ErrorCategory.CloseError, null));

            Assert.False(cmdletContext.TransactionAvailable());

            cmdletContext.WriteCommandDetail("asdf");
            cmdletContext.WriteDebug("asdf");
            cmdletContext.WriteError(new ErrorRecord(new ApplicationException(), "id", ErrorCategory.CloseError, null));
            cmdletContext.WriteObject(new object());
            cmdletContext.WriteProgress(new ProgressRecord(0, "activity", "desc"));
            cmdletContext.WriteVerbose("asdf");
            cmdletContext.WriteWarning("asdf");

            var value = cmdletContext.GetVariableValue("test");
            Assert.Equal(null, value);
        }
        public void DefaultCmdletContextDoesNothing()
        {
            var pack = new CurrentCmdletScriptPack();

            AssertNullCmdletContextBehavior(pack);
        }
        private static void AssertNullCmdletContextBehavior(CurrentCmdletScriptPack pack)
        {
            var cmdletContext = pack.GetContext() as ScriptCS.CurrentCmdletContext;

            Assert.NotNull(cmdletContext);

            var path = cmdletContext.GetUnresolvedProviderPathFromPSPath("nullpath");

            Assert.Equal(null, path);

            path = cmdletContext.GetResourceString("basename", "resourceid");
            Assert.Equal(null, path);

            ProviderInfo pi    = null;
            var          paths = cmdletContext.GetResolvedProviderPathFromPSPath("nullpath", out pi);

            Assert.Equal(null, paths);
            Assert.Equal(null, pi);

            var pathLocation = cmdletContext.CurrentProviderLocation("nullpath");

            Assert.Null(pathLocation);

            Assert.Null(cmdletContext.CurrentPSTransaction);
            Assert.Null(cmdletContext.CommandRuntime);
            Assert.Null(cmdletContext.Events);
            Assert.Null(cmdletContext.CommandRuntime);
            Assert.Equal(CommandOrigin.Runspace, cmdletContext.CommandOrigin);
            Assert.Null(cmdletContext.Host);
            Assert.Null(cmdletContext.Input);
            Assert.Null(cmdletContext.InvokeCommand);
            Assert.Null(cmdletContext.InvokeProvider);
            Assert.Null(cmdletContext.JobRepository);
            Assert.Null(cmdletContext.MyInvocation);
            Assert.Null(cmdletContext.ParameterSetName);
            Assert.Null(cmdletContext.SessionState);
            Assert.False(cmdletContext.Stopping);

            var result = cmdletContext.ShouldContinue("query", "caption");

            Assert.False(result);
            result = cmdletContext.ShouldContinue("query", "caption", ref result, ref result);
            Assert.False(result);
            result = cmdletContext.ShouldProcess("target");
            Assert.False(result);
            result = cmdletContext.ShouldProcess("target", "action");
            Assert.False(result);
            result = cmdletContext.ShouldProcess("target", "action", "warn");
            Assert.False(result);
            ShouldProcessReason reason;

            result = cmdletContext.ShouldProcess("target", "action", "warn", out reason);
            Assert.False(result);
            Assert.Equal(ShouldProcessReason.None, reason);

            cmdletContext.ThrowTerminatingError(new ErrorRecord(new ApplicationException(), "id", ErrorCategory.CloseError, null));

            Assert.False(cmdletContext.TransactionAvailable());

            cmdletContext.WriteCommandDetail("asdf");
            cmdletContext.WriteDebug("asdf");
            cmdletContext.WriteError(new ErrorRecord(new ApplicationException(), "id", ErrorCategory.CloseError, null));
            cmdletContext.WriteObject(new object());
            cmdletContext.WriteProgress(new ProgressRecord(0, "activity", "desc"));
            cmdletContext.WriteVerbose("asdf");
            cmdletContext.WriteWarning("asdf");

            var value = cmdletContext.GetVariableValue("test");

            Assert.Equal(null, value);
        }