summaryrefslogtreecommitdiffstats
path: root/Lib/distutils/tests
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2005-03-20 22:19:47 (GMT)
committerFred Drake <fdrake@acm.org>2005-03-20 22:19:47 (GMT)
commitdb7b0027dcebca13d193db09d7f266d871fe67b9 (patch)
treef129701cb790d19559b49ddfb4a58e2c60217a82 /Lib/distutils/tests
parent54398d6afb680bde217cc9529b2cd88485bec3d8 (diff)
downloadcpython-db7b0027dcebca13d193db09d7f266d871fe67b9.zip
cpython-db7b0027dcebca13d193db09d7f266d871fe67b9.tar.gz
cpython-db7b0027dcebca13d193db09d7f266d871fe67b9.tar.bz2
PEP 314 implementation (client side):
added support for the provides, requires, and obsoletes metadata fields
Diffstat (limited to 'Lib/distutils/tests')
-rw-r--r--Lib/distutils/tests/test_dist.py91
1 files changed, 90 insertions, 1 deletions
diff --git a/Lib/distutils/tests/test_dist.py b/Lib/distutils/tests/test_dist.py
index 695f6d8..7675fbf 100644
--- a/Lib/distutils/tests/test_dist.py
+++ b/Lib/distutils/tests/test_dist.py
@@ -4,6 +4,7 @@ import distutils.cmd
import distutils.dist
import os
import shutil
+import StringIO
import sys
import tempfile
import unittest
@@ -96,5 +97,93 @@ class DistributionTestCase(unittest.TestCase):
os.unlink(TESTFN)
+class MetadataTestCase(unittest.TestCase):
+
+ def test_simple_metadata(self):
+ attrs = {"name": "package",
+ "version": "1.0"}
+ dist = distutils.dist.Distribution(attrs)
+ meta = self.format_metadata(dist)
+ self.assert_("Metadata-Version: 1.0" in meta)
+ self.assert_("provides:" not in meta.lower())
+ self.assert_("requires:" not in meta.lower())
+ self.assert_("obsoletes:" not in meta.lower())
+
+ def test_provides(self):
+ attrs = {"name": "package",
+ "version": "1.0",
+ "provides": ["package", "package.sub"]}
+ dist = distutils.dist.Distribution(attrs)
+ self.assertEqual(dist.metadata.get_provides(),
+ ["package", "package.sub"])
+ self.assertEqual(dist.get_provides(),
+ ["package", "package.sub"])
+ meta = self.format_metadata(dist)
+ self.assert_("Metadata-Version: 1.1" in meta)
+ self.assert_("requires:" not in meta.lower())
+ self.assert_("obsoletes:" not in meta.lower())
+
+ def test_provides_illegal(self):
+ self.assertRaises(ValueError,
+ distutils.dist.Distribution,
+ {"name": "package",
+ "version": "1.0",
+ "provides": ["my.pkg (splat)"]})
+
+ def test_requires(self):
+ attrs = {"name": "package",
+ "version": "1.0",
+ "requires": ["other", "another (==1.0)"]}
+ dist = distutils.dist.Distribution(attrs)
+ self.assertEqual(dist.metadata.get_requires(),
+ ["other", "another (==1.0)"])
+ self.assertEqual(dist.get_requires(),
+ ["other", "another (==1.0)"])
+ meta = self.format_metadata(dist)
+ self.assert_("Metadata-Version: 1.1" in meta)
+ self.assert_("provides:" not in meta.lower())
+ self.assert_("Requires: other" in meta)
+ self.assert_("Requires: another (==1.0)" in meta)
+ self.assert_("obsoletes:" not in meta.lower())
+
+ def test_requires_illegal(self):
+ self.assertRaises(ValueError,
+ distutils.dist.Distribution,
+ {"name": "package",
+ "version": "1.0",
+ "requires": ["my.pkg (splat)"]})
+
+ def test_obsoletes(self):
+ attrs = {"name": "package",
+ "version": "1.0",
+ "obsoletes": ["other", "another (<1.0)"]}
+ dist = distutils.dist.Distribution(attrs)
+ self.assertEqual(dist.metadata.get_obsoletes(),
+ ["other", "another (<1.0)"])
+ self.assertEqual(dist.get_obsoletes(),
+ ["other", "another (<1.0)"])
+ meta = self.format_metadata(dist)
+ self.assert_("Metadata-Version: 1.1" in meta)
+ self.assert_("provides:" not in meta.lower())
+ self.assert_("requires:" not in meta.lower())
+ self.assert_("Obsoletes: other" in meta)
+ self.assert_("Obsoletes: another (<1.0)" in meta)
+
+ def test_obsoletes_illegal(self):
+ self.assertRaises(ValueError,
+ distutils.dist.Distribution,
+ {"name": "package",
+ "version": "1.0",
+ "obsoletes": ["my.pkg (splat)"]})
+
+ def format_metadata(self, dist):
+ sio = StringIO.StringIO()
+ dist.metadata.write_pkg_file(sio)
+ return sio.getvalue()
+
+
def test_suite():
- return unittest.makeSuite(DistributionTestCase)
+ suite = unittest.TestSuite()
+ suite.addTest(unittest.makeSuite(DistributionTestCase))
+ suite.addTest(unittest.makeSuite(MetadataTestCase))
+ return suite