public async Task GetCorrectProfilePaths()
        {
            using var kernel = new PowerShellKernel().UseProfiles();

            // Set variables we will retrieve later.
            await kernel.SubmitCodeAsync("$currentUserCurrentHost = $PROFILE.CurrentUserCurrentHost");

            await kernel.SubmitCodeAsync("$allUsersCurrentHost = $PROFILE.AllUsersCurrentHost");

            kernel.TryGetVariable("currentUserCurrentHost", out object profileObj).Should().BeTrue();
            profileObj.Should().BeOfType <string>();
            string currentUserCurrentHost = profileObj.As <string>();

            // Get $PROFILE default.
            kernel.TryGetVariable("PROFILE", out profileObj).Should().BeTrue();
            profileObj.Should().BeOfType <string>();
            string profileDefault = profileObj.As <string>();

            // Check that $PROFILE is not null or empty and it is the same as
            // $PROFILE.CurrentUserCurrentHost
            profileDefault.Should().NotBeNullOrEmpty();
            profileDefault.Should().Be(currentUserCurrentHost);

            kernel.TryGetVariable("allUsersCurrentHost", out profileObj).Should().BeTrue();
            profileObj.Should().BeOfType <string>();
            string allUsersCurrentHost = profileObj.As <string>();

            // Check that $PROFILE.AllUsersCurrentHost is what we expect it is:
            // $PSHOME + Microsoft.dotnet-interactive_profile.ps1
            allUsersCurrentHost.Should().Be(_allUsersCurrentHostProfilePath);
        }
 public static PowerShellKernel UseJupyterHelpers(
     this PowerShellKernel kernel)
 {
     kernel.ReadInput    = TopLevelMethods.input;
     kernel.ReadPassword = TopLevelMethods.password;
     return(kernel);
 }
Beispiel #3
0
        internal PSKernelHostUserInterface(PowerShellKernel powerShellKernel)
        {
            _powerShellKernel = powerShellKernel ?? throw new ArgumentNullException(nameof(powerShellKernel));

            _rawUI        = new PSKernelHostRawUserInterface();
            _instanceLock = new object();
        }
 internal PSKernelHost(PowerShellKernel powerShell)
 {
     _powerShell        = powerShell ?? throw new ArgumentNullException(nameof(powerShell));
     _hostVersion       = new Version("0.0.1");
     _instanceId        = Guid.NewGuid();
     _ui                = new PSKernelHostUserInterface(_powerShell);
     _consoleColorProxy = PSObject.AsPSObject(new ConsoleColorProxy(_ui));
 }
        public async Task TryGetVariable_unwraps_PowerShell_object(string code, Type expectedType)
        {
            using var kernel = new PowerShellKernel();

            await kernel.SubmitCodeAsync(code);

            kernel.TryGetVariable("x", out object fi).Should().BeTrue();

            fi.Should().BeOfType(expectedType);
        }
Beispiel #6
0
        public static PowerShellKernel UseVSCodeHelpers(this PowerShellKernel kernel)
        {
            kernel.ReadInput    = prompt => Task.Run(() => VSCodeInteractiveHost.GetInputAsync(prompt: prompt)).Result;
            kernel.ReadPassword = prompt =>
            {
                var value = Task.Run(() => VSCodeInteractiveHost.GetInputAsync(prompt: prompt, isPassword: true)).Result;
                return(new PasswordString(value));
            };

            return(kernel);
        }
        protected JupyterRequestHandlerTestBase(ITestOutputHelper output)
        {
            _disposables.Add(output.SubscribeToPocketLogger());
            _cSharpKernel = new CSharpKernel()
                            .UseNugetDirective()
                            .UseDefaultFormatting()
                            .UseKernelHelpers()
                            .UseJupyterHelpers()
                            .UseMathAndLaTeX();

            _fSharpKernel = new FSharpKernel()
                            .UseNugetDirective()
                            .UseDefaultFormatting()
                            .UseKernelHelpers()
                            .UseDefaultNamespaces()
                            .UseMathAndLaTeX();

            _psKernel = new PowerShellKernel()
                        .UseJupyterHelpers();

            _compositeKernel = new CompositeKernel
            {
                _cSharpKernel,
                _fSharpKernel,
                _psKernel,
                new HtmlKernel(),
                new JavaScriptKernel()
            }
            .UseDefaultMagicCommands();

            SetKernelLanguage(Language.CSharp);
            _compositeKernel.Name = ".NET";

            Kernel = _compositeKernel;

            JupyterMessageSender = new RecordingJupyterMessageSender();

            _disposables.Add(_compositeKernel);
            _disposables.Add(Kernel.LogEventsToPocketLogger());
        }
        public async Task VerifyAllUsersProfileRuns()
        {
            var randomVariableName = Path.GetRandomFileName().Split('.')[0];

            File.WriteAllText(_allUsersCurrentHostProfilePath, $"$global:{randomVariableName} = $true");

            try
            {
                using var kernel = new PowerShellKernel().UseProfiles();

                // trigger first time setup.
                await kernel.SubmitCodeAsync("Get-Date");

                kernel.TryGetVariable(randomVariableName, out object profileObj).Should().BeTrue();

                profileObj.Should().BeOfType <bool>();
                profileObj.As <bool>().Should().BeTrue();
            }
            finally
            {
                File.Delete(_allUsersCurrentHostProfilePath);
            }
        }