summaryrefslogtreecommitdiff
path: root/indra/test
diff options
context:
space:
mode:
authorRyan Williams <rdw@lindenlab.com>2007-02-21 23:57:35 +0000
committerRyan Williams <rdw@lindenlab.com>2007-02-21 23:57:35 +0000
commitb7b4135e5507fd7be5aab24d5de64675dd28caca (patch)
treec198c0c3bebe31cec9deb8229330cafd5a9acbfd /indra/test
parent5bdbc85a14447c9839f300072c4a3e3146f51585 (diff)
SL-33966: Viewer installed files are not described in a centralized source
This introduces the viewer_manifest.py and associated libraries. Check out https://osiris.lindenlab.com/mediawiki/index.php/Installer_Manifest for some more information. The gist of it is that all files to be included in the viewer installations are described in viewer_manifest.py. viewer_manifest.py also acts as a packager, if you give it the right options. All of the old methods of packaging (Makefile_Mac, scons, and the various .bat files) still work, but they are mostly just shells for calls to viewer_manifest.py. You're now required to have python 2.3 or later on your machine to be able to package up an installer, but thankfully most people already have this.
Diffstat (limited to 'indra/test')
-rw-r--r--indra/test/test_llmanifest.py109
1 files changed, 109 insertions, 0 deletions
diff --git a/indra/test/test_llmanifest.py b/indra/test/test_llmanifest.py
new file mode 100644
index 0000000000..cc464237a2
--- /dev/null
+++ b/indra/test/test_llmanifest.py
@@ -0,0 +1,109 @@
+#!/usr/bin/python
+# @file test_llmanifest.py
+# @author Ryan Williams
+# @brief Test cases for LLManifest library.
+#
+# Copyright (c) 2006-$CurrentYear$, Linden Research, Inc.
+# $License$
+
+from indra import llmanifest
+import os.path
+import os
+import unittest
+
+class DemoManifest(llmanifest.LLManifest):
+ def construct(self):
+ super(DemoManifest, self).construct()
+ if self.prefix("dir_1"):
+ self.path("test_a")
+ self.path(src="test_b", dst="test_dst_b")
+ self.path("*.test")
+ self.path("*.tex", "*.jpg")
+ if self.prefix("nested", dst=""):
+ self.path("deep")
+ self.end_prefix()
+ self.end_prefix("dir_1")
+
+
+class Demo_ArchManifest(llmanifest.LLManifest):
+ pass
+
+class TestLLManifest(unittest.TestCase):
+ mode='static'
+ def setUp(self):
+ self.m = llmanifest.LLManifest("src", "dst", {'grid':'default', 'platform':'darwin', 'version':(1,2,3,4)})
+
+ def testproperwindowspath(self):
+ self.assertEqual(llmanifest.proper_windows_path("C:\Program Files", "cygwin"),"/cygdrive/c/Program Files")
+ self.assertEqual(llmanifest.proper_windows_path("C:\Program Files", "windows"), "C:\Program Files")
+ self.assertEqual(llmanifest.proper_windows_path("/cygdrive/c/Program Files/NSIS", "windows"), "C:\Program Files\NSIS")
+ self.assertEqual(llmanifest.proper_windows_path("/cygdrive/c/Program Files/NSIS", "cygwin"), "/cygdrive/c/Program Files/NSIS")
+
+ def testpathancestors(self):
+ self.assertEqual(["dir"], [p for p in llmanifest.path_ancestors("dir")])
+ self.assertEqual(["dir/sub", "dir"], [p for p in llmanifest.path_ancestors("dir/sub")])
+ self.assertEqual(["dir/sub", "dir"], [p for p in llmanifest.path_ancestors("dir/sub/")])
+ self.assertEqual(["dir/sub/two", "dir/sub", "dir"], [p for p in llmanifest.path_ancestors("dir/sub/two")])
+
+
+ def testforplatform(self):
+ self.assertEqual(llmanifest.LLManifest.for_platform('demo'), DemoManifest)
+ def tmp_test():
+ return llmanifest.LLManifest.for_platform('extant')
+ self.assertRaises(KeyError, tmp_test)
+ ExtantManifest = llmanifest.LLManifestRegistry('ExtantManifest', (llmanifest.LLManifest,), {})
+ self.assertEqual(llmanifest.LLManifest.for_platform('extant'), ExtantManifest)
+ self.assertEqual(llmanifest.LLManifest.for_platform('demo', 'Arch'), Demo_ArchManifest)
+
+
+ def testprefix(self):
+ self.assertEqual(self.m.get_src_prefix(), "src")
+ self.assertEqual(self.m.get_dst_prefix(), "dst")
+ self.m.prefix("level1")
+ self.assertEqual(self.m.get_src_prefix(), "src/level1")
+ self.assertEqual(self.m.get_dst_prefix(), "dst/level1")
+ self.m.end_prefix()
+ self.m.prefix(src="src", dst="dst")
+ self.assertEqual(self.m.get_src_prefix(), "src/src")
+ self.assertEqual(self.m.get_dst_prefix(), "dst/dst")
+ self.m.end_prefix()
+
+ def testendprefix(self):
+ self.assertEqual(self.m.get_src_prefix(), "src")
+ self.assertEqual(self.m.get_dst_prefix(), "dst")
+ self.m.prefix("levela")
+ self.m.end_prefix()
+ self.assertEqual(self.m.get_src_prefix(), "src")
+ self.assertEqual(self.m.get_dst_prefix(), "dst")
+ self.m.prefix("level1")
+ self.m.end_prefix("level1")
+ self.assertEqual(self.m.get_src_prefix(), "src")
+ self.assertEqual(self.m.get_dst_prefix(), "dst")
+ self.m.prefix("level1")
+ def tmp_test():
+ self.m.end_prefix("mismatch")
+ self.assertRaises(ValueError, tmp_test)
+
+ def testruncommand(self):
+ self.assertEqual("Hello\n", self.m.run_command("echo Hello"))
+ def tmp_test():
+ self.m.run_command("fff_garbage")
+ self.assertRaises(RuntimeError, tmp_test)
+
+ def testpathof(self):
+ self.assertEqual(self.m.src_path_of("a"), "src/a")
+ self.assertEqual(self.m.dst_path_of("a"), "dst/a")
+ self.m.prefix("tmp")
+ self.assertEqual(self.m.src_path_of("b/c"), "src/tmp/b/c")
+ self.assertEqual(self.m.dst_path_of("b/c"), "dst/tmp/b/c")
+
+ def testcmakedirs(self):
+ self.m.cmakedirs("test_dir_DELETE/nested/dir")
+ self.assert_(os.path.exists("test_dir_DELETE/nested/dir"))
+ self.assert_(os.path.isdir("test_dir_DELETE"))
+ self.assert_(os.path.isdir("test_dir_DELETE/nested"))
+ self.assert_(os.path.isdir("test_dir_DELETE/nested/dir"))
+ os.removedirs("test_dir_DELETE/nested/dir")
+
+if __name__ == '__main__':
+ unittest.main()