def test_tarball(self): pkg = Package('configure') rc, stdout, stderr = self.run_command(EXECUTABLE, 'tarball', pkg.name) # Prints nothing to stderr self.assertEqual(stderr, '') # returns successfully self.assertEqual(rc, 0) # Prints to stdout self.assertEqual(stdout.rstrip(), pkg.tarball_filename)
def run_tarball(self, package_name): """ tarball: Find the tarball filename given a package name $ sage-package tarball pari pari-2.8-1564-gdeac36e.tar.gz """ package = Package(package_name) print(package.tarball.filename)
def test_tarball(self): pkg = Package('configure') tarball = Tarball(pkg.tarball_filename) self.assertEqual(tarball, pkg.tarball) self.assertEqual(pkg, tarball.package) with CapturedOutput() as (stdout, stderr): with CapturedLog() as _: tarball.download() self.assertEqual(stdout.getvalue(), '') self.assertTrue(tarball.checksum_verifies())
def update(self): package = Package(self.name) if package.version == self.version: log.info('%s is already at the latest version', self.name) return log.info('Updating %s: %s -> %s', self.name, package.version, self.version) update = PackageUpdater(self.name, self.version) update.download_upstream(self.url) update.fix_checksum()
def tarball(self, package_name): """ Find the tarball filename given a package name $ sage --package tarball pari pari-2.8-1564-gdeac36e.tar.gz """ log.debug('Looking up tarball name for %s', package_name) package = Package(package_name) print(package.tarball.filename)
def test_download(self): pkg = Package('configure') with CapturedLog() as _: pkg.tarball.download() rc, stdout, stderr = self.run_command(EXECUTABLE, 'download', pkg.name) # Prints info to stderr self.assertTrue(stderr.startswith('Using cached file')) # returns successfully self.assertEqual(rc, 0) # Prints filename to stdout self.assertEqual(stdout.rstrip(), pkg.tarball.upstream_fqn)
def test_package(self): pkg = Package('pari') self.assertTrue(pkg.name, 'pari') self.assertTrue(pkg.path.endswith('build/pkgs/pari')) self.assertEqual(pkg.tarball_pattern, 'pari-VERSION.tar.gz') self.assertEqual(pkg.tarball_filename, pkg.tarball.filename) self.assertTrue(pkg.tarball.filename.startswith('pari-') and pkg.tarball.filename.endswith('.tar.gz')) self.assertTrue(pkg.tarball.filename.startswith('pari-') and pkg.tarball.filename.endswith('.tar.gz')) self.assertTrue(isinstance(pkg.tarball, Tarball))
def update_latest(self, package_name): """ Update a package to the latest version. This modifies the Sage sources. """ try: pypi = PyPiVersion(package_name) except PyPiNotFound: log.debug('%s is not a pypi package', package_name) return else: pypi.update(Package(package_name))
def test_fix_checksum(self): pkg = Package('configure') rc, stdout, stderr = self.run_command(EXECUTABLE, 'fix-checksum', 'configure') # Prints nothing to stderr self.assertEqual(stderr, '') # returns successfully self.assertEqual(rc, 0) # Prints to stdout self.assertEqual( stdout.rstrip(), 'Checksum of {0} (tarball {1}) unchanged'.format( pkg.name, pkg.tarball_filename))
def test_update(self): pkg = Package('configure') # The confball never has a patchlevel since we are upstream... self.assertEqual(pkg.patchlevel, -1) rc, stdout, stderr = self.run_command(EXECUTABLE, 'update', pkg.name, pkg.version) # Prints nothing to stderr self.assertEqual(stderr, '') # returns successfully self.assertEqual(rc, 0) # Prints nothing to stdout self.assertEqual(stdout, '')
def download(self, package_name, allow_upstream=False): """ Download a package $ sage --package download pari Using cached file /home/vbraun/Code/sage.git/upstream/pari-2.8-2044-g89b0f1e.tar.gz /home/vbraun/Code/sage.git/upstream/pari-2.8-2044-g89b0f1e.tar.gz """ log.debug('Downloading %s', package_name) package = Package(package_name) package.tarball.download(allow_upstream=allow_upstream) print(package.tarball.upstream_fqn)
def upload(self, package_name): """ Upload a package to the Sage mirror network $ sage --package upload pari Uploading /home/vbraun/Code/sage.git/upstream/pari-2.8-2044-g89b0f1e.tar.gz """ package = Package(package_name) if not os.path.exists(package.tarball.upstream_fqn): log.debug('Skipping %s because there is no local tarbal', package_name) return log.info('Uploading %s', package.tarball.upstream_fqn) fs = FileServer() fs.upload(package)
def test_checksum(self): pkg = Package('configure') tarball = pkg.tarball with CapturedOutput() as (stdout, stderr): with CapturedLog() as log: tarball.download() self.assertTrue(tarball.checksum_verifies()) with open(tarball.upstream_fqn, 'w') as f: f.write('foobar') self.assertFalse(tarball.checksum_verifies()) with CapturedOutput() as (stdout, stderr): with CapturedLog() as log: tarball.download() msg = log.messages() self.assertTrue( ('INFO', 'Attempting to download package {0} from mirrors'.format( pkg.tarball_filename)) in msg) self.assertEqual(stdout.getvalue(), '') self.assertEqual( stderr.getvalue(), '[......................................................................]\n' ) self.assertTrue(tarball.checksum_verifies())
def _update_version(self, new_version): old = Package(self.package_name) package_version_txt = os.path.join(old.path, 'package-version.txt') with open(package_version_txt, 'w') as f: f.write(new_version.strip() + '\n')
def package(self): if self.__package is None: self.__package = Package(self.package_name) return self.__package
def test_all(self): pari = Package('pari') self.assertTrue(pari in Package.all())