def test__creator_with_params(self): fs = FileSystem(path=['don\'t', 'care']) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=[ "from libconfix.plugins.plainfile.setup import PlainFileCreatorSetup", "PACKAGE_NAME('PlainFileCreatorTest')", "PACKAGE_VERSION('1.2.3')", "SETUP([PlainFileCreatorSetup(", " regex=r'\.data$',", " datadir=['the', 'data', 'dir']),", " PlainFileCreatorSetup(", " regex=r'\.prefix$',", " prefixdir=['the', 'prefix', 'dir'])])" ])) fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File()) fs.rootdirectory().add(name='file.data', entry=File()) fs.rootdirectory().add(name='file.prefix', entry=File()) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=None) package.boil(external_nodes=[]) databuilder = package.rootbuilder().find_entry_builder(['file.data']) prefixbuilder = package.rootbuilder().find_entry_builder( ['file.prefix']) self.failIf(databuilder is None) self.failIf(prefixbuilder is None) self.failUnless(databuilder.datadir() == ['the', 'data', 'dir']) self.failUnless(databuilder.prefixdir() is None) self.failUnless(prefixbuilder.prefixdir() == ['the', 'prefix', 'dir']) self.failUnless(prefixbuilder.datadir() is None) pass
def test__implicit_name(self): fs = FileSystem(path=[]) fs.rootdirectory().add(name=const.CONFIX2_PKG, entry=File(lines=[ "PACKAGE_NAME('ExecutableInMemoryTest')", "PACKAGE_VERSION('1.2.3')" ])) fs.rootdirectory().add( name=const.CONFIX2_DIR, entry=File( lines=["EXECUTABLE(center=C(filename='main.c'), members=[])"])) fs.rootdirectory().add(name='main.c', entry=File()) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ExplicitSetup(use_libtool=False)]) package.boil(external_nodes=[]) found_exe_builder = None for b in package.rootbuilder().iter_builders(): if isinstance(b, ExecutableBuilder): self.failUnless(found_exe_builder is None) found_exe_builder = b continue pass self.failIf(found_exe_builder is None) self.failUnless( found_exe_builder.exename() == 'ExecutableInMemoryTest_main') pass
def test(self): fs = dirhier.packageroot() fs.rootdirectory().add(name='file.h', entry=File(lines=[])) fs.rootdirectory().add(name='file.c', entry=File(lines=[])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ConfixSetup(use_libtool=False)]) package.boil(external_nodes=[]) file_h_builder = None file_c_builder = None library_builder = None for b in package.rootbuilder().iter_builders(): if isinstance(b, FileBuilder): if b.file().name() == 'file.h' and isinstance( b, HeaderBuilder): file_h_builder = b pass if b.file().name() == 'file.c' and isinstance(b, CBuilder): file_c_builder = b pass pass if isinstance(b, LibraryBuilder): library_builder = b pass pass self.failUnless(isinstance(file_h_builder, HeaderBuilder)) self.failUnless(isinstance(file_c_builder, CBuilder)) self.failUnless(isinstance(library_builder, LibraryBuilder)) self.failUnless(file_h_builder in library_builder.members()) self.failUnless(file_c_builder in library_builder.members()) pass
def test__basic(self): fs = FileSystem(path=self.rootpath()) source = fs.rootdirectory().add(name='source', entry=Directory()) build = fs.rootdirectory().add(name='build', entry=Directory()) install = fs.rootdirectory().add(name='install', entry=Directory()) source.add( name=const.CONFIX2_PKG, entry=File(lines=[ "from libconfix.setups.boilerplate import Boilerplate", "from libconfix.setups.cmake import CMake", "from libconfix.setups.script import Script", "PACKAGE_NAME('cmake-script-build')", "PACKAGE_VERSION('1.2.3')", "SETUP([Boilerplate(), CMake(library_dependencies=False), Script()])", ])) source.add(name=const.CONFIX2_DIR, entry=File(lines=['ADD_SCRIPT(filename="script")'])) source.add(name='script', entry=File()) package = LocalPackage(rootdirectory=source, setups=None) package.boil(external_nodes=[]) package.output() fs.sync() commands.cmake( packageroot=source.abspath(), builddir=build.abspath(), args=['-DCMAKE_INSTALL_PREFIX=' + '/'.join(install.abspath())]) commands.make(builddir=build.abspath(), args=['install']) stat = os.stat(os.sep.join(install.abspath() + ['bin', 'script'])) pass
def test__long_mangled_name(self): fs = FileSystem(path=[]) fs.rootdirectory().add(name=const.CONFIX2_PKG, entry=File(lines=[ "PACKAGE_NAME('LibraryInMemoryTest')", "PACKAGE_VERSION('1.2.3')" ])) fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File(lines=["LIBRARY(members=[])"])) package = LocalPackage( rootdirectory=fs.rootdirectory(), setups=[ExplicitDirectorySetup(), ExplicitCSetup()]) package.boil(external_nodes=[]) found_lib_builder = None for b in package.rootbuilder().iter_builders(): if type(b) is LibraryBuilder: self.failUnless(found_lib_builder is None) found_lib_builder = b continue pass self.failIf(found_lib_builder is None) self.failUnless(found_lib_builder.basename() == 'LibraryInMemoryTest') pass
def test__library(self): rootdir = Directory() rootdir.add( name=const.CONFIX2_PKG, entry=File(lines=["PACKAGE_NAME('LibtoolInMemoryTest.testLibrary')", "PACKAGE_VERSION('1.2.3')"])) rootdir.add( name=const.CONFIX2_DIR, entry=File(lines=["LIBRARY(members=[C(filename='file.c')])"])) rootdir.add( name='file.c', entry=File()) package = LocalPackage(rootdirectory=rootdir, setups=[ExplicitSetup(use_libtool=True)]) package.boil(external_nodes=[]) package.output() library_builder = None for b in package.rootbuilder().iter_builders(): if isinstance(b, LibraryBuilder): self.failUnless(library_builder is None) library_builder = b pass pass self.failIf(library_builder is None) automake_output_builder = find_automake_output_builder(package.rootbuilder()) self.failUnless('lib'+library_builder.basename()+'.la' in automake_output_builder.makefile_am().ltlibraries()) pass
def test(self): fs = FileSystem(path=['don\'t', 'care']) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=[ "PACKAGE_NAME('" + self.__class__.__name__ + "')", "PACKAGE_VERSION('1.2.3')", "from libconfix.setups.explicit_setup import ExplicitSetup", "SETUP([ExplicitSetup(use_libtool=True)])" ])) fs.rootdirectory().add( name=const.CONFIX2_DIR, entry=File(lines=["DIRECTORY(['dir1'])", "DIRECTORY(['dir2'])"])) dir1 = fs.rootdirectory().add(name='dir1', entry=Directory()) dir2 = fs.rootdirectory().add(name='dir2', entry=Directory()) dir1.add(name=const.CONFIX2_DIR, entry=File(lines=["PROVIDE_SYMBOL('x')"])) dir2.add(name=const.CONFIX2_DIR, entry=File(lines=["PROVIDE_SYMBOL('x')"])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=None) try: package.boil(external_nodes=[]) self.fail() except Error: pass pass
def testDirectory(self): fs = FileSystem(path=[]) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File( lines=["PACKAGE_NAME('xxx')", "PACKAGE_VERSION('6.6.6')"])) fs.rootdirectory().add( name=const.CONFIX2_DIR, entry=File(lines=[ "SET_FILE_PROPERTY(", " filename='file.h', ", " name='INSTALLPATH_CINCLUDE',", " value=['xxx'])" ])) fs.rootdirectory().add(name='file.h', entry=File(lines=[])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ConfixSetup(use_libtool=False)]) package.boil(external_nodes=[]) package.output() file_h_builder = package.rootbuilder().find_entry_builder(['file.h']) self.failIf(file_h_builder is None) self.failUnless(isinstance(file_h_builder, HeaderBuilder)) self.failUnlessEqual(file_h_builder.visibility(), ['xxx']) self.failUnless(file_h_builder.public()) self.failUnlessEqual(file_h_builder.package_visibility_action()[0], HeaderBuilder.LOCALVISIBILITY_INSTALL) self.failUnlessEqual(file_h_builder.package_visibility_action()[1], ['xxx']) pass
def test_auto_fileiface_only(self): fs = FileSystem(path=[]) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(['PACKAGE_NAME("argh")', 'PACKAGE_VERSION("1.2.3")'])) fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File()) file = fs.rootdirectory().add( name='file.h', entry=File(lines=["// CONFIX:INSTALLPATH(['xxx'])"])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ConfixSetup(use_libtool=False)]) package.boil(external_nodes=[]) package.output() file_h_builder = package.rootbuilder().find_entry_builder(['file.h']) self.failIf(file_h_builder is None) self.failUnless(isinstance(file_h_builder, HeaderBuilder)) self.failUnlessEqual(file_h_builder.visibility(), ['xxx']) self.failUnless(file_h_builder.public()) self.failUnlessEqual(file_h_builder.package_visibility_action()[0], HeaderBuilder.LOCALVISIBILITY_INSTALL) self.failUnlessEqual(file_h_builder.package_visibility_action()[1], ['xxx']) pass
def test__CMAKE_ADD_MODULE_FILE(self): fs = FileSystem(path=['']) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=[ 'PACKAGE_NAME("test_CMAKE_ADD_MODULE_FILE")', 'PACKAGE_VERSION("1.2.3")' ])) fs.rootdirectory().add( name=const.CONFIX2_DIR, entry=File(lines=[ 'CMAKE_ADD_MODULE_FILE(', ' name="file1",', ' lines=["xxx"],' ' flags=CMAKE_BUILDINFO_LOCAL)', 'CMAKE_ADD_MODULE_FILE(', ' name="file2",', ' lines=["xxx"],', ' flags=CMAKE_BUILDINFO_LOCAL)' ])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ExplicitDirectorySetup(), CMakeSetup()]) package.boil(external_nodes=[]) package.output() self.failUnless(fs.rootdirectory().find( ['confix-admin', 'cmake', 'Modules', 'file1'])) self.failUnless(fs.rootdirectory().find( ['confix-admin', 'cmake', 'Modules', 'file2'])) pass
def test__CMAKE_CMAKELISTS_ADD_INCLUDE_local_only(self): fs = FileSystem(path=['']) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=[ 'PACKAGE_NAME("test_CMAKE_CMAKELISTS_ADD_INCLUDE_local_only")', 'PACKAGE_VERSION("1.2.3")' ])) fs.rootdirectory().add( name=const.CONFIX2_DIR, entry=File(lines=[ 'CMAKE_CMAKELISTS_ADD_INCLUDE("include1", CMAKE_BUILDINFO_LOCAL)', 'CMAKE_CMAKELISTS_ADD_INCLUDE("include2", CMAKE_BUILDINFO_LOCAL)' ])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ExplicitDirectorySetup(), CMakeSetup()]) package.boil(external_nodes=[]) package.output() self.failUnless('include1' in find_cmake_output_builder( package.rootbuilder()).top_cmakelists().get_includes()) self.failUnless('include2' in find_cmake_output_builder( package.rootbuilder()).top_cmakelists().get_includes()) for buildinfo in package.rootbuilder().iter_buildinfos(): self.failIf( isinstance(buildinfo, BuildInfo_Toplevel_CMakeLists_Include)) pass pass
def test__CMAKE_CMDLINE_MACROS_local_only(self): fs = FileSystem(path=[]) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=[ 'PACKAGE_NAME("test_CMAKE_CMDLINE_MACROS_local_only")', 'PACKAGE_VERSION("1.2.3")' ])) fs.rootdirectory().add( name=const.CONFIX2_DIR, entry=File(lines=[ 'CMAKE_CMDLINE_MACROS(macros={"macro1": "value1", "macro2": "value2"}, flags=CMAKE_BUILDINFO_LOCAL)' ])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ExplicitDirectorySetup(), CMakeSetup()]) package.boil(external_nodes=[]) package.output() self.failUnless("-Dmacro1=value1" in find_cmake_output_builder( package.rootbuilder()).local_cmakelists().get_definitions()) self.failUnless("-Dmacro2=value2" in find_cmake_output_builder( package.rootbuilder()).local_cmakelists().get_definitions()) for buildinfo in package.rootbuilder().iter_buildinfos(): self.failIf( isinstance(buildinfo, BuildInfo_CommandlineMacros_CMake)) pass pass
def test__CMAKE_CMAKELISTS_ADD_FIND_CALL_propagate_and_local(self): fs = FileSystem(path=['']) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=[ 'PACKAGE_NAME("test_CMAKE_CMAKELISTS_ADD_FIND_CALL_propagate_and_local")', 'PACKAGE_VERSION("1.2.3")' ])) fs.rootdirectory().add( name=const.CONFIX2_DIR, entry=File(lines=[ 'CMAKE_CMAKELISTS_ADD_FIND_CALL("call", (CMAKE_BUILDINFO_PROPAGATE, CMAKE_BUILDINFO_LOCAL))' ])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ExplicitDirectorySetup(), CMakeSetup()]) package.boil(external_nodes=[]) package.output() self.failUnless('call' in find_cmake_output_builder( package.rootbuilder()).top_cmakelists().get_find_calls()) for buildinfo in package.rootbuilder().iter_buildinfos(): if isinstance(buildinfo, BuildInfo_Toplevel_CMakeLists_FindCall): break pass else: self.fail() pass pass
def test__CMAKE_CMAKELISTS_ADD_INCLUDE_DIRECTORY_local(self): fs = FileSystem(path=['']) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=[ 'PACKAGE_NAME("test_CMAKE_CMAKELISTS_ADD_INCLUDE_DIRECTORY_local")', 'PACKAGE_VERSION("1.2.3")' ])) fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File(lines=['DIRECTORY(["subdir"])'])) subdir = fs.rootdirectory().add(name='subdir', entry=Directory()) subdir.add( name=const.CONFIX2_DIR, entry=File(lines=[ 'CMAKE_CMAKELISTS_ADD_INCLUDE_DIRECTORY("include-directory", CMAKE_BUILDINFO_LOCAL)' ])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ExplicitDirectorySetup(), CMakeSetup()]) package.boil(external_nodes=[]) package.output() cmake_output_builder = find_cmake_output_builder( package.rootbuilder().find_entry_builder(['subdir'])) self.failUnless('include-directory' in cmake_output_builder. local_cmakelists().get_include_directories()) pass
def test(self): fs = FileSystem(path=[]) fs.rootdirectory().add(name=const.CONFIX2_PKG, entry=File(lines=[ 'PACKAGE_NAME("' + self.__class__.__name__ + '")', 'PACKAGE_VERSION("1.2.3")' ])) fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File()) fs.rootdirectory().add(name='main.cc', entry=File(lines=[ '// CONFIX:EXENAME("explicit-name")', 'int main() { return 0; }' ])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ConfixSetup(use_libtool=False)]) package.boil(external_nodes=[]) package.output() for b in package.rootbuilder().iter_builders(): if isinstance( b, ExecutableBuilder) and b.exename() == 'explicit-name': break pass else: self.fail() pass pass
def test_explicit_no_public_visibility(self): fs = FileSystem(path=[]) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File( lines=["PACKAGE_NAME('blah')", "PACKAGE_VERSION('1.2.3')"])) fs.rootdirectory().add( name=const.CONFIX2_DIR, entry=File(lines=["H(filename='header.h', public=False)"])) fs.rootdirectory().add(name='header.h', entry=File()) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[Boilerplate(), C()]) package.boil(external_nodes=[]) package.output() h = package.rootbuilder().find_entry_builder(['header.h']) # no explicit local visibility is given, so the namespace # recognizer sees no namespace - and the file can locally be # included directly. self.failUnlessEqual(h.package_visibility_action()[0], HeaderBuilder.LOCALVISIBILITY_DIRECT_INCLUDE) self.failUnlessEqual(h.package_visibility_action()[1], []) # public visibility is explicitly not wanted. self.failIf(h.public()) pass
def test__live(self): fs = FileSystem(path=[]) fs.rootdirectory().add(name=const.CONFIX2_PKG, entry=File(lines=[ 'PACKAGE_NAME("ModulesInMemoryTest")', 'PACKAGE_VERSION("1.2.3")' ])) fs.rootdirectory().add( name=const.CONFIX2_DIR, entry=File(lines=[ 'from libconfix.plugins.cmake.out_cmake import find_cmake_output_builder', 'from libconfix.core.machinery.builder import Builder', 'class ModuleAdder(Builder):', ' def output(self):', ' super(ModuleAdder, self).output()', ' cmake_out = find_cmake_output_builder(self.parentbuilder())', ' cmake_out.add_module_file(name="TestModule.cmake",', ' lines=["my content"])', ' pass', ' pass', ' def locally_unique_id(self):', ' return str(self.__class__)', 'ADD_BUILDER(ModuleAdder())' ])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[CMakeSetup(), ExplicitDirectorySetup()]) package.boil(external_nodes=[]) package.output() modulefile = fs.rootdirectory().find( ['confix-admin', 'cmake', 'Modules', 'TestModule.cmake']) self.failIf(modulefile is None) self.failIf(modulefile.lines()[0] != 'my content') pass
def test__explicit_no_public_visibility(self): fs = FileSystem(path=self.rootpath()) source = fs.rootdirectory().add(name='source', entry=Directory()) build = fs.rootdirectory().add(name='build', entry=Directory()) install = fs.rootdirectory().add(name='install', entry=Directory()) source.add( name=const.CONFIX2_PKG, entry=File( lines=["PACKAGE_NAME('blah')", "PACKAGE_VERSION('1.2.3')"])) source.add(name=const.CONFIX2_DIR, entry=File(lines=["H(filename='header.h', public=False)"])) source.add(name='header.h', entry=File()) package = LocalPackage( rootdirectory=source, setups=[Boilerplate(), C(), CMake(library_dependencies=False)]) package.boil(external_nodes=[]) package.output() fs.sync() commands.cmake( packageroot=source.abspath(), builddir=build.abspath(), args=['-DCMAKE_INSTALL_PREFIX=' + '/'.join(install.abspath())]) commands.make(builddir=build.abspath(), args=['install']) scan.rescan_dir(install) self.failIf(install.find(['include', 'header.h'])) pass
def test__basic(self): linked_package = LocalPackage( rootdirectory=self.__linked_sourcedir, setups=[ExplicitDirectorySetup(), ExplicitCSetup(), CMakeSetup()]) # read repo files along the cascade repo = AutomakeCascadedPackageRepository( prefix=self.__regular_installdir.abspath(), readonly_prefixes=[ self.__two_readonly_installdir.abspath(), self.__one_readonly_installdir.abspath() ]) linked_package.boil(external_nodes=repo.iter_nodes()) linked_package.output() self.__fs.sync() commands.cmake( packageroot=self.__linked_sourcedir.abspath(), builddir=self.__linked_builddir.abspath(), args=[ '-DCMAKE_INSTALL_PREFIX=' + '/'.join(self.__regular_installdir.abspath()), '-DREADONLY_PREFIXES=' + '/'.join(self.__one_readonly_installdir.abspath()) + ';' + '/'.join(self.__two_readonly_installdir.abspath()) ]) commands.make(builddir=self.__linked_builddir.abspath(), args=[]) self.failUnless( os.path.isfile( os.sep.join(self.__linked_builddir.abspath() + ['exe']))) pass
def test(self): fs = FileSystem(path=[]) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=["PACKAGE_NAME('"+self.__class__.__name__+"')", "PACKAGE_VERSION('1.2.3')"])) fs.rootdirectory().add( name=const.CONFIX2_DIR, entry=File(lines=["from libconfix.core.machinery.builder import Builder", "class MyBuilder(Builder):", " def locally_unique_id(self): return 'my_builder_id'", "ADD_BUILDER(builder=MyBuilder())"])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ExplicitSetup(use_libtool=True)]) package.boil(external_nodes=[]) for b in package.rootbuilder().iter_builders(): if b.locally_unique_id() == 'my_builder_id': break pass else: self.fail() pass pass
def test__creator(self): fs = FileSystem(path=['a']) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=[ "PACKAGE_NAME('ignore-entries-c')", "PACKAGE_VERSION('6.6.6')" ])) fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File(lines=[ 'IGNORE_ENTRIES(["ignored1.idl"])', 'IGNORE_FILE("ignored2.idl")' ])) fs.rootdirectory().add(name='ignored1.idl', entry=File()) fs.rootdirectory().add(name='ignored2.idl', entry=File()) fs.rootdirectory().add(name='not-ignored.idl', entry=File()) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ConfixSetup(use_libtool=False)]) package.boil(external_nodes=[]) self.failIf( package.rootbuilder().find_entry_builder(path=['ignored1.idl'])) self.failIf( package.rootbuilder().find_entry_builder(path=['ignored2.idl'])) self.failUnless( package.rootbuilder().find_entry_builder(path=['not-ignored.idl'])) pass
def test__with_explicit_setup(self): filesys = FileSystem(path=[]) filesys.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=[ 'PACKAGE_NAME("CheckProgramTest")', 'PACKAGE_VERSION("1.2.3")' ])) filesys.rootdirectory().add( name=const.CONFIX2_DIR, entry=File(lines=[ "TESTS_ENVIRONMENT('name', 'value')", "EXECUTABLE(center=C(filename='main.c'),", " exename='the-test-program',", " what=EXECUTABLE_CHECK)" ])) filesys.rootdirectory().add(name='main.c', entry=File(lines=['int main(void) {}'])) package = LocalPackage(rootdirectory=filesys.rootdirectory(), setups=[ExplicitSetup(use_libtool=False)]) package.boil(external_nodes=[]) package.output() rootdir_output_builder = find_automake_output_builder( package.rootbuilder()) self.failIf(rootdir_output_builder is None) self.failUnless('the-test-program' in rootdir_output_builder.makefile_am().check_programs()) self.failUnlessEqual( len(rootdir_output_builder.makefile_am().tests_environment()), 1) self.failUnlessEqual( rootdir_output_builder.makefile_am().tests_environment()['name'], 'value')
def test(self): fs = FileSystem(path=self.rootpath()) source = fs.rootdirectory().add(name='source', entry=intra_package.make_source_tree()) build = fs.rootdirectory().add(name='build', entry=Directory()) package = LocalPackage( rootdirectory=source, setups=[ExplicitDirectorySetup(), ExplicitCSetup(), CMakeSetup()]) package.boil(external_nodes=[]) package.output() fs.sync() commands.cmake(packageroot=source.abspath(), builddir=build.abspath(), args=[]) commands.make(builddir=build.abspath(), args=[]) scan.rescan_dir(build) # I doubt that this will hold on Windows :-) if it becomes an # issue we will skip this check self.failUnless(build.find(['lo', 'liblo.a'])) self.failUnless(build.find(['hi', 'libhi.a'])) self.failUnless(build.find(['exe', 'exe'])) pass
def test__basic(self): fs = FileSystem(path=self.rootpath()) source = fs.rootdirectory().add(name='source', entry=make_package()) build = fs.rootdirectory().add(name='build', entry=Directory()) install = fs.rootdirectory().add(name='install', entry=Directory()) package = LocalPackage(rootdirectory=source, setups=[ Boilerplate(), Plainfile(), CMake(library_dependencies=False) ]) package.boil(external_nodes=[]) package.output() fs.sync() commands.cmake( packageroot=source.abspath(), builddir=build.abspath(), args=['-DCMAKE_INSTALL_PREFIX=' + '/'.join(install.abspath())]) commands.make(builddir=build.abspath(), args=['install']) self.failUnless( os.path.isfile( os.sep.join( self.rootpath() + ['install', 'share', 'subdir', 'data', 'plainfile_data']))) self.failUnless( os.path.isfile( os.sep.join( self.rootpath() + ['install', 'subdir', 'prefix', 'plainfile_prefix']))) pass
def test__basic(self): fs = FileSystem(path=[]) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=[ 'PACKAGE_NAME("HierarchyInMemoryTest.basic")', 'PACKAGE_VERSION("1.2.3")' ])) fs.rootdirectory().add( name=const.CONFIX2_DIR, entry=File(lines=[ 'DIRECTORY(["directory0"])', 'DIRECTORY(["directory1"])' ])) fs.rootdirectory().add(name='directory0', entry=Directory()) fs.rootdirectory().add(name='directory1', entry=Directory()) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ExplicitDirectorySetup(), CMakeSetup()]) package.boil(external_nodes=[]) package.output() cmake_output_builder = find_cmake_output_builder(package.rootbuilder()) self.failUnlessEqual( len(cmake_output_builder.local_cmakelists().get_subdirectories()), 2 # plus the admin stuff, confix-admin/cmake/Modules + 4) self.failUnless('directory0' in cmake_output_builder.local_cmakelists( ).get_subdirectories()) self.failUnless('directory1' in cmake_output_builder.local_cmakelists( ).get_subdirectories()) pass
def test(self): fs = FileSystem(path=['', 'path', 'to', 'it']) fs.rootdirectory().add(name=const.CONFIX2_PKG, entry=File(lines=[ "PACKAGE_NAME('ProvideRequireInclude')", "PACKAGE_VERSION('1.2.3')" ])) fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File()) lo = fs.rootdirectory().add(name='lo', entry=Directory()) lo.add(name=const.CONFIX2_DIR, entry=File(lines=["PROVIDE_H('lo.h')"])) hi = fs.rootdirectory().add(name='hi', entry=Directory()) hi.add(name=const.CONFIX2_DIR, entry=File(lines=["REQUIRE_H('lo.h', URGENCY_ERROR)"])) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ConfixSetup(use_libtool=False)]) package.boil(external_nodes=[]) lo_builder = package.rootbuilder().find_entry_builder(['lo']) hi_builder = package.rootbuilder().find_entry_builder(['hi']) self.failUnless(lo_builder in package.digraph().successors(hi_builder)) pass
def testExplicitName(self): fs = FileSystem(path=['don\'t', 'care']) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=[ "PACKAGE_NAME('LibraryNames.testExplicitName')", "PACKAGE_VERSION('1.2.3')" ])) fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File(lines=["LIBNAME('myownname')"])) fs.rootdirectory().add(name='file.c', entry=File()) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ConfixSetup(use_libtool=False)]) package.boil(external_nodes=[]) for b in package.rootbuilder().iter_builders(): if isinstance(b, LibraryBuilder): self.failUnlessEqual(b.basename(), 'myownname') break pass else: self.fail() pass pass
def test(self): fs = FileSystem(path=[]) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=[ "PACKAGE_NAME('ExplicitLibraryVersionTest')", "PACKAGE_VERSION('1.2.3')" ])) fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File(lines=["LIBRARY_VERSION((6,6,6))"])) fs.rootdirectory().add(name='file.c', entry=File()) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[ConfixSetup(use_libtool=True)]) package.boil(external_nodes=[]) for b in package.rootbuilder().iter_builders(): if isinstance(b, LibraryBuilder): lib_builder = b break pass else: self.fail() pass self.failUnlessEqual(lib_builder.version(), (6, 6, 6)) self.failUnlessEqual(lib_builder.default_version(), "1.2.3") pass
def test(self): source = source_tree(testname=self.__class__.__name__) lo_dir = source.get('lo') hi_dir = source.get('hi') lo_pkg = LocalPackage(rootdirectory=lo_dir, setups=[ConfixSetup(use_libtool=False)]) lo_pkg.boil(external_nodes=[]) lo_pkg_inst = lo_pkg.install() hi_pkg = LocalPackage(rootdirectory=hi_dir, setups=[ConfixSetup(use_libtool=False)]) hi_pkg.boil(external_nodes=lo_pkg_inst.nodes()) hi_pkg.output() hi_pkg_rootdir_output_builder = find_automake_output_builder( hi_pkg.rootbuilder()) self.failIf(hi_pkg_rootdir_output_builder is None) makefile_am = hi_pkg_rootdir_output_builder.makefile_am() self.failUnless( '$(readonly_prefixes_incpath)' in makefile_am.includepath()) print hi_ldadd = makefile_am.compound_ldadd(self.__class__.__name__ + '-hi_main') self.failIf(hi_ldadd is None) self.failUnless('$(readonly_prefixes_libpath)' in hi_ldadd) pass
def test(self): fs = FileSystem(path=[]) fs.rootdirectory().add( name=const.CONFIX2_PKG, entry=File(lines=['PACKAGE_NAME("'+self.__class__.__name__+'")', 'PACKAGE_VERSION("1.2.3")'])) fs.rootdirectory().add( name=const.CONFIX2_DIR, entry=File()) lo = fs.rootdirectory().add( name='lo', entry=Directory()) hi = fs.rootdirectory().add( name='hi', entry=Directory()) package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[NullSetup()]) lodir_builder = DirectoryBuilder(directory=lo) lodir_builder.add_builder(DeferredProvider(provide=Provide_Symbol(symbol='the_deferred_provided_symbol'))) package.rootbuilder().add_builder(lodir_builder) hidir_builder = DirectoryBuilder(directory=hi) hidir_builder.add_require(Require_Symbol(symbol='the_deferred_provided_symbol', found_in=[], urgency=Require.URGENCY_ERROR)) package.rootbuilder().add_builder(hidir_builder) package.boil(external_nodes=[]) self.failUnless(lodir_builder in package.digraph().successors(hidir_builder)) pass