Skip to content

Commit ee89085

Browse files
mbt1lizbaronmbt1
authored
Update tests for linux (#82)
* Added HostPlatform * added annotation for HostPlatform based skipping * added requireWindows to EXTERNAL_ACCESS_KEY_EXISTS/EnableExternalAccessTests.class.sql * - fixed spelling of annotation - added more tests to be skipped on Linux - added meaningful error messages for Linux-specific behavior * added test for broken @Try functionality * Don't execute tSQLt.EnableExternalAccess on Linux. Throw only if @Try = 0. * one more thing... * shouldn't run the tests suites that require ExternalAccess if you don't have it... * more ripples related to skipping stuff on Linux Co-authored-by: Liz Baron <[email protected]> Co-authored-by: mbt1 <[email protected]>
1 parent 9d2652b commit ee89085

21 files changed

+277
-22
lines changed

Build/EnableExternalAccess.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
EXEC tSQLt.EnableExternalAccess;
1+
EXEC tSQLt.EnableExternalAccess @try = 1;

Source/BuildOrder.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ tSQLt.Private_SkipTestAnnotationHelper.ssp.sql
8989
tSQLt.(at)tSQLt_SkipTest.sfn.sql
9090
tSQLt.(at)tSQLt_MinSqlMajorVersion.sfn.sql
9191
tSQLt.(at)tSQLt_MaxSqlMajorVersion.sfn.sql
92+
tSQLt.(at)tSQLt_RunOnlyOnHostPlatform.sfn.sql
9293
tSQLt.RemoveExternalAccessKey.ssp.sql
9394
tSQLt.InstallExternalAccessKey.ssp.sql
9495
tSQLt._Footer.sql

Source/Source.ssmssqlproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@
5555
<AssociatedConnUserName />
5656
<FullPath>tSQLt.(at)tSQLt_MinSqlMajorVersion.sfn.sql</FullPath>
5757
</FileNode>
58+
<FileNode Name="tSQLt.(at)tSQLt_RunOnlyOnHostPlatform.sfn.sql">
59+
<AssociatedConnectionMoniker>8c91a03d-f9b4-46c0-a305-b5dcc79ff907:Dev_tSQLt:True</AssociatedConnectionMoniker>
60+
<AssociatedConnSrvName>Dev_tSQLt</AssociatedConnSrvName>
61+
<AssociatedConnUserName />
62+
<FullPath>tSQLt.(at)tSQLt_RunOnlyOnHostPlatform.sfn.sql</FullPath>
63+
</FileNode>
5864
<FileNode Name="tSQLt.(at)tSQLt_SkipTest.sfn.sql">
5965
<AssociatedConnectionMoniker>8c91a03d-f9b4-46c0-a305-b5dcc79ff907:Dev_tSQLt:True</AssociatedConnectionMoniker>
6066
<AssociatedConnSrvName>Dev_tSQLt</AssociatedConnSrvName>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
IF OBJECT_ID('tSQLt.[@tSQLt:RunOnlyOnHostPlatform]') IS NOT NULL DROP FUNCTION tSQLt.[@tSQLt:RunOnlyOnHostPlatform];
2+
GO
3+
---Build+
4+
GO
5+
CREATE FUNCTION tSQLt.[@tSQLt:RunOnlyOnHostPlatform](@HostPlatform NVARCHAR(MAX))
6+
RETURNS TABLE
7+
AS
8+
RETURN
9+
SELECT SkipTestFunction.*
10+
FROM (SELECT PSV.HostPlatform FROM tSQLt.Private_SqlVersion() AS PSV WHERE PSV.HostPlatform <> @HostPlatform) AV
11+
CROSS APPLY tSQLt.[@tSQLt:SkipTest]('HostPlatform is required to be '''+
12+
@HostPlatform +
13+
''', but is '''+
14+
AV.HostPlatform +
15+
'''.'
16+
) AS SkipTestFunction;
17+
GO
18+
---Build-
19+
GO
20+

Source/tSQLt.EnableExternalAccess.ssp.sql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ CREATE PROCEDURE tSQLt.EnableExternalAccess
77
@enable BIT = 1
88
AS
99
BEGIN
10+
IF((SELECT HostPlatform FROM tSQLt.Info()) = 'Linux')
11+
BEGIN
12+
IF(@try = 0)
13+
BEGIN
14+
RAISERROR('tSQLt.EnableExternalAccess is not supported on Linux.',16,10);
15+
END;
16+
RETURN -1;
17+
END;
1018
BEGIN TRY
1119
IF @enable = 1
1220
BEGIN

Source/tSQLt.Info.sfn.sql

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ SELECT Version = '$LATEST-BUILD-NUMBER$',
1212
ClrSigningKey = (SELECT tSQLt.Private::SigningKey()),
1313
V.SqlVersion,
1414
V.SqlBuild,
15-
V.SqlEdition
15+
V.SqlEdition,
16+
V.HostPlatform
1617
FROM
1718
(
1819
SELECT CAST(PSSV.Major+'.'+PSSV.Minor AS NUMERIC(10,2)) AS SqlVersion,
1920
CAST(PSSV.Build+'.'+PSSV.Revision AS NUMERIC(10,2)) AS SqlBuild,
20-
PSV.Edition AS SqlEdition
21+
PSV.Edition AS SqlEdition,
22+
PSV.HostPlatform
2123
FROM tSQLt.Private_SqlVersion() AS PSV
2224
CROSS APPLY tSQLt.Private_SplitSqlVersion(PSV.ProductVersion) AS PSSV
2325
)V;

Source/tSQLt.Private_Init.ssp.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ BEGIN
2222
RETURN;
2323
END;
2424

25-
IF((SELECT SqlEdition FROM tSQLt.Info()) <> 'SQL Azure')
25+
IF(NOT EXISTS(SELECT 1 FROM tSQLt.Info() WHERE SqlEdition = 'SQL Azure'))
2626
BEGIN
2727
EXEC tSQLt.EnableExternalAccess @enable = @enable, @try = 1;
2828
END;

Source/tSQLt.Private_SqlVersion.sfn.sql

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@ CREATE FUNCTION tSQLt.Private_SqlVersion()
66
RETURNS TABLE
77
AS
88
RETURN
9-
SELECT CAST(SERVERPROPERTY('ProductVersion')AS NVARCHAR(128)) ProductVersion,
10-
CAST(SERVERPROPERTY('Edition')AS NVARCHAR(128)) Edition;
9+
SELECT
10+
CAST(SERVERPROPERTY('ProductVersion')AS NVARCHAR(128)) ProductVersion,
11+
CAST(SERVERPROPERTY('Edition')AS NVARCHAR(128)) Edition,
12+
host_platform HostPlatform
13+
FROM sys.dm_os_host_info;
1114
GO
1215
---Build-
1316
GO

TestUtil/tSQLt_testutil.class.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ BEGIN
328328
BEGIN
329329
EXEC tSQLt.Private_Print @Message = 'MultiRunLog is empty.', @Severity = 16
330330
END;
331-
IF(EXISTS(SELECT * FROM tSQLt_testutil.MultiRunLog AS MRL WHERE MRL.Success = 0 AND MRL.Failure = 0 AND MRL.Error = 0))
331+
IF(EXISTS(SELECT * FROM tSQLt_testutil.MultiRunLog AS MRL WHERE MRL.Success = 0 AND MRL.Skipped = 0))
332332
BEGIN
333333
EXEC tSQLt.Private_Print @Message = 'MultiRunLog contains Run without tests.', @Severity = 16
334334
END;

TestUtilTests/tSQLt_testutil_test.class.sql

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,40 @@ BEGIN
388388

389389
END
390390
GO
391+
CREATE PROCEDURE tSQLt_testutil_test.[ptest CheckMultiRunResults doesn't throw error if]
392+
@success INT = 0,
393+
@skipped INT = 0,
394+
@failed INT = 0,
395+
@errored INT = 0
396+
AS
397+
BEGIN
398+
EXEC tSQLt_testutil_test.[Create and fake tSQLt_testutil.PrepMultiRunLogTable];
399+
INSERT INTO tSQLt_testutil.MultiRunLog(Success,Skipped,Failure,Error)
400+
VALUES(@success,@skipped,@failed,@errored);
401+
402+
SELECT TOP(0)*
403+
INTO #Actual
404+
FROM tSQLt_testutil.MultiRunLog AS MRL;
405+
406+
EXEC tSQLt.ExpectNoException;
407+
408+
INSERT INTO #Actual
409+
EXEC tSQLt_testutil.CheckMultiRunResults;
410+
411+
END
412+
GO
413+
CREATE PROCEDURE tSQLt_testutil_test.[test CheckMultiRunResults doesn't throw error if a success exists]
414+
AS
415+
BEGIN
416+
EXEC tSQLt_testutil_test.[ptest CheckMultiRunResults doesn't throw error if] @success=1;
417+
END
418+
GO
419+
CREATE PROCEDURE tSQLt_testutil_test.[test CheckMultiRunResults doesn't throw error if a skip exists]
420+
AS
421+
BEGIN
422+
EXEC tSQLt_testutil_test.[ptest CheckMultiRunResults doesn't throw error if] @skipped=1;
423+
END
424+
GO
391425
CREATE PROCEDURE tSQLt_testutil_test.[test LogMultiRunResult captures all results]
392426
AS
393427
BEGIN

0 commit comments

Comments
 (0)