aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2013-02-16 00:49:06 +0000
committerJustin Clark-Casey (justincc)2013-02-16 00:50:52 +0000
commitd54d31807af8b5e2b85897d0bb744d9d34055dff (patch)
treef26d20174d7ca1c31ee7a3b2e77754577aab1d4b
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC_OLD-d54d31807af8b5e2b85897d0bb744d9d34055dff.zip
opensim-SC_OLD-d54d31807af8b5e2b85897d0bb744d9d34055dff.tar.gz
opensim-SC_OLD-d54d31807af8b5e2b85897d0bb744d9d34055dff.tar.bz2
opensim-SC_OLD-d54d31807af8b5e2b85897d0bb744d9d34055dff.tar.xz
Make it so that "load iar / ..." does not save the 'root' "My Inventory" folder.
Really "My Inventory" is just the name of the root, it isn't a folder in its own right. This also makes it more intuitive for users to save whole inventory iars for backup/later restoration, as they don't need to remember to use /* /* will still work and this is a special case just for the root If you want to save only the contents of other folders (rather than the folder itself), you still need to specify something like a/b/* Added a regression test for this case.
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs6
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs55
2 files changed, 60 insertions, 1 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
index d703498..4ec8ae7 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
@@ -272,6 +272,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
272 saveFolderContentsOnly = true; 272 saveFolderContentsOnly = true;
273 maxComponentIndex--; 273 maxComponentIndex--;
274 } 274 }
275 else if (maxComponentIndex == -1)
276 {
277 // If the user has just specified "/", then don't save the root "My Inventory" folder. This is
278 // more intuitive then requiring the user to specify "/*" for this.
279 saveFolderContentsOnly = true;
280 }
275 281
276 m_invPath = String.Empty; 282 m_invPath = String.Empty;
277 for (int i = 0; i <= maxComponentIndex; i++) 283 for (int i = 0; i <= maxComponentIndex; i++)
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
index 38254e5..7ff29e5 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
@@ -123,10 +123,63 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
123 } 123 }
124 124
125 [Test] 125 [Test]
126 public void TestSaveRootFolderToIar()
127 {
128 TestHelpers.InMethod();
129// TestHelpers.EnableLogging();
130
131 string userFirstName = "Jock";
132 string userLastName = "Stirrup";
133 string userPassword = "troll";
134 UUID userId = TestHelpers.ParseTail(0x20);
135
136 UserAccountHelpers.CreateUserWithInventory(m_scene, userFirstName, userLastName, userId, userPassword);
137
138 MemoryStream archiveWriteStream = new MemoryStream();
139 m_archiverModule.OnInventoryArchiveSaved += SaveCompleted;
140
141 mre.Reset();
142 m_archiverModule.ArchiveInventory(
143 Guid.NewGuid(), userFirstName, userLastName, "/", userPassword, archiveWriteStream);
144 mre.WaitOne(60000, false);
145
146 // Test created iar
147 byte[] archive = archiveWriteStream.ToArray();
148 MemoryStream archiveReadStream = new MemoryStream(archive);
149 TarArchiveReader tar = new TarArchiveReader(archiveReadStream);
150
151// InventoryArchiveUtils.
152 bool gotObjectsFolder = false;
153
154 string objectsFolderName
155 = string.Format(
156 "{0}{1}",
157 ArchiveConstants.INVENTORY_PATH,
158 InventoryArchiveWriteRequest.CreateArchiveFolderName(
159 UserInventoryHelpers.GetInventoryFolder(m_scene.InventoryService, userId, "Objects")));
160
161 string filePath;
162 TarArchiveReader.TarEntryType tarEntryType;
163
164 while (tar.ReadEntry(out filePath, out tarEntryType) != null)
165 {
166// Console.WriteLine("Got {0}", filePath);
167
168 // Lazily, we only bother to look for the system objects folder created when we call CreateUserWithInventory()
169 // XXX: But really we need to stop all that stuff being created in tests or check for such folders
170 // more thoroughly
171 if (filePath == objectsFolderName)
172 gotObjectsFolder = true;
173 }
174
175 Assert.That(gotObjectsFolder, Is.True);
176 }
177
178 [Test]
126 public void TestSaveNonRootFolderToIar() 179 public void TestSaveNonRootFolderToIar()
127 { 180 {
128 TestHelpers.InMethod(); 181 TestHelpers.InMethod();
129 TestHelpers.EnableLogging(); 182// TestHelpers.EnableLogging();
130 183
131 string userFirstName = "Jock"; 184 string userFirstName = "Jock";
132 string userLastName = "Stirrup"; 185 string userLastName = "Stirrup";