summaryrefslogtreecommitdiff
path: root/src/test/burn/WixTestTools/RuntimeFactAttribute.cs
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-05-13 11:40:45 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-05-13 12:35:15 -0500
commit031991f32f059b64374e6d257cbe573304dd577f (patch)
tree9d11ebb5d8595bf45c507f38d637b14915af7630 /src/test/burn/WixTestTools/RuntimeFactAttribute.cs
parentad6d2636f60b04ee68656f99fb3bd56a86ba5983 (diff)
downloadwix-031991f32f059b64374e6d257cbe573304dd577f.tar.gz
wix-031991f32f059b64374e6d257cbe573304dd577f.tar.bz2
wix-031991f32f059b64374e6d257cbe573304dd577f.zip
Add ability to skip tests at runtime, and skip long running cache tests
6665
Diffstat (limited to 'src/test/burn/WixTestTools/RuntimeFactAttribute.cs')
-rw-r--r--src/test/burn/WixTestTools/RuntimeFactAttribute.cs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/test/burn/WixTestTools/RuntimeFactAttribute.cs b/src/test/burn/WixTestTools/RuntimeFactAttribute.cs
new file mode 100644
index 00000000..fcd19b95
--- /dev/null
+++ b/src/test/burn/WixTestTools/RuntimeFactAttribute.cs
@@ -0,0 +1,34 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixTestTools
4{
5 using System;
6 using System.Security.Principal;
7 using WixBuildTools.TestSupport.XunitExtensions;
8
9 public class RuntimeFactAttribute : SkippableFactAttribute
10 {
11 const string RequiredEnvironmentVariableName = "RuntimeTestsEnabled";
12
13 public static bool RuntimeTestsEnabled { get; }
14 public static bool RunningAsAdministrator { get; }
15
16 static RuntimeFactAttribute()
17 {
18 using var identity = WindowsIdentity.GetCurrent();
19 var principal = new WindowsPrincipal(identity);
20 RunningAsAdministrator = principal.IsInRole(WindowsBuiltInRole.Administrator);
21
22 var testsEnabledString = Environment.GetEnvironmentVariable(RequiredEnvironmentVariableName);
23 RuntimeTestsEnabled = Boolean.TryParse(testsEnabledString, out var testsEnabled) && testsEnabled;
24 }
25
26 public RuntimeFactAttribute()
27 {
28 if (!RuntimeTestsEnabled || !RunningAsAdministrator)
29 {
30 this.Skip = $"These tests must run elevated ({(RunningAsAdministrator ? "passed" : "failed")}). These tests affect machine state. To accept the consequences, set the {RequiredEnvironmentVariableName} environment variable to true ({(RuntimeTestsEnabled ? "passed" : "failed")}).";
31 }
32 }
33 }
34}