diff --git a/Assets/Tests/EditMode/Campaign/CampaignConfigCoverageTests.cs b/Assets/Tests/EditMode/Campaign/CampaignConfigCoverageTests.cs
index e4989c3..7cc5328 100644
--- a/Assets/Tests/EditMode/Campaign/CampaignConfigCoverageTests.cs
+++ b/Assets/Tests/EditMode/Campaign/CampaignConfigCoverageTests.cs
@@ -5,8 +5,8 @@ using UnityEngine.TestTools;
///
/// Cobertura de las ramas de error de CampaignConfig.LoadFromJson:
/// JSON válido sin capítulos y JSON malformado (excepción de parseo).
-/// Nota: CreateInstance dispara OnEnable → LoadFromJson sin fuente, que
-/// loguea Error; por eso el flag de logs se activa antes de instanciar.
+/// Nota: CreateInstance dispara OnEnable pero es silencioso cuando no
+/// hay fuente JSON asignada.
///
[TestFixture]
[Category("Unit")]
@@ -22,9 +22,8 @@ public class CampaignConfigCoverageTests
private CampaignConfig CreateUnloadedConfig()
{
- // CreateInstance dispara OnEnable → LoadFromJson sin fuente (Error):
- // se espera explícitamente porque ignoreFailingMessages en SetUp no persiste.
- LogAssert.Expect(LogType.Error, "[CampaignConfig] No se asignó archivo JSON de campaña.");
+ // CreateInstance dispara OnEnable → LoadFromJson sin fuente.
+ // OnEnable es silencioso cuando no hay fuente asignada (sin error log).
return ScriptableObject.CreateInstance();
}
diff --git a/Assets/Tests/EditMode/Campaign/CampaignManagerConfigTests.cs b/Assets/Tests/EditMode/Campaign/CampaignManagerConfigTests.cs
index 113ffa6..a8f0c01 100644
--- a/Assets/Tests/EditMode/Campaign/CampaignManagerConfigTests.cs
+++ b/Assets/Tests/EditMode/Campaign/CampaignManagerConfigTests.cs
@@ -40,8 +40,7 @@ namespace AjedrezPurgatorio.Tests.Unit.Campaign
// Carga el registry desde Resources/Campaigns igual que Awake,
// pero sin singleton ni DontDestroyOnLoad (incompatibles con EditMode).
- // Sin _campaignConfig asignado, LoadFromJson registra un error esperado.
- LogAssert.Expect(LogType.Error, "[CampaignConfig] No se asignó archivo JSON de campaña.");
+ // OnEnable es silencioso cuando no hay fuente JSON asignada.
_buildRegistryMethod.Invoke(_manager, null);
}
@@ -68,8 +67,6 @@ namespace AjedrezPurgatorio.Tests.Unit.Campaign
int countAfterFirstBuild = _manager.CampaignCount;
// BuildCampaignRegistry limpia y reconstruye; los duplicados se descartan.
- // El rebuild repite el log de config sin JSON (el Expect del SetUp ya se consumió).
- LogAssert.Expect(LogType.Error, "[CampaignConfig] No se asignó archivo JSON de campaña.");
_buildRegistryMethod.Invoke(_manager, null);
Assert.AreEqual(countAfterFirstBuild, _manager.CampaignCount,
diff --git a/Assets/Tests/EditMode/Campaign/CampaignManagerCoverageTests.cs b/Assets/Tests/EditMode/Campaign/CampaignManagerCoverageTests.cs
index fc3cccb..e281de8 100644
--- a/Assets/Tests/EditMode/Campaign/CampaignManagerCoverageTests.cs
+++ b/Assets/Tests/EditMode/Campaign/CampaignManagerCoverageTests.cs
@@ -70,8 +70,8 @@ public class CampaignManagerCoverageTests
private CampaignConfig MakeConfigFromJson(string json)
{
- // CreateInstance dispara OnEnable → LoadFromJson sin fuente (Error esperado).
- LogAssert.Expect(LogType.Error, "[CampaignConfig] No se asignó archivo JSON de campaña.");
+ // CreateInstance dispara OnEnable → LoadFromJson sin fuente.
+ // OnEnable es silencioso cuando no hay fuente JSON asignada.
var config = ScriptableObject.CreateInstance();
config.SetJsonSource(new TextAsset(json));
config.LoadFromJson();
@@ -96,8 +96,8 @@ public class CampaignManagerCoverageTests
typeof(CampaignManager).GetField("_campaignConfig", Flags)
.SetValue(_manager, inspectorConfig);
- // La config del Inspector se añade SIN log (línea 165-166); los
- // recursos de Resources sí emiten Error (OnEnable) + Log (registro).
+ // La config del Inspector se añade SIN log; los recursos de
+ // Resources se registran al BuildCampaignRegistry (OnEnable silencioso).
LogAssert.ignoreFailingMessages = true;
InvokePrivate("BuildCampaignRegistry");
LogAssert.ignoreFailingMessages = false;
diff --git a/Assets/Tests/EditMode/Meta/SaveSystemCoverageTests.cs b/Assets/Tests/EditMode/Meta/SaveSystemCoverageTests.cs
index 9ebe283..9f64a3c 100644
--- a/Assets/Tests/EditMode/Meta/SaveSystemCoverageTests.cs
+++ b/Assets/Tests/EditMode/Meta/SaveSystemCoverageTests.cs
@@ -293,7 +293,19 @@ namespace AjedrezPurgatorio.Tests.Unit.Meta
{
LogAssert.ignoreFailingMessages = false;
}
- Assert.IsFalse(result, "Borrar un archivo bloqueado debe fallar controlado.");
+
+ // Linux file locking is advisory — File.Delete may succeed.
+ if (Application.platform == RuntimePlatform.LinuxEditor ||
+ Application.platform == RuntimePlatform.LinuxPlayer)
+ {
+ Assert.IsTrue(result,
+ "Linux: File.Delete succeeds despite FileShare.None (advisory locking).");
+ }
+ else
+ {
+ Assert.IsFalse(result,
+ "Windows: Borrar un archivo bloqueado debe fallar controlado.");
+ }
}
}