def create_merge_module(self, output_dir, package_type, force, version, keep_temp): self.package.set_mode(package_type) files_list = self.files_list(package_type, force) mergemodule = MergeModule(self.config, files_list, self.package) package_name = self._package_name(version) sources = os.path.join(output_dir, "%s.wsx" % package_name) mergemodule.write(sources) wixobj = os.path.join(output_dir, "%s.wixobj" % package_name) if self._with_wine: wixobj = to_winepath(wixobj) sources = to_winepath(sources) candle = Candle(self.wix_prefix, self._with_wine) candle.compile(sources, output_dir) light = Light(self.wix_prefix, self._with_wine) path = light.compile([wixobj], package_name, output_dir, True) # Clean up if not keep_temp: os.remove(sources) os.remove(wixobj) os.remove(wixobj.replace('.wixobj', '.wixpdb')) return path
def create_merge_module(self, output_dir, package_type, force, version, keep_temp): self.package.set_mode(package_type) files_list = self.files_list(package_type, force) if isinstance(self.package, VSTemplatePackage): mergemodule = VSMergeModule(self.config, files_list, self.package) else: mergemodule = MergeModule(self.config, files_list, self.package) tmpdir = None # For application packages that requires stripping object files, we need # to copy all the files to a new tree and strip them there: if isinstance(self.package, App) and self.package.strip: tmpdir = tempfile.mkdtemp() for f in files_list: src = os.path.join(self.config.prefix, f) dst = os.path.join(tmpdir, f) if not os.path.exists(os.path.dirname(dst)): os.makedirs(os.path.dirname(dst)) shutil.copy(src, dst) s = strip.Strip(self.config, self.package.strip_excludes) for p in self.package.strip_dirs: s.strip_dir(os.path.join(tmpdir, p)) mergemodule = MergeModule(self.config, files_list, self.package) if tmpdir: mergemodule.prefix = tmpdir package_name = self._package_name(version) sources = [os.path.join(output_dir, "%s.wxs" % package_name)] mergemodule.write(sources[0]) wixobjs = [os.path.join(output_dir, "%s.wixobj" % package_name)] for x in ['utils']: wixobjs.append(os.path.join(output_dir, "%s.wixobj" % x)) sources.append( os.path.join(os.path.abspath(self.config.data_dir), 'wix/%s.wxs' % x)) if self._with_wine: wixobjs = [to_winepath(x) for x in wixobjs] sources = [to_winepath(x) for x in sources] candle = Candle(self.wix_prefix, self._with_wine) candle.compile(' '.join(sources), output_dir) light = Light(self.wix_prefix, self._with_wine) path = light.compile(wixobjs, package_name, output_dir, True) # Clean up if not keep_temp: os.remove(sources[0]) for f in wixobjs: os.remove(f) try: os.remove(f.replace('.wixobj', '.wixpdb')) except: pass if tmpdir: shutil.rmtree(tmpdir) return path
def setUp(self): self.config = DummyConfig() cb = create_cookbook(self.config) store = create_store(self.config) cb.add_recipe(Recipe1(self.config)) self.package = Package(self.config, store, cb) self.mergemodule = MergeModule(self.config, self.package.files_list(), self.package)
class MergeModuleTest(unittest.TestCase): def setUp(self): self.config = DummyConfig() cb = create_cookbook(self.config) store = create_store(self.config) cb.add_recipe(Recipe1(self.config)) self.package = Package(self.config, store, cb) self.mergemodule = MergeModule(self.config, self.package.files_list(), self.package) def test_add_root(self): self.mergemodule._add_root() self.assertEqual( '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" />', etree.tostring(self.mergemodule.root)) def test_add_module(self): self.mergemodule._add_root() self.mergemodule._add_module() self.assertEqual( '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">' '<Module Id="_gstreamer_test" Language="1033" Version="1.0" />' '</Wix>', etree.tostring(self.mergemodule.root)) def test_add_package(self): self.mergemodule._add_root() self.mergemodule._add_module() self.mergemodule._add_package() self.assertEqual( '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">' '<Module Id="_gstreamer_test" Language="1033" Version="1.0">' '<Package Comments="test" Description="GStreamer Test" Id="1" ' 'Manufacturer="GStreamer Project" />' '</Module>' '</Wix>', etree.tostring(self.mergemodule.root)) def test_add_root_dir(self): self.mergemodule._add_root() self.mergemodule._add_module() self.mergemodule._add_package() self.mergemodule._add_root_dir() self.assertEqual( '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">' '<Module Id="_gstreamer_test" Language="1033" Version="1.0">' '<Package Comments="test" Description="GStreamer Test" Id="1" ' 'Manufacturer="GStreamer Project" />' '<Directory Id="TARGETDIR" Name="SourceDir" />' '</Module>' '</Wix>', etree.tostring(self.mergemodule.root)) def test_add_directory(self): self.mergemodule._add_root() self.mergemodule._add_module() self.mergemodule._add_package() self.mergemodule._add_root_dir() self.assertEqual(len(self.mergemodule._dirnodes), 1) self.assertEqual(self.mergemodule._dirnodes[''], self.mergemodule.rdir) self.mergemodule._add_directory('lib/gstreamer-0.10') self.assertEqual(len(self.mergemodule._dirnodes), 3) self.assertTrue('lib' in self.mergemodule._dirnodes) self.assertTrue('lib/gstreamer-0.10' in self.mergemodule._dirnodes) self.mergemodule._add_directory('bin') self.assertEqual(len(self.mergemodule._dirnodes), 4) self.assertTrue('bin' in self.mergemodule._dirnodes) def test_add_file(self): self.mergemodule._add_root() self.mergemodule._add_module() self.mergemodule._add_package() self.mergemodule._add_root_dir() self.assertEqual(len(self.mergemodule._dirnodes), 1) self.assertEqual(self.mergemodule._dirnodes[''], self.mergemodule.rdir) self.mergemodule._add_file('bin/gst-inspect-0.10.exe') self.assertEqual(len(self.mergemodule._dirnodes), 2) self.assertTrue('bin' in self.mergemodule._dirnodes) self.assertTrue('gstreamer-0.10.exe' not in self.mergemodule._dirnodes) self.mergemodule._add_file('bin/gst-launch-0.10.exe') self.assertEqual(len(self.mergemodule._dirnodes), 2) self.assertTrue('bin' in self.mergemodule._dirnodes) self.assertTrue('gstreamer-0.10.exe' not in self.mergemodule._dirnodes) def test_render_xml(self): self.config.platform = Platform.WINDOWS self.mergemodule._get_uuid = lambda: '1' self.mergemodule.fill() tmp = io.StringIO() self.mergemodule.write(tmp) #self._compstr(tmp.getvalue(), MERGE_MODULE) self.assertEqual(MERGE_MODULE, tmp.getvalue()) def _compstr(self, str1, str2): str1 = str1.split('\n') str2 = str2.split('\n') for i in range(len(str1)): if str1[i] != str2[i]: print(str1[i]) print(str2[i]) print("")
class MergeModuleTest(unittest.TestCase): def setUp(self): self.config = DummyConfig() cb = create_cookbook(self.config) store = create_store(self.config) cb.add_recipe(Recipe1(self.config)) self.package = Package(self.config, store, cb) self.mergemodule = MergeModule(self.config, self.package.files_list(), self.package) def test_add_root(self): self.mergemodule._add_root() self.assertEqual( '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" />', etree.tostring(self.mergemodule.root)) def test_add_module(self): self.mergemodule._add_root() self.mergemodule._add_module() self.assertEqual( '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">' '<Module Id="_gstreamer_test" Language="1033" Version="1.0" />' '</Wix>', etree.tostring(self.mergemodule.root)) def test_add_package(self): self.mergemodule._add_root() self.mergemodule._add_module() self.mergemodule._add_package() self.assertEqual( '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">' '<Module Id="_gstreamer_test" Language="1033" Version="1.0">' '<Package Comments="test" Description="GStreamer Test" Id="1" ' 'Manufacturer="GStreamer Project" />' '</Module>' '</Wix>', etree.tostring(self.mergemodule.root)) def test_add_root_dir(self): self.mergemodule._add_root() self.mergemodule._add_module() self.mergemodule._add_package() self.mergemodule._add_root_dir() self.assertEqual( '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">' '<Module Id="_gstreamer_test" Language="1033" Version="1.0">' '<Package Comments="test" Description="GStreamer Test" Id="1" ' 'Manufacturer="GStreamer Project" />' '<Directory Id="TARGETDIR" Name="SourceDir" />' '</Module>' '</Wix>', etree.tostring(self.mergemodule.root)) def test_add_directory(self): self.mergemodule._add_root() self.mergemodule._add_module() self.mergemodule._add_package() self.mergemodule._add_root_dir() self.assertEqual(len(self.mergemodule._dirnodes), 1) self.assertEqual(self.mergemodule._dirnodes[''], self.mergemodule.rdir) self.mergemodule._add_directory('lib/gstreamer-0.10') self.assertEqual(len(self.mergemodule._dirnodes), 3) self.assertTrue('lib' in self.mergemodule._dirnodes) self.assertTrue('lib/gstreamer-0.10' in self.mergemodule._dirnodes) self.mergemodule._add_directory('bin') self.assertEqual(len(self.mergemodule._dirnodes), 4) self.assertTrue('bin' in self.mergemodule._dirnodes) def test_add_file(self): self.mergemodule._add_root() self.mergemodule._add_module() self.mergemodule._add_package() self.mergemodule._add_root_dir() self.assertEqual(len(self.mergemodule._dirnodes), 1) self.assertEqual(self.mergemodule._dirnodes[''], self.mergemodule.rdir) self.mergemodule._add_file('bin/gst-inspect-0.10.exe') self.assertEqual(len(self.mergemodule._dirnodes), 2) self.assertTrue('bin' in self.mergemodule._dirnodes) self.assertTrue('gstreamer-0.10.exe' not in self.mergemodule._dirnodes) self.mergemodule._add_file('bin/gst-launch-0.10.exe') self.assertEqual(len(self.mergemodule._dirnodes), 2) self.assertTrue('bin' in self.mergemodule._dirnodes) self.assertTrue('gstreamer-0.10.exe' not in self.mergemodule._dirnodes) def test_render_xml(self): self.config.platform = Platform.WINDOWS self.mergemodule._get_uuid = lambda : '1' self.mergemodule.fill() tmp = io.StringIO() self.mergemodule.write(tmp) #self._compstr(tmp.getvalue(), MERGE_MODULE) self.assertEqual(MERGE_MODULE, tmp.getvalue()) def _compstr(self, str1, str2): str1 = str1.split('\n') str2 = str2.split('\n') for i in range(len(str1)): if str1[i] != str2[i]: print(str1[i]) print(str2[i]) print("")