Ticket #6484: my-twisted-patch.2.patch

File my-twisted-patch.2.patch, 6.5 KB (added by mulhern, 9 years ago)
  • twisted/python/test/test_dist.py

     
    1515
    1616from twisted.python import dist
    1717from twisted.python.dist import (get_setup_args, ConditionalExtension,
    18     build_scripts_twisted)
     18    build_scripts_twisted, install_data_twisted, getVersion)
    1919from twisted.python.filepath import FilePath
     20from twisted.python.test.test_release import (StructureAssertingMixin,
     21    genVersion)
    2022
    2123
    2224
    23 class SetupTest(TestCase):
     25class GetSetupArgsTest(TestCase, StructureAssertingMixin):
    2426    """
    2527    Tests for L{get_setup_args}.
    2628    """
     
    4345        builder = build_ext(Distribution())
    4446        builder.prepare_extensions()
    4547        self.assertEqual(builder.extensions, [good_ext])
     48        self.assertFalse('conditionalExtensions' in args)
    4649
    4750
    4851    def test_win32Definition(self):
     
    5659        self.patch(os, "name", "nt")
    5760        builder.prepare_extensions()
    5861        self.assertEqual(ext.define_macros, [("whatever", 2), ("WIN32", 1)])
     62        self.assertFalse('conditionalExtensions' in args)
    5963
    6064
     65    def test_Plugins(self):
     66        """
     67        If L{plugins} among keyword arguments the values will be used to
     68        set the L{py_modules} keyword values unless twisted_subproject is
     69        also among the keyword arguments.  Note that the value of
     70        L{plugins} must be a list, it cannot be None.
     71        """
     72        args = get_setup_args(plugins=[])
     73        self.assertFalse('plugins' in args)
     74        self.assertEqual(args['py_modules'], [])
    6175
     76        args = get_setup_args(plugins=['aplugin'])
     77        self.assertFalse('plugins' in args)
     78        self.assertEqual(args['py_modules'], ['twisted.plugins.aplugin'])
     79
     80
     81    def test_CmdClass(self):
     82        """
     83        L{cmdclass} is set to default values unless already set.
     84        """
     85        args = get_setup_args()
     86        self.assertEqual(args['cmdclass']['install_data'],
     87                         install_data_twisted)
     88        self.assertEqual(args['cmdclass']['build_scripts'],
     89                         build_scripts_twisted)
     90        self.assertFalse('py_modules' in args)
     91
     92
     93    def test_TwistedSubproject1(self):
     94        """
     95        If L{twisted_subproject} among keyword arguments then it will
     96        be used to determine the value for L{py_modules} and several
     97        other arguments regardless of the value of L{plugins}.
     98        """
     99       
     100        kws = {"twisted_subproject" : "aplugin",
     101               "plugins" : [] }
     102
     103        root = FilePath(self.mktemp())
     104        root.createDirectory()
     105        structure = {
     106            "twisted": {
     107                "plugins": {
     108                    "twisted_aplugin.py": "I'm a plugin file."},
     109                "_version.py": genVersion("twisted", 1, 0, 0),
     110                "aplugin": {
     111                    "__init__.py": "I'm a package file.",
     112                    "afile.txt" : "I'm a data file.",
     113                    "bfile.txt" : "I'm a data file.",
     114                    "_version.py": genVersion("twisted.aplugin", 1, 0, 0)},
     115                "bplugin": {
     116                    "__init__.py": "I'm a package file.",
     117                    "afile.txt" : "I'm a data file.",
     118                    "bfile.txt" : "I'm a data file.",
     119                    "_version.py": genVersion("twisted.bplugin", 1, 0, 0)}}}
     120        self.createStructure(root, structure)
     121        self.addCleanup(os.chdir, os.getcwd())
     122        os.chdir(root.path)
     123        args = get_setup_args(**kws)
     124        self.assertEqual(args['packages'], ['twisted.aplugin'])
     125        self.assertEqual(args['version'], getVersion("aplugin"))
     126        self.assertEqual(args['py_modules'],
     127                         ['twisted.plugins.twisted_aplugin'])
     128        self.assertEqual(args['data_files'],
     129                         [('twisted/aplugin',
     130                           ['twisted/aplugin/afile.txt',
     131                            'twisted/aplugin/bfile.txt'])])
     132        self.assertFalse('twisted_subproject' in args)
     133
     134    def test_TwistedSubproject2(self):
     135        """
     136        L{get_setup_args) should raise a L{RuntimeError} when not run
     137        from twisted directory.
     138        """
     139        kws = {"twisted_subproject" : "aplugin",
     140               "plugins" : [] }
     141
     142        root = FilePath(self.mktemp())
     143        root.createDirectory()
     144        structure = {"not_twisted" : {}}
     145        self.createStructure(root, structure)
     146        self.addCleanup(os.chdir, os.getcwd())
     147        os.chdir(root.path)
     148        self.assertRaises(RuntimeError, get_setup_args, **kws)
     149
     150
     151    def test_TwistedSubproject3(self):
     152        """
     153        If L{twisted_subproject} among keyword arguments then it will
     154        be used to determine the value for L{py_modules} and several
     155        other keyword arguments regardless of the value of L{plugins}. 
     156        If there is no corresponding file in the L{plugins} subdirectory
     157        L{py_modules} is not set.
     158        """
     159       
     160        kws = {"twisted_subproject" : "aplugin",
     161               "plugins" : [] }
     162
     163        root = FilePath(self.mktemp())
     164        root.createDirectory()
     165        structure = {
     166            "twisted": {
     167                "plugins": { },
     168                "_version.py": genVersion("twisted", 1, 0, 0),
     169                "aplugin": {
     170                    "__init__.py": "I'm a package file.",
     171                    "afile.txt" : "I'm a data file.",
     172                    "bfile.txt" : "I'm a data file.",
     173                    "_version.py": genVersion("twisted.aplugin", 1, 0, 0)},
     174                "bplugin": {
     175                    "__init__.py": "I'm a package file.",
     176                    "afile.txt" : "I'm a data file.",
     177                    "bfile.txt" : "I'm a data file.",
     178                    "_version.py": genVersion("twisted.bplugin", 1, 0, 0)}}}
     179        self.createStructure(root, structure)
     180        self.addCleanup(os.chdir, os.getcwd())
     181        os.chdir(root.path)
     182        args = get_setup_args(**kws)
     183        self.assertEqual(args['packages'], ['twisted.aplugin'])
     184        self.assertEqual(args['version'], getVersion("aplugin"))
     185        self.assertEqual(args['data_files'],
     186                         [('twisted/aplugin',
     187                           ['twisted/aplugin/afile.txt',
     188                            'twisted/aplugin/bfile.txt'])])
     189        self.assertFalse('py_modules' in args)
     190        self.assertFalse('twisted_subproject' in args)
     191           
     192
     193
    62194class GetExtensionsTest(TestCase):
    63195    """
    64196    Tests for L{dist.getExtensions}.