Esempio n. 1
0
    def test(self):
        package = InstalledPackage(
            name='PackageFileTestPackage',
            version='1.2.3',
            nodes=[
                InstalledNode(name=['a', 'b'],
                              provides=[Provide_Symbol(symbol='beitl')],
                              requires=[
                                  Require_Symbol(symbol='sack',
                                                 found_in=['PackageFileTest'])
                              ],
                              buildinfos=[])
            ])
        fs = FileSystem(path=['', 'tmp'])
        pkgfile = fs.rootdirectory().add(name='test.repo', entry=File())

        # dump package to a file, and re-read it from that
        # file. perform placebo checks.
        repo = PackageFile(file=pkgfile)
        repo.dump(package=package)
        repo = PackageFile(file=pkgfile)
        package = repo.load()

        self.failUnless(len(package.nodes()) == 1)
        node = package.nodes()[0]
        self.failUnless(len(node.provides()) == 1)
        self.failUnless(len(node.requires()) == 1)
        self.failUnlessRaises(StopIteration, node.iter_buildinfos().next)

        pass
Esempio n. 2
0
    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())
        lo1 = fs.rootdirectory().add(
            name='lo1',
            entry=Directory())
        lo2 = fs.rootdirectory().add(
            name='lo2',
            entry=Directory())
        hi = fs.rootdirectory().add(
            name='hi',
            entry=Directory())
        package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[NullSetup()])

        lo1_builder = DirectoryBuilder(directory=lo1)
        lo1_builder.add_provide(Provide_Symbol(symbol='the_ambiguous_symbol'))
        package.rootbuilder().add_builder(lo1_builder)

        lo2_builder = DirectoryBuilder(directory=lo2)
        lo2_builder.add_provide(Provide_Symbol(symbol='the_ambiguous_symbol'))
        package.rootbuilder().add_builder(lo2_builder)

        hi_builder = DirectoryBuilder(directory=hi)
        hi_builder.add_require(Require_Symbol(symbol='the_ambiguous_symbol', found_in=[]))
        package.rootbuilder().add_builder(hi_builder)

        self.failUnlessRaises(Error, package.boil, external_nodes=[])
        pass
Esempio n. 3
0
 def setUp(self):
     fs = FileSystem(path=['', 'home', 'jfasch', '.confix2'])
     self.file_ = fs.rootdirectory().add(
         name='rc',
         entry=File(lines=[
             "the_profile = {",
             "    'PREFIX': '/some/prefix',",
             "    'READONLY_PREFIXES': ['/some/prefix', '/some/other/prefix'],",
             "    'SHORT_LIBNAMES': True,",
             "    'USE_LIBTOOL': True,",
             "    'USE_BULK_INSTALL': True,",
             "    'USE_KDE_HACK': False,",
             "    'BUILDROOT': '/some/build/dir',",
             "    'MESSAGE_PREFIX': 'some-message-prefix',",
             "    'PRINT_TIMINGS': False,",
             "    'ADVANCED': False,",
             "",
             "    'CONFIGURE': {",
             "        'ENV': {",
             "            'CFLAGS': '-some-cflags',",
             "            'CXXFLAGS': '-some-cxxflags',",
             "            'INSTALL': '/bin/install'",
             "        },",
             "        'ARGS': ['--arg1', '--arg2'],",
             "    },",
             "}",
             "PROFILES = {",
             "    'some_profile': the_profile,",
             "}",
         ]))
     pass
Esempio n. 4
0
    def setUp(self):
        fs = FileSystem(path=['', 'path', 'to', 'it'])
        fs.rootdirectory().add(name=const.CONFIX2_PKG,
                               entry=File(lines=[
                                   "PACKAGE_NAME('ExternalLibraryTest')",
                                   "PACKAGE_VERSION('1.2.3')"
                               ]))
        fs.rootdirectory().add(name=const.CONFIX2_DIR,
                               entry=File(lines=[
                                   'DIRECTORY(["lolo"])',
                                   'DIRECTORY(["lo"])',
                                   'DIRECTORY(["hi"])',
                               ]))
        lolo = fs.rootdirectory().add(name='lolo', entry=Directory())
        lolo.add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                "PROVIDE_SYMBOL('lolo')", "EXTERNAL_LIBRARY(",
                "    incpath=['-I/the/include/path/of/lolo'],",
                "    libpath=['-L/the/first/library/path/of/lolo', '-L/the/second/library/path/of/lolo'],",
                "    cflags=['lolo_cflags'],",
                "    cxxflags=['lolo_cxxflags'],",
                "    cmdlinemacros={'cmdlinemacro_lolo': 'value_lolo'},",
                "    libs=['-llolo'])"
            ]))

        lo = fs.rootdirectory().add(name='lo', entry=Directory())
        lo.add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                "REQUIRE_SYMBOL('lolo', URGENCY_ERROR)",
                "PROVIDE_SYMBOL('lo')", "EXTERNAL_LIBRARY(",
                "    incpath=['-I/the/include/path/of/lo'],",
                "    libpath=['-L/the/first/library/path/of/lo', '-L/the/second/library/path/of/lo'],",
                "    cflags=['lo_cflags'],", "    cxxflags=['lo_cxxflags'],",
                "    cmdlinemacros={'cmdlinemacro_lo': 'value_lo'},",
                "    libs=['-llo'])"
            ]))

        hi = fs.rootdirectory().add(name='hi', entry=Directory())
        hi.add(name=const.CONFIX2_DIR,
               entry=File(lines=[
                   'hi_c = C(filename="hi_c.c")',
                   'hi_cc = CXX(filename="hi_cc.cc")',
                   'LIBRARY(basename="hi", members=[hi_c, hi_cc])'
               ]))
        hi.add(name='hi_c.c',
               entry=File(
                   lines=["// CONFIX:REQUIRE_SYMBOL('lo', URGENCY_ERROR)"]))
        hi.add(name='hi_cc.cc',
               entry=File(
                   lines=["// CONFIX:REQUIRE_SYMBOL('lo', URGENCY_ERROR)"]))

        self.__package = LocalPackage(rootdirectory=fs.rootdirectory(),
                                      setups=[ExplicitSetup(use_libtool=True)])
        self.__package.boil(external_nodes=[])
        self.__package.output()

        pass
Esempio n. 5
0
    def test__relative_path(self):
        fs = FileSystem(path=['a', 'b'])
        subdir = fs.rootdirectory().add(name='subdir', entry=Directory())
        subsubdir = subdir.add(name='subsubdir', entry=Directory())
        file = subsubdir.add(name='file', entry=File())

        self.failUnless(
            subsubdir.relpath(fs.rootdirectory()) == ['subdir', 'subsubdir'])
        self.failUnless(file.relpath(subdir) == ['subsubdir', 'file'])
        pass
Esempio n. 6
0
    def test__sync_root_more_than_one_deep(self):
        # the above tests only test syncing an in-memory filesystem
        # whose root is only one directory apart from a physical
        # directory. here we test whether it work with two directory
        # entries in the air as well.

        fs = FileSystem(path=self.rootpath())
        fs.sync()
        self.failUnless(os.path.isdir(os.sep.join(self.rootpath())))
        pass
Esempio n. 7
0
    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
Esempio n. 8
0
    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
Esempio n. 9
0
    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
Esempio n. 10
0
    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
Esempio n. 11
0
    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
Esempio n. 12
0
    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
Esempio n. 13
0
    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
Esempio n. 14
0
    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
Esempio n. 15
0
    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')
Esempio n. 16
0
    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
Esempio n. 17
0
    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
Esempio n. 18
0
    def test__explicit_mode(self):
        fs = FileSystem(path=self.rootpath())
        file_with_0755 = fs.rootdirectory().add(name='file_with_0755',
                                                entry=File(mode=0755))
        fs.sync()

        self.failUnless(os.path.isfile(os.sep.join(file_with_0755.abspath())))
        self.failUnlessEqual(
            stat.S_IMODE(
                os.stat(os.sep.join(file_with_0755.abspath())).st_mode), 0755)
        pass
Esempio n. 19
0
 def test(self):
     fs_orig = FileSystem(path=[])
     fs_overlay = FileSystem(path=[])
     fs_overlay.rootdirectory().add(name='dir', entry=Directory())
     fs = OverlayFileSystem(original=fs_orig, overlay=fs_overlay)
     dir = fs.rootdirectory().get('dir')
     try:
         dir.add(name='file', entry=File())
         self.fail()
     except OverlayDirectory.OverlayAddError:
         pass
     pass
Esempio n. 20
0
    def setUp(self):
        fs = FileSystem(path=[], rootdirectory=intra_package.make_source_tree())
        
        self.__package = LocalPackage(rootdirectory=fs.rootdirectory(),
                                      setups=[ExplicitDirectorySetup(), ExplicitCSetup(), CMakeSetup()])
        self.__package.boil(external_nodes=[])
        self.__package.output()

        self.__lo_output_builder = find_cmake_output_builder(self.__package.rootbuilder().find_entry_builder(['lo']))
        self.__hi_output_builder = find_cmake_output_builder(self.__package.rootbuilder().find_entry_builder(['hi']))
        self.__exe_output_builder = find_cmake_output_builder(self.__package.rootbuilder().find_entry_builder(['exe']))
        pass
Esempio n. 21
0
class CheckProgramBase(PersistentTestCase):
    def __init__(self, methodName):
        PersistentTestCase.__init__(self, methodName)
        self.fs_ = None
        pass

    def use_libtool(self):
        assert 0

    def setUp(self):
        PersistentTestCase.setUp(self)
        self.fs_ = FileSystem(path=self.rootpath())

        self.build_ = self.fs_.rootdirectory().add(name='build',
                                                   entry=Directory())

        self.source_ = self.fs_.rootdirectory().add(name='source',
                                                    entry=Directory())
        self.source_.add(
            name=const.CONFIX2_PKG,
            entry=File(lines=[
                'PACKAGE_NAME("CheckProgramTest")', 'PACKAGE_VERSION("1.2.3")'
            ]))
        self.source_.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)"
                         ]))
        self.source_.add(
            name='main.c',
            entry=File(lines=[
                '#include <sys/types.h>', '#include <sys/stat.h>',
                '#include <fcntl.h>', '#include <stdlib.h>',
                '#include <string.h>', 'int main(void) {',
                '    const char* name = getenv("name");', '    if (!name)',
                '        return 1;', '    if (strcmp(name, "value"))',
                '        return 1;', '    return open("' +
                os.sep.join(self.build_.abspath() + ['my-check-was-here']) +
                '",', '                O_CREAT|O_RDWR, 0644) >=0?0:1;', '}'
            ]))

        self.package_ = LocalPackage(
            rootdirectory=self.source_,
            setups=[ExplicitSetup(use_libtool=self.use_libtool())])
        self.package_.boil(external_nodes=[])
        self.package_.output()
        pass

    pass
Esempio n. 22
0
    def test__CONFIGURE_AC_ACINCLUDE_M4_propagate(self):
        """ We pass flags=[PROPAGATE] explicitly, to both
        ACINCLUDE_M4() and CONFIGURE_AC(), propagate it to a dependent
        node,"hi", and check if both go into acinclude.m4 and configure.ac."""

        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())
        lo = fs.rootdirectory().add(name='lo', entry=Directory())
        lo.add(name=const.CONFIX2_DIR,
               entry=File(lines=[
                   'PROVIDE_SYMBOL("lo")',
                   'CONFIGURE_AC(lines=["the_token_for_configure_ac"],',
                   '             order=AC_PROGRAMS,',
                   '             flags=[PROPAGATE])',
                   'ACINCLUDE_M4(lines=["the_token_for_acinclude_m4"],',
                   '             flags=[PROPAGATE])'
               ]))
        hi = fs.rootdirectory().add(name='hi', entry=Directory())
        hi.add(name=const.CONFIX2_DIR,
               entry=File(lines=['REQUIRE_SYMBOL("lo", URGENCY_ERROR)']))

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ConfixSetup(use_libtool=False)])
        package.boil(external_nodes=[])
        package.output()

        configure_ac = fs.rootdirectory().find(['configure.ac'])
        acinclude_m4 = fs.rootdirectory().find(['acinclude.m4'])
        self.failIf(configure_ac is None)
        self.failIf(acinclude_m4 is None)

        for line in configure_ac.lines():
            if line == 'the_token_for_configure_ac':
                break
            pass
        else:
            self.fail()
            pass

        for line in acinclude_m4.lines():
            if line == 'the_token_for_acinclude_m4':
                break
            pass
        else:
            self.fail()
            pass
        pass
Esempio n. 23
0
    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
Esempio n. 24
0
    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
Esempio n. 25
0
    def test__sync_mem2sync(self):
        fs = FileSystem(path=self.rootpath())
        subdir = Directory(mode=0700)
        fs.rootdirectory().add(name='subdir', entry=subdir)
        file = File(mode=0755)
        subdir.add(name='file', entry=file)

        self.failUnlessEqual(fs.rootdirectory().state(),
                             DirectoryState.INMEMORY)
        self.failUnlessEqual(subdir.state(), DirectoryState.INMEMORY)
        self.failUnlessEqual(file.state(), FileState.NEW)

        fs.sync()

        self.failUnlessEqual(fs.rootdirectory().state(), DirectoryState.SYNC)
        self.failUnlessEqual(subdir.state(), DirectoryState.SYNC)
        self.failUnlessEqual(file.state(), FileState.SYNC_INMEM)

        self.failUnless(os.path.isdir(os.sep.join(self.rootpath())))
        self.failUnless(
            os.path.isdir(os.sep.join(self.rootpath() + ['subdir'])))
        self.failUnless(
            os.path.isfile(os.sep.join(self.rootpath() + ['subdir', 'file'])))

        self.failUnlessEqual(
            stat.S_IMODE(
                os.stat(os.sep.join(self.rootpath() + ['subdir'])).st_mode),
            0700)
        self.failUnlessEqual(
            stat.S_IMODE(
                os.stat(os.sep.join(self.rootpath() +
                                    ['subdir', 'file'])).st_mode), 0755)
        pass
Esempio n. 26
0
    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
Esempio n. 27
0
    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
Esempio n. 28
0
class IntraPackageBuildBase(PersistentTestCase):
    def __init__(self, methodName):
        PersistentTestCase.__init__(self, methodName)
        pass

    def use_libtool(self): assert 0

    def setUp(self):
        PersistentTestCase.setUp(self)
        
        self.sourcerootpath_ = self.rootpath() + ['source']
        self.buildrootpath_ = self.rootpath() + ['build']

        self.fs_ = FileSystem(path=self.sourcerootpath_,
                              rootdirectory=packages.lo_hi1_hi2_highest_exe(name='intrapackagebuildtest',
                                                                            version='1.2.3'))
        
        self.package_ = LocalPackage(rootdirectory=self.fs_.rootdirectory(),
                                     setups=[ConfixSetup(use_libtool=self.use_libtool())])
        self.package_.boil(external_nodes=[])
        self.package_.output()
        self.fs_.sync()
        pass

    def test(self):
        try:
            bootstrap.bootstrap(
                packageroot=self.sourcerootpath_,
                path=None,
                use_kde_hack=False,
                argv0=sys.argv[0])
            os.makedirs(os.sep.join(self.buildrootpath_))
            configure.configure(
                packageroot=self.sourcerootpath_,
                builddir=self.buildrootpath_,
                prefix='/dev/null'.split(os.sep),
                readonly_prefixes=[])
            make.make(builddir=self.buildrootpath_, args=[])
        except Error, e:
            sys.stderr.write(`e`+'\n')
            raise
        
        self.failUnless(os.path.isfile(os.sep.join(self.buildrootpath_+['lo', 'lo.o'])))
        self.failUnless(os.path.isfile(os.sep.join(self.buildrootpath_+['hi1', 'hi1.o'])))
        self.failUnless(os.path.isfile(os.sep.join(self.buildrootpath_+['hi2', 'hi2.o'])))
        self.failUnless(os.path.isfile(os.sep.join(self.buildrootpath_+['highest', 'highest.o'])))
        self.failUnless(os.path.isfile(os.sep.join(self.buildrootpath_+['exe', 'main.o'])))
        self.failUnless(os.path.isfile(os.sep.join(self.buildrootpath_+['exe', 'intrapackagebuildtest_exe_main'])))
        pass
Esempio n. 29
0
    def test__virtual_file(self):
        fs = FileSystem(path=self.rootpath())
        dir = fs.rootdirectory().add(name='dir', entry=Directory())
        file = dir.add(name='file',
                       entry=File(state=FileState.VIRTUAL,
                                  lines=['some token']))
        file.add_lines(['some other token'])

        fs.sync()

        self.failIf(os.path.exists(os.sep.join(file.abspath())))
        self.failUnless(file.state() == FileState.VIRTUAL)
        self.failIf(file.raw_lines() is None)
        self.failUnless(file.lines() == ['some token', 'some other token'])
        pass
Esempio n. 30
0
    def setUp(self):
        self.fs_ = FileSystem(path=['don\'t', 'care'])
        self.fs_.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(
                lines=["PACKAGE_NAME('LIBADD')", "PACKAGE_VERSION('1.2.3')"]))
        self.fs_.rootdirectory().add(name=const.CONFIX2_DIR, entry=File())
        lo = self.fs_.rootdirectory().add(name='lo', entry=Directory())
        lo.add(name=const.CONFIX2_DIR, entry=File())
        lo.add(name='lo.h', entry=File())
        lo.add(name='lo.c', entry=File())

        hi = self.fs_.rootdirectory().add(name='hi', entry=Directory())
        hi.add(name=const.CONFIX2_DIR, entry=File())
        hi.add(name='hi.c', entry=File(lines=['#include <lo.h>']))
        pass