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;"); }
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); }
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); }
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); }
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); }
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); }
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); }