Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono-addins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Test/UnitTests/TestScanDataFileGeneration.cs')
-rw-r--r--Test/UnitTests/TestScanDataFileGeneration.cs77
1 files changed, 75 insertions, 2 deletions
diff --git a/Test/UnitTests/TestScanDataFileGeneration.cs b/Test/UnitTests/TestScanDataFileGeneration.cs
index bb5c713..3c68ced 100644
--- a/Test/UnitTests/TestScanDataFileGeneration.cs
+++ b/Test/UnitTests/TestScanDataFileGeneration.cs
@@ -103,8 +103,6 @@ namespace UnitTests
Assert.Contains ("SimpleApp.Ext2,0.1.0", addins);
Assert.Contains ("SimpleApp.Ext3,0.1.0", addins);
Assert.Contains ("SimpleApp.Ext4,0.1.0", addins);
-
- AddinEngine engine = new AddinEngine ();
}
[Test]
@@ -233,6 +231,81 @@ namespace UnitTests
engine.Shutdown ();
}
+
+ [Test]
+ [TestCase (true, true, TestName = "DowngradeAddins - with scan index")]
+ [TestCase (true, false, TestName = "DowngradeAddins - from scan to no scan index")]
+ [TestCase (false, true, TestName = "DowngradeAddins - from no scan to scan index")]
+ [TestCase (false, false, TestName = "DowngradeAddins - with no scan index")]
+ public void DowngradeAddins (bool hasScaIndexBefore, bool hasScanIndexAfter)
+ {
+ // Tests that the database is properly updated when add-ins are downgraded.
+
+ var dir = Util.GetSampleDirectory ("ScanDataFilesTest");
+
+ AddinRegistry registry;
+
+ if (hasScaIndexBefore) {
+ // Generate the scan data files before initializing the engine
+ registry = GetRegistry (dir);
+ registry.GenerateAddinScanDataFiles (new ConsoleProgressStatus (true), recursive: true);
+ registry.Dispose ();
+ }
+
+ AddinEngine engine = new AddinEngine ();
+ engine.Initialize (Path.Combine (dir, "Config"), Path.Combine (dir, "UserAddins"), null, Path.Combine (dir, "App"));
+ registry = engine.Registry;
+
+ var addins = registry.GetAddins ().Select (a => a.Id).ToArray ();
+ Assert.AreEqual (4, addins.Length);
+ Assert.Contains ("SimpleApp.Ext1,0.1.0", addins);
+ Assert.Contains ("SimpleApp.Ext2,0.1.0", addins);
+ Assert.Contains ("SimpleApp.Ext3,0.1.0", addins);
+ Assert.Contains ("SimpleApp.Ext4,0.1.0", addins);
+ engine.Shutdown ();
+
+ // Downgrade add-ins
+
+ SetAddinVersions (dir, "0.1.0", "0.0.1");
+
+ if (hasScanIndexAfter) {
+ // Regenerate the data files
+ registry = GetRegistry (dir);
+ registry.GenerateAddinScanDataFiles (new ConsoleProgressStatus (true), recursive: true);
+ registry.Dispose ();
+ } else {
+ CleanAddinData (dir);
+ }
+
+ engine = new AddinEngine ();
+ engine.Initialize (Path.Combine (dir, "Config"), Path.Combine (dir, "UserAddins"), null, Path.Combine (dir, "App"));
+ registry = engine.Registry;
+ registry.Update ();
+
+ addins = registry.GetAddins ().Select (a => a.Id).ToArray ();
+ Assert.AreEqual (4, addins.Length);
+ Assert.Contains ("SimpleApp.Ext1,0.0.1", addins);
+ Assert.Contains ("SimpleApp.Ext2,0.0.1", addins);
+ Assert.Contains ("SimpleApp.Ext3,0.0.1", addins);
+ Assert.Contains ("SimpleApp.Ext4,0.0.1", addins);
+ engine.Shutdown ();
+ }
+
+ void SetAddinVersions (string path, string oldVersion, string newVersion)
+ {
+ foreach (var file in Directory.GetFiles (path, "*.xml"))
+ File.WriteAllText (file, File.ReadAllText (file).Replace (oldVersion, newVersion));
+ foreach (var dir in Directory.GetDirectories (path))
+ SetAddinVersions (dir, oldVersion, newVersion);
+ }
+
+ void CleanAddinData (string path)
+ {
+ foreach (var file in Directory.GetFiles (path, "*.addindata"))
+ File.Delete (file);
+ foreach (var dir in Directory.GetDirectories (path))
+ CleanAddinData (dir);
+ }
}
class FileList: MarshalByRefObject