Skip to content

Commit 4c6ec55

Browse files
committed
Improvements to handling of complaince files
1 parent caff8eb commit 4c6ec55

File tree

6 files changed

+54
-87
lines changed

6 files changed

+54
-87
lines changed

Compliance_Tests/CsFile.cs

Lines changed: 2 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,9 @@
1616

1717
namespace BH.Tests.Compliance
1818
{
19-
[TestFixture]
2019
[TestFixtureSource(nameof(TestMethods))]
21-
//[TestFixtureSource("TestFiles")]
2220
public class CsFile
2321
{
24-
//private SyntaxNode m_Node;
25-
26-
//public ComplianceTestBase2(string filePath) : base("TestFiles", typeof(string))
27-
//{
28-
// string file;
29-
// using (StreamReader sr = new StreamReader(filePath))
30-
// {
31-
// file = sr.ReadToEnd();
32-
// }
33-
34-
// m_Node = BH.Engine.Test.CodeCompliance.Convert.ToSyntaxTree(file, filePath).GetRoot();
35-
//}
36-
37-
public static IEnumerable<string> TestFiles()
38-
{
39-
var files = Setup.Query.InputParametersUpdatedFiles()?.Where(f => Path.GetExtension(f).Equals(".cs", StringComparison.OrdinalIgnoreCase));
40-
if(files != null)
41-
return files;
42-
43-
return GetCsFiles("");
44-
}
45-
4622
private MethodInfo m_Method;
4723

4824
public CsFile(string methodName)
@@ -74,8 +50,7 @@ private static SyntaxNode GetNode(string fileName)
7450
}
7551
}
7652

77-
//[TestCaseSource("TestMethods")]
78-
[TestCaseSource("TestFiles")]
53+
[TestCaseSource(typeof(BH.Tests.Setup.Query), nameof(BH.Tests.Setup.Query.TestFiles), new object[] {"cs"})]
7954
public void TestCompliance(string fileName)
8055
{
8156
SyntaxNode node = GetNode(fileName);
@@ -84,7 +59,7 @@ public void TestCompliance(string fileName)
8459
Assume.That(node != null);
8560
Assume.That(System.IO.Path.GetFileName(node.SyntaxTree.FilePath), Is.Not.EqualTo("AssemblyInfo.cs"), "Skipping AssemblyInfo.cs files.");
8661

87-
//Assume.That(method.GetCustomAttributes<ConditionAttribute>().Select(condition => condition.IPasses(node)), Is.All.True, $"Method {method.Name} is not applicable to be tested with the {node.SyntaxTree.FilePath}.");
62+
Assume.That(method.GetCustomAttributes<PathAttribute>().Select(condition => condition.IPasses(node)), Is.All.True, $"Method {method.Name} is not applicable to be tested with the {node.SyntaxTree.FilePath}.");
8863

8964
Assert.Multiple(() =>
9065
{
@@ -146,8 +121,6 @@ private static IEnumerable<TestFixtureData> TestMethods()
146121
if (m_checkMethods == null)
147122
m_checkMethods = new Dictionary<string, MethodInfo>();
148123

149-
150-
151124
foreach (var methodGroup in BH.Engine.Test.CodeCompliance.Query.AllChecks().Distinct().GroupBy(x => x.Name))
152125
{
153126
if(methodGroup.Count() == 1)
@@ -171,28 +144,6 @@ private static IEnumerable<TestFixtureData> TestMethods()
171144

172145
}
173146

174-
public static IEnumerable<string> GetCsFiles(string folder)
175-
{
176-
if(m_testFiles.TryGetValue(folder, out List<string> files))
177-
return files;
178-
lock (m_fileLock)
179-
{
180-
if (m_testFiles.TryGetValue(folder, out files))
181-
return files;
182-
183-
if (files == null)
184-
{
185-
files = Setup.Query.GetFiles(System.IO.Path.Combine(Setup.Query.CurrentRepoFolder(), folder), "*.cs", true).ToList();
186-
m_testFiles[folder] = files;
187-
}
188-
return files;
189-
}
190-
191-
}
192-
193-
private static Dictionary<string, List<string>> m_testFiles = new Dictionary<string, List<string>>();
194-
private static object m_fileLock = new object();
195-
196147
private static Func<object[], object> GetFunction(MethodInfo method)
197148
{
198149
Func<object[], object> fn;

Compliance_Tests/ProjectCompliance.cs

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace BH.Tests.Compliace
1515
public class ProjectCompliance
1616
{
1717

18-
[TestCaseSource("TestFiles")]
18+
[TestCaseSource(typeof(BH.Tests.Setup.Query), nameof(BH.Tests.Setup.Query.TestFiles), new object[] { "csproj" })]
1919
public void TestCompliance(string fileName)
2020
{
2121
TestResult result = BH.Engine.Test.CodeCompliance.Compute.CheckProjectFile(fileName);
@@ -28,36 +28,5 @@ public void TestCompliance(string fileName)
2828
if (result.Status == TestStatus.Warning)
2929
Assert.Warn($"{fileName}: {result.FullMessage(5, TestStatus.Warning)}");
3030
}
31-
32-
public static IEnumerable<string> TestFiles()
33-
{
34-
var files = Setup.Query.InputParametersUpdatedFiles()?.Where(f => Path.GetExtension(f).Equals(".csproj", StringComparison.OrdinalIgnoreCase));
35-
if (files != null)
36-
return files;
37-
38-
return GetCsprojFiles("");
39-
}
40-
41-
public static IEnumerable<string> GetCsprojFiles(string folder)
42-
{
43-
if (m_testFiles.TryGetValue(folder, out List<string> files))
44-
return files;
45-
lock (m_fileLock)
46-
{
47-
if (m_testFiles.TryGetValue(folder, out files))
48-
return files;
49-
50-
if (files == null)
51-
{
52-
files = Setup.Query.GetFiles(System.IO.Path.Combine(Setup.Query.CurrentRepoFolder(), folder), "*.csproj", true).ToList();
53-
m_testFiles[folder] = files;
54-
}
55-
return files;
56-
}
57-
58-
}
59-
60-
private static Dictionary<string, List<string>> m_testFiles = new Dictionary<string, List<string>>();
61-
private static object m_fileLock = new object();
6231
}
6332
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
C:\Github\StructuralEngineering_Toolkit

TestSetup_Engine/Query/CurrentFolder.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,20 @@ namespace BH.Tests.Setup
77
{
88
public static partial class Query
99
{
10-
11-
1210
public static string CurrentRepoFolder()
1311
{
1412
string currentDirectory = System.Environment.CurrentDirectory;
13+
14+
string localRunningPath = Directory.GetParent(currentDirectory).FullName;
15+
localRunningPath = Path.Combine(localRunningPath, "TestSetup_Engine", "LocalRunningFolder.txt");
16+
17+
if(File.Exists(localRunningPath))
18+
{
19+
string path = File.ReadAllText(localRunningPath);
20+
if(Directory.Exists(path))
21+
return path;
22+
}
23+
1524
string endFolder = "";
1625
int indexAdd = 0;
1726
if (currentDirectory.Contains(".ci"))
@@ -26,7 +35,7 @@ public static string CurrentRepoFolder()
2635
indexAdd = 1;
2736
}
2837

29-
string[] split = currentDirectory.Split(Path.DirectorySeparatorChar);
38+
string[] split = currentDirectory.Split(Path.DirectorySeparatorChar);
3039

3140
string folder = "";
3241

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
8+
namespace BH.Tests.Setup
9+
{
10+
public static partial class Query
11+
{
12+
public static IEnumerable<string> TestFiles(string fileEnding)
13+
{
14+
if (m_testFiles.TryGetValue(fileEnding, out List<string> files))
15+
return files;
16+
17+
lock (m_fileLock)
18+
{
19+
if (m_testFiles.TryGetValue(fileEnding, out files))
20+
return files;
21+
22+
files = Setup.Query.InputParametersUpdatedFiles()?.Where(f => Path.GetExtension(f).Equals(fileEnding, StringComparison.OrdinalIgnoreCase)).ToList();
23+
24+
if (files == null)
25+
{
26+
files = Setup.Query.GetFiles(Setup.Query.CurrentRepoFolder(), $"*.{fileEnding}", true).ToList();
27+
m_testFiles[fileEnding] = files;
28+
}
29+
return files;
30+
}
31+
32+
}
33+
34+
private static Dictionary<string, List<string>> m_testFiles = new Dictionary<string, List<string>>();
35+
private static object m_fileLock = new object();
36+
}
37+
}

UnitTest_Tests/UnitTestRunner.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public void RunDatadrivenUnitTest(string fileName, MethodBase method, TestData d
6969

7070
TestResult result = BH.Engine.UnitTest.Compute.CheckTest(method, data, -1);
7171

72-
Assert.That(result.Status, Is.EqualTo(oM.Test.TestStatus.Pass), $"The ut did not pass {result.FullMessage(3, oM.Test.TestStatus.Error)}");
72+
Assert.That(result.Status, Is.EqualTo(oM.Test.TestStatus.Pass), $"The unit test did not pass {result.FullMessage(3, oM.Test.TestStatus.Error)}");
7373

7474
Assert.Pass(result.FullMessage());
7575
}

0 commit comments

Comments
 (0)