TurnBasedStrategyCourse/Library/PackageCache/com.unity.render-pipelines..../Tests/Editor/DocumentationTests.cs

91 lines
3.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Net;
using System.Text;
using NUnit.Framework;
using UnityEditor;
using UnityEngine;
using UnityEngine.Rendering.Universal;
namespace Documentation
{
class DocumentationTests
{
private bool TestURL(string url)
{
try
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
// Timeout set to 10 seconds
request.Timeout = 10000;
// Only get header information
request.Method = "HEAD";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
int statusCode = (int)response.StatusCode;
// Successful requests
if (statusCode >= 100 && statusCode < 400)
return true;
// Server Errors
if (statusCode >= 500 && statusCode <= 510)
return false;
}
}
catch
{
// ignored
}
return false;
}
[Test]
public void TestURPHelpURLAttributes()
{
// Start with checking a bad URL to make sure TestURL() works.
string badURL = "https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@16.0/manual/incorrect-url";
bool badURLResults = TestURL(badURL);
Assert.IsFalse(badURLResults, "TestURL() failed. A broken URL should have been detected.");
// Find everything that uses URPHelpURLAttribute
TypeCache.TypeCollection typesWithHelpUrls = TypeCache.GetTypesWithAttribute<URPHelpURLAttribute>();
// Check if all the URLs are valid.
bool allURLsAreValid = true;
StringBuilder failures = new ();
foreach (Type type in typesWithHelpUrls)
{
Debug.Log("Checking \"" + type.FullName + "\"");
object[] attributes = type.GetCustomAttributes(typeof(URPHelpURLAttribute), false);
for (int i = 0; i < attributes.Length; i++)
{
URPHelpURLAttribute attribute = attributes[i] as URPHelpURLAttribute;
Assert.IsNotNull(attribute);
string url = attribute.URL;
bool urlIsValid = TestURL(url);
Debug.Log("\t" + url);
Debug.Log(urlIsValid ? "\tSuccess!\n" : "\tFailure!\n");
if (urlIsValid)
continue;
allURLsAreValid = false;
failures.AppendLine("\t" + type.FullName);
failures.AppendLine("\t" + url);
failures.AppendLine();
}
}
if (!allURLsAreValid)
Assert.Fail("The following URLs failed:\n" + failures);
}
}
}