Skip to content

Commit

Permalink
Adjusting "Option to anonymize unknown public functions" (#2600)
Browse files Browse the repository at this point in the history
Avoids breaking change at
#2597.
  • Loading branch information
anderson-joyle authored Aug 19, 2024
1 parent fd52aff commit 6559d64
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 11 deletions.
9 changes: 7 additions & 2 deletions src/libraries/Microsoft.PowerFx.Core/Public/CheckResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -715,9 +715,14 @@ public CheckContextSummary ApplyGetContextSummary()
return summary;
}

public IEnumerable<string> GetFunctionNames(bool annonymizeUnknownPublicFunctions = false)
public IEnumerable<string> GetFunctionNames()
{
return ListFunctionVisitor.Run(ApplyParse(), annonymizeUnknownPublicFunctions);
return GetFunctionNames(false);
}

public IEnumerable<string> GetFunctionNames(bool anonymizeUnknownPublicFunctions)
{
return ListFunctionVisitor.Run(ApplyParse(), anonymizeUnknownPublicFunctions);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ internal class ListFunctionVisitor : IdentityTexlVisitor
private readonly Dictionary<string, string> _unknownFunctionNames = new Dictionary<string, string>();
private readonly bool _anonymizedUnknownPublicFunctions;

public static IEnumerable<string> Run(ParseResult parse, bool annonymizeUnknownPublicFunctions = false)
public static IEnumerable<string> Run(ParseResult parse, bool anonymizeUnknownPublicFunctions = false)
{
var visitor = new ListFunctionVisitor(annonymizeUnknownPublicFunctions);
var visitor = new ListFunctionVisitor(anonymizeUnknownPublicFunctions);
parse.Root.Accept(visitor);
return visitor._functionNames;
}

private ListFunctionVisitor(bool annonymizeUnknownPublicFunctions)
private ListFunctionVisitor(bool anonymizeUnknownPublicFunctions)
{
_anonymizedUnknownPublicFunctions = annonymizeUnknownPublicFunctions;
_anonymizedUnknownPublicFunctions = anonymizeUnknownPublicFunctions;
}

public override bool PreVisit(CallNode node)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class ListFunctionVisitorTests : PowerFxTest
[InlineData("Foo() + Abs(1) + Foo()", "$#CustomFunction1#$,Abs", true)]
[InlineData("true And true", "")]
[InlineData("If(true, Blank(),Error())", "If,Blank,Error")]
public void ListFunctionNamesTest(string expression, string expectedNames, bool annonymizeUnknownPublicFunctions = false)
public void ListFunctionNamesTest(string expression, string expectedNames, bool anonymizeUnknownPublicFunctions = false)
{
foreach (var textFirst in new bool[] { false, true })
{
Expand All @@ -27,7 +27,7 @@ public void ListFunctionNamesTest(string expression, string expectedNames, bool
expression = $"={expression}";
}

CheckFunctionNames(textFirst, expression, expectedNames, annonymizeUnknownPublicFunctions);
CheckFunctionNames(textFirst, expression, expectedNames, anonymizeUnknownPublicFunctions);
}
}

Expand All @@ -46,15 +46,15 @@ public void ListFunctionNamesErrorTest()
Assert.Throws<InvalidOperationException>(() => checkResult.GetFunctionNames());
}

private static void CheckFunctionNames(bool textFirst, string expression, string expectedNames, bool annonymizeUnknownPublicFunctions)
private static void CheckFunctionNames(bool textFirst, string expression, string expectedNames, bool anonymizeUnknownPublicFunctions)
{
var options = new ParserOptions() { TextFirst = textFirst };
var engine = new Engine();
var check = engine.Check(expression, options);
var checkResult = new CheckResult(engine).SetText(expression, options);

var functionsNames1 = check.GetFunctionNames(annonymizeUnknownPublicFunctions);
var functionsNames2 = checkResult.GetFunctionNames(annonymizeUnknownPublicFunctions);
var functionsNames1 = check.GetFunctionNames(anonymizeUnknownPublicFunctions);
var functionsNames2 = checkResult.GetFunctionNames(anonymizeUnknownPublicFunctions);

var actualNames1 = string.Join(",", functionsNames1);
var actualNames2 = string.Join(",", functionsNames2);
Expand Down

0 comments on commit 6559d64

Please sign in to comment.