Skip to content

Commit eda62cf

Browse files
committed
ignoring duplicate tests in deploy scripts
1 parent 5f577f9 commit eda62cf

File tree

9 files changed

+123
-12
lines changed

9 files changed

+123
-12
lines changed

AgileSQLClub.tSQLtTestController/TestClass.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,17 @@ public class FileScanner
1010
{
1111
private readonly TSqlParser _parser;
1212

13+
public FileScanner()
14+
{
15+
_parser = new TSql130Parser(true);
16+
}
17+
1318
public FileScanner(TSqlParser parser)
1419
{
1520
_parser = parser;
1621
}
1722

18-
public ScanResults ScanCode(string code, ScanResults results, string path)
23+
public virtual ScanResults ScanCode(string code, ScanResults results, string path)
1924
{
2025
var batches = code.Split(new[] {"\r\nGO\r\n", "\nGO\n"}, StringSplitOptions.None);
2126
var offset = 0;

Test/UnitTests/TestCacheTests.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using AgileSQLClub.tSQLtTestController;
7+
using Moq;
8+
using NUnit.Framework;
9+
using tSQLtTestAdapter;
10+
11+
namespace UnitTests
12+
{
13+
[TestFixture]
14+
public class TestCacheTests
15+
{
16+
[Test]
17+
public void DiscardsDuplicates()
18+
{
19+
var mockScanner = new Mock<FileScanner>();
20+
21+
mockScanner.Setup(p => p.ScanCode(It.IsAny<string>(), It.IsAny<ScanResults>(), It.IsAny<string>())).Returns((
22+
string a, ScanResults result, string b) =>
23+
{
24+
result.FoundClasses.Add(new SqlSchema("Schema", "PathA"));
25+
result.FoundClasses.Add(new SqlSchema("Schema", "PathB"));
26+
result.FoundClasses.Add(new SqlSchema("Schema", "PathB"));
27+
28+
result.FoundPotentialTests.Add(new SqlProcedure(new SqlObjectName() {Object = "test", Schema = "Schema"}, "Patha", 0, 100, 1));
29+
result.FoundPotentialTests.Add(new SqlProcedure(new SqlObjectName() { Object = "test", Schema = "Schema" }, "Pathb", 0, 100, 1));
30+
return result;
31+
});
32+
33+
var mockFileReader = new Mock<IFileReader>();
34+
mockFileReader.Setup(p => p.ReadAll(It.IsAny<string>())).Returns("Blah");
35+
mockFileReader.Setup(p => p.GetLastWriteTimeUtc(It.IsAny<string>())).Returns(DateTime.MaxValue);
36+
37+
var testCache = new TestCache(mockScanner.Object, mockFileReader.Object);
38+
testCache.AddPath("path");
39+
Assert.AreEqual(1, testCache.GetTests().Count);
40+
}
41+
}
42+
}

Test/UnitTests/UnitTests.csproj

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@
3030
<WarningLevel>4</WarningLevel>
3131
</PropertyGroup>
3232
<ItemGroup>
33+
<Reference Include="Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
34+
<HintPath>..\..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll</HintPath>
35+
<Private>True</Private>
36+
</Reference>
3337
<Reference Include="Microsoft.Data.Tools.Schema.Sql, Version=13.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
3438
<HintPath>..\..\packages\Microsoft.SqlServer.DacFx.x64.130.3411.1\lib\net40\Microsoft.Data.Tools.Schema.Sql.dll</HintPath>
3539
<Private>True</Private>
@@ -54,6 +58,10 @@
5458
<HintPath>..\..\packages\Microsoft.SqlServer.DacFx.x64.130.3411.1\lib\net40\Microsoft.SqlServer.Types.dll</HintPath>
5559
<Private>True</Private>
5660
</Reference>
61+
<Reference Include="Moq, Version=4.7.1.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
62+
<HintPath>..\..\packages\Moq.4.7.1\lib\net45\Moq.dll</HintPath>
63+
<Private>True</Private>
64+
</Reference>
5765
<Reference Include="nunit.framework, Version=3.2.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
5866
<HintPath>..\..\packages\NUnit.3.2.1\lib\net45\nunit.framework.dll</HintPath>
5967
<Private>True</Private>
@@ -69,6 +77,7 @@
6977
</ItemGroup>
7078
<ItemGroup>
7179
<Compile Include="FileScannerTests.cs" />
80+
<Compile Include="TestCacheTests.cs" />
7281
<Compile Include="tSQLtTestFinderTests.cs" />
7382
<Compile Include="Properties\AssemblyInfo.cs" />
7483
</ItemGroup>
@@ -80,6 +89,10 @@
8089
<Project>{35E9ACF7-2A97-4160-AB4E-42F4C4EA16CD}</Project>
8190
<Name>AgileSQLClub.tSQLtTestController</Name>
8291
</ProjectReference>
92+
<ProjectReference Include="..\..\XmlTestAdapter\tSQLtTestAdapter.csproj">
93+
<Project>{BC4B3BED-9241-4DD6-8070-A9B66DFC08C1}</Project>
94+
<Name>tSQLtTestAdapter</Name>
95+
</ProjectReference>
8396
</ItemGroup>
8497
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
8598
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

Test/UnitTests/packages.config

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3+
<package id="Castle.Core" version="4.0.0" targetFramework="net452" />
34
<package id="Microsoft.SqlServer.DacFx.x64" version="130.3411.1" targetFramework="net452" />
5+
<package id="Moq" version="4.7.1" targetFramework="net452" />
46
<package id="NUnit" version="3.2.1" targetFramework="net452" />
57
</packages>

XMLTestAdapterVSIX/source.extension.vsixmanifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
33
<Metadata>
4-
<Identity Id="AgileSQLClub.tSQLtTestAdapter" Version="0.63" Language="en-US" Publisher="EdElliott" />
4+
<Identity Id="AgileSQLClub.tSQLtTestAdapter" Version="0.67" Language="en-US" Publisher="EdElliott" />
55
<DisplayName>tSQLt Test Adapter</DisplayName>
66
<Description xml:space="preserve">Unit Test Adapter for tSQLt Tests</Description>
77
<MoreInfo>https://the.agilsql.club/projects/tSQLt-Test-Adapter</MoreInfo>

XmlTestAdapter/IFileReader.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using System;
2+
3+
namespace tSQLtTestAdapter
4+
{
5+
public interface IFileReader
6+
{
7+
DateTime GetLastWriteTimeUtc(string path);
8+
string ReadAll(string path);
9+
}
10+
}

XmlTestAdapter/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("0.0.0.2")]
36-
[assembly: AssemblyFileVersion("0.0.0.2")]
35+
[assembly: AssemblyVersion("0.0.0.3")]
36+
[assembly: AssemblyFileVersion("0.0.0.3")]

XmlTestAdapter/TestCache.cs

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,28 @@ public class TestCache
1212
private readonly Dictionary<string, DateTime> _dateCache = new Dictionary<string, DateTime>();
1313
private bool _haveChanges = true;
1414
private ScanResults _results = new ScanResults();
15-
private readonly FileScanner _scanner = new FileScanner(new TSql130Parser(false));
15+
private readonly FileScanner _scanner;
1616
private readonly List<TestClass> _tests = new List<TestClass>();
17+
private readonly IFileReader _fileReader;
18+
public TestCache()
19+
{
20+
_scanner = new FileScanner(new TSql130Parser(false));
21+
_fileReader = new FileReader();
22+
}
23+
24+
public TestCache(FileScanner probablyAMock, IFileReader anotherMock)
25+
{
26+
_scanner = probablyAMock;
27+
_fileReader = anotherMock;
28+
}
1729

1830

1931
public void AddPath(string path)
2032
{
21-
var date = File.GetLastWriteTimeUtc(path);
33+
var date = _fileReader.GetLastWriteTimeUtc(path);
2234
if (!_dateCache.ContainsKey(path) || date <= _dateCache[path])
2335
{
24-
_results = _scanner.ScanCode(File.ReadAllText(path), _results, path);
36+
_results = _scanner.ScanCode(_fileReader.ReadAll(path), _results, path);
2537
_haveChanges = true;
2638
}
2739
}
@@ -32,14 +44,21 @@ public List<TestClass> GetTests()
3244
{
3345
return _tests;
3446
}
35-
36-
var classes = new List<TestClass>();
3747

38-
var foundClasses =
48+
var foundClasses = new List<SqlSchema>();
49+
50+
foreach (var clazz in
3951
_results.FoundClasses.Where(
4052
p =>
4153
_results.FoundPotentialTests.Any(
42-
e => string.Equals(p.Name, e.Name.Schema, StringComparison.OrdinalIgnoreCase)));
54+
e => string.Equals(p.Name, e.Name.Schema, StringComparison.OrdinalIgnoreCase))))
55+
{
56+
if (foundClasses.All(p => p.Name != clazz.Name))
57+
{
58+
foundClasses.Add(clazz);
59+
}
60+
61+
}
4362

4463
var foundTests =
4564
_results.FoundPotentialTests.Where(
@@ -54,7 +73,7 @@ public List<TestClass> GetTests()
5473
var testClass = new TestClass();
5574
testClass.Name = cls.Name;
5675
testClass.Path = cls.Path;
57-
//testClass.Tests =
76+
5877
foreach (var test in foundTests.Where(p => string.Equals(p.Name.Schema, cls.Name, StringComparison.OrdinalIgnoreCase)))
5978
{
6079
testClass.Tests.Add(new Test {Name = test.Name.Object, Path = test.Path, Line = test.StartLine});
@@ -70,4 +89,23 @@ public List<TestClass> GetTests()
7089
return _tests;
7190
}
7291
}
92+
93+
public class FileReader : IFileReader
94+
{
95+
public FileReader()
96+
{
97+
98+
}
99+
100+
101+
public virtual string ReadAll(string path)
102+
{
103+
return File.ReadAllText(path);
104+
}
105+
106+
public virtual DateTime GetLastWriteTimeUtc(string path)
107+
{
108+
return File.GetLastWriteTimeUtc(path);
109+
}
110+
}
73111
}

XmlTestAdapter/tSQLtTestAdapter.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
<Compile Include="Helpers\TestFileChangedEventArgs.cs" />
107107
<Compile Include="Helpers\TestFilesUpdateWatcher.cs" />
108108
<Compile Include="Helpers\VsSolutionHelper.cs" />
109+
<Compile Include="IFileReader.cs" />
109110
<Compile Include="TestCache.cs" />
110111
<Compile Include="tSQLtTestContainer.cs" />
111112
<Compile Include="tSQLtTestContainerDiscoverer.cs" />

0 commit comments

Comments
 (0)