コード例 #1
0
 public void Initialize()
 {
     fileSystemMock = new Mock <IFileSystem>();
     tester         = new TesterIOConsole();
     io             = tester.Mock();
     installer      = new InstallerBinary(io, "vendor/bin", "auto", fileSystemMock.Object);
 }
コード例 #2
0
        public void TestDetermineBinaryCallerWithUsrBinEnv()
        {
            fileSystemMock.Setup((o) => o.Read("foo"))
            .Returns(() => "#!/usr/bin/env sh".ToStream());

            Assert.AreEqual("sh", InstallerBinary.DetermineBinaryCaller("foo", fileSystemMock.Object));
        }
コード例 #3
0
ファイル: EventDispatcher.cs プロジェクト: yekoufeng/bucket
        /// <summary>
        /// Execution script command.
        /// </summary>
        protected internal virtual void ExecuteScript(string callable, object sender, BucketEventArgs eventArgs)
        {
            var args = string.Join(Str.Space, Arr.Map(eventArgs.GetArguments(), ProcessExecutor.Escape));
            var exec = callable + (string.IsNullOrEmpty(args) ? string.Empty : (Str.Space + args));

            if (io.IsVerbose)
            {
                io.WriteError($"> {eventArgs.Name}: {exec}");
            }
            else
            {
                io.WriteError($"> {exec}");
            }

            var possibleLocalBinaries = bucket.GetPackage().GetBinaries() ?? Array.Empty <string>();

            foreach (var localBinary in possibleLocalBinaries)
            {
                if (!Regex.IsMatch(localBinary, $"\\b{Regex.Escape(callable)}$"))
                {
                    continue;
                }

                var caller = InstallerBinary.DetermineBinaryCaller(localBinary, fileSystem);
                exec = Regex.Replace(exec, $"^{Regex.Escape(callable)}", $"{caller} {localBinary}");
            }

            var exitCode = process.Execute(exec, out string stdout, out string stderr);

            if (exitCode != ExitCodes.Normal)
            {
                io.WriteError($"<error>Script \"{callable}\" handling the \"{eventArgs.Name}\" event returned with error code: {exitCode}</error>", verbosity: Verbosities.Quiet);
                throw new ScriptExecutionException($"Error Output: {stderr}", exitCode);
            }

            if (io.IsDebug)
            {
                io.WriteError(stdout);
            }
        }
コード例 #4
0
 public void TestDetermineBinaryCaller()
 {
     Assert.AreEqual("call", InstallerBinary.DetermineBinaryCaller("foo.exe"));
     Assert.AreEqual("call", InstallerBinary.DetermineBinaryCaller("foo.bat"));
     Assert.AreEqual("dotnet", InstallerBinary.DetermineBinaryCaller("foo.bar"));
 }