Skip to content

Commit a81bb38

Browse files
committed
transactions are fun, and the build is very broken (still).
1 parent 67d1001 commit a81bb38

File tree

2 files changed

+30
-12
lines changed

2 files changed

+30
-12
lines changed

Source/tSQLt.UndoTestDoubles.ssp.sql

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,29 @@ AS
77
BEGIN
88
DECLARE @cmd NVARCHAR(MAX);
99

10+
SELECT @cmd = 'RAISERROR(''Cannot drop '+Collisions.List+' as it is not marked as temporary. Use @Force = 1 to override.'',16,10)'
11+
FROM
12+
(
13+
SELECT
14+
QUOTENAME(OBJECT_SCHEMA_NAME(TestDouble.object_id))+'.'+QUOTENAME(TestDouble.name)
15+
FROM tSQLt.Private_RenamedObjectLog AS ROL
16+
JOIN sys.objects AS TestDouble
17+
ON TestDouble.object_id = OBJECT_ID(QUOTENAME(OBJECT_SCHEMA_NAME(ROL.ObjectId))+'.'+QUOTENAME(PARSENAME(ROL.OriginalName,1)))
18+
LEFT JOIN sys.extended_properties AS EP
19+
ON EP.class_desc = 'OBJECT_OR_COLUMN'
20+
AND EP.major_id = TestDouble.object_id
21+
AND EP.name = 'tSQLt.IsTempObject'
22+
AND EP.value = 1
23+
WHERE EP.value IS NULL
24+
) Collisions(List)
25+
EXEC(@cmd);
26+
1027
SELECT TOP(0)A.* INTO #RenamedObjects FROM tSQLt.Private_RenamedObjectLog A RIGHT JOIN tSQLt.Private_RenamedObjectLog X ON 1=0;
1128

29+
30+
31+
32+
1233
BEGIN TRAN;
1334
DELETE FROM tSQLt.Private_RenamedObjectLog OUTPUT Deleted.* INTO #RenamedObjects;
1435
WITH LL AS
@@ -43,7 +64,7 @@ BEGIN
4364
LEFT JOIN sys.objects FakeO
4465
ON FakeO.object_id = OBJECT_ID(QUOTENAME(LL.SchemaName)+'.'+QUOTENAME(LL.OriginalName))
4566
LEFT JOIN sys.extended_properties AS EP
46-
ON EP.class_desc = 'TABLE'
67+
ON EP.class_desc = 'OBJECT_OR_COLUMN'
4768
AND EP.major_id = FakeO.object_id
4869
AND EP.name = 'tSQLt.IsTempObject'
4970
AND EP.value = 1
@@ -55,7 +76,7 @@ BEGIN
5576
WHEN L.ParentId IS NULL THEN
5677
CASE WHEN L.IsTempObject = 1
5778
THEN DC.cmd+';'
58-
ELSE 'RAISERROR(''Cannot drop UndoTestDoublesTests.SimpleTable1 as it isn''''t marked as temporary. Use @Force = 1 to override.'',16,10);'
79+
ELSE 'RAISERROR(''SHOULD NOT GET HERE.'',16,10);'
5980
END
6081
ELSE NULL
6182
END,'')+

Tests/UndoTestDoublesTests.class.sql

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ CREATE PROCEDURE UndoTestDoublesTests.[test restores a faked table]
1414
AS
1515
BEGIN
1616
CREATE TABLE UndoTestDoublesTests.aSimpleTable ( Id INT );
17-
1817
DECLARE @OriginalObjectId INT = OBJECT_ID('UndoTestDoublesTests.aSimpleTable');
1918

2019
EXEC tSQLt.FakeTable @TableName = 'UndoTestDoublesTests.aSimpleTable';
@@ -23,7 +22,6 @@ BEGIN
2322

2423
DECLARE @RestoredObjectId INT = OBJECT_ID('UndoTestDoublesTests.aSimpleTable');
2524
EXEC tSQLt.AssertEquals @Expected = @OriginalObjectId, @Actual = @RestoredObjectId;
26-
2725
END;
2826
GO
2927
CREATE PROCEDURE UndoTestDoublesTests.[test works with names in need of quotes]
@@ -303,7 +301,7 @@ BEGIN
303301
EXEC tSQLt.AssertEmptyTable @TableName = '#ShouldBeEmpty';
304302
END;
305303
GO
306-
CREATE PROCEDURE UndoTestDoublesTests.[test objects renamed by RemoveObject are restored and conflicting object are deleted]
304+
CREATE PROCEDURE UndoTestDoublesTests.[test objects renamed by RemoveObject are restored and conflicting objects with IsTempObject property are deleted]
307305
AS
308306
BEGIN
309307
EXEC ('CREATE TABLE UndoTestDoublesTests.aSimpleTable(i INT);');
@@ -314,7 +312,7 @@ BEGIN
314312

315313
EXEC tSQLt.RemoveObject @ObjectName='UndoTestDoublesTests.aSimpleTable';
316314
EXEC ('CREATE PROCEDURE UndoTestDoublesTests.aSimpleTable AS PRINT ''Who came up with that name?'';');
317-
315+
EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName = 'UndoTestDoublesTests.aSimpleTable', @ObjectType = N'PROCEDURE', @NewNameOfOriginalObject = '';
318316
EXEC tSQLt.UndoTestDoubles;
319317

320318
SELECT O.object_id,SCHEMA_NAME(O.schema_id) schema_name, O.name object_name, O.type_desc
@@ -360,7 +358,7 @@ BEGIN
360358
EXEC tSQLt.AssertEmptyTable @TableName = '#ShouldBeEmpty';
361359
END;
362360
GO
363-
CREATE PROCEDURE UndoTestDoublesTests.[test doubled synonyms are deleted]
361+
CREATE PROCEDURE UndoTestDoublesTests.[test doubled synonyms with IsTempObject property are deleted]
364362
AS
365363
BEGIN
366364
EXEC ('CREATE TABLE UndoTestDoublesTests.aSimpleTable(i INT);');
@@ -372,6 +370,7 @@ BEGIN
372370

373371
EXEC tSQLt.RemoveObject @ObjectName='UndoTestDoublesTests.aSimpleObject';
374372
EXEC ('CREATE SYNONYM UndoTestDoublesTests.aSimpleObject FOR UndoTestDoublesTests.aSimpleTable;');
373+
EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName='UndoTestDoublesTests.aSimpleObject', @ObjectType='SYNONYM', @NewNameOfOriginalObject = '';
375374

376375
EXEC tSQLt.UndoTestDoubles;
377376

@@ -402,16 +401,14 @@ GO
402401
CREATE PROCEDURE UndoTestDoublesTests.[test drops only objects that are marked as temporary (IsTempObject = 1)]
403402
AS
404403
BEGIN
405-
SELECT '1',@@TRANCOUNT,'test drops only objects that are marked as temporary (IsTempObject = 1)'testname
406404
CREATE TABLE UndoTestDoublesTests.SimpleTable1 (i INT);
407405

408406
EXEC tSQLt.RemoveObject @ObjectName = 'UndoTestDoublesTests.SimpleTable1';
409407
CREATE TABLE UndoTestDoublesTests.SimpleTable1 (i INT);
410408

411-
EXEC tSQLt.ExpectException @ExpectedMessage = 'Cannot drop UndoTestDoublesTests.SimpleTable1 as it isn''t marked as temporary. Use @Force = 1 to override.', @ExpectedSeverity = 16, @ExpectedState = 10;
412-
SELECT '2',@@TRANCOUNT
409+
EXEC tSQLt.ExpectException @ExpectedMessage = 'Cannot drop [UndoTestDoublesTests].[SimpleTable1] as it is not marked as temporary. Use @Force = 1 to override.', @ExpectedSeverity = 16, @ExpectedState = 10;
410+
413411
EXEC tSQLt.UndoTestDoubles;
414-
SELECT '3',@@TRANCOUNT
415-
412+
416413
END;
417414
GO

0 commit comments

Comments
 (0)