Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 31 additions & 11 deletions Assets/Tests/Editor/ToolSkillSynchronizerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,11 @@ public async Task InstallSkillFiles_DoesNotCreateNonExistentTargetDirectories()

// Act
List<ToolSkillSynchronizer.SkillTargetInfo> targets =
SkillTargetDetector.DetectTargetsAcrossLayoutsAtProjectRoot(_projectRoot, requireSkillsDirectory: true);
SkillTargetDetector.DetectTargetsForLayoutStateAtProjectRoot(
_projectRoot,
requireSkillsDirectory: true,
groupSkillsUnderUnityCliLoop: false,
includeFreshnessCheck: false);
await ToolSkillSynchronizer.InstallSkillFiles(
targets,
groupSkillsUnderUnityCliLoop: false,
Expand Down Expand Up @@ -670,7 +674,11 @@ public void DetectTargets_DoesNotIncludeTargetsWithOnlyParentDirectory()
}

// Act
string[] detectedTargetDirs = SkillTargetDetector.DetectTargetsAcrossLayoutsAtProjectRoot(temporaryRoot, requireSkillsDirectory: true)
string[] detectedTargetDirs = SkillTargetDetector.DetectTargetsForLayoutStateAtProjectRoot(
temporaryRoot,
requireSkillsDirectory: true,
groupSkillsUnderUnityCliLoop: false,
includeFreshnessCheck: true)
.Select(target => target.DirName)
.ToArray();

Expand All @@ -691,9 +699,11 @@ public void DetectTargets_WhenParentDirectoryExists_ReportsTargetAsNotOptedIn()
Directory.CreateDirectory(Path.Combine(temporaryRoot, dir));
}

ToolSkillSynchronizer.SkillTargetInfo[] detectedTargets = SkillTargetDetector.DetectTargetsAcrossLayoutsAtProjectRoot(
ToolSkillSynchronizer.SkillTargetInfo[] detectedTargets = SkillTargetDetector.DetectTargetsForLayoutStateAtProjectRoot(
temporaryRoot,
requireSkillsDirectory: false)
requireSkillsDirectory: false,
groupSkillsUnderUnityCliLoop: false,
includeFreshnessCheck: true)
.ToArray();

Assert.AreEqual(SkillTargetDetector.SkillTargetDirs.Length, detectedTargets.Length);
Expand All @@ -719,7 +729,11 @@ public void DetectTargets_IncludesTargetsWhenSkillsDirectoryExists()
}

// Act
ToolSkillSynchronizer.SkillTargetInfo[] detectedTargets = SkillTargetDetector.DetectTargetsAcrossLayoutsAtProjectRoot(temporaryRoot, requireSkillsDirectory: true)
ToolSkillSynchronizer.SkillTargetInfo[] detectedTargets = SkillTargetDetector.DetectTargetsForLayoutStateAtProjectRoot(
temporaryRoot,
requireSkillsDirectory: true,
groupSkillsUnderUnityCliLoop: false,
includeFreshnessCheck: true)
.ToArray();

// Assert
Expand Down Expand Up @@ -784,9 +798,11 @@ public void DetectTargets_WhenManagedSkillsDirectoryContainsSkills_ReportsInstal
"uloop-compile"));
}

ToolSkillSynchronizer.SkillTargetInfo[] detectedTargets = SkillTargetDetector.DetectTargetsAcrossLayoutsAtProjectRoot(
ToolSkillSynchronizer.SkillTargetInfo[] detectedTargets = SkillTargetDetector.DetectTargetsForLayoutStateAtProjectRoot(
temporaryRoot,
requireSkillsDirectory: true)
requireSkillsDirectory: true,
groupSkillsUnderUnityCliLoop: true,
includeFreshnessCheck: true)
.ToArray();

Assert.AreEqual(SkillTargetDetector.SkillTargetDirs.Length, detectedTargets.Length);
Expand Down Expand Up @@ -887,9 +903,11 @@ public void DetectTargets_WhenLegacyThirdPartySkillsExist_ReportsInstalled()
"---\nname: acme-third-party\ntoolName: acme-third-party\n---\n");
}

ToolSkillSynchronizer.SkillTargetInfo[] detectedTargets = SkillTargetDetector.DetectTargetsAcrossLayoutsAtProjectRoot(
ToolSkillSynchronizer.SkillTargetInfo[] detectedTargets = SkillTargetDetector.DetectTargetsForLayoutStateAtProjectRoot(
temporaryRoot,
requireSkillsDirectory: true)
requireSkillsDirectory: true,
groupSkillsUnderUnityCliLoop: false,
includeFreshnessCheck: true)
.ToArray();

Assert.AreEqual(SkillTargetDetector.SkillTargetDirs.Length, detectedTargets.Length);
Expand Down Expand Up @@ -943,9 +961,11 @@ public void DetectTargets_WhenOnlyManualLegacySkillsExist_DoesNotReportInstalled
"---\nname: find-orphaned-meta\n---\n");
}

ToolSkillSynchronizer.SkillTargetInfo[] detectedTargets = SkillTargetDetector.DetectTargetsAcrossLayoutsAtProjectRoot(
ToolSkillSynchronizer.SkillTargetInfo[] detectedTargets = SkillTargetDetector.DetectTargetsForLayoutStateAtProjectRoot(
temporaryRoot,
requireSkillsDirectory: true)
requireSkillsDirectory: true,
groupSkillsUnderUnityCliLoop: false,
includeFreshnessCheck: true)
.ToArray();

Assert.AreEqual(SkillTargetDetector.SkillTargetDirs.Length, detectedTargets.Length);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,44 +39,6 @@ internal SkillTargetDefinition(string dirName, string flag, string displayName)

internal static readonly string[] SkillTargetDirs = SkillTargets.Select(t => t.DirName).ToArray();

internal static List<ToolSkillSynchronizer.SkillTargetInfo> DetectTargetsAcrossLayoutsAtProjectRoot(
string projectRoot,
bool requireSkillsDirectory)
{
Debug.Assert(!string.IsNullOrEmpty(projectRoot), "projectRoot must not be null or empty");

List<ToolSkillSynchronizer.SkillTargetInfo> targets = new();

foreach (SkillTargetDefinition target in SkillTargets)
{
string targetRoot = Path.Combine(projectRoot, target.DirName);
if (!Directory.Exists(targetRoot))
{
continue;
}

bool hasSkillsDirectory = SkillInstallLayout.HasOptedInSkillsDirectory(targetRoot);
if (requireSkillsDirectory && !hasSkillsDirectory)
{
continue;
}

bool hasULoopSkills = hasSkillsDirectory
&& SkillInstallLayout.HasInstalledSkillsInAnyLayout(projectRoot, targetRoot);
targets.Add(new ToolSkillSynchronizer.SkillTargetInfo(
target.DisplayName,
target.DirName,
target.Flag,
hasSkillsDirectory,
hasULoopSkills,
installState: hasULoopSkills
? SkillInstallState.Installed
: SkillInstallState.Missing));
}

return targets;
}

internal static List<ToolSkillSynchronizer.SkillTargetInfo> DetectTargetsForLayoutStateAtProjectRoot(
string projectRoot,
bool requireSkillsDirectory,
Expand Down
Loading