Example #1
0
def main(argv=sys.argv[1:], parent_path=os.getcwd()):
    parser = argparse.ArgumentParser(
        description='Creates a new catkin package')
    parser.add_argument('name',
                        nargs=1,
                        help='The name for the package')
    parser.add_argument('--meta',
                        action='store_true',
                        help='Creates meta-package files')
    parser.add_argument('dependencies',
                        nargs='*',
                        help='Catkin package Dependencies')
    parser.add_argument('-s', '--sys-deps',
                        nargs='*',
                        help='System Dependencies')
    parser.add_argument('-b', '--boost-comps',
                        nargs='*',
                        help='Boost Components')
    parser.add_argument('-V', '--pkg_version',
                        action='store',
                        help='Initial Package version')
    parser.add_argument('-D', '--description',
                        action='store',
                        help='Description')
    parser.add_argument('-l', '--license',
                        action='append',
                        help='Name for License, (e.g. BSD, MIT, GPLv3...)')
    parser.add_argument('-a', '--author',
                        action='append',
                        help='A single author, may be used multiple times')
    parser.add_argument('-m', '--maintainer',
                        action='append',
                        help='A single maintainer, may be used multiple times')
    rosdistro_name = os.environ['ROS_DISTRO'] if 'ROS_DISTRO' in os.environ else None
    parser.add_argument('--rosdistro', required=rosdistro_name is None, default=rosdistro_name, help='The ROS distro (default: environment variable ROS_DISTRO if defined)')

    args = parser.parse_args(argv)

    try:
        package_name = args.name[0]
        target_path = os.path.join(parent_path, package_name)
        package_template = PackageTemplate._create_package_template(
            package_name=package_name,
            description=args.description,
            licenses=args.license or [],
            maintainer_names=args.maintainer,
            author_names=args.author,
            version=args.pkg_version,
            catkin_deps=args.dependencies,
            system_deps=args.sys_deps,
            boost_comps=args.boost_comps)
        create_package_files(target_path=target_path,
                             package_template=package_template,
                             rosdistro=args.rosdistro,
                             newfiles={},
                             meta=args.meta)
        print('Successfully created files in %s. Please adjust the values in package.xml.' % target_path)
    except ValueError as vae:
        parser.error(str(vae))
Example #2
0
    def test_parse_generated(self):
        maint = self.get_maintainer()
        pack = PackageTemplate(name='bar',
                               package_format=2,
                               version='0.0.1',
                               version_compatibility='0.0.0',
                               urls=[Url('foo')],
                               description='pdesc',
                               maintainers=[maint],
                               licenses=['BSD'])
        try:
            rootdir = tempfile.mkdtemp()
            file1 = os.path.join(rootdir, 'CMakeLists.txt')
            file2 = os.path.join(rootdir, PACKAGE_MANIFEST_FILENAME)
            create_package_files(rootdir, pack, 'groovy')
            self.assertTrue(os.path.isfile(file1))
            self.assertTrue(os.path.isfile(file2))

            pack_result = parse_package(file2)
            self.assertEqual(pack.name, pack_result.name)
            self.assertEqual(pack.package_format, pack_result.package_format)
            self.assertEqual(pack.version, pack_result.version)
            self.assertEqual(pack.version_compatibility,
                             pack_result.version_compatibility)
            self.assertEqual(pack.description, pack_result.description)
            self.assertEqual(pack.maintainers[0].name,
                             pack_result.maintainers[0].name)
            self.assertEqual(pack.maintainers[0].email,
                             pack_result.maintainers[0].email)
            self.assertEqual(pack.authors, pack_result.authors)
            self.assertEqual(pack.urls[0].url, pack_result.urls[0].url)
            self.assertEqual('website', pack_result.urls[0].type)
            self.assertEqual(pack.licenses, pack_result.licenses)
            self.assertEqual(pack.build_depends, pack_result.build_depends)
            self.assertEqual(pack.buildtool_depends,
                             pack_result.buildtool_depends)
            self.assertEqual(pack.run_depends, pack_result.run_depends)
            self.assertEqual(pack.test_depends, pack_result.test_depends)
            self.assertEqual(pack.conflicts, pack_result.conflicts)
            self.assertEqual(pack.replaces, pack_result.replaces)
            self.assertEqual(pack.exports, pack_result.exports)

            rdict = generate_distutils_setup(package_xml_path=file2)
            self.assertEqual(
                {
                    'name': 'bar',
                    'maintainer': u('John Foo'),
                    'maintainer_email': '*****@*****.**',
                    'description': 'pdesc',
                    'license': 'BSD',
                    'version': '0.0.1',
                    'author': '',
                    'url': 'foo'
                }, rdict)
        finally:
            shutil.rmtree(rootdir)
Example #3
0
def main(opts):

    try:
        # Get absolute path to directory containing package
        package_dest_path = os.path.abspath(opts.path)

        # Sort list of maintainers and authors (it will also be sorted inside
        # PackageTemplate so by sorting it here, we ensure that the same order
        # is used.  This is important later when email addresses are assigned.
        if opts.maintainers:
            opts.maintainers.sort(key=lambda x: x[0])
        if opts.authors:
            opts.authors.sort(key=lambda x: x[0])

        for package_name in opts.name:
            print('Creating package "%s" in "%s"...' %
                  (package_name, package_dest_path))
            target_path = os.path.join(package_dest_path, package_name)
            package_template = PackageTemplate._create_package_template(
                package_name=package_name,
                description=opts.description,
                licenses=opts.license or [],
                maintainer_names=[m[0] for m in opts.maintainers]
                if opts.maintainers else [],
                author_names=[a[0]
                              for a in opts.authors] if opts.authors else [],
                version=opts.version,
                catkin_deps=opts.catkin_deps,
                system_deps=opts.system_deps,
                boost_comps=opts.boost_components)

            # Add maintainer and author e-mails
            if opts.maintainers:
                for (pm, om) in zip(package_template.maintainers,
                                    opts.maintainers):
                    pm.email = om[1]
            if opts.authors:
                for (pa, oa) in zip(package_template.authors, opts.authors):
                    pa.email = oa[1]

            # Add build type export
            # if opts.build_type and opts.build_type != 'catkin':
            #     build_type = Export('build_type', content=opts.build_type)
            #     package_template.exports.append(build_type)

            create_package_files(target_path=target_path,
                                 package_template=package_template,
                                 rosdistro=opts.rosdistro,
                                 newfiles={})
            print('Successfully created package files in %s.' % target_path)
    except ValueError as vae:
        print(str(vae))
        return 1

    return 0
Example #4
0
def main(options):

    parent_path = os.getcwd()
    print("parent path: %s" % parent_path)
    package_name = options.name[0]
    print("package name: %s" % package_name)
    package_path = os.path.join(parent_path, package_name)
    print("package path: %s" % package_path)
    print_color("@!@{green}==>@|@! Creating %s package..." % package_name)
    try:
        package_template = PackageTemplate._create_package_template(
            package_name=package_name,
            description=options.description,
            licenses=options.license or [],
            maintainer_names=options.maintainer,
            author_names=options.author,
            version=options.pkg_version,
            catkin_deps=options.dependencies,
            system_deps=options.sys_deps,
            boost_comps=options.boost_comps)
        create_package_files(target_path=package_path,
                             package_template=package_template,
                             rosdistro=options.rosdistro,
                             newfiles={},
                             meta=options.meta)
        print(
            'Successfully created files in %s. Please adjust the values in package.xml.'
            % package_path)
    except ValueError as vae:
        print_color("@{red}[ERROR] %s" % vae)

    if not package_exists_at(package_path):
        print_color("@{red}[ERROR] The %s package was not created." %
                    package_name)
        return 1
    print_color("[INFO] The %s package was created." % package_name)

    folders = [
        'include',
        'include/%s' % package_name, 'src',
        'src/%s' % package_name, 'action', 'config', 'launch', 'msg', 'mmsg',
        'srv'
    ]
    print_color("@!@{green}==>@|@! Organizing package...")
    for folder_name in folders:
        folder_path = os.path.join(package_path, folder_name)
        if not os.path.exists(folder_path):
            os.makedirs(folder_path)
            print_color("[INFO] The %s folder was created in the %s package." %
                        (folder_name, package_name))

    return 0
Example #5
0
def main(opts):

    try:
        # Get absolute path to directory containing package
        package_dest_path = os.path.abspath(opts.path)

        # Sort list of maintainers and authors (it will also be sorted inside
        # PackageTemplate so by sorting it here, we ensure that the same order
        # is used.  This is important later when email addresses are assigned.
        if opts.maintainers:
            opts.maintainers.sort(key=lambda x: x[0])
        if opts.authors:
            opts.authors.sort(key=lambda x: x[0])

        for package_name in opts.name:
            print('Creating package "%s" in "%s"...' % (package_name, package_dest_path))
            target_path = os.path.join(package_dest_path, package_name)
            package_template = PackageTemplate._create_package_template(
                package_name=package_name,
                description=opts.description,
                licenses=opts.license or [],
                maintainer_names=[m[0] for m in opts.maintainers] if opts.maintainers else [],
                author_names=[a[0] for a in opts.authors] if opts.authors else [],
                version=opts.version,
                catkin_deps=opts.catkin_deps,
                system_deps=opts.system_deps,
                boost_comps=opts.boost_components)

            # Add maintainer and author e-mails
            if opts.maintainers:
                for (pm, om) in zip(package_template.maintainers, opts.maintainers):
                    pm.email = om[1]
            if opts.authors:
                for (pa, oa) in zip(package_template.authors, opts.authors):
                    pa.email = oa[1]

            # Add build type export
            # if opts.build_type and opts.build_type != 'catkin':
            #     build_type = Export('build_type', content=opts.build_type)
            #     package_template.exports.append(build_type)

            create_package_files(target_path=target_path,
                                 package_template=package_template,
                                 rosdistro=opts.rosdistro,
                                 newfiles={})
            print('Successfully created package files in %s.' % target_path)
    except ValueError as vae:
        print(str(vae))
        return 1

    return 0
Example #6
0
    def test_parse_generated(self):
        maint = self.get_maintainer()
        pack = PackageTemplate(name='bar',
                               package_format=1,
                               version='0.0.0',
                               version_abi='pabi',
                               urls=[Url('foo')],
                               description='pdesc',
                               maintainers=[maint],
                               licenses=['BSD'])
        try:
            rootdir = tempfile.mkdtemp()
            file1 = os.path.join(rootdir, 'CMakeLists.txt')
            file2 = os.path.join(rootdir, PACKAGE_MANIFEST_FILENAME)
            create_package_files(rootdir, pack, 'groovy')
            self.assertTrue(os.path.isfile(file1))
            self.assertTrue(os.path.isfile(file2))

            pack_result = parse_package(file2)
            self.assertEqual(pack.name, pack_result.name)
            self.assertEqual(pack.package_format, pack_result.package_format)
            self.assertEqual(pack.version, pack_result.version)
            self.assertEqual(pack.version_abi, pack_result.version_abi)
            self.assertEqual(pack.description, pack_result.description)
            self.assertEqual(pack.maintainers[0].name, pack_result.maintainers[0].name)
            self.assertEqual(pack.maintainers[0].email, pack_result.maintainers[0].email)
            self.assertEqual(pack.authors, pack_result.authors)
            self.assertEqual(pack.urls[0].url, pack_result.urls[0].url)
            self.assertEqual('website', pack_result.urls[0].type)
            self.assertEqual(pack.licenses, pack_result.licenses)
            self.assertEqual(pack.build_depends, pack_result.build_depends)
            self.assertEqual(pack.buildtool_depends, pack_result.buildtool_depends)
            self.assertEqual(pack.run_depends, pack_result.run_depends)
            self.assertEqual(pack.test_depends, pack_result.test_depends)
            self.assertEqual(pack.conflicts, pack_result.conflicts)
            self.assertEqual(pack.replaces, pack_result.replaces)
            self.assertEqual(pack.exports, pack_result.exports)

            rdict = generate_distutils_setup(package_xml_path=file2)
            self.assertEqual({'name': 'bar',
                              'maintainer': u'John Foo',
                              'maintainer_email': '*****@*****.**',
                              'description': 'pdesc',
                              'license': 'BSD',
                              'version': '0.0.0',
                              'author': '',
                              'url': 'foo'}, rdict)
        finally:
            shutil.rmtree(rootdir)
Example #7
0
def main(opts):

    try:
        # Get absolute path to directory containing package
        package_dest_path = os.path.abspath(opts.path)
        for package_name in opts.name:
            print('Creating package "%s" in "%s"...' %
                  (package_name, package_dest_path))
            target_path = os.path.join(package_dest_path, package_name)
            package_template = PackageTemplate._create_package_template(
                package_name=package_name,
                description=opts.description,
                licenses=opts.license or [],
                maintainer_names=[m[0] for m in opts.maintainers]
                if opts.maintainers else [],
                author_names=[a[0]
                              for a in opts.authors] if opts.authors else [],
                version=opts.version,
                catkin_deps=opts.catkin_deps,
                system_deps=opts.system_deps,
                boost_comps=opts.boost_components)

            # Add maintainer and author e-mails
            if opts.maintainers:
                for (pm, om) in zip(package_template.maintainers,
                                    opts.maintainers):
                    pm.email = om[1]
            if opts.authors:
                for (pa, oa) in zip(package_template.authors, opts.authors):
                    pa.email = oa[1]

            # Add build type export
            # if opts.build_type and opts.build_type != 'catkin':
            #     build_type = Export('build_type', content=opts.build_type)
            #     package_template.exports.append(build_type)

            create_package_files(target_path=target_path,
                                 package_template=package_template,
                                 rosdistro=opts.rosdistro,
                                 newfiles={})
            print('Successfully created package files in %s.' % target_path)
    except ValueError as vae:
        print(str(vae))
        return 1

    return 0
Example #8
0
 def test_create_package(self):
     maint = self.get_maintainer()
     pack = PackageTemplate(name='bar',
                            description='bar',
                            package_format='1',
                            version='0.0.0',
                            version_abi='pabi',
                            maintainers=[maint],
                            licenses=['BSD'])
     try:
         rootdir = tempfile.mkdtemp()
         file1 = os.path.join(rootdir, 'CMakeLists.txt')
         file2 = os.path.join(rootdir, 'package.xml')
         create_package_files(rootdir, pack, {file1: ''})
         self.assertTrue(os.path.isfile(file1))
         self.assertTrue(os.path.isfile(file2))
     finally:
         shutil.rmtree(rootdir)
Example #9
0
 def test_create_package(self):
     maint = self.get_maintainer()
     pack = PackageTemplate(name='bar',
                            description='bar',
                            package_format='1',
                            version='0.0.1',
                            version_compatibility='0.0.0',
                            maintainers=[maint],
                            licenses=['BSD'])
     try:
         rootdir = tempfile.mkdtemp()
         file1 = os.path.join(rootdir, 'CMakeLists.txt')
         file2 = os.path.join(rootdir, PACKAGE_MANIFEST_FILENAME)
         create_package_files(rootdir, pack, 'groovy', {file1: ''})
         self.assertTrue(os.path.isfile(file1))
         self.assertTrue(os.path.isfile(file2))
     finally:
         shutil.rmtree(rootdir)
Example #10
0
 def test_create_package(self):
     maint = self.get_maintainer()
     pack = PackageTemplate(name='bar',
                            description='bar',
                            package_format='1',
                            version='0.0.1',
                            version_compatibility='0.0.0',
                            maintainers=[maint],
                            licenses=['BSD'])
     try:
         rootdir = tempfile.mkdtemp()
         file1 = os.path.join(rootdir, 'CMakeLists.txt')
         file2 = os.path.join(rootdir, PACKAGE_MANIFEST_FILENAME)
         create_package_files(rootdir, pack, 'groovy', {file1: ''})
         self.assertTrue(os.path.isfile(file1))
         self.assertTrue(os.path.isfile(file2))
     finally:
         shutil.rmtree(rootdir)
Example #11
0
def main(opts):

    try:
        package_dest_path = opts.path
        print('path: ' + str(opts.path))
        for package_name in opts.name:
            print('Creating package "%s" in "%s"...' % (package_name, package_dest_path))
            target_path = os.path.join(package_dest_path, package_name)
            package_template = PackageTemplate._create_package_template(
                package_name=package_name,
                description=opts.description,
                licenses=opts.license or [],
                maintainer_names=[m[0] for m in opts.maintainers] if opts.maintainers else [],
                author_names=[a[0] for a in opts.authors] if opts.authors else [],
                version=opts.version,
                catkin_deps=opts.catkin_deps,
                system_deps=opts.system_deps,
                boost_comps=opts.boost_components)

            # Add maintainer and author e-mails
            if opts.maintainers:
                for (pm, om) in zip(package_template.maintainers, opts.maintainers):
                    pm.email = om[1]
            if opts.authors:
                for (pa, oa) in zip(package_template.authors, opts.authors):
                    pa.email = oa[1]

            # Add build type export
            # if opts.build_type and opts.build_type != 'catkin':
            #     build_type = Export('build_type', content=opts.build_type)
            #     package_template.exports.append(build_type)

            create_package_files(target_path=target_path,
                                 package_template=package_template,
                                 rosdistro=opts.rosdistro,
                                 newfiles={})
            print('Successfully created package files in %s.' % target_path)
    except ValueError as vae:
        print(str(vae))
        return 1

    return 0
Example #12
0
def init_package(path: str, package: str) -> None:
    """Create a package at the given path.

    This is equivalent to calling `catkin_create_pkg` on the given path.

    Internal use only.

    Args:
        path (str): Path to create package.
        package (str): Package name.
    """

    package_name = package
    description = "Simulation package created by Fido. DO NOT EDIT."
    maintainer = "Fido maintainers"
    author = "Fido authors"
    version = "0.0.1"
    distro = "melodic"
    target_path = os.path.join(path, "src", package)

    package_template = PackageTemplate._create_package_template(
        package_name=package_name,
        description=description,
        licenses=[],
        maintainer_names=[maintainer],
        author_names=[author],
        version=version,
        catkin_deps=None,
        system_deps=None,
        boost_comps=None,
    )

    if not os.path.exists(target_path):
        os.makedirs(target_path)

    create_package_files(os.path.abspath(target_path), package_template,
                         distro)

    os.makedirs(os.path.join(path, "src", package, "launch"))
    os.makedirs(os.path.join(path, "src", package, "scripts"))
Example #13
0
    def test_parse_generated_multi(self):
        # test with multiple attributes filled
        maint = self.get_maintainer()
        pack = PackageTemplate(name='bar',
                               package_format=1,
                               version='0.0.0',
                               version_abi='pabi',
                               description='pdesc',
                               maintainers=[maint, maint],
                               authors=[maint, maint],
                               licenses=['BSD', 'MIT'],
                               urls=[Url('foo', 'bugtracker'), Url('bar')],
                               build_depends=[Dependency('dep1')],
                               buildtool_depends=[Dependency('dep2'),
                                                      Dependency('dep3')],
                               run_depends=[Dependency('dep4', version_lt='4')],
                               test_depends=[Dependency('dep5',
                                                               version_gt='4',
                                                               version_lt='4')],
                               conflicts=[Dependency('dep6')],
                               replaces=[Dependency('dep7'),
                                             Dependency('dep8')],
                               exports=[Export('architecture_independent'),
                                        Export('meta_package')])

        def assertEqualDependencies(deplist1, deplist2):
            if len(deplist1) != len(deplist1):
                return False
            for depx, depy in zip(deplist1, deplist2):
                for attr in ['name', 'version_lt', 'version_lte',
                             'version_eq', 'version_gte', 'version_gt']:
                    if getattr(depx, attr) != getattr(depy, attr):
                        return False
            return True

        try:
            rootdir = tempfile.mkdtemp()
            file2 = os.path.join(rootdir, 'package.xml')
            create_package_files(rootdir, pack, {})
            self.assertTrue(os.path.isfile(file2))

            pack_result = parse_package(file2)
            self.assertEqual(pack.name, pack_result.name)
            self.assertEqual(pack.package_format, pack_result.package_format)
            self.assertEqual(pack.version, pack_result.version)
            self.assertEqual(pack.version_abi, pack_result.version_abi)
            self.assertEqual(pack.description, pack_result.description)
            self.assertEqual(len(pack.maintainers), len(pack_result.maintainers))
            self.assertEqual(len(pack.authors), len(pack_result.authors))
            self.assertEqual(len(pack.urls), len(pack_result.urls))
            self.assertEqual(pack.urls[0].url, pack_result.urls[0].url)
            self.assertEqual(pack.urls[0].type, pack_result.urls[0].type)
            self.assertEqual(pack.licenses, pack_result.licenses)
            self.assertTrue(assertEqualDependencies(pack.build_depends,
                                                    pack_result.build_depends))
            self.assertTrue(assertEqualDependencies(pack.build_depends,
                                                    pack_result.build_depends))
            self.assertTrue(assertEqualDependencies(pack.buildtool_depends,
                                                    pack_result.buildtool_depends))
            self.assertTrue(assertEqualDependencies(pack.run_depends,
                                                    pack_result.run_depends))
            self.assertTrue(assertEqualDependencies(pack.test_depends,
                                                    pack_result.test_depends))
            self.assertTrue(assertEqualDependencies(pack.conflicts,
                                                    pack_result.conflicts))
            self.assertTrue(assertEqualDependencies(pack.replaces,
                                                    pack_result.replaces))
            self.assertEqual(pack.exports[0].tagname, pack_result.exports[0].tagname)
            self.assertEqual(pack.exports[1].tagname, pack_result.exports[1].tagname)

            rdict = parse_package_for_distutils(file2)
            self.assertEqual({'name': 'bar',
                              'maintainer': u'John Foo <*****@*****.**>, John Foo <*****@*****.**>',
                              'description': 'pdesc',
                              'license': 'BSD, MIT',
                              'version': '0.0.0',
                              'author': u'John Foo <*****@*****.**>, John Foo <*****@*****.**>',
                              'url': 'bar',
                              'keywords': ['ROS']}, rdict)
        finally:
            shutil.rmtree(rootdir)
Example #14
0
    def test_parse_generated_multi(self):
        # test with multiple attributes filled
        maint = self.get_maintainer()
        pack = PackageTemplate(
            name='bar',
            package_format=2,
            version='0.0.1',
            version_compatibility='0.0.0',
            description='pdesc',
            maintainers=[maint, maint],
            authors=[maint, maint],
            licenses=['BSD', 'MIT'],
            urls=[Url('foo', 'bugtracker'),
                  Url('bar')],
            build_depends=[Dependency('dep1')],
            buildtool_depends=[Dependency('dep2'),
                               Dependency('dep3')],
            run_depends=[Dependency('dep4', version_lt='4')],
            test_depends=[Dependency('dep5', version_gt='4', version_lt='4')],
            conflicts=[Dependency('dep6')],
            replaces=[Dependency('dep7'),
                      Dependency('dep8')],
            exports=[
                Export('architecture_independent'),
                Export('meta_package')
            ])

        def assertEqualDependencies(deplist1, deplist2):
            if len(deplist1) != len(deplist1):
                return False
            for depx, depy in zip(deplist1, deplist2):
                for attr in [
                        'name', 'version_lt', 'version_lte', 'version_eq',
                        'version_gte', 'version_gt'
                ]:
                    if getattr(depx, attr) != getattr(depy, attr):
                        return False
            return True

        try:
            rootdir = tempfile.mkdtemp()
            file1 = os.path.join(rootdir, 'CMakeLists.txt')
            file2 = os.path.join(rootdir, PACKAGE_MANIFEST_FILENAME)
            create_package_files(rootdir, pack, 'groovy')
            self.assertTrue(os.path.isfile(file1))
            self.assertTrue(os.path.isfile(file2))

            pack_result = parse_package(file2)
            self.assertEqual(pack.name, pack_result.name)
            self.assertEqual(pack.package_format, pack_result.package_format)
            self.assertEqual(pack.version, pack_result.version)
            self.assertEqual(pack.version_compatibility,
                             pack_result.version_compatibility)
            self.assertEqual(pack.description, pack_result.description)
            self.assertEqual(len(pack.maintainers),
                             len(pack_result.maintainers))
            self.assertEqual(len(pack.authors), len(pack_result.authors))
            self.assertEqual(len(pack.urls), len(pack_result.urls))
            self.assertEqual(pack.urls[0].url, pack_result.urls[0].url)
            self.assertEqual(pack.urls[0].type, pack_result.urls[0].type)
            self.assertEqual(pack.licenses, pack_result.licenses)
            self.assertTrue(
                assertEqualDependencies(pack.build_depends,
                                        pack_result.build_depends))
            self.assertTrue(
                assertEqualDependencies(pack.build_depends,
                                        pack_result.build_depends))
            self.assertTrue(
                assertEqualDependencies(pack.buildtool_depends,
                                        pack_result.buildtool_depends))
            self.assertTrue(
                assertEqualDependencies(pack.run_depends,
                                        pack_result.run_depends))
            self.assertTrue(
                assertEqualDependencies(pack.test_depends,
                                        pack_result.test_depends))
            self.assertTrue(
                assertEqualDependencies(pack.conflicts, pack_result.conflicts))
            self.assertTrue(
                assertEqualDependencies(pack.replaces, pack_result.replaces))
            self.assertEqual(pack.exports[0].tagname,
                             pack_result.exports[0].tagname)
            self.assertEqual(pack.exports[1].tagname,
                             pack_result.exports[1].tagname)

            rdict = generate_distutils_setup(package_xml_path=file2)
            self.assertEqual(
                {
                    'name':
                    'bar',
                    'maintainer':
                    u('John Foo <*****@*****.**>, John Foo <*****@*****.**>'),
                    'description':
                    'pdesc',
                    'license':
                    'BSD, MIT',
                    'version':
                    '0.0.1',
                    'author':
                    u('John Foo <*****@*****.**>, John Foo <*****@*****.**>'),
                    'url':
                    'bar'
                }, rdict)
        finally:
            shutil.rmtree(rootdir)