コード例 #1
0
        /// <summary>
        /// The command line program entry point.
        /// </summary>
        /// <param name="args">
        /// Command line arguments.
        /// </param>
        public static void Main(string[] args)
        {
            try
            {
                var commandLineArguments = new CommandLineArguments(args, new CompilationLevelHelper());

                if (!commandLineArguments.AreValid)
                {
                    return;
                }

                const string CompilerUrl = @"http://closure-compiler.appspot.com/compile";
                XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));

                var requestCompile = new RequestCompile(
                    commandLineArguments.FileName,
                    commandLineArguments.CompilationLevel,
                    CompilerUrl,
                    commandLineArguments.SuppressedWarnings);

                requestCompile.Run();
            }
            catch (Exception e)
            {
                Log.Info("An Error Occurred Running GoogleCC:");
                Log.Info(e.Message);
                Log.Info(e.StackTrace);
            }
        }
コード例 #2
0
        public void Command_Line_Arguments_Are_Invalid_When_Empty()
        {
            // Act
            var cla = new CommandLineArguments(new string[0], new CompilationLevelHelper());

            // Assert
            Assert.False(cla.AreValid);
        }
コード例 #3
0
        public void File_Name_Passed_As_Single_Argument_Is_Recognised()
        {
            // Arrange
            const string ExpectedFileName = "SomeFile.js";

            // Act
            var cu = new CommandLineArguments(new[] { ExpectedFileName }, new CompilationLevelHelper());

            // Assert
            Assert.Equal(ExpectedFileName, cu.FileName);
            Assert.True(cu.AreValid);
        }
コード例 #4
0
        public void File_Name_And_CompilationLevel_Passed_As_Arguments_Are_Recognised()
        {
            // Arrange
            const string ExpectedFileName = "SomeFile.js";
            const string ExpectedCompilationLevel = "W";
            var compilationArgument = string.Format("/C{0}", ExpectedCompilationLevel);
            var args = new[] { ExpectedFileName, compilationArgument };

            // Act
            var cu = new CommandLineArguments(args, new CompilationLevelHelper());

            // Assert
            Assert.Equal(args[0], cu.FileName);
            Assert.Equal(ExpectedCompilationLevel, cu.CompilationLevel);
            Assert.True(cu.AreValid);
        }
コード例 #5
0
        public void Invalid_CompilationLevel_Passed_As_Arguments_Is_Caught()
        {
            // Arrange
            const string ExpectedFileName = "SomeFile.js";
            var expectedCompilationLevel = Guid.NewGuid().ToString().ToUpper();
            var compilationArgument = string.Format("/C{0}", expectedCompilationLevel);
            var args = new[] { ExpectedFileName, compilationArgument };

            var compilationLevelHelperMock = new Mock<ICompilationLevelHelper>();
            compilationLevelHelperMock.Setup(m => m.IsValid(It.IsAny<string>())).Returns(false);

            // Act
            var cla = new CommandLineArguments(args, compilationLevelHelperMock.Object);

            // Assert
            Assert.False(cla.AreValid);
            compilationLevelHelperMock.Verify(m => m.IsValid(It.Is<string>(p => p == expectedCompilationLevel)), Times.Exactly(2));
        }
コード例 #6
0
        public void Usage_Instructions_Are_Emitted_As_Expected()
        {
            using (var sw = new StringWriter())
            {
                // Arrange
                Console.SetOut(sw);
                var expected = GetExpectedUseageInstructions();

                // Act
                var cla = new CommandLineArguments(new string[0], new CompilationLevelHelper());

                // Assert
                Assert.Equal(expected, sw.ToString());
            }

            ResetStdOut();
        }