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

        file = fs.rootdirectory().find(['subdir', 'file'])
        self.failIfEqual(file, None)
        self.failUnless(isinstance(file, File))

        self.assertEqual(subdir.abspath(), ['a', 'b', 'subdir'])
        self.assertEqual(subdir.relpath(fs.rootdirectory()), ['subdir'])

        self.assertRaises(Directory.AlreadyMounted,
                          fs.rootdirectory().add,
                          name='subdir',
                          entry=File())

        pass
Esempio n. 2
0
    def test__basic(self):
        source = Directory()
        source.add(
            name=const.CONFIX2_PKG,
            entry=File(lines=[
                'PACKAGE_NAME("Local-Install")', 'PACKAGE_VERSION("1.2.3")'
            ]))
        source.add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                'DIRECTORY(["headers-only"])',
                'DIRECTORY(["headers-with-library"])', 'DIRECTORY(["exe"])'
            ]))

        headers_only = source.add(name='headers-only', entry=Directory())
        headers_with_library = source.add(name='headers-with-library',
                                          entry=Directory())
        exe = source.add(name='exe', entry=Directory())

        headers_only.add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                'H(filename="header-1.h", install=["headers-only-install"])',
                'H(filename="header-2.h", install=["headers-only-install"])'
            ]))
        headers_only.add(name='header-1.h', entry=File())
        headers_only.add(name='header-2.h', entry=File())

        headers_with_library.add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                'LIBRARY(members=[H(filename="library-1.h", install=["headers-with-library-install"]),'
                '                 H(filename="library-2.h", install=["headers-with-library-install"]),'
                '                 C(filename="library-1.c"),'
                '                 C(filename="library-2.c")',
                '                ]', '       )'
            ]))
        headers_with_library.add(name='library-1.h',
                                 entry=File(lines=['void library1(void);']))
        headers_with_library.add(name='library-2.h',
                                 entry=File(lines=['void library2(void);']))
        headers_with_library.add(
            name='library-1.c',
            entry=File(lines=[
                '#include <headers-only-install/header-1.h>',
                'void library1(void) {}'
            ]))
        headers_with_library.add(
            name='library-2.c',
            entry=File(lines=[
                '#include <headers-only-install/header-2.h>',
                'void library2(void) {}'
            ]))

        exe.add(name=const.CONFIX2_DIR,
                entry=File(lines=[
                    'EXECUTABLE(exename="exe",',
                    '           center=C(filename="main.c"))',
                ]))
        exe.add(
            name='main.c',
            entry=File(lines=[
                '#include <headers-only-install/header-1.h>',
                '#include <headers-only-install/header-2.h>',
                '#include <headers-with-library-install/library-1.h>',
                '#include <headers-with-library-install/library-2.h>',
                'int main(void) {', '    library1();', '    library2();', '}'
            ]))

        fs = FileSystem(path=self.rootpath())
        source = fs.rootdirectory().add(name='source', entry=source)
        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 under Windows :-) if it becomes
        # an issue we will skip this check
        self.failUnless(build.find(['exe', 'exe']))

        pass
    def test(self):
        source = Directory()
        source.add(
            name=const.CONFIX2_PKG,
            entry=File(lines=[
                'PACKAGE_NAME("Public-Install")', 'PACKAGE_VERSION("1.2.3")'
            ]))
        source.add(name=const.CONFIX2_DIR,
                   entry=File(lines=[
                       'DIRECTORY(["headers"])', 'DIRECTORY(["library"])',
                       'DIRECTORY(["exe"])', 'DIRECTORY(["test"])'
                   ]))

        headers = source.add(name='headers', entry=Directory())
        library = source.add(name='library', entry=Directory())
        exe = source.add(name='exe', entry=Directory())
        test = source.add(name='test', entry=Directory())

        headers.add(name=const.CONFIX2_DIR,
                    entry=File(lines=[
                        'H(filename="flat-header.h")',
                        'H(filename="subdir-header.h", install=["subdir"])',
                    ]))
        headers.add(name='flat-header.h', entry=File())
        headers.add(name='subdir-header.h', entry=File())

        library.add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                'LIBRARY(basename="rary", members=[C(filename="library.c")])'
            ]))
        library.add(name='library.c', entry=File())

        exe.add(name=const.CONFIX2_DIR,
                entry=File(lines=[
                    'EXECUTABLE(exename="exe",',
                    '           center=C(filename="main.c"))',
                ]))
        exe.add(name='main.c',
                entry=File(lines=['int main(void) { return 0; }']))

        test.add(name=const.CONFIX2_DIR,
                 entry=File(lines=[
                     'EXECUTABLE(exename="test",',
                     '           center=C(filename="main.c"),',
                     '           what=EXECUTABLE_CHECK)',
                 ]))
        test.add(name='main.c',
                 entry=File(lines=['int main(void) { return 0; }']))

        fs = FileSystem(path=self.rootpath())
        source = fs.rootdirectory().add(name='source', entry=source)
        build = fs.rootdirectory().add(name='build', entry=Directory())
        install = fs.rootdirectory().add(name='install', 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=['-DCMAKE_INSTALL_PREFIX=' + os.sep.join(install.abspath())])
        commands.make(builddir=build.abspath(), args=['install'])

        scan.rescan_dir(install)

        self.failUnless(install.find(['include', 'flat-header.h']))
        self.failUnless(install.find(['include', 'subdir', 'subdir-header.h']))

        # if this fails, then you probably are running on Windows.
        self.failUnless(install.find(['lib', 'library.a']))
        self.failUnless(install.find(['bin', 'exe']))
        self.failIf(install.find(['bin', 'test']))

        self.failUnless(
            install.find([
                'share',
                'confix-%s' % const.REPO_VERSION, 'repo',
                package.repofilename()
            ]))

        pass