Skip to content

Commit 0038dba

Browse files
authored
Merge pull request #116 from tSQLt-org/undoTestDoubles
Undo test doubles pr before we tackle "the rest" of transaction free tSQLt
2 parents 5924b6b + 440a8fa commit 0038dba

23 files changed

+752
-134
lines changed

Build/LocalBuild.bat

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@ ECHO SQLInstanceName: "%SQLInstanceName%"
1616
SET DBName=%~5
1717
ECHO DBName: "%DBName%"
1818
SET DBLogin=-E
19+
SET AntTarget=all
1920
IF NOT "%~6"=="-v" IF NOT "%~6"=="" SET DBLogin=%~6
2021
IF NOT "%~7"=="-v" IF NOT "%~7"=="" SET SQLPackagePath=%~7
22+
IF NOT "%~8"=="-v" IF NOT "%~8"=="" SET AntTarget=%~8
2123
SET VerboseOutput=ON
22-
IF NOT "%~6"=="-v" IF NOT "%~7"=="-v" IF NOT "%~8"=="-v" SET VerboseOutput=OFF
24+
IF NOT "%~6"=="-v" IF NOT "%~7"=="-v" IF NOT "%~8"=="-v" IF NOT "%~9"=="-v" SET VerboseOutput=OFF
2325
ECHO DBLogin: "%DBLogin%"
2426
ECHO SQLPackagePath: "%SQLPackagePath%"
27+
ECHO AntTarget: "%AntTarget%"
2528
ECHO VerboseOutput: "%VerboseOutput%"
2629

2730
REM CALL "%AntHome%\bin\ant" -buildfile Build\tSQLt.experiments.build.xml -Dmsbuild.path="%NET4Home%" -verbose || goto :error
@@ -75,7 +78,7 @@ ECHO LogTableName: %LogTableName%
7578

7679
IF "%VerboseOutput%"=="ON" @ECHO ON
7780
@REM -----------------------------------------------------------------------------This space character is utterly important! ----v
78-
CALL "%AntHome%\bin\ant" -buildfile Build\tSQLt.validatebuild.xml -Ddb.server="%SQLInstanceName%" -Ddb.name=%DBName% -Ddb.login=" %DBLogin%" -Dsqlcmd.path="%SQLCMDPath%" -Dsqlpackage.path="%SQLPackagePath%" -Dlogtable.name="%LogTableName%" || goto :error
81+
CALL "%AntHome%\bin\ant" "%AntTarget%" -buildfile Build\tSQLt.validatebuild.xml -Ddb.server="%SQLInstanceName%" -Ddb.name=%DBName% -Ddb.login=" %DBLogin%" -Dsqlcmd.path="%SQLCMDPath%" -Dsqlpackage.path="%SQLPackagePath%" -Dlogtable.name="%LogTableName%" || goto :error
7982
@ECHO OFF
8083

8184
ECHO +-------------------------+

Experiments/NameResolutionResearch.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ tSQLt.FakeTable
180180
EXEC (@cmd);
181181

182182
EXEC sys.sp_addextendedproperty
183-
@name = N'tSQLt.FakeTable_OrgTableName',
183+
@name = N'tSQLt.Private_TestDouble_OrgObjectName',
184184
@value = @newName,
185185
@level0type = N'SCHEMA', @level0name = @schemaName, -- <use tSQLt.private_getCleanSchemaName>
186186
@level1type = N'TABLE', @level1name = @tableName; -- <use tSQLt.[private_getCleanObjectName]>
@@ -210,7 +210,7 @@ tSQLt.ApplyConstraint
210210
WHERE class_desc = 'OBJECT_OR_COLUMN'
211211
AND major_id = OBJECT_ID(@schemaName + '.' + @tableName) -- <use tSQLt.private_GetQuotedFullName>
212212
AND minor_id = 0
213-
AND name = 'tSQLt.FakeTable_OrgTableName';
213+
AND name = 'tSQLt.Private_TestDouble_OrgObjectName';
214214

215215
SELECT @cmd = 'CONSTRAINT ' + name + ' CHECK' + definition
216216
FROM sys.check_constraints

Source/ApplyConstraint_Methods.sql

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ RETURN
2323
ON newtbl.object_id = p.major_id
2424
AND p.minor_id = 0
2525
AND p.class_desc = 'OBJECT_OR_COLUMN'
26-
AND p.name = 'tSQLt.FakeTable_OrgTableName'
26+
AND p.name = 'tSQLt.Private_TestDouble_OrgObjectName'
2727
ON OBJECT_NAME(constraints.parent_object_id) = CAST(p.value AS NVARCHAR(4000))
2828
AND constraints.schema_id = newtbl.schema_id
2929
AND constraints.object_id = @ConstraintObjectId;
@@ -70,6 +70,8 @@ CREATE PROCEDURE tSQLt.Private_ApplyCheckConstraint
7070
AS
7171
BEGIN
7272
DECLARE @Cmd NVARCHAR(MAX);
73+
DECLARE @NewNameOfOriginalConstraint NVARCHAR(MAX);
74+
DECLARE @QuotedFullConstraintName NVARCHAR(MAX);
7375
SELECT @Cmd = 'CONSTRAINT ' + QUOTENAME(name) + ' CHECK' + definition
7476
FROM sys.check_constraints
7577
WHERE object_id = @ConstraintObjectId;
@@ -78,13 +80,16 @@ BEGIN
7880

7981
SELECT @QuotedTableName = QuotedTableName FROM tSQLt.Private_GetQuotedTableNameForConstraint(@ConstraintObjectId);
8082

81-
EXEC tSQLt.Private_RenameObjectToUniqueNameUsingObjectId @ConstraintObjectId;
82-
SELECT @Cmd = 'ALTER TABLE ' + @QuotedTableName + ' ADD ' + @Cmd
83+
SELECT @Cmd = 'ALTER TABLE ' + @QuotedTableName + ' ADD ' + @Cmd,
84+
@QuotedFullConstraintName = QUOTENAME(SCHEMA_NAME(schema_id))+'.'+QUOTENAME(name)
8385
FROM sys.objects
8486
WHERE object_id = @ConstraintObjectId;
8587

88+
EXEC tSQLt.Private_RenameObjectToUniqueNameUsingObjectId @ConstraintObjectId, @NewName = @NewNameOfOriginalConstraint OUT;
89+
8690
EXEC (@Cmd);
8791

92+
EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName = @QuotedFullConstraintName, @ObjectType = 'CONSTRAINT', @NewNameOfOriginalObject = @NewNameOfOriginalConstraint;
8893
END;
8994
GO
9095

@@ -101,11 +106,15 @@ BEGIN
101106
DECLARE @AlterTableCmd NVARCHAR(MAX);
102107
DECLARE @CreateIndexCmd NVARCHAR(MAX);
103108
DECLARE @FinalCmd NVARCHAR(MAX);
109+
DECLARE @NewNameOfOriginalConstraint NVARCHAR(MAX);
110+
DECLARE @QuotedFullConstraintName NVARCHAR(MAX);
111+
104112

105113
SELECT @SchemaName = SchemaName,
106114
@OrgTableName = OrgTableName,
107115
@TableName = TableName,
108-
@ConstraintName = OBJECT_NAME(@ConstraintObjectId)
116+
@ConstraintName = OBJECT_NAME(@ConstraintObjectId),
117+
@QuotedFullConstraintName = QUOTENAME(SchemaName)+'.'+QUOTENAME(OBJECT_NAME(@ConstraintObjectId))
109118
FROM tSQLt.Private_GetQuotedTableNameForConstraint(@ConstraintObjectId);
110119

111120
SELECT @CreateFkCmd = cmd, @CreateIndexCmd = CreIdxCmd
@@ -114,8 +123,11 @@ BEGIN
114123
' ADD ' + @CreateFkCmd;
115124
SELECT @FinalCmd = @CreateIndexCmd + @AlterTableCmd;
116125

117-
EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName, @ConstraintName;
126+
EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName, @ConstraintName, @NewName = @NewNameOfOriginalConstraint OUTPUT;
118127
EXEC (@FinalCmd);
128+
129+
EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName = @QuotedFullConstraintName, @ObjectType = 'CONSTRAINT', @NewNameOfOriginalObject = @NewNameOfOriginalConstraint;
130+
119131
END;
120132
GO
121133

@@ -124,25 +136,28 @@ CREATE PROCEDURE tSQLt.Private_ApplyUniqueConstraint
124136
AS
125137
BEGIN
126138
DECLARE @SchemaName NVARCHAR(MAX);
127-
DECLARE @OrgTableName NVARCHAR(MAX);
128139
DECLARE @TableName NVARCHAR(MAX);
129140
DECLARE @ConstraintName NVARCHAR(MAX);
130141
DECLARE @CreateConstraintCmd NVARCHAR(MAX);
131142
DECLARE @AlterColumnsCmd NVARCHAR(MAX);
143+
DECLARE @NewNameOfOriginalConstraint NVARCHAR(MAX);
144+
DECLARE @QuotedFullConstraintName NVARCHAR(MAX);
132145

133146
SELECT @SchemaName = SchemaName,
134-
@OrgTableName = OrgTableName,
135147
@TableName = TableName,
136-
@ConstraintName = OBJECT_NAME(@ConstraintObjectId)
148+
@ConstraintName = OBJECT_NAME(@ConstraintObjectId),
149+
@QuotedFullConstraintName = QUOTENAME(SchemaName)+'.'+QUOTENAME(OBJECT_NAME(@ConstraintObjectId))
137150
FROM tSQLt.Private_GetQuotedTableNameForConstraint(@ConstraintObjectId);
138151

139152
SELECT @AlterColumnsCmd = NotNullColumnCmd,
140153
@CreateConstraintCmd = CreateConstraintCmd
141154
FROM tSQLt.Private_GetUniqueConstraintDefinition(@ConstraintObjectId, QUOTENAME(@SchemaName) + '.' + QUOTENAME(@TableName));
142155

143-
EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName, @ConstraintName;
156+
EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName, @ConstraintName, @NewName = @NewNameOfOriginalConstraint OUTPUT;
144157
EXEC (@AlterColumnsCmd);
145158
EXEC (@CreateConstraintCmd);
159+
160+
EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName = @QuotedFullConstraintName, @ObjectType = 'CONSTRAINT', @NewNameOfOriginalObject = @NewNameOfOriginalConstraint;
146161
END;
147162
GO
148163

Source/BuildOrder.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ tSQLt.Private_GetDefaultConstraintDefinition.sfn.sql
6868
tSQLt.Private_GetUniqueConstraintDefinition.sfn.sql
6969
tSQLt.Private_CreateFakeTableStatement.sfn.sql
7070
tSQLt.Private_CreateFakeOfTable.ssp.sql
71-
tSQLt.Private_MarkFakeTable.ssp.sql
71+
tSQLt.Private_MarktSQLtTempObject.ssp.sql
7272
tSQLt.FakeTable.ssp.sql
7373
tSQLt.Private_GenerateCreateProcedureSpyStatement.ssp.sql
7474
tSQLt.Private_CreateProcedureSpy.ssp.sql

Source/Source.ssmssqlproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
<SqlWorkbenchSqlProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="Source">
33
<Items>
44
<LogicalFolder Name="Connections" Type="2" Sorted="true">
5-
<Items />
65
</LogicalFolder>
76
<LogicalFolder Name="Queries" Type="0" Sorted="true">
87
<Items>
@@ -390,11 +389,11 @@
390389
<AssociatedConnUserName />
391390
<FullPath>tSQLt.Private_ListTestAnnotations.sfn.sql</FullPath>
392391
</FileNode>
393-
<FileNode Name="tSQLt.Private_MarkFakeTable.ssp.sql">
392+
<FileNode Name="tSQLt.Private_MarktSQLtTempObject.ssp.sql">
394393
<AssociatedConnectionMoniker />
395394
<AssociatedConnSrvName />
396395
<AssociatedConnUserName />
397-
<FullPath>tSQLt.Private_MarkFakeTable.ssp.sql</FullPath>
396+
<FullPath>tSQLt.Private_MarktSQLtTempObject.ssp.sql</FullPath>
398397
</FileNode>
399398
<FileNode Name="tSQLt.Private_MarkObjectBeforeRename.ssp.sql">
400399
<AssociatedConnectionMoniker />

Source/tSQLt.ApplyTrigger.ssp.sql

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ CREATE PROCEDURE tSQLt.ApplyTrigger
77
AS
88
BEGIN
99
DECLARE @OrgTableObjectId INT;
10+
DECLARE @NewNameOfOriginalTrigger NVARCHAR(MAX);
11+
1012
SELECT @OrgTableObjectId = OrgTableObjectId FROM tSQLt.Private_GetOriginalTableInfo(OBJECT_ID(@TableName)) orgTbl
1113
IF(@OrgTableObjectId IS NULL)
1214
BEGIN
@@ -28,9 +30,11 @@ BEGIN
2830
RAISERROR('%s is not a trigger on %s', 16, 10, @TriggerName, @TableName);
2931
END;
3032

31-
EXEC tSQLt.RemoveObject @FullTriggerName;
33+
EXEC tSQLt.RemoveObject @ObjectName = @FullTriggerName, @NewName = @NewNameOfOriginalTrigger OUTPUT;
3234

3335
EXEC(@TriggerCode);
36+
37+
EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName = @FullTriggerName, @ObjectType = N'TRIGGER', @NewNameOfOriginalObject = @NewNameOfOriginalTrigger;
3438
END;
3539
---Build-
3640
GO

Source/tSQLt.FakeFunction.ssp.sql

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ BEGIN
1212
DECLARE @FunctionObjectId INT;
1313
DECLARE @FakeFunctionObjectId INT;
1414
DECLARE @IsScalarFunction BIT;
15+
DECLARE @NewNameOfOriginalFunction NVARCHAR(MAX);
1516

1617
EXEC tSQLt.Private_ValidateObjectsCompatibleWithFakeFunction
1718
@FunctionName = @FunctionName,
@@ -21,7 +22,9 @@ BEGIN
2122
@FakeFunctionObjectId = @FakeFunctionObjectId OUT,
2223
@IsScalarFunction = @IsScalarFunction OUT;
2324

24-
EXEC tSQLt.RemoveObject @ObjectName = @FunctionName;
25+
EXEC tSQLt.RemoveObject
26+
@ObjectName = @FunctionName,
27+
@NewName = @NewNameOfOriginalFunction OUTPUT;
2528

2629
EXEC tSQLt.Private_CreateFakeFunction
2730
@FunctionName = @FunctionName,
@@ -31,5 +34,10 @@ BEGIN
3134
@FakeFunctionObjectId = @FakeFunctionObjectId,
3235
@IsScalarFunction = @IsScalarFunction;
3336

37+
EXEC tSQLt.Private_MarktSQLtTempObject
38+
@ObjectName = @FunctionName,
39+
@ObjectType = N'FUNCTION',
40+
@NewNameOfOriginalObject = @NewNameOfOriginalFunction;
41+
3442
END;
3543
GO

Source/tSQLt.FakeTable.ssp.sql

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,47 +9,47 @@ CREATE PROCEDURE tSQLt.FakeTable
99
@Defaults BIT = NULL
1010
AS
1111
BEGIN
12-
DECLARE @OrigSchemaName NVARCHAR(MAX);
13-
DECLARE @OrigTableName NVARCHAR(MAX);
14-
DECLARE @NewNameOfOriginalTable NVARCHAR(4000);
15-
DECLARE @OrigTableFullName NVARCHAR(MAX); SET @OrigTableFullName = NULL;
16-
17-
SELECT @OrigSchemaName = @SchemaName,
18-
@OrigTableName = @TableName
19-
20-
IF(@OrigTableName NOT IN (PARSENAME(@OrigTableName,1),QUOTENAME(PARSENAME(@OrigTableName,1)))
21-
AND @OrigSchemaName IS NOT NULL)
12+
DECLARE @OrigObjectCleanQuotedSchemaName NVARCHAR(MAX);
13+
DECLARE @OrigObjectCleanQuotedName NVARCHAR(MAX);
14+
DECLARE @OrigObjectNewName NVARCHAR(4000);
15+
DECLARE @OrigObjectFullName NVARCHAR(MAX) = NULL;
16+
DECLARE @TargetObjectFullName NVARCHAR(MAX) = NULL;
17+
18+
IF(@TableName NOT IN (PARSENAME(@TableName,1),QUOTENAME(PARSENAME(@TableName,1)))
19+
AND @SchemaName IS NOT NULL)
2220
BEGIN
2321
RAISERROR('When @TableName is a multi-part identifier, @SchemaName must be NULL!',16,10);
2422
END
2523

26-
SELECT @SchemaName = CleanSchemaName,
27-
@TableName = CleanTableName
24+
SELECT @OrigObjectCleanQuotedSchemaName = CleanSchemaName,
25+
@OrigObjectCleanQuotedName = CleanTableName
2826
FROM tSQLt.Private_ResolveFakeTableNamesForBackwardCompatibility(@TableName, @SchemaName);
2927

30-
EXEC tSQLt.Private_ValidateFakeTableParameters @SchemaName,@OrigTableName,@OrigSchemaName;
28+
EXEC tSQLt.Private_ValidateFakeTableParameters @OrigObjectCleanQuotedSchemaName,@TableName,@SchemaName;
29+
30+
SET @OrigObjectFullName = @OrigObjectCleanQuotedSchemaName + '.' + @OrigObjectCleanQuotedName;
3131

32-
EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName, @TableName, @NewNameOfOriginalTable OUTPUT;
32+
EXEC tSQLt.Private_RenameObjectToUniqueName @OrigObjectCleanQuotedSchemaName, @OrigObjectCleanQuotedName, @OrigObjectNewName OUTPUT;
3333

34-
SELECT @OrigTableFullName = S.base_object_name
34+
SELECT @TargetObjectFullName = S.base_object_name
3535
FROM sys.synonyms AS S
36-
WHERE S.object_id = OBJECT_ID(@SchemaName + '.' + @NewNameOfOriginalTable);
36+
WHERE S.object_id = OBJECT_ID(@OrigObjectCleanQuotedSchemaName + '.' + @OrigObjectNewName);
3737

38-
IF(@OrigTableFullName IS NOT NULL)
38+
IF(@TargetObjectFullName IS NOT NULL)
3939
BEGIN
40-
IF(COALESCE(OBJECT_ID(@OrigTableFullName,'U'),OBJECT_ID(@OrigTableFullName,'V')) IS NULL)
40+
IF(COALESCE(OBJECT_ID(@TargetObjectFullName,'U'),OBJECT_ID(@TargetObjectFullName,'V')) IS NULL)
4141
BEGIN
42-
RAISERROR('Cannot fake synonym %s.%s as it is pointing to %s, which is not a table or view!',16,10,@SchemaName,@TableName,@OrigTableFullName);
42+
RAISERROR('Cannot fake synonym %s as it is pointing to %s, which is not a table or view!',16,10,@OrigObjectFullName,@TargetObjectFullName);
4343
END;
4444
END;
4545
ELSE
4646
BEGIN
47-
SET @OrigTableFullName = @SchemaName + '.' + @NewNameOfOriginalTable;
47+
SET @TargetObjectFullName = @OrigObjectCleanQuotedSchemaName + '.' + QUOTENAME(@OrigObjectNewName); --TODO:Test for QUOTENAME
4848
END;
4949

50-
EXEC tSQLt.Private_CreateFakeOfTable @SchemaName, @TableName, @OrigTableFullName, @Identity, @ComputedColumns, @Defaults;
50+
EXEC tSQLt.Private_CreateFakeOfTable @OrigObjectCleanQuotedSchemaName, @OrigObjectCleanQuotedName, @TargetObjectFullName, @Identity, @ComputedColumns, @Defaults;
5151

52-
EXEC tSQLt.Private_MarkFakeTable @SchemaName, @TableName, @NewNameOfOriginalTable;
52+
EXEC tSQLt.Private_MarktSQLtTempObject @OrigObjectFullName, N'TABLE', @OrigObjectNewName;
5353
END
5454
---Build-
5555
GO

Source/tSQLt.Private_GetForeignKeyDefinition.sfn.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ RETURN SELECT 'CONSTRAINT ' + name + ' FOREIGN KEY (' +
7979
CROSS APPLY tSQLt.Private_GetForeignKeyParColumns(k.object_id) AS parCol
8080
CROSS APPLY tSQLt.Private_GetForeignKeyRefColumns(k.object_id) AS refCol
8181
LEFT JOIN sys.extended_properties e
82-
ON e.name = 'tSQLt.FakeTable_OrgTableName'
82+
ON e.name = 'tSQLt.Private_TestDouble_OrgObjectName'
8383
AND e.value = OBJECT_NAME(k.referenced_object_id)
8484
JOIN sys.tables refTab
8585
ON COALESCE(e.major_id,k.referenced_object_id) = refTab.object_id

Source/tSQLt.Private_MarkFakeTable.ssp.sql

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)