Namespace Serenity.PackageBootstrapper.Tests.Editor
Classes
GhostAssetPathFilterTests
Pure tests for GhostAssetPathFilter. No assets or files are touched.
MisplacedShippedAssetPlannerTests
Pure tests for Serenity.Editor.ObsoleteAssetCleaner.MisplacedShippedAssetPlanner. No AssetDatabase, no disk I/O.
PackageManagerDependencyManifestBuilderTests
Pure tests for Serenity.Editor.PackageBootstrapper.PackageManagerDependencyManifestBuilder. Asserts against a literal
expected string, matching the {"dependencies":{...}} shape
Packages/com.unity.asset-store-tools/Editor/Exporter/DefaultPackageExporter.cs writes.
PackageManagerDependencyVersionResolverTests
Pure tests for Serenity.Editor.PackageBootstrapper.PackageManagerDependencyVersionResolver. No Package Manager calls.
RelocatedAssetBackupStoreTests
EditMode tests for Serenity.Editor.ObsoleteAssetCleaner.RelocatedAssetBackupStore. Follows the temp-folder hygiene convention
of SerenityAssetCreationTransactionTests: every fixture asset lives under a private temp folder
wiped in SetUp()/TearDown(). The backup store's own root points at a separate
scratch folder under Library/ — outside Assets/, deleted the same way — so a failing run
never leaves stray state behind. No Addressables involvement: this store only moves bytes on disk.
RelocatedShippedAssetPlannerTests
Pure tests for Serenity.Editor.ObsoleteAssetCleaner.RelocatedShippedAssetPlanner. No AssetDatabase, no disk I/O.
ReoccupiedMovedPathPlannerTests
Pure tests for ReoccupiedMovedPathPlanner, plus the content ratchet over the real snapshots.
RestorePayloadPlannerTests
Pure tests for RestorePayloadPlanner. No assets or files are touched.
SerenityMisplacedShippedAssetHealerTests
Runs the healer's real plan and moves against two text assets in a temporary folder whose shipped paths are swapped, the shape a 1.3.2 project has after importing 1.3.3. Text assets keep the run free of compilation, and nothing is registered with Addressables.
SerenityObsoleteAssetCleanerTests
Pure tests for Serenity.Editor.ObsoleteAssetCleaner.ObsoleteAssetClassifier.ClassifySweep(System.Collections.Generic.IReadOnlyList{System.String},System.Collections.Generic.IReadOnlyCollection{System.String},System.Func{System.String,System.Boolean},System.Func{System.String,System.Boolean},System.Func{System.String,Serenity.Editor.ObsoleteAssetCleaner.OrphanReconciliationEvidence}),
Serenity.Editor.ObsoleteAssetCleaner.ObsoleteAssetClassifier.ClassifyReconciliationAction(Serenity.Editor.ObsoleteAssetCleaner.OrphanReconciliationEvidence) and
Serenity.Editor.ObsoleteAssetCleaner.SerenityShippedSnapshotImportWatcher.MergeImportRecords(Serenity.Editor.ObsoleteAssetCleaner.SerenityShippedSnapshotImportWatcher.PackageImportRecord,Serenity.Editor.ObsoleteAssetCleaner.SerenityShippedSnapshotImportWatcher.PackageImportRecord), plus consistency tests asserting
the cleaner's duplicated known-non-product and tombstone-marker data stays in sync with
Serenity.Editor.PackageBootstrapper.SerenityPackageExporter.ExcludedPaths and TombstonePlanner's actual output
(the cleaner assembly cannot reference either — see the classes' remarks). No real assets are touched
by the classification tests; the tombstone-shape tests write real temp files (they need
IsTombstoneFile to read actual file content/length from disk) under the OS temp folder.
SerenityPackageDependencyInstallerTests
Tests the single-source-of-truth relationship between RequiredPackageIds
and Serenity.Editor.PackageBootstrapper.SerenityPackageDependencyInstaller.EmbeddablePackageIds that SerenityPackageExporter relies on
when embedding UPM dependencies into the exported .unitypackage.
SerenityPackageExportDestinationTests
Pure tests for Serenity.Editor.PackageBootstrapper.SerenityPackageExportDestination: a -serenityExportDir argument wins
over the SERENITY_EXPORT_DIR environment variable, which wins over the fallback; a relative folder
resolves against the project root; no override keeps the exporter's historical Temp path unchanged.
SerenityPackageExporterTests
Tests for the customer-project guard in SerenityPackageExporter: both public entry points must no-op — never regenerating the shipped-assets snapshot, never exporting a package — when Serenity.Editor.PackageBootstrapper.SerenityPackageExporter.IsDevelopmentProjectCheck reports a customer project.
SerenityPackageImportScrubberTests
Pure tests for Serenity.Editor.ObsoleteAssetCleaner.SerenityPackageImportScrubber.IsSerenityPackageName(System.String). No assets are touched.
SerenityRequiredPackagesContractTests
The contract between what the shipped package needs and what a fresh install receives: every package a
shipped Serenity assembly is compiled against, and every package whose scripts shipped content
serializes, must be in RequiredPackageIds — the one list
both the manifest embedded in the exported .unitypackage and the startup installer derive from.
The need is derived from the project, never restated. An assembly needs what its compiled image
actually references (an asmdef reference no code uses costs a fresh install nothing). An asset needs
the package scripts it directly depends on — a Timeline .playable depends on the Timeline
package's TimelineAsset script even though no Serenity code names that type at compile time,
which is exactly how a missing Timeline dependency went unnoticed.
TombstonePlannerTests
Pure tests for TombstonePlanner. No assets or files are touched.
UnityPackageDependencyEmbedderTests
Gzip round-trip tests for Serenity.Editor.PackageBootstrapper.UnityPackageDependencyEmbedder: build a tiny tar.gz on disk, append a dependency manifest entry, then decompress and read both the original and the new entry back.
UnityPackageTarArchiveUtilsTests
Pure tests for Serenity.Editor.PackageBootstrapper.UnityPackageTarArchiveUtils. No file I/O; streams are in-memory.