#!/usr/bin/env python2 # -*- coding: utf-8 -*- import unittest from version_status import * class TestStringFunctions(unittest.TestCase): def test_collapse_multiple_spaces(self): self.assertEqual(collapse_multiple_spaces("asdf"), "asdf") self.assertEqual(collapse_multiple_spaces("as df"), "as df") self.assertEqual(collapse_multiple_spaces("as df"), "as df") self.assertEqual(collapse_multiple_spaces("a s d f"), "a s d f") class TestFtpFunctions(unittest.TestCase): def test_ftp_file_name_from_listing(self): self.assertEqual(ftp_file_name_from_listing("-rw-rw-r-- 1 1176 1176 1063 Jun 15 10:18 README"), "README") self.assertEqual(ftp_file_name_from_listing("-rw-rw-r-- 1 1176 1176 1063 Jun 15 10:18:12 README"), "README") self.assertEqual(ftp_file_name_from_listing("-rw-rw-r-- 1 1176 1176 1063 Jun 15 10:18 READ ME"), "READ ME") self.assertEqual(ftp_file_name_from_listing("-rw-rw-r-- 1 1176 1176 1063 Jun 15 10:18:12 READ ME"), "READ ME") self.assertEqual(ftp_file_name_from_listing("-rw-rw-r-- 1 1176 1176 1063 Jun 15 10:18 README"), "README") self.assertEqual(ftp_file_name_from_listing("-rw-rw-r-- 1 1176 1176 1063 Jun 15 10:18:12 README.txt"), "README.txt") self.assertEqual(ftp_file_name_from_listing("-rw-rw-r-- 1 1176 1176 1063 Jun 15 10:18:12 READ ME.txt"), "READ ME.txt") def test_ftp_list_dir_process_listing(self): lines = [ "-rw-rw-r-- 1 1176 1176 1063 Jun 15 10:18 README", "-rw-rw-r-- 1 1176 1176 1063 Jun 15 10:18:11 READ ME.txt", "drwxr-sr-x 5 1176 1176 4096 Dec 19 2000 pool", "drwxr-sr-x 4 1176 1176 4096 Nov 17 2008 project", "drwxr-xr-x 3 1176 1176 4096 Oct 10 2012 tools"] dirs_check = ["pool", "project", "tools"] files_check = ["README", "READ ME.txt"] dirs, files = ftp_list_dir_process_listing(lines) dirs.sort() dirs_check.sort() files.sort() files_check.sort() self.assertEqual(dirs, dirs_check) self.assertEqual(files, files_check) class TestHttpFunctions(unittest.TestCase): def test_http_links_from_listing(self): html = """ Index of /debian/dists/ google/

Index of /debian/dists/


../
              bunsen-hydrogen/                                   08-May-2017 20:31       -
              jessie-backports/                                  01-Jul-2017 15:58       -
              unstable/                                          12-Aug-2017 19:32       -
              

""" links_check = ["../", "bunsen-hydrogen/", "jessie-backports/", "unstable/", "http://google.com"] links = http_links_from_listing(html) links.sort() links_check.sort() self.assertEqual(links, links_check) def test_http_paths_from_listing(self): html = """ Index of /debian/dists/

Index of /debian/dists/


../
              bunsen-hydrogen/                                   08-May-2017 20:31       -
              jessie-backports/                                  01-Jul-2017 15:58       -
              unstable/                                          12-Aug-2017 19:32       -
              

""" paths_check = ["bunsen-hydrogen/", "jessie-backports/", "unstable/"] paths = http_paths_from_listing(html) paths.sort() paths_check.sort() self.assertEqual(paths, paths_check) class TestPackageFunctions(unittest.TestCase): def test_deb_packages_extract_version(self): packages = """Package: sendmailanalyzer Version: 9.2-1.1 Architecture: all Maintainer: Dominique Fournier Installed-Size: 749 Pre-Depends: perl Depends: apache2 Homepage: http://sareport.darold.net/ Priority: optional Section: mail Filename: pool/main/s/sendmailanalyzer/sendmailanalyzer_9.2-1.1_all.deb Size: 143576 SHA256: 0edcbde19a23333c8c894e27af32447582b38e3ccd84122ac07720fdaab8fa0c SHA1: a7f4dcf42e850acf2c201bc4594cb6b765dced20 MD5sum: adb39196fc33a826b24e9d0e440cba25 Description: Perl Sendmail/Postfix log analyser SendmailAnalyzer continuously read your mail log file to generate periodical HTML and graph reports. All reports are shown through a CGI web interface. It reports all you ever wanted to know about email trafic on your network. You can also use it in ISP environment with per domain report. Package: tint2 Version: 0.14.6-1 Architecture: amd64 Maintainer: Jens John Installed-Size: 1230 Depends: libatk1.0-0 (>= 1.12.4), libc6 (>= 2.15), libcairo2 (>= 1.2.4), libfontconfig1 (>= 2.11), libfreetype6 (>= 2.2.1), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.35.9), libgtk2.0-0 (>= 2.14.0), libimlib2 (>= 1.4.5), libpango-1.0-0 (>= 1.20.0), libpangocairo-1.0-0 (>= 1.14.0), libpangoft2-1.0-0 (>= 1.14.0), librsvg2-2 (>= 2.14.4), libstartup-notification0 (>= 0.4), libx11-6, libxcomposite1 (>= 1:0.3-1), libxdamage1 (>= 1:1.1), libxfixes3, libxinerama1, libxrandr2 (>= 2:1.2.99.3), libxrender1 Homepage: https://gitlab.com/o9000/tint2/ Priority: optional Section: x11 Filename: pool/main/t/tint2/tint2_0.14.6-1_amd64.deb Size: 279638 SHA256: c96e745425a97828952e9e0277176fe68e2512056915560ac968a66c88a0a8b7 SHA1: 82edd60429a494bb127e6d8a10434fca0ee60f61 MD5sum: 65455638fb41503361560b25a70b33b7 Description: lightweight taskbar Tint is a simple panel/taskbar intentionally made for openbox3, but should also work with other window managers. The taskbar includes transparency and color settings for the font, icons, border, and background. It also supports multihead setups, customized mouse actions, and a built-in clock. Tint was originally based on ttm code. Since then, support has also been added for a battery monitor and system tray. . The goal is to keep a clean and unintrusive look with lightweight code and compliance with freedesktop specification. Package: xfce4-power-manager Version: 1.4.4-4~bpo8+1 Architecture: amd64 Maintainer: Debian Xfce Maintainers Installed-Size: 541 Depends: libc6 (>= 2.4), libcairo2 (>= 1.2.4), libdbus-1-3 (>= 1.0.2), libdbus-glib-1-2 (>= 0.88), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.41.1), libgtk2.0-0 (>= 2.24.0), libnotify4 (>= 0.7.0), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libupower-glib3 (>= 0.99.0), libx11-6, libxext6, libxfce4ui-1-0 (>= 4.9.0), libxfce4util6 (>= 4.9.0), libxfconf-0-2 (>= 4.6.0), libxrandr2 (>= 2:1.2.99.2), upower (>= 0.99), xfce4-power-manager-data (= 1.4.4-4~bpo8+1) Recommends: libpam-systemd, xfce4-power-manager-plugins Homepage: http://goodies.xfce.org/projects/applications/xfce4-power-manager Priority: optional Section: xfce Filename: pool/main/x/xfce4-power-manager/xfce4-power-manager_1.4.4-4~bpo8+1_amd64.deb Size: 214122 SHA256: 992b606afe5e9934bce19a1df2b8d7067c98b9d64e23a9b63dbd0c4cf28b4ac9 SHA1: 6bfcd77071f31577a37abab063bf21a34f4d616c MD5sum: fb777aecbbfe39742649b768eb22c697 Description: power manager for Xfce desktop This power manager for the Xfce desktop enables laptop users to set up a power profile for two different modes "on battery power" and "on ac power" while still allowing desktop users to at least change the DPMS settings and CPU frequency using the settings dialogue.. . It features: * battery monitoring * cpu frequency settings * monitor DPMS settings * suspend/Hibernate * LCD brightness control * Lid, sleep and power switches control""" version, maintainer = deb_packages_extract_version(packages, "tint2") self.assertEqual(version, "0.14.6-1") self.assertEqual(maintainer, "Jens John ") version, maintainer = deb_packages_extract_version(packages, "asdf") self.assertEqual(version, None) self.assertEqual(maintainer, None) def test_arch_packages_extract_version(self): pkgbuild = """# $Id$ # Maintainer: Alexander F Rødseth # Contributor: Blue Peppers # Contributor: Stefan Husmann # Contributor: Yannick LM pkgname=tint2 pkgver=0.14.6 pkgrel=2 pkgdesc='Basic, good-looking task manager for WMs' arch=('x86_64' 'i686') url='https://gitlab.com/o9000/tint2' license=('GPL2') depends=('gtk2' 'imlib2' 'startup-notification') makedepends=('cmake' 'startup-notification' 'git' 'ninja' 'setconf') source=("$pkgname-$pkgver.tar.bz2::https://gitlab.com/o9000/tint2/repository/archive.tar.bz2?ref=$pkgver") sha256sums=('b40079fb187aa248cd3b6957076f138d040c723b309e1b254ac0c8ec9826a451') prepare() { mv "$pkgname-$pkgver-"* "$pkgname" setconf "$pkgname/get_version.sh" VERSION "$pkgver" } build() { mkdir -p build cd build cmake "../$pkgname" \ -DCMAKE_INSTALL_PREFIX=/usr \ -DENABLE_TINT2CONF=1 \ -GNinja ninja } package() { DESTDIR="$pkgdir" ninja -C build install } # getver: gitlab.com/o9000/tint2/blob/master/README.md # vim: ts=2 sw=2 et:""" version, maintainer = arch_pkgbuild_extract_version(pkgbuild) self.assertEqual(version, "0.14.6") self.assertEqual(maintainer, "Alexander F Rødseth ") if __name__ == '__main__': unittest.main()