Verified Commit 9a9dba52 authored by Mattia Rizzolo's avatar Mattia Rizzolo
Browse files

Merge branch 'gpg-utf8' of salsa.debian.org:lyknode/debexpo into live

MR: !184


Signed-off-by: Mattia Rizzolo's avatarMattia Rizzolo <mattia@debian.org>
parents 49b90282 2e881f6c
Pipeline #303238 passed with stage
in 9 minutes and 49 seconds
......@@ -26,6 +26,7 @@ before_script:
python3-django-filters
python3-django-redis
ca-certificates
locales-all
libjs-jquery
libjs-jquery-throttle-debounce
libjs-jquery-isonscreen
......
......@@ -63,8 +63,7 @@ def get_debexpo_version():
# currently are in a git reposirtory. Hence, this is tested manually.
try:
output = debexpo_exec(command, args,
cwd=dirname(abspath(__file__)),
text=True)
cwd=dirname(abspath(__file__)))
except FileNotFoundError: # pragma: no cover
log.debug('git not found, skip revision detection.')
except CalledProcessError: # pragma: no cover
......
......@@ -43,8 +43,7 @@ class PluginDiffClean(BasePlugin):
def _run_diffstat(self, diff_file):
try:
output = debexpo_exec("diffstat", ["-p1", diff_file],
cwd=dirname(diff_file),
text=True)
cwd=dirname(diff_file))
except FileNotFoundError: # pragma: no cover
self.failed('diffstat not found')
# Looking at diffstat code, it only exit with a return code different
......
......@@ -68,8 +68,7 @@ class PluginLintian(BasePlugin):
# run as root in CI.
"--allow-root",
str(changes)],
cwd=dirname(changes.filename),
text=True)
cwd=dirname(changes.filename))
except FileNotFoundError: # pragma: no cover
self.failed('lintian not found')
except TimeoutExpired:
......
......@@ -48,8 +48,7 @@ class PluginWatchFile(BasePlugin):
def _run_uscan(self, source):
try:
output = debexpo_exec("uscan", ["--dehs", '--report'],
cwd=source.get_source_dir(),
text=True)
cwd=source.get_source_dir())
except FileNotFoundError: # pragma: no cover
self.failed('uscan not found')
except CalledProcessError as e:
......
......@@ -57,8 +57,7 @@ class Source():
try:
debexpo_exec('dpkg-source', args,
stderr=STDOUT,
cwd=dirname(self.dsc.filename),
text=True)
cwd=dirname(self.dsc.filename))
except FileNotFoundError: # pragma: no cover
log.error('dpkg-source not found')
raise ExceptionSource('Internal error. Please contact debexpo '
......
......@@ -225,7 +225,7 @@ class GnuPG():
try:
output = debexpo_exec(self.gpg_path, cmd, env=env,
stderr=subprocess.STDOUT,
input=str(stdin), text=True)
input=str(stdin))
except subprocess.CalledProcessError as e:
return (e.output, e.returncode)
except subprocess.TimeoutExpired:
......
......@@ -38,4 +38,8 @@ def debexpo_exec(command, args, **kwargs):
f'{basename(command).replace("-", "_").upper()}',
getattr(settings, 'SUBPROCESS_TIMEOUT', None))
return check_output([command] + args, timeout=timeout, **kwargs)
return check_output([command] + args,
timeout=timeout,
encoding='utf-8',
text=True,
**kwargs)
......@@ -27,6 +27,7 @@
# OTHER DEALINGS IN THE SOFTWARE.
from tests import TransactionTestController
from locale import getlocale, setlocale, LC_CTYPE
from django.urls import reverse
# from debexpo.lib import constants
# from debexpo.model import meta
......@@ -153,25 +154,29 @@ xOwJ1heEnfmgPkuiz7jFCAo=
_GPGKEY_2 = """-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEW/GBqhYJKwYBBAHaRw8BAQdA+6hBA4PcdcPwgMsKGQXrqwbJemLBgS1PkKZg
RFlKdKi0IHByaW1hcnkgaWQgPHByaW1hcnlAZXhhbXBsZS5vcmc+iJAEExYIADgC
GwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRVkwbu4cjBst0cc7HENHgc6HHz
3wUCXyxWUwAKCRDENHgc6HHz3zxDAQCB9zEqs0mWmriFqhXtRSwjhLhbprWxpAqk
WTat6AU6XgD+MDVYYgKEHeLuKqJ1MiR+x53f5ypxtA5eHJZdbs5OEA+0HVRlc3Qg
dXNlciA8ZW1haWxAZXhhbXBsZS5jb20+iJMEExYIADsCGwMFCwkIBwIGFQoJCAsC
BBYCAwECHgECF4AWIQRVkwbu4cjBst0cc7HENHgc6HHz3wUCXyxWUwIZAQAKCRDE
NHgc6HHz30lxAP9Zvb7ssZ0bg94u2y1G3zbh8+5svSmGp3HThxMooIHvcwEA8jB3
s5fVTZBIXagHBxACGSG5EhxlA8KlmaOSDGvl9w+4OARb8YGqEgorBgEEAZdVAQUB
AQdANrk3qq/eP1TEWfFZqhR0vcz7YB9c5+OnvMV+xO4W3nQDAQgHiHgEGBYIACAW
IQRVkwbu4cjBst0cc7HENHgc6HHz3wUCW/GBqgIbDAAKCRDENHgc6HHz3/CHAP0c
hxes4Ebtg7N8B/BoMYwmUVvmMVmoV+ef/vqYvfm6sgEA6fKzMSXllw57UJ90Unyn
xOwJ1heEnfmgPkuiz7jFCAq4MwReCQ2QFgkrBgEEAdpHDwEBB0A+v2Y8n88j+WwI
Q3hChPR7xa49prRSyKRnGBD/AXhJfYjvBBgWCgAgFiEEVZMG7uHIwbLdHHOxxDR4
HOhx898FAl4JDZACGwIAgQkQxDR4HOhx8992IAQZFgoAHRYhBLPPezP4B2M420+o
DoeRkoMRdTvXBQJeCQ2QAAoJEIeRkoMRdTvX0AcA/i8tjP8ihM2nJHRXwBnrh/iH
v0eSEi3sH+j0fwy9OBLJAP9ne01k9LkCXplS8ys+0u0e4545IIbiw8D4ToupD25q
CiIIAP4hwNooM6bAlg2HDYTUxJl4LA0qlJS66qnXv94Q8p4VngD/Y5O0AJw06BCw
Xcgnuh6Rlywt6uiaFIGYnGefYPGXRAA=
=kRLH
RFlKdKi0HVRlc3QgdXNlciA8ZW1haWxAZXhhbXBsZS5jb20+iJMEExYIADsCGwMF
CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRVkwbu4cjBst0cc7HENHgc6HHz3wUC
XyxWUwIZAQAKCRDENHgc6HHz30lxAP9Zvb7ssZ0bg94u2y1G3zbh8+5svSmGp3HT
hxMooIHvcwEA8jB3s5fVTZBIXagHBxACGSG5EhxlA8KlmaOSDGvl9w+0IHByaW1h
cnkgaWQgPHByaW1hcnlAZXhhbXBsZS5vcmc+iJAEExYIADgCGwMFCwkIBwIGFQoJ
CAsCBBYCAwECHgECF4AWIQRVkwbu4cjBst0cc7HENHgc6HHz3wUCXyxWUwAKCRDE
NHgc6HHz3zxDAQCB9zEqs0mWmriFqhXtRSwjhLhbprWxpAqkWTat6AU6XgD+MDVY
YgKEHeLuKqJ1MiR+x53f5ypxtA5eHJZdbs5OEA+0IlVURi04IMO8aWQgPHNlY29u
ZGFyeUBleGFtcGxlLm9yZz6IkAQTFggAOBYhBFWTBu7hyMGy3RxzscQ0eBzocfPf
BQJhaHZSAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEMQ0eBzocfPfnboA
+wZMsDxIterEz3NJq/8DL9M+zGkw+m+a1i7vIoujsJOQAP9wQwRRDOE16vTjlj5B
cATF0DFQTkv7Efmh8pveItzzCbg4BFvxgaoSCisGAQQBl1UBBQEBB0A2uTeqr94/
VMRZ8VmqFHS9zPtgH1zn46e8xX7E7hbedAMBCAeIeAQYFggAIBYhBFWTBu7hyMGy
3RxzscQ0eBzocfPfBQJb8YGqAhsMAAoJEMQ0eBzocfPf8IcA/RyHF6zgRu2Ds3wH
8GgxjCZRW+YxWahX55/++pi9+bqyAQDp8rMxJeWXDntQn3RSfKfE7AnWF4Sd+aA+
S6LPuMUICrgzBF4JDZAWCSsGAQQB2kcPAQEHQD6/ZjyfzyP5bAhDeEKE9HvFrj2m
tFLIpGcYEP8BeEl9iO8EGBYKACAWIQRVkwbu4cjBst0cc7HENHgc6HHz3wUCXgkN
kAIbAgCBCRDENHgc6HHz33YgBBkWCgAdFiEEs897M/gHYzjbT6gOh5GSgxF1O9cF
Al4JDZAACgkQh5GSgxF1O9fQBwD+Ly2M/yKEzackdFfAGeuH+Ie/R5ISLewf6PR/
DL04EskA/2d7TWT0uQJemVLzKz7S7R7jnjkghuLDwPhOi6kPbmoKIggA/iHA2igz
psCWDYcNhNTEmXgsDSqUlLrqqde/3hDynhWeAP9jk7QAnDToELBdyCe6HpGXLC3q
6JoUgZicZ59g8ZdEAA==
=/JDz
-----END PGP PUBLIC KEY BLOCK-----"""
# def _setup_gpg_env(self):
......@@ -183,12 +188,14 @@ Xcgnuh6Rlywt6uiaFIGYnGefYPGXRAA=
# shutil.rmtree(self.homedir)
#
def setUp(self):
self.locale = getlocale(LC_CTYPE)
self._setup_example_user()
# self._setup_gpg_env()
# self._setup_models()
# self._setup_example_countries()
def tearDown(self):
setlocale(LC_CTYPE, self.locale)
self._remove_example_user()
# self._remove_example_countries()
# self._cleanup_gpg_env()
......@@ -246,6 +253,20 @@ Xcgnuh6Rlywt6uiaFIGYnGefYPGXRAA=
self.assertEquals(response.status_code, 302)
self.assertIn(reverse('login'), response.url)
def test_gpg_encoding(self):
setlocale(LC_CTYPE, 'C')
self.client.post(reverse('login'), self._AUTHDATA)
response = self.client.post(reverse('profile'), {
'key': self._GPGKEY_2,
'commit_gpg': 'submit'
})
self.assertEquals(response.status_code, 200)
self.assertNotIn('errorlist', str(response.content))
user = User.objects.get(email='email@example.com')
self.assertEquals(user.key.key, self._GPGKEY_2)
def test__gpg(self):
# Anonymous access to the form is denined
response = self.client.post(reverse('profile'), {'form': 'gpg'})
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment