From 05047c7c6b420afc602e5000322404d2a093ab91 Mon Sep 17 00:00:00 2001 From: Christoph Bergmeister Date: Sat, 17 Aug 2019 18:29:20 +0100 Subject: [PATCH 1/4] Fix logic to detect single-line pipeline --- Rules/UseConsistentIndentation.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Rules/UseConsistentIndentation.cs b/Rules/UseConsistentIndentation.cs index ecf726362..6ba4ee598 100644 --- a/Rules/UseConsistentIndentation.cs +++ b/Rules/UseConsistentIndentation.cs @@ -224,8 +224,8 @@ public override IEnumerable AnalyzeScript(Ast ast, string file { continue; } - bool pipelinesSpanOnlyOneLine = matchingPipeLineAstEnd.PipelineElements[0].Extent.StartLineNumber == - matchingPipeLineAstEnd.PipelineElements[matchingPipeLineAstEnd.PipelineElements.Count-1].Extent.StartLineNumber; + bool pipelinesSpanOnlyOneLine = matchingPipeLineAstEnd.PipelineElements[0].Extent.EndLineNumber == + matchingPipeLineAstEnd.PipelineElements[matchingPipeLineAstEnd.PipelineElements.Count-1].Extent.EndLineNumber; if (pipelinesSpanOnlyOneLine) { continue; From eb8a87450423f64080233944b3f26960350495e2 Mon Sep 17 00:00:00 2001 From: Christoph Bergmeister Date: Sat, 17 Aug 2019 18:39:11 +0100 Subject: [PATCH 2/4] combine statements to not break other cases --- Rules/UseConsistentIndentation.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Rules/UseConsistentIndentation.cs b/Rules/UseConsistentIndentation.cs index 6ba4ee598..ef12c7a76 100644 --- a/Rules/UseConsistentIndentation.cs +++ b/Rules/UseConsistentIndentation.cs @@ -224,8 +224,10 @@ public override IEnumerable AnalyzeScript(Ast ast, string file { continue; } - bool pipelinesSpanOnlyOneLine = matchingPipeLineAstEnd.PipelineElements[0].Extent.EndLineNumber == - matchingPipeLineAstEnd.PipelineElements[matchingPipeLineAstEnd.PipelineElements.Count-1].Extent.EndLineNumber; + var firstPipelineElementExtent = matchingPipeLineAstEnd.PipelineElements[0].Extent; + var lastPipelineElementExtent = matchingPipeLineAstEnd.PipelineElements[matchingPipeLineAstEnd.PipelineElements.Count - 1].Extent; + bool pipelinesSpanOnlyOneLine = firstPipelineElementExtent.EndLineNumber == lastPipelineElementExtent.EndLineNumber + || firstPipelineElementExtent.StartLineNumber == lastPipelineElementExtent.StartLineNumber; if (pipelinesSpanOnlyOneLine) { continue; From cc8bf1697502a101da6ecd824e2082232bdb22fb Mon Sep 17 00:00:00 2001 From: Christoph Bergmeister Date: Sat, 17 Aug 2019 18:50:41 +0100 Subject: [PATCH 3/4] Add test --- Tests/Rules/UseConsistentIndentation.tests.ps1 | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Tests/Rules/UseConsistentIndentation.tests.ps1 b/Tests/Rules/UseConsistentIndentation.tests.ps1 index b78039a56..1503b8bd8 100644 --- a/Tests/Rules/UseConsistentIndentation.tests.ps1 +++ b/Tests/Rules/UseConsistentIndentation.tests.ps1 @@ -209,6 +209,24 @@ function foo { Invoke-Formatter -ScriptDefinition $idempotentScriptDefinition -Settings $settings | Should -Be $idempotentScriptDefinition } + It "Should preserve script when using PipelineIndentation for multi-line pipeline due to backtick" -TestCases @( + @{ PipelineIndentation = 'IncreaseIndentationForFirstPipeline' } + @{ PipelineIndentation = 'IncreaseIndentationAfterEveryPipeline' } + @{ PipelineIndentation = 'NoIndentation' } + ) { + param ($PipelineIndentation) + $idempotentScriptDefinition = @' +Describe 'describe' { + It 'it' { + { 'To be,' -or ` + -not 'to be' } | Should -Be 'the question' + } +} +'@ + $settings.Rules.PSUseConsistentIndentation.PipelineIndentation = $PipelineIndentation + Invoke-Formatter -ScriptDefinition $idempotentScriptDefinition -Settings $settings | Should -Be $idempotentScriptDefinition +} + It "Should indent pipelines correctly using NoIndentation option" { $def = @' foo | From 518913abb7d6cbf865f5404b36358a97858defd1 Mon Sep 17 00:00:00 2001 From: "Christoph Bergmeister [MVP]" Date: Mon, 19 Aug 2019 21:05:25 +0100 Subject: [PATCH 4/4] Apply suggestions from code review Co-Authored-By: Robert Holt --- Rules/UseConsistentIndentation.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Rules/UseConsistentIndentation.cs b/Rules/UseConsistentIndentation.cs index ef12c7a76..b297b2ccc 100644 --- a/Rules/UseConsistentIndentation.cs +++ b/Rules/UseConsistentIndentation.cs @@ -224,8 +224,8 @@ public override IEnumerable AnalyzeScript(Ast ast, string file { continue; } - var firstPipelineElementExtent = matchingPipeLineAstEnd.PipelineElements[0].Extent; - var lastPipelineElementExtent = matchingPipeLineAstEnd.PipelineElements[matchingPipeLineAstEnd.PipelineElements.Count - 1].Extent; + IScriptExtent firstPipelineElementExtent = matchingPipeLineAstEnd.PipelineElements[0].Extent; + IScriptExtent lastPipelineElementExtent = matchingPipeLineAstEnd.PipelineElements[matchingPipeLineAstEnd.PipelineElements.Count - 1].Extent; bool pipelinesSpanOnlyOneLine = firstPipelineElementExtent.EndLineNumber == lastPipelineElementExtent.EndLineNumber || firstPipelineElementExtent.StartLineNumber == lastPipelineElementExtent.StartLineNumber; if (pipelinesSpanOnlyOneLine)