first commit

This commit is contained in:
Kirill Chikalin
2024-11-16 13:20:07 +03:00
commit a3072a3693
538 changed files with 108153 additions and 0 deletions

View File

@@ -0,0 +1,99 @@
using AssetStoreTools.Validator.TestDefinitions;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEditor;
namespace AssetStoreTools.Validator.Utility
{
internal static class ValidatorUtility
{
private const string TestsPath = "Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests";
private const string TestMethodsPath = "Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Test Methods";
public enum SortType
{
Id,
Alphabetical
}
public static ValidationTestScriptableObject[] GetAutomatedTestCases() => GetAutomatedTestCases(SortType.Id);
public static ValidationTestScriptableObject[] GetAutomatedTestCases(SortType sortType)
{
string[] guids = AssetDatabase.FindAssets("t:AutomatedTestScriptableObject", new[] { TestsPath });
ValidationTestScriptableObject[] tests = new ValidationTestScriptableObject[guids.Length];
for (int i = 0; i < tests.Length; i++)
{
string testPath = AssetDatabase.GUIDToAssetPath(guids[i]);
AutomatedTestScriptableObject test = AssetDatabase.LoadAssetAtPath<AutomatedTestScriptableObject>(testPath);
tests[i] = test;
}
switch (sortType)
{
default:
case SortType.Id:
tests = tests.OrderBy(x => x.Id).ToArray();
break;
case SortType.Alphabetical:
tests = tests.OrderBy(x => x.Title).ToArray();
break;
}
return tests;
}
public static MonoScript GenerateTestScript(string testName)
{
var newScriptPath = $"{TestMethodsPath}/{testName}";
if (!newScriptPath.EndsWith(".cs"))
newScriptPath += ".cs";
var existingScript = AssetDatabase.LoadAssetAtPath<MonoScript>(newScriptPath);
if (existingScript != null)
return existingScript;
var scriptContent =
$"using AssetStoreTools.Validator.Data;\n" +
$"using AssetStoreTools.Validator.TestDefinitions;\n" +
$"using AssetStoreTools.Validator.TestMethods.Utility;\n\n" +
$"namespace AssetStoreTools.Validator.TestMethods\n" +
"{\n" +
$" internal class {testName} : {nameof(ITestScript)}\n" +
" {\n" +
$" public TestResult Run({nameof(ValidationTestConfig)} config)\n" +
" {\n" +
" var result = new TestResult() { Result = TestResult.ResultStatus.Undefined };\n" +
" return result;\n" +
" }\n" +
" }\n" +
"}\n";
File.WriteAllText(newScriptPath, scriptContent);
AssetDatabase.Refresh();
return AssetDatabase.LoadAssetAtPath<MonoScript>(newScriptPath);
}
public static string GetLongestProjectPath()
{
var longPaths = GetProjectPaths(new string[] { "Assets", "Packages" });
return longPaths.Aggregate("", (max, cur) => max.Length > cur.Length ? max : cur);
}
public static IEnumerable<string> GetProjectPaths(string[] rootPaths)
{
var longPaths = new List<string>();
var guids = AssetDatabase.FindAssets("*", rootPaths);
foreach(var guid in guids)
{
var path = AssetDatabase.GUIDToAssetPath(guid);
longPaths.Add(path);
}
return longPaths;
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 24792af98b4d87746a4b945e2a45dc2d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 115
packageName: Asset Store Publishing Tools
packageVersion: 11.4.3
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Utility/ValidatorUtility.cs
uploadId: 681981