1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# This file is part of gns-deb-diff.
#
# gns-deb-diff is under the Public Domain. See
# <https://creativecommons.org/publicdomain/zero/1.0>
import os
import subprocess
import sys
from os import path
from shutil import rmtree
from nose.tools import *
from gd_diff import *
class TestGdDiff(object):
def setup(self):
"""Setup method for this class."""
self.pkgs_file = "tests/files/pkgs.list"
self.pkgs_file_ne = 'tests/nonexistent-file.list'
self.gns_pkgs_dir = 'tests/gns-pkgs'
def test_read_file_success(self):
f_content = read_file(self.pkgs_file)
assert isinstance(f_content, str)
assert_equal(len(f_content.split('\n')), 82)
@raises(SystemExit)
def test_read_file_error(self):
with open(os.devnull, 'w') as sys.stderr:
f_content = read_file(self.pkgs_file_ne)
def test_execute_success(self):
cmd = 'python --version'
cp = execute(cmd, out=subprocess.PIPE)
assert cp.returncode == 0
assert cp.stdout.split()[0] == b'Python'
assert cp.stdout.split()[1].startswith(b'3.5')
def test_execute_cmderror(self):
cmd = 'bzr cat bzr://bzr.sv.gnu.org/gnewsense/packages-parkes/nonexistent-packages/debian/README.gNewSense'
cp = execute(cmd, err=subprocess.PIPE)
assert cp.returncode == 3
assert cp.stderr.startswith(b'bzr: ERROR:')
@raises(SystemExit)
def test_execute_raise_exception(self):
cmd = 'cornhole computers'
with open(os.devnull, 'w') as sys.stderr:
cp = execute(cmd)
def test_get_packages(self):
pkgs_iter = get_packages(self.pkgs_file)
assert len(list(pkgs_iter)) == 82
def test_get_packages_sanity(self):
pkgs_iter = get_packages(self.pkgs_file)
for pkg in pkgs_iter:
assert not ' ' in pkg
def test_save_gns_readme(self):
cmd = 'bzr cat bzr://bzr.sv.gnu.org/gnewsense/packages-parkes/antlr/debian/README.gNewSense'
cp = execute(cmd, out=subprocess.PIPE)
readme_content = cp.stdout
# save it
save_gns_readme(readme_content, 'parkes', 'antlr', self.gns_pkgs_dir)
gns_readme_file = path.join(self.gns_pkgs_dir, 'parkes', 'antlr', 'debian', 'README.gNewSense')
with open(gns_readme_file, 'rb') as f:
assert f.read() == b'Changed-From-Debian: Removed example with non-free files.\nChange-Type: Modified\n\nFor gNewSense, the non-free unicode.IDENTs files are *actually* removed (see\nalso README.source). See gNewSense bug #34218 for details.\n'
def test_save_gns_readme_double(self):
cmd = 'bzr cat bzr://bzr.sv.gnu.org/gnewsense/packages-parkes/antlr/debian/README.gNewSense'
cp = execute(cmd, out=subprocess.PIPE)
readme_content = cp.stdout
# save it twice
save_gns_readme(readme_content, 'parkes', 'antlr', self.gns_pkgs_dir)
save_gns_readme(readme_content, 'parkes', 'antlr', self.gns_pkgs_dir)
gns_readme_file = path.join(self.gns_pkgs_dir, 'parkes', 'antlr', 'debian', 'README.gNewSense')
with open(gns_readme_file, 'rb') as f:
assert f.read() == b'Changed-From-Debian: Removed example with non-free files.\nChange-Type: Modified\n\nFor gNewSense, the non-free unicode.IDENTs files are *actually* removed (see\nalso README.source). See gNewSense bug #34218 for details.\n'
@raises(SystemExit)
def test_save_gns_readme_error(self):
os.mkdir(self.gns_pkgs_dir, mode=0o500)
# must error out
readme_content = 'lorem ipsum'
with open(os.devnull, 'w') as sys.stderr:
save_gns_readme(readme_content, 'parkes', 'antlr', self.gns_pkgs_dir)
def teardown(self):
"""Teardown method for this class."""
if(path.exists(self.gns_pkgs_dir)):
os.chmod(self.gns_pkgs_dir, mode=0o700)
rmtree(self.gns_pkgs_dir)
|