diff options
author | Ryan Williams <rdw@lindenlab.com> | 2007-02-21 23:57:35 +0000 |
---|---|---|
committer | Ryan Williams <rdw@lindenlab.com> | 2007-02-21 23:57:35 +0000 |
commit | b7b4135e5507fd7be5aab24d5de64675dd28caca (patch) | |
tree | c198c0c3bebe31cec9deb8229330cafd5a9acbfd /indra/test | |
parent | 5bdbc85a14447c9839f300072c4a3e3146f51585 (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.py | 109 |
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() |