コード例 #1
0
        public void Should_Insert_Line_Directives_When_Processing_Load_Directives()
        {
            // Given
            var fixture = new ScriptAnalyzerFixture();

            fixture.AddFileLoadDirectiveProvider();
            fixture.GivenScriptExist("/Working/a.cake", "int x=0;\n#l b.cake\nint y=2;");
            fixture.GivenScriptExist("/Working/b.cake", "int z=1;\n#l c.cake\nint p=4;");
            fixture.GivenScriptExist("/Working/c.cake", "int o=3;\n#r d.dll");

            // When
            var result = fixture.Analyze("/Working/a.cake");

            // Then
            Assert.Equal(13, result.Lines.Count);
            Assert.Equal(result.Lines[0], "#line 1 \"/Working/a.cake\"");
            Assert.Equal(result.Lines[1], "int x=0;");
            Assert.Equal(result.Lines[2], "#line 1 \"/Working/b.cake\"");
            Assert.Equal(result.Lines[3], "int z=1;");
            Assert.Equal(result.Lines[4], "#line 1 \"/Working/c.cake\"");
            Assert.Equal(result.Lines[5], "int o=3;");
            Assert.Equal(result.Lines[6], "// #r d.dll");
            Assert.Equal(result.Lines[7], "#line 2 \"/Working/b.cake\"");
            Assert.Equal(result.Lines[8], "// #l c.cake");
            Assert.Equal(result.Lines[9], "int p=4;");
            Assert.Equal(result.Lines[10], "#line 2 \"/Working/a.cake\"");
            Assert.Equal(result.Lines[11], "// #l b.cake");
            Assert.Equal(result.Lines[12], "int y=2;");
        }
コード例 #2
0
        public void Should_Process_Single_Script_Reference_With_Any_Extension_Found_In_Source(string filename)
        {
            // Given
            var fixture = new ScriptAnalyzerFixture();

            fixture.AddFileLoadDirectiveProvider();
            fixture.GivenScriptExist("/Working/script.cake", $"#l \"{filename}\"");
            fixture.GivenScriptExist($"/Working/{filename}", "Console.WriteLine();");

            // When
            var result = fixture.Analyze("/Working/script.cake");

            // Then
            Assert.Equal(1, result.Script.Includes.Count);
            Assert.Equal($"/Working/{filename}", result.Script.Includes[0].Path.FullPath);
        }
コード例 #3
0
        public void Should_Process_Single_Script_Reference_With_Spaces_In_File_Name_Found_In_Source(string source)
        {
            // Given
            var fixture = new ScriptAnalyzerFixture();

            fixture.AddFileLoadDirectiveProvider();
            fixture.GivenScriptExist("/Working/script.cake", source);
            fixture.GivenScriptExist("/Working/test/my utils.cake", "Console.WriteLine();");

            // When
            var result = fixture.Analyze("/Working/script.cake");

            // Then
            Assert.Equal(1, result.Script.Includes.Count);
            Assert.Equal("/Working/test/my utils.cake", result.Script.Includes[0].Path.FullPath);
        }
コード例 #4
0
        public void Should_Ignore_Globber_Matches_With_Invalid_Extensions(string source)
        {
            // Given
            var fixture = new ScriptAnalyzerFixture();

            fixture.AddFileLoadDirectiveProvider();
            fixture.GivenScriptExist("/Working/bootstrap.cake", source);
            fixture.GivenScriptExist("/Working/scripts/utils.cs", "Console.WriteLine();");
            fixture.GivenScriptExist("/Working/scripts/other.kake", "Console.WriteLine();");

            // When
            var result = fixture.Analyze("/Working/bootstrap.cake");

            // Then
            Assert.Equal(0, result.Script.Includes.Count);
        }
コード例 #5
0
        public void Should_Process_Environment_Variable_Found_In_Source(string source)
        {
            // Given
            var fixture = new ScriptAnalyzerFixture();

            fixture.Environment.SetEnvironmentVariable("CAKE_TEST_SCRIPT_PATH", "test");
            fixture.AddFileLoadDirectiveProvider();
            fixture.GivenScriptExist("/Working/script.cake", source);
            fixture.GivenScriptExist("/Working/test/utils.cake", "Console.WriteLine();");

            // When
            var result = fixture.Analyze("/Working/script.cake");

            // Then
            Assert.Equal(1, result.Script.Includes.Count);
            Assert.Equal("/Working/test/utils.cake", result.Script.Includes[0].Path.FullPath);
        }
コード例 #6
0
            public void Should_Log_Error_Location_In_Loaded_Script()
            {
                // Given
                var fixture = new ScriptAnalyzerFixture();

                fixture.AddFileLoadDirectiveProvider();
                fixture.GivenScriptExist("/Working/script.cake", "#load \"local:?path=script2.cake\"");
                fixture.GivenScriptExist("/Working/script2.cake", "\n#load \"local:?path=1&path=2\"");

                // When
                var result = fixture.Analyze("/Working/script.cake");

                // Then
                Assert.Equal(6, result.Lines.Count);
                Assert.False(result.Succeeded);
                Assert.Equal(1, result.Errors.Count);
                Assert.Equal("/Working/script2.cake", result.Errors[0].File.FullPath);
                Assert.Equal(2, result.Errors[0].Line);
                Assert.Equal("Query string for #load contains more than one parameter 'path'.", result.Errors[0].Message);
            }
コード例 #7
0
            public void Should_Log_Error_Location()
            {
                // Given
                var fixture = new ScriptAnalyzerFixture();

                fixture.AddFileLoadDirectiveProvider();
                fixture.GivenScriptExist("/Working/script.cake", "#load \"local:?pat\"");

                // When
                var result = fixture.Analyze("/Working/script.cake");

                // Then
                Assert.Equal(2, result.Lines.Count);
                Assert.Equal("#line 1 \"/Working/script.cake\"", result.Lines[0]);
                Assert.Equal("// #load \"local:?pat\"", result.Lines[1]);
                Assert.False(result.Succeeded);
                Assert.Equal(1, result.Errors.Count);
                Assert.Equal("/Working/script.cake", result.Errors[0].File.FullPath);
                Assert.Equal(1, result.Errors[0].Line);
                Assert.Equal("Query string for #load is missing parameter 'path'.", result.Errors[0].Message);
            }