diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/App.config b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/App.config
deleted file mode 100644
index 51aef07..0000000
--- a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/App.config
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Cayan.Tool.SqlProjScanner.ConsoleApp.Test.csproj b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Cayan.Tool.SqlProjScanner.ConsoleApp.Test.csproj
index ca32b5f..3ae911d 100644
--- a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Cayan.Tool.SqlProjScanner.ConsoleApp.Test.csproj
+++ b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Cayan.Tool.SqlProjScanner.ConsoleApp.Test.csproj
@@ -1,89 +1,18 @@
-
-
-
-
+
+
- Debug
- AnyCPU
- {5D8B4098-A3E8-4FFF-B345-B116D3EB5AA8}
- Library
- Properties
- Cayan.Tool.SqlProjScanner.ConsoleApp.Test
- Cayan.Tool.SqlProjScanner.ConsoleApp.Test
- v4.8
- 512
- true
-
-
-
+ net6.0
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
- False
- ..\Cayan.Tool.SqlProjScanner.ConsoleApp\bin\Debug\Microsoft.SqlServer.TransactSql.ScriptDom.dll
-
-
- ..\..\..\..\packages\NSubstitute.2.0.3\lib\net45\NSubstitute.dll
-
-
- ..\..\..\..\packages\NUnit.3.8.1\lib\net45\nunit.framework.dll
- True
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- True
- True
- SqlSamples.resx
- Always
-
-
-
-
-
- {D0F124BE-0592-48EB-98E1-0815D09844EB}
- Cayan.Tool.SqlProjScanner.ConsoleApp
-
-
+
-
- ResXFileCodeGenerator
- SqlSamples.Designer.cs
- Always
- Designer
-
+
+
+
+
+
-
-
+
-
-
\ No newline at end of file
+
+
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Properties/AssemblyInfo.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Properties/AssemblyInfo.cs
deleted file mode 100644
index c7eed72..0000000
--- a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("Cayan.Tool.SqlProjScanner.ConsoleApp.Test")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Cayan.Tool.SqlProjScanner.ConsoleApp.Test")]
-[assembly: AssemblyCopyright("Copyright © 2019")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("5d8b4098-a3e8-4fff-b345-b116d3eb5aa8")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/SqlFileScannerTests.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/SqlFileScannerTests.cs
index 11ab961..874b454 100644
--- a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/SqlFileScannerTests.cs
+++ b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/SqlFileScannerTests.cs
@@ -22,6 +22,13 @@ public void OrchestrateSqlReport_ForCreateMasterReport_CreatesMasterReport()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -43,7 +50,7 @@ public void OrchestrateSqlReport_ForCreateMasterReport_CreatesMasterReport()
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -72,6 +79,13 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithVariables_CreatesMaste
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -93,7 +107,7 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithVariables_CreatesMaste
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -129,6 +143,14 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithMultipleSelects_Create
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
+
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -150,7 +172,7 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithMultipleSelects_Create
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -186,6 +208,13 @@ public void OrchestrateSqlReport_ForCreateMasterReportAndHiddenSelectStatements_
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -207,7 +236,7 @@ public void OrchestrateSqlReport_ForCreateMasterReportAndHiddenSelectStatements_
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -239,6 +268,13 @@ public void OrchestrateSqlReport_ForVariableSetters_CreatesMasterReport()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -260,7 +296,7 @@ public void OrchestrateSqlReport_ForVariableSetters_CreatesMasterReport()
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -292,6 +328,13 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithUnionSp_CreatesMasterR
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -313,7 +356,7 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithUnionSp_CreatesMasterR
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -345,6 +388,13 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithStar_CreatesMasterRepo
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -366,7 +416,7 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithStar_CreatesMasterRepo
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -395,6 +445,13 @@ public void OrchestrateSqlReport_ForCreateMasterReportNoBegin_CreatesMasterRepor
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -416,7 +473,7 @@ public void OrchestrateSqlReport_ForCreateMasterReportNoBegin_CreatesMasterRepor
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -447,6 +504,13 @@ public void OrchestrateSqlReport_ForNoSqlFilesInFolder_Ignores()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -462,7 +526,7 @@ var directoryFactory
.Returns(directoryWrapper);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -491,6 +555,13 @@ public void OrchestrateSqlReport_MissingDirectoryPath_ThrowsException()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -512,7 +583,7 @@ public void OrchestrateSqlReport_MissingDirectoryPath_ThrowsException()
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var ex = Assert.Throws(
@@ -541,6 +612,13 @@ public void OrchestrateSqlReport_MissingDatafilePath_ThrowsException()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -562,7 +640,7 @@ public void OrchestrateSqlReport_MissingDatafilePath_ThrowsException()
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var ex = Assert.Throws(
@@ -591,6 +669,13 @@ public void OrchestrateSqlReport_MissingReportPath_ThrowsException()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -612,7 +697,7 @@ public void OrchestrateSqlReport_MissingReportPath_ThrowsException()
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var ex = Assert.Throws(
@@ -641,6 +726,13 @@ public void OrchestrateSqlReport_ForDifferentCaseInFileVsScript_GetsCorrectCase(
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -662,7 +754,7 @@ public void OrchestrateSqlReport_ForDifferentCaseInFileVsScript_GetsCorrectCase(
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -699,6 +791,13 @@ public void OrchestrateSqlReport_ForDoNotCreateMasterReport_DoesComparison()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
fileWrapper.ReadAllText("reports\\data.xml").Returns(SqlSamples.ReportSampleXml);
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -720,7 +819,7 @@ public void OrchestrateSqlReport_ForDoNotCreateMasterReport_DoesComparison()
var directoryFactory =
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
- var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -747,6 +846,13 @@ public void OrchestrateSqlReport_ForComplexQuery_ParsesReturnValuesCorrectly()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
fileWrapper.ReadAllText("reports\\data.xml").Returns(SqlSamples.ReportSampleXml);
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -768,7 +874,7 @@ public void OrchestrateSqlReport_ForComplexQuery_ParsesReturnValuesCorrectly()
var directoryFactory =
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
- var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -794,6 +900,13 @@ public void OrchestrateSqlReport_ForOutput_ParsesOutputValuesCorrectly()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
fileWrapper.ReadAllText("reports\\data.xml").Returns(SqlSamples.ReportSampleXml);
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -815,7 +928,7 @@ public void OrchestrateSqlReport_ForOutput_ParsesOutputValuesCorrectly()
var directoryFactory =
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
- var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -843,6 +956,13 @@ public void OrchestrateSqlReport_ForMissingParameter_FailsScan()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
fileWrapper.ReadAllText("reports\\data.xml").Returns(SqlSamples.ReportSampleXml);
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -874,7 +994,7 @@ public void OrchestrateSqlReport_ForMissingParameter_FailsScan()
});
var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer,
- returnReportComparer);
+ returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -901,6 +1021,13 @@ public void OrchestrateSqlReport_ForNoParameters_DoesNotThrowException()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -923,7 +1050,7 @@ public void OrchestrateSqlReport_ForNoParameters_DoesNotThrowException()
var scanner =
new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer,
- returnReportComparer);
+ returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
@@ -956,6 +1083,13 @@ public void OrchestrateSqlReport_ForCannotParseSql_ThrowsException()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -977,7 +1111,7 @@ public void OrchestrateSqlReport_ForCannotParseSql_ThrowsException()
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var ex = Assert.Throws(
@@ -1005,6 +1139,13 @@ public void OrchestrateSqlReport_ForNamedVariables_CanParseNames()
var htmlReportGenerator = Substitute.For();
var paramReportComparer = Substitute.For();
var returnReportComparer = Substitute.For();
+ var config = new Configuration
+ {
+ AppSettings = {
+ SchemaIgnoreListFileName = "",
+ StoredProcedureDirectoryName = "Stored Procedures"
+ }
+ };
xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter);
@@ -1026,7 +1167,7 @@ public void OrchestrateSqlReport_ForNamedVariables_CanParseNames()
SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories);
var scanner =
- new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer);
+ new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config);
// Act
var result = scanner.OrchestrateSqlReport(
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/packages.config b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/packages.config
deleted file mode 100644
index 10588e9..0000000
--- a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/packages.config
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/App.config b/Cayan.Tool.SqlProjScanner.ConsoleApp/App.config
deleted file mode 100644
index 8fd8496..0000000
--- a/Cayan.Tool.SqlProjScanner.ConsoleApp/App.config
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/AppSettings.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp/AppSettings.cs
new file mode 100644
index 0000000..3dd4e30
--- /dev/null
+++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/AppSettings.cs
@@ -0,0 +1,8 @@
+namespace Cayan.Tool.SqlProjScanner.ConsoleApp
+{
+ public class AppSettings
+ {
+ public string StoredProcedureDirectoryName { get; set; }
+ public string SchemaIgnoreListFileName { get; set; }
+ }
+}
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/Cayan.Tool.SqlProjScanner.ConsoleApp.csproj b/Cayan.Tool.SqlProjScanner.ConsoleApp/Cayan.Tool.SqlProjScanner.ConsoleApp.csproj
index c000d76..2a16455 100644
--- a/Cayan.Tool.SqlProjScanner.ConsoleApp/Cayan.Tool.SqlProjScanner.ConsoleApp.csproj
+++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/Cayan.Tool.SqlProjScanner.ConsoleApp.csproj
@@ -1,120 +1,47 @@
-
-
-
+
+
- Debug
- AnyCPU
- {D0F124BE-0592-48EB-98E1-0815D09844EB}
Exe
- Cayan.Tool.SqlProjScanner.ConsoleApp
- SqlScanner
- v4.8
- 512
- true
- true
-
+ net6.0
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
- ..\..\..\..\packages\Microsoft.SqlServer.DacFx.x64.150.4384.2\lib\net46\Microsoft.Data.Tools.Schema.Sql.dll
-
-
- ..\..\..\..\packages\Microsoft.SqlServer.DacFx.x64.150.4384.2\lib\net46\Microsoft.Data.Tools.Utilities.dll
-
-
- ..\..\..\..\packages\Microsoft.SqlServer.DacFx.x64.150.4384.2\lib\net46\Microsoft.SqlServer.Dac.dll
-
-
- ..\..\..\..\packages\Microsoft.SqlServer.DacFx.x64.150.4384.2\lib\net46\Microsoft.SqlServer.Dac.Extensions.dll
-
-
- ..\..\..\..\packages\Microsoft.SqlServer.DacFx.x64.150.4384.2\lib\net46\Microsoft.SqlServer.TransactSql.ScriptDom.dll
-
-
- ..\..\..\..\packages\Microsoft.SqlServer.DacFx.x64.150.4384.2\lib\net46\Microsoft.SqlServer.Types.dll
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
- True
+
True
+ True
ConsoleOutput.resx
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
ResXFileCodeGenerator
ConsoleOutput.Designer.cs
- Designer
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+ <_Parameter1>Cayan.Tool.SqlProjScanner.ConsoleApp.Test
+
+
+
+
+
+
+
+
+
+
+
+
+ Always
+
+
+
+
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/Configuration.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp/Configuration.cs
new file mode 100644
index 0000000..edf805d
--- /dev/null
+++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/Configuration.cs
@@ -0,0 +1,12 @@
+namespace Cayan.Tool.SqlProjScanner.ConsoleApp
+{
+ public class Configuration
+ {
+ public AppSettings AppSettings { get; set; }
+
+ public Configuration()
+ {
+ AppSettings = new AppSettings();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/Program.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp/Program.cs
index 0b17196..2501c98 100644
--- a/Cayan.Tool.SqlProjScanner.ConsoleApp/Program.cs
+++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/Program.cs
@@ -1,10 +1,18 @@
namespace Cayan.Tool.SqlProjScanner.ConsoleApp
{
+ using Microsoft.Extensions.Configuration;
+
class Program
{
static int Main(string[] args)
{
- var sqlReportManager = new SqlReportConsoleManager();
+ var configBuilder = new ConfigurationBuilder()
+ .AddJsonFile("appsettings.json")
+ .Build();
+
+ var config = configBuilder.Get();
+
+ var sqlReportManager = new SqlReportConsoleManager(config);
return sqlReportManager.MakeSqlReport(args);
}
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/Properties/AssemblyInfo.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp/Properties/AssemblyInfo.cs
deleted file mode 100644
index 20feba8..0000000
--- a/Cayan.Tool.SqlProjScanner.ConsoleApp/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("Cayan.Tool.SqlProjScanner.ConsoleApp")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Cayan.Tool.SqlProjScanner.ConsoleApp")]
-[assembly: AssemblyCopyright("Copyright © 2019")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-[assembly: InternalsVisibleTo("Cayan.Tool.SqlProjScanner.ConsoleApp.Test")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("d0f124be-0592-48eb-98e1-0815d09844eb")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlFileScanner.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlFileScanner.cs
index 993ff86..176220f 100644
--- a/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlFileScanner.cs
+++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlFileScanner.cs
@@ -3,7 +3,6 @@
using Microsoft.SqlServer.TransactSql.ScriptDom;
using ReportObjects;
using System;
- using System.Configuration;
using System.IO;
using System.Linq;
using System.Collections.Generic;
@@ -20,16 +19,15 @@ public class SqlFileScanner : ISqlFileScanner
private readonly IParamReportComparer _paramReportComparer;
private readonly IReturnReportComparer _returnReportComparer;
- private readonly string _storedProcedureDirectoryName =
- ConfigurationManager.AppSettings["StoredProcedureDirectoryName"];
+ private readonly string _storedProcedureDirectoryName;
- private readonly string _schemaIgnoreListFileName =
- ConfigurationManager.AppSettings["SchemaIgnoreListFileName"];
+ private readonly string _schemaIgnoreListFileName;
- public SqlFileScanner()
+ public SqlFileScanner(Configuration config)
:this(new FileWrapper(), new XmlStreamWrapperFactory(),
new DirectoryWrapperFactory(), new HtmlReportGenerator(),
- new ParamReportComparer(), new ReturnReportComparer())
+ new ParamReportComparer(), new ReturnReportComparer(),
+ config)
{
}
@@ -38,7 +36,8 @@ internal SqlFileScanner(IFileWrapper fileWrapper,
IDirectoryWrapperFactory directoryWrapperFactory,
IHtmlReportGenerator htmlReportGenerator,
IParamReportComparer paramReportComparer,
- IReturnReportComparer returnReportComparer)
+ IReturnReportComparer returnReportComparer,
+ Configuration config)
{
_fileWrapper = fileWrapper;
@@ -51,6 +50,9 @@ internal SqlFileScanner(IFileWrapper fileWrapper,
_returnReportComparer = returnReportComparer;
_sqlReport = new SqlReport();
+
+ _storedProcedureDirectoryName = config.AppSettings.StoredProcedureDirectoryName;
+ _schemaIgnoreListFileName = config.AppSettings.SchemaIgnoreListFileName;
}
public bool OrchestrateSqlReport(string sqlCodePath, string dataFilePath,
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlReportConsoleManager.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlReportConsoleManager.cs
index 8e3a3b4..6d73ca5 100644
--- a/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlReportConsoleManager.cs
+++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlReportConsoleManager.cs
@@ -12,8 +12,8 @@ public class SqlReportConsoleManager
private const int SuccessReturnValue = 0;
private const int FailureReturnValue = 2;
- public SqlReportConsoleManager()
- : this(new SqlFileScanner(), new ConsoleWrapper())
+ public SqlReportConsoleManager(Configuration config)
+ : this(new SqlFileScanner(config), new ConsoleWrapper())
{
}
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/appsettings.json b/Cayan.Tool.SqlProjScanner.ConsoleApp/appsettings.json
new file mode 100644
index 0000000..4c17f49
--- /dev/null
+++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/appsettings.json
@@ -0,0 +1,6 @@
+{
+ "AppSettings": {
+ "StoredProcedureDirectoryName": "Stored Procedures",
+ "SchemaIgnoreListFileName": "SchemaIgnoreList.txt"
+ }
+}
\ No newline at end of file
diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/packages.config b/Cayan.Tool.SqlProjScanner.ConsoleApp/packages.config
deleted file mode 100644
index a9f7e81..0000000
--- a/Cayan.Tool.SqlProjScanner.ConsoleApp/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/SqlCodeScanner.sln b/SqlCodeScanner.sln
index c35198a..d298c6a 100644
--- a/SqlCodeScanner.sln
+++ b/SqlCodeScanner.sln
@@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29215.179
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cayan.Tool.SqlProjScanner.ConsoleApp", "Cayan.Tool.SqlProjScanner.ConsoleApp\Cayan.Tool.SqlProjScanner.ConsoleApp.csproj", "{D0F124BE-0592-48EB-98E1-0815D09844EB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cayan.Tool.SqlProjScanner.ConsoleApp", "Cayan.Tool.SqlProjScanner.ConsoleApp\Cayan.Tool.SqlProjScanner.ConsoleApp.csproj", "{7B0EBAB4-09A5-4277-B4A8-A8F68094C193}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cayan.Tool.SqlProjScanner.ConsoleApp.Test", "Cayan.Tool.SqlProjScanner.ConsoleApp.Test\Cayan.Tool.SqlProjScanner.ConsoleApp.Test.csproj", "{5D8B4098-A3E8-4FFF-B345-B116D3EB5AA8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cayan.Tool.SqlProjScanner.ConsoleApp.Test", "Cayan.Tool.SqlProjScanner.ConsoleApp.Test\Cayan.Tool.SqlProjScanner.ConsoleApp.Test.csproj", "{676A391F-5420-4874-B088-CF25E35BB729}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -13,14 +13,14 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {D0F124BE-0592-48EB-98E1-0815D09844EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D0F124BE-0592-48EB-98E1-0815D09844EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D0F124BE-0592-48EB-98E1-0815D09844EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D0F124BE-0592-48EB-98E1-0815D09844EB}.Release|Any CPU.Build.0 = Release|Any CPU
- {5D8B4098-A3E8-4FFF-B345-B116D3EB5AA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5D8B4098-A3E8-4FFF-B345-B116D3EB5AA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5D8B4098-A3E8-4FFF-B345-B116D3EB5AA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5D8B4098-A3E8-4FFF-B345-B116D3EB5AA8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7B0EBAB4-09A5-4277-B4A8-A8F68094C193}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7B0EBAB4-09A5-4277-B4A8-A8F68094C193}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7B0EBAB4-09A5-4277-B4A8-A8F68094C193}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7B0EBAB4-09A5-4277-B4A8-A8F68094C193}.Release|Any CPU.Build.0 = Release|Any CPU
+ {676A391F-5420-4874-B088-CF25E35BB729}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {676A391F-5420-4874-B088-CF25E35BB729}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {676A391F-5420-4874-B088-CF25E35BB729}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {676A391F-5420-4874-B088-CF25E35BB729}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE