tor-commits
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
November 2019
- 20 participants
- 2923 discussions

[translation/support-portal] https://gitweb.torproject.org/translation.git/commit/?h=support-portal
by translation@torproject.org 14 Nov '19
by translation@torproject.org 14 Nov '19
14 Nov '19
commit 2e168a68f7ae60dcd8ccd830493d157d7baaf021
Author: Translation commit bot <translation(a)torproject.org>
Date: Thu Nov 14 15:26:51 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=support-portal
---
contents+ar.po | 17 +----------------
contents+bn.po | 17 +----------------
contents+ca.po | 17 +----------------
contents+cs.po | 17 +----------------
contents+da.po | 17 +----------------
contents+de.po | 17 +----------------
contents+el.po | 17 +----------------
contents+es-AR.po | 17 +----------------
contents+es.po | 22 +++-------------------
contents+fa.po | 17 +----------------
contents+fo.po | 17 +----------------
contents+fr.po | 21 +++------------------
contents+ga.po | 17 +----------------
contents+gu.po | 17 +----------------
contents+he.po | 17 +----------------
contents+hi.po | 17 +----------------
contents+hu.po | 17 +----------------
contents+id.po | 17 +----------------
contents+is.po | 17 +----------------
contents+it.po | 17 +----------------
contents+ja.po | 17 +----------------
contents+ka.po | 17 +----------------
contents+ko.po | 17 +----------------
contents+mk.po | 17 +----------------
contents+ml.po | 17 +----------------
contents+my.po | 17 +----------------
contents+nb.po | 17 +----------------
contents+nl.po | 17 +----------------
contents+pl.po | 17 +----------------
contents+pt-BR.po | 17 +----------------
contents+pt-PT.po | 17 +----------------
contents+ro.po | 17 +----------------
contents+ru.po | 21 +++------------------
contents+sr.po | 17 +----------------
contents+sv.po | 17 +----------------
contents+sw.po | 17 +----------------
contents+th.po | 17 +----------------
contents+tr.po | 17 +----------------
contents+uk.po | 17 +----------------
contents+zh-CN.po | 19 ++-----------------
contents+zh-TW.po | 21 +++------------------
contents.pot | 17 +----------------
42 files changed, 51 insertions(+), 682 deletions(-)
diff --git a/contents+ar.po b/contents+ar.po
index 4ea050a79..1bc859b82 100644
--- a/contents+ar.po
+++ b/contents+ar.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Emma Peel, 2019\n"
"Language-Team: Arabic (https://www.transifex.com/otf/teams/1519/ar/)\n"
@@ -1219,16 +1219,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1251,11 +1241,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+bn.po b/contents+bn.po
index 878e7e86a..5b9957062 100644
--- a/contents+bn.po
+++ b/contents+bn.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Emma Peel, 2019\n"
"Language-Team: Bengali (https://www.transifex.com/otf/teams/1519/bn/)\n"
@@ -1264,16 +1264,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1299,11 +1289,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+ca.po b/contents+ca.po
index e5b461cd4..01f298044 100644
--- a/contents+ca.po
+++ b/contents+ca.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Emma Peel, 2019\n"
"Language-Team: Catalan (https://www.transifex.com/otf/teams/1519/ca/)\n"
@@ -1383,16 +1383,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1418,11 +1408,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+cs.po b/contents+cs.po
index 7b8f5fefe..e90d70910 100644
--- a/contents+cs.po
+++ b/contents+cs.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Michal Stanke <mstanke(a)mozilla.cz>, 2019\n"
"Language-Team: Czech (https://www.transifex.com/otf/teams/1519/cs/)\n"
@@ -1237,16 +1237,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1269,11 +1259,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+da.po b/contents+da.po
index 31470cc84..3d4ee955e 100644
--- a/contents+da.po
+++ b/contents+da.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: scootergrisen, 2019\n"
"Language-Team: Danish (https://www.transifex.com/otf/teams/1519/da/)\n"
@@ -1213,16 +1213,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1245,11 +1235,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+de.po b/contents+de.po
index 61dc451ff..758245abe 100644
--- a/contents+de.po
+++ b/contents+de.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Emma Peel, 2019\n"
"Language-Team: German (https://www.transifex.com/otf/teams/1519/de/)\n"
@@ -1324,16 +1324,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1359,11 +1349,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+el.po b/contents+el.po
index 233fb8fa2..75d803347 100644
--- a/contents+el.po
+++ b/contents+el.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Emma Peel, 2019\n"
"Language-Team: Greek (https://www.transifex.com/otf/teams/1519/el/)\n"
@@ -1253,16 +1253,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1285,11 +1275,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+es-AR.po b/contents+es-AR.po
index 470d3cba6..109dba6bc 100644
--- a/contents+es-AR.po
+++ b/contents+es-AR.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Zuhualime Akoochimoya, 2019\n"
"Language-Team: Spanish (Argentina) (https://www.transifex.com/otf/teams/1519/es_AR/)\n"
@@ -1233,16 +1233,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1265,11 +1255,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+es.po b/contents+es.po
index ffc43ec4d..4b2691b43 100644
--- a/contents+es.po
+++ b/contents+es.po
@@ -2,16 +2,16 @@
# Zuhualime Akoochimoya, 2019
# strel, 2019
# David Figuera <dfb(a)fastmail.com>, 2019
+# erinm, 2019
# eulalio barbero espinosa <eulaliob(a)gmail.com>, 2019
# Nicolas Sera-Leyva <nseraleyva(a)internews.org>, 2019
-# erinm, 2019
# Emma Peel, 2019
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Emma Peel, 2019\n"
"Language-Team: Spanish (https://www.transifex.com/otf/teams/1519/es/)\n"
@@ -1460,16 +1460,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr "======="
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1495,11 +1485,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
@@ -9069,8 +9054,7 @@ msgid ""
"to contact them."
msgstr ""
"Si deseas charlar con alguien en concreto, comienza la frase con su apodo, "
-"así esa persona recibirá una notificación de que alguien intenta entablar un"
-" dialogo con el/ella."
+"así esa persona recibirá una notificación de que alguien intenta hablarle."
#: https//support.torproject.org/get-in-touch/irc-help/
#: (content/get-in-touch/irc-help/contents+en.lrquestion.description)
diff --git a/contents+fa.po b/contents+fa.po
index e4890d754..b2da18771 100644
--- a/contents+fa.po
+++ b/contents+fa.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Reza Ghasemi, 2019\n"
"Language-Team: Persian (https://www.transifex.com/otf/teams/1519/fa/)\n"
@@ -1247,16 +1247,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1279,11 +1269,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+fo.po b/contents+fo.po
index 7b4d08a65..aa8d76d14 100644
--- a/contents+fo.po
+++ b/contents+fo.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: erinm, 2019\n"
"Language-Team: Faroese (https://www.transifex.com/otf/teams/1519/fo/)\n"
@@ -1227,16 +1227,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1259,11 +1249,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+fr.po b/contents+fr.po
index eabff73fc..f4018bd3d 100644
--- a/contents+fr.po
+++ b/contents+fr.po
@@ -2,19 +2,19 @@
# Curtis Baltimore <curtisbaltimore(a)protonmail.com>, 2019
# David Georges, 2019
# N W, 2019
+# erinm, 2019
# Emma Peel, 2019
# PoorPockets McNewHold <poorpocketsmcnewhold(a)protonmail.ch>, 2019
# AO <ao(a)localizationlab.org>, 2019
# Adam Lynn <adam(a)opentechfund.org>, 2019
-# erinm, 2019
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
-"Last-Translator: erinm, 2019\n"
+"Last-Translator: Adam Lynn <adam(a)opentechfund.org>, 2019\n"
"Language-Team: French (https://www.transifex.com/otf/teams/1519/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -1322,16 +1322,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr "======="
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1354,11 +1344,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+ga.po b/contents+ga.po
index 8c61ccde6..191b38012 100644
--- a/contents+ga.po
+++ b/contents+ga.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Emma Peel, 2019\n"
"Language-Team: Irish (https://www.transifex.com/otf/teams/1519/ga/)\n"
@@ -1229,16 +1229,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1261,11 +1251,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+gu.po b/contents+gu.po
index e33f5231b..16f309291 100644
--- a/contents+gu.po
+++ b/contents+gu.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: erinm, 2019\n"
"Language-Team: Gujarati (https://www.transifex.com/otf/teams/1519/gu/)\n"
@@ -1215,16 +1215,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1247,11 +1237,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+he.po b/contents+he.po
index 5a7554ff2..b9c32c5dc 100644
--- a/contents+he.po
+++ b/contents+he.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: ION, 2019\n"
"Language-Team: Hebrew (https://www.transifex.com/otf/teams/1519/he/)\n"
@@ -1218,16 +1218,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1250,11 +1240,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+hi.po b/contents+hi.po
index 23bb069a6..786f01b50 100644
--- a/contents+hi.po
+++ b/contents+hi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: erinm, 2019\n"
"Language-Team: Hindi (https://www.transifex.com/otf/teams/1519/hi/)\n"
@@ -1213,16 +1213,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1245,11 +1235,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+hu.po b/contents+hu.po
index 1dd93ba13..00a1d706b 100644
--- a/contents+hu.po
+++ b/contents+hu.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: vargaviktor <viktor.varga(a)gmail.com>, 2019\n"
"Language-Team: Hungarian (https://www.transifex.com/otf/teams/1519/hu/)\n"
@@ -1225,16 +1225,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1257,11 +1247,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+id.po b/contents+id.po
index c60afea6d..94328ace6 100644
--- a/contents+id.po
+++ b/contents+id.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Emma Peel, 2019\n"
"Language-Team: Indonesian (https://www.transifex.com/otf/teams/1519/id/)\n"
@@ -1248,16 +1248,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1283,11 +1273,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+is.po b/contents+is.po
index d309fbc30..2758953c9 100644
--- a/contents+is.po
+++ b/contents+is.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Sveinn í Felli <sv1(a)fellsnet.is>, 2019\n"
"Language-Team: Icelandic (https://www.transifex.com/otf/teams/1519/is/)\n"
@@ -1261,16 +1261,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1293,11 +1283,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+it.po b/contents+it.po
index 8eef9f9e3..1543ee49d 100644
--- a/contents+it.po
+++ b/contents+it.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Emma Peel, 2019\n"
"Language-Team: Italian (https://www.transifex.com/otf/teams/1519/it/)\n"
@@ -1463,16 +1463,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr "#### Soluzione alternativa (utilizzando una chiave pubblica)"
@@ -1502,11 +1492,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+ja.po b/contents+ja.po
index 5c912973b..7939d0183 100644
--- a/contents+ja.po
+++ b/contents+ja.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: ue zaeco, 2019\n"
"Language-Team: Japanese (https://www.transifex.com/otf/teams/1519/ja/)\n"
@@ -1218,16 +1218,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1250,11 +1240,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+ka.po b/contents+ka.po
index 8c7d4ab82..43ddec061 100644
--- a/contents+ka.po
+++ b/contents+ka.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Georgianization, 2019\n"
"Language-Team: Georgian (https://www.transifex.com/otf/teams/1519/ka/)\n"
@@ -1457,16 +1457,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr "#### დროებითი გამოსავალი (საჯარო გასაღებით)"
@@ -1497,11 +1487,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+ko.po b/contents+ko.po
index c1b18c456..89e6c34a7 100644
--- a/contents+ko.po
+++ b/contents+ko.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Johnny Cho <popeye92(a)gmail.com>, 2019\n"
"Language-Team: Korean (https://www.transifex.com/otf/teams/1519/ko/)\n"
@@ -1218,16 +1218,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1250,11 +1240,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+mk.po b/contents+mk.po
index 3bcbf6957..f2265cb55 100644
--- a/contents+mk.po
+++ b/contents+mk.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Liljana Ackovska <liljanagjurova(a)gmail.com>, 2019\n"
"Language-Team: Macedonian (https://www.transifex.com/otf/teams/1519/mk/)\n"
@@ -1217,16 +1217,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1249,11 +1239,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+ml.po b/contents+ml.po
index a8954d3aa..0b2486f8c 100644
--- a/contents+ml.po
+++ b/contents+ml.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Emma Peel, 2019\n"
"Language-Team: Malayalam (https://www.transifex.com/otf/teams/1519/ml/)\n"
@@ -1473,16 +1473,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr "#### Workaround (ഒരു പൊതു കീ ഉപയോഗിച്ച്)"
@@ -1512,11 +1502,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+my.po b/contents+my.po
index 5046dac7a..9d6f7c8ee 100644
--- a/contents+my.po
+++ b/contents+my.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: erinm, 2019\n"
"Language-Team: Burmese (https://www.transifex.com/otf/teams/1519/my/)\n"
@@ -1213,16 +1213,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1245,11 +1235,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+nb.po b/contents+nb.po
index deb095737..4305d614e 100644
--- a/contents+nb.po
+++ b/contents+nb.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: 490cdfb601cecc09e36402222ad5913c, 2019\n"
"Language-Team: Norwegian Bokmål (https://www.transifex.com/otf/teams/1519/nb/)\n"
@@ -1228,16 +1228,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1260,11 +1250,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+nl.po b/contents+nl.po
index 86e18e8cc..ae658ff88 100644
--- a/contents+nl.po
+++ b/contents+nl.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Meteor 0id, 2019\n"
"Language-Team: Dutch (https://www.transifex.com/otf/teams/1519/nl/)\n"
@@ -1229,16 +1229,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1261,11 +1251,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+pl.po b/contents+pl.po
index e68562b87..24a7b0451 100644
--- a/contents+pl.po
+++ b/contents+pl.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Michał Nowak <nowak1michal(a)gmail.com>, 2019\n"
"Language-Team: Polish (https://www.transifex.com/otf/teams/1519/pl/)\n"
@@ -1275,16 +1275,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1307,11 +1297,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+pt-BR.po b/contents+pt-BR.po
index aaffc2913..19a69e765 100644
--- a/contents+pt-BR.po
+++ b/contents+pt-BR.po
@@ -18,7 +18,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: m tk, 2019\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/otf/teams/1519/pt_BR/)\n"
@@ -1413,16 +1413,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1445,11 +1435,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+pt-PT.po b/contents+pt-PT.po
index 13e760f1b..04205e9a9 100644
--- a/contents+pt-PT.po
+++ b/contents+pt-PT.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Rui Melo <viper5000pt(a)gmail.com>, 2019\n"
"Language-Team: Portuguese (Portugal) (https://www.transifex.com/otf/teams/1519/pt_PT/)\n"
@@ -1270,16 +1270,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1302,11 +1292,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+ro.po b/contents+ro.po
index d93a7dd0c..05df309a0 100644
--- a/contents+ro.po
+++ b/contents+ro.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: eduard pintilie <eduard.pintilie(a)gmail.com>, 2019\n"
"Language-Team: Romanian (https://www.transifex.com/otf/teams/1519/ro/)\n"
@@ -1258,16 +1258,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1290,11 +1280,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+ru.po b/contents+ru.po
index 34077080c..ec2f02d54 100644
--- a/contents+ru.po
+++ b/contents+ru.po
@@ -9,18 +9,18 @@
# Vitaliy Grishenko, 2019
# Evgeny Malyshev <evgeny.malyshev.sss(a)gmail.com>, 2019
# Andrey Kostrikov <yavinav(a)gmail.com>, 2019
+# erinm, 2019
# solokot <solokot(a)gmail.com>, 2019
# Sergey Smirnov <cj75300(a)gmail.com>, 2019
# Мария Романенко <mary.romanenko(a)gmail.com>, 2019
-# erinm, 2019
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
-"Last-Translator: erinm, 2019\n"
+"Last-Translator: Мария Романенко <mary.romanenko(a)gmail.com>, 2019\n"
"Language-Team: Russian (https://www.transifex.com/otf/teams/1519/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -1258,16 +1258,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr "======="
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1290,11 +1280,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+sr.po b/contents+sr.po
index d44ad6ead..5c501ba44 100644
--- a/contents+sr.po
+++ b/contents+sr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Aleksa Ristić, 2019\n"
"Language-Team: Serbian (https://www.transifex.com/otf/teams/1519/sr/)\n"
@@ -1218,16 +1218,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1250,11 +1240,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+sv.po b/contents+sv.po
index 9d62654fd..a5bcfccc7 100644
--- a/contents+sv.po
+++ b/contents+sv.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Jonatan Nyberg, 2019\n"
"Language-Team: Swedish (https://www.transifex.com/otf/teams/1519/sv/)\n"
@@ -1218,16 +1218,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1250,11 +1240,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+sw.po b/contents+sw.po
index a0e73489b..477fdaa51 100644
--- a/contents+sw.po
+++ b/contents+sw.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: erinm, 2019\n"
"Language-Team: Swahili (https://www.transifex.com/otf/teams/1519/sw/)\n"
@@ -1213,16 +1213,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1245,11 +1235,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+th.po b/contents+th.po
index 05de22d6c..abe2b0b86 100644
--- a/contents+th.po
+++ b/contents+th.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: DN DN <deen6(a)protonmail.com>, 2019\n"
"Language-Team: Thai (https://www.transifex.com/otf/teams/1519/th/)\n"
@@ -1221,16 +1221,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1253,11 +1243,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+tr.po b/contents+tr.po
index 6fdfcaee7..f915ae9b9 100644
--- a/contents+tr.po
+++ b/contents+tr.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Emma Peel, 2019\n"
"Language-Team: Turkish (https://www.transifex.com/otf/teams/1519/tr/)\n"
@@ -1468,16 +1468,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr "#### Çözüm (herkese açık bir anahtar kullanarak)"
@@ -1507,11 +1497,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+uk.po b/contents+uk.po
index 126a982d5..8d3cd8823 100644
--- a/contents+uk.po
+++ b/contents+uk.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: nobik <nobikik9(a)gmail.com>, 2019\n"
"Language-Team: Ukrainian (https://www.transifex.com/otf/teams/1519/uk/)\n"
@@ -1219,16 +1219,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1251,11 +1241,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+zh-CN.po b/contents+zh-CN.po
index f4c7da678..d239589c6 100644
--- a/contents+zh-CN.po
+++ b/contents+zh-CN.po
@@ -7,17 +7,17 @@
# AngelFalse, 2019
# MD Rights <psychi2009(a)gmail.com>, 2019
# Cloud P <heige.pcloud(a)outlook.com>, 2019
+# erinm, 2019
# ff98sha, 2019
# YFdyh000 <yfdyh000(a)gmail.com>, 2019
# shenzhui007 <12231252(a)bjtu.edu.cn>, 2019
-# erinm, 2019
# Emma Peel, 2019
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
"Last-Translator: Emma Peel, 2019\n"
"Language-Team: Chinese (China) (https://www.transifex.com/otf/teams/1519/zh_CN/)\n"
@@ -1264,16 +1264,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr "======="
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1299,11 +1289,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents+zh-TW.po b/contents+zh-TW.po
index 3f90b38c8..b613bb851 100644
--- a/contents+zh-TW.po
+++ b/contents+zh-TW.po
@@ -1,18 +1,18 @@
# Translators:
# Emma Peel, 2019
+# erinm, 2019
# 孟邦 王, 2019
# Bryce Tsao <tsaodingtw(a)gmail.com>, 2019
# 男孩不壞, 2019
# ian chou <ertiach(a)hotmail.com>, 2019
-# erinm, 2019
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
-"Last-Translator: erinm, 2019\n"
+"Last-Translator: ian chou <ertiach(a)hotmail.com>, 2019\n"
"Language-Team: Chinese (Taiwan) (https://www.transifex.com/otf/teams/1519/zh_TW/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -1216,16 +1216,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr "======="
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr ""
@@ -1248,11 +1238,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ""
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
diff --git a/contents.pot b/contents.pot
index 28c74eaaa..a9d01d9b9 100644
--- a/contents.pot
+++ b/contents.pot
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-14 13:20+CET\n"
+"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: en <LL(a)li.org>\n"
@@ -1441,16 +1441,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "<<<<<<< HEAD"
-msgstr "<<<<<<< HEAD"
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid "======="
-msgstr "======="
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid "#### Workaround (using a public key)"
msgstr "#### Workaround (using a public key)"
@@ -1480,11 +1470,6 @@ msgstr ""
#: https//support.torproject.org/tbb/how-to-verify-signature/
#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
-msgid ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-msgstr ">>>>>>> 4c7b199efc403f7f73b9ae06733568f8945eb6ae"
-
-#: https//support.torproject.org/tbb/how-to-verify-signature/
-#: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)
msgid ""
"You may also want to [learn more about "
"GnuPG](https://www.gnupg.org/documentation/)."
1
0
commit 3df64320067625e1ce888b9bd11943524ee8f47d
Author: teor <teor(a)torproject.org>
Date: Tue Nov 12 15:07:27 2019 +1000
test/parseconf: Add an expected_log file
The "expected_log" file is a set of patterns that matches the
output of "tor --verify-config". Unlike "error", it expects a
successful exit status.
Part of 32451.
---
src/test/test_parseconf.sh | 79 +++++++++++++++++++++++++++++++++++++++-------
1 file changed, 67 insertions(+), 12 deletions(-)
diff --git a/src/test/test_parseconf.sh b/src/test/test_parseconf.sh
index 2f1f1ed35..f298072c3 100755
--- a/src/test/test_parseconf.sh
+++ b/src/test/test_parseconf.sh
@@ -8,11 +8,16 @@
# Valid configurations are tested with --dump-config, which parses and
# validates the configuration before writing it out. We then make sure that
# the result is what we expect, before parsing and dumping it again to make
-# sure that there is no change.
+# sure that there is no change. Optionally, we can also test the log messages
+# with --verify-config.
#
# Invalid configurations are tested with --verify-config, which parses
# and validates the configuration. We capture its output and make sure that
# it contains the error message we expect.
+#
+# When tor is compiled with different libraries or modules, some
+# configurations may have different results. We can specify these result
+# variants using additional result files.
# This script looks for its test cases as individual directories in
# src/test/conf_examples/. Each test may have these files:
@@ -41,33 +46,42 @@
# of "--dump-config short" for this test case. Exactly one of
# "expected" or "error" must be present, or the test will fail.
#
+# expected_log -- Optional. If this file is present, then it contains a regex
+# that must be matched by some line in the output of "--verify-config",
+# which must succeed. Only used if "expected" is also present.
+#
# error -- If this file is present, then it contains a regex that must be
# matched by some line in the output of "--verify-config", which must
# fail. Exactly one of "expected" or "error" must be present, or the
# test will fail.
#
-# {expected,error}_${TOR_LIBS_ENABLED}* -- If this file is present,
-# then the outcome is different when some optional libraries are
+# {expected,expected_log,error}_${TOR_LIBS_ENABLED}* -- If this file is
+# present, then the outcome is different when some optional libraries are
# enabled. If there is no result file matching the exact list of enabled
# libraries, the script searches for result files with one or more of
# those libraries disabled. The search terminates at the standard result
-# file.
+# file. If expected* is present, the script also searches for
+# expected_log*.
#
# For example:
# A test that succeeds, regardless of any enabled libraries:
# - expected
# A test that has a different result if the nss library is enabled
-# (but the same result if any other library is enabled):
+# (but the same result if any other library is enabled). We also check
+# the log output in this test:
# - expected
+# - expected_log
# - expected_nss
+# - expected_log_nss
# A test that fails if the lzma and zstd modules are *not* enabled:
# - error
# - expected_lzma_zstd
#
-# {expected,error}*_no_${TOR_MODULES_DISABLED} -- If this file is present,
-# then the outcome is different when some modules are disabled. If there
-# is no result file matching the exact list of disabled modules, the
-# standard result file is used.
+# {expected,expected_log,error}*_no_${TOR_MODULES_DISABLED} -- If this file is
+# present, then the outcome is different when some modules are disabled.
+# If there is no result file matching the exact list of disabled modules,
+# the standard result file is used. If expected* is present, the script
+# also searches for expected_log*.
#
# For example:
# A test that succeeds, regardless of any disabled modules:
@@ -225,6 +239,7 @@ for dir in "${EXAMPLEDIR}"/*; do
fi
EXPECTED=
+ EXPECTED_LOG=
ERROR=
# Search for a custom result file for any combination of enabled optional
# libraries
@@ -246,6 +261,9 @@ for dir in "${EXAMPLEDIR}"/*; do
fi
EXPECTED="./expected${suffix}"
+ if test -f "./expected_log${suffix}"; then
+ EXPECTED_LOG="./expected_log${suffix}"
+ fi
break
elif test -f "./error${suffix}"; then
@@ -261,8 +279,17 @@ for dir in "${EXAMPLEDIR}"/*; do
done
if test -f "$EXPECTED"; then
-
# This case should succeed: run dump-config and see if it does.
+ FAILED_LOG=
+ FAILED_CONFIG=
+
+ if test -f "$EXPECTED_LOG"; then
+ if ! test -s "$EXPECTED_LOG"; then
+ echo "FAIL: expected log file '$EXPECTED_LOG' is empty." >&2
+ echo "Empty expected log files match any output." >&2
+ FINAL_EXIT=$EXITCODE
+ fi
+ fi
"${TOR_BINARY}" -f "./torrc" \
--defaults-torrc "${DEFAULTS}" \
@@ -271,6 +298,7 @@ for dir in "${EXAMPLEDIR}"/*; do
| "${FILTER}" > "${DATA_DIR}/output.${testname}" \
|| die "FAIL: $EXPECTED: Tor reported an error."
+
if cmp "$EXPECTED" "${DATA_DIR}/output.${testname}">/dev/null ; then
# Check round-trip.
"${TOR_BINARY}" -f "${DATA_DIR}/output.${testname}" \
@@ -286,9 +314,8 @@ for dir in "${EXAMPLEDIR}"/*; do
echo "FAIL: $EXPECTED did not match on round-trip." >&2
FINAL_EXIT=$EXITCODE
fi
-
- echo "OK"
else
+ FAILED_CONFIG="yes"
echo "FAIL" >&2
if test "$(wc -c < "${DATA_DIR}/output.${testname}")" = 0; then
# There was no output -- probably we failed.
@@ -303,6 +330,34 @@ for dir in "${EXAMPLEDIR}"/*; do
FINAL_EXIT=$EXITCODE
fi
+ if test -f "$EXPECTED_LOG"; then
+ # This case should succeed: run verify-config and see if it does.
+
+ "${TOR_BINARY}" --verify-config \
+ -f ./torrc \
+ --defaults-torrc "${DEFAULTS}" \
+ ${CMDLINE} \
+ > "${DATA_DIR}/output_log.${testname}" \
+ || die "FAIL: $EXPECTED_LOG: Tor reported an error."
+
+ expect_log="$(cat "$EXPECTED_LOG")"
+ if grep "${expect_log}" "${DATA_DIR}/output_log.${testname}" \
+ >/dev/null; then
+ :
+ else
+ FAILED_LOG="yes"
+ echo "FAIL" >&2
+ echo "Expected $EXPECTED_LOG: ${expect_log}" >&2
+ echo "Tor said:" >&2
+ cat "${DATA_DIR}/output_log.${testname}" >&2
+ FINAL_EXIT=$EXITCODE
+ fi
+ fi
+
+ if test -z "${FAILED_LOG}${FAILED_CONFIG}"; then
+ echo "OK"
+ fi
+
elif test -f "$ERROR"; then
# This case should fail: run verify-config and see if it does.
1
0

14 Nov '19
commit 7ef44100c4d85fbd091c3965013b5465872a05f6
Author: teor <teor(a)torproject.org>
Date: Tue Nov 12 15:21:10 2019 +1000
test/parseconf: Standardise output messages
Part of 32451.
---
src/test/test_parseconf.sh | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/src/test/test_parseconf.sh b/src/test/test_parseconf.sh
index f298072c3..962d43dd7 100755
--- a/src/test/test_parseconf.sh
+++ b/src/test/test_parseconf.sh
@@ -311,20 +311,23 @@ for dir in "${EXAMPLEDIR}"/*; do
if ! cmp "${DATA_DIR}/output.${testname}" \
"${DATA_DIR}/output_2.${testname}"; then
- echo "FAIL: $EXPECTED did not match on round-trip." >&2
+ echo "FAIL: $EXPECTED did not match on round-trip:" >&2
+ diff -u "${DATA_DIR}/output.${testname}" \
+ "${DATA_DIR}/output_2.${testname}" >&2 \
+ || true
FINAL_EXIT=$EXITCODE
fi
else
FAILED_CONFIG="yes"
- echo "FAIL" >&2
if test "$(wc -c < "${DATA_DIR}/output.${testname}")" = 0; then
+ echo "FAIL: $EXPECTED: Tor said:" >&2
# There was no output -- probably we failed.
"${TOR_BINARY}" -f "./torrc" \
--defaults-torrc "${DEFAULTS}" \
--verify-config \
${CMDLINE} || true
fi
- echo "FAIL: $EXPECTED did not match." >&2
+ echo "FAIL: $EXPECTED did not match:" >&2
diff -u "$EXPECTED" "${DATA_DIR}/output.${testname}" >&2 \
|| true
FINAL_EXIT=$EXITCODE
@@ -346,8 +349,8 @@ for dir in "${EXAMPLEDIR}"/*; do
:
else
FAILED_LOG="yes"
- echo "FAIL" >&2
- echo "Expected $EXPECTED_LOG: ${expect_log}" >&2
+ echo "FAIL: Expected $EXPECTED_LOG:" >&2
+ echo "${expect_log}" >&2
echo "Tor said:" >&2
cat "${DATA_DIR}/output_log.${testname}" >&2
FINAL_EXIT=$EXITCODE
@@ -378,8 +381,8 @@ for dir in "${EXAMPLEDIR}"/*; do
if grep "${expect_err}" "${DATA_DIR}/output.${testname}" >/dev/null; then
echo "OK"
else
- echo "FAIL" >&2
- echo "Expected $ERROR: ${expect_err}" >&2
+ echo "FAIL: Expected $ERROR: " >&2
+ echo "${expect_err}" >&2
echo "Tor said:" >&2
cat "${DATA_DIR}/output.${testname}" >&2
FINAL_EXIT=$EXITCODE
1
0

[tor/master] test/parseconf: Stop ignoring --dump-config failures
by nickm@torproject.org 14 Nov '19
by nickm@torproject.org 14 Nov '19
14 Nov '19
commit 4514bfe9c25f3222e0feba29c5129229287f3963
Author: teor <teor(a)torproject.org>
Date: Tue Nov 12 16:45:07 2019 +1000
test/parseconf: Stop ignoring --dump-config failures
When we added the $FILTER for Windows newlines, we made
the pipeline always exit successfully, even if tor failed.
Fixes bug 32468; bugfix on 0.4.2.1-alpha.
---
changes/bug32468 | 3 +
src/test/conf_examples/pt_02/error | 1 +
src/test/conf_examples/pt_02/expected | 0
src/test/conf_examples/pt_09/error | 1 +
src/test/conf_examples/pt_09/expected | 0
src/test/conf_examples/relay_02/error | 1 +
src/test/conf_examples/relay_02/expected | 0
src/test/test_parseconf.sh | 189 +++++++++++++++++++------------
8 files changed, 120 insertions(+), 75 deletions(-)
diff --git a/changes/bug32468 b/changes/bug32468
new file mode 100644
index 000000000..fa0d87709
--- /dev/null
+++ b/changes/bug32468
@@ -0,0 +1,3 @@
+ o Minor bugfixes (testing):
+ - Stop ignoring "tor --dump-config" errors in test_parseconf.sh.
+ Fixes bug 32468; bugfix on 0.4.2.1-alpha.
diff --git a/src/test/conf_examples/pt_02/error b/src/test/conf_examples/pt_02/error
new file mode 100644
index 000000000..ce28eab72
--- /dev/null
+++ b/src/test/conf_examples/pt_02/error
@@ -0,0 +1 @@
+Invalid ExtORPort configuration
diff --git a/src/test/conf_examples/pt_02/expected b/src/test/conf_examples/pt_02/expected
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/test/conf_examples/pt_09/error b/src/test/conf_examples/pt_09/error
new file mode 100644
index 000000000..882b50a7b
--- /dev/null
+++ b/src/test/conf_examples/pt_09/error
@@ -0,0 +1 @@
+Error parsing ServerTransportListenAddr address
\ No newline at end of file
diff --git a/src/test/conf_examples/pt_09/expected b/src/test/conf_examples/pt_09/expected
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/test/conf_examples/relay_02/error b/src/test/conf_examples/relay_02/error
new file mode 100644
index 000000000..dd87d9f7e
--- /dev/null
+++ b/src/test/conf_examples/relay_02/error
@@ -0,0 +1 @@
+Unrecognized value bad
diff --git a/src/test/conf_examples/relay_02/expected b/src/test/conf_examples/relay_02/expected
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/test/test_parseconf.sh b/src/test/test_parseconf.sh
index 962d43dd7..b84350985 100755
--- a/src/test/test_parseconf.sh
+++ b/src/test/test_parseconf.sh
@@ -102,6 +102,8 @@
umask 077
set -e
+MYNAME="$0"
+
# emulate realpath(), in case coreutils or equivalent is not installed.
abspath() {
f="$*"
@@ -156,7 +158,20 @@ fi
FINAL_EXIT=0
-die() { echo "$1" >&2 ; FINAL_EXIT=$EXITCODE; }
+NEXT_TEST=
+fail() { printf "FAIL: " >&2;
+ # The first argument is a printf string, so this warning is spurious
+ # shellcheck disable=SC2059
+ printf "$@" >&2;
+ printf '\n' >&2;
+ NEXT_TEST="yes"
+ FINAL_EXIT=$EXITCODE; }
+die() { printf "FAIL: CRITICAL error in '%s':" "$MYNAME" >&2;
+ # The first argument is a printf string, so this warning is spurious
+ # shellcheck disable=SC2059
+ printf "$@" >&2;
+ printf '\n' >&2;
+ exit $EXITCODE; }
if test "$WINDOWS" = 1; then
FILTER="dos2unix"
@@ -166,7 +181,8 @@ fi
EMPTY="${DATA_DIR}/EMPTY"
-touch "$EMPTY" || die "Couldn't create empty file."
+touch "$EMPTY" || die "Couldn't create empty file '%s'." \
+ "$EMPTY"
STANDARD_LIBS="libevent\\|openssl\\|zlib"
# Lib names are restricted to [a-z0-9]* at the moment
@@ -185,9 +201,8 @@ TOR_LIBS_ENABLED=${TOR_LIBS_ENABLED%_}
# If we ever have more than 3 optional libraries, we'll need more code here
TOR_LIBS_ENABLED_COUNT="$(echo "$TOR_LIBS_ENABLED_SEARCH" \
| tr ' ' '\n' | wc -l)"
-if [ "$TOR_LIBS_ENABLED_COUNT" -gt 3 ]; then
- echo "$0 can not handle more than 3 optional libraries"
- exit 1
+if test "$TOR_LIBS_ENABLED_COUNT" -gt 3; then
+ die "Can not handle more than 3 optional libraries"
fi
# Brute-force the combinations of libraries
TOR_LIBS_ENABLED_SEARCH_3="$(echo "$TOR_LIBS_ENABLED" \
@@ -214,7 +229,9 @@ fi
echo "Disabled Modules: ${TOR_MODULES_DISABLED:-(None)}"
for dir in "${EXAMPLEDIR}"/*; do
- if ! test -d "${dir}"; then
+ NEXT_TEST=
+
+ if ! test -d "$dir"; then
# Only count directories.
continue
fi
@@ -254,10 +271,11 @@ for dir in "${EXAMPLEDIR}"/*; do
# Check for broken configs
if test -f "./error${suffix}"; then
- echo "FAIL: Found both ${dir}/expected${suffix}" >&2
- echo "and ${dir}/error${suffix}." >&2
- echo "(Only one of these files should exist.)" >&2
- FINAL_EXIT=$EXITCODE
+ fail "Found both '%s' and '%s'.%s" \
+ "${dir}/expected${suffix}" \
+ "${dir}/error${suffix}" \
+ "(Only one of these files should exist.)"
+ break
fi
EXPECTED="./expected${suffix}"
@@ -272,92 +290,114 @@ for dir in "${EXAMPLEDIR}"/*; do
fi
done
- # Exit as soon as the inner loop finds a file
- if test -f "$EXPECTED" || test -f "$ERROR"; then
+ # Exit as soon as the inner loop finds a file, or fails
+ if test -f "$EXPECTED" || test -f "$ERROR" || test "$NEXT_TEST"; then
break
fi
done
- if test -f "$EXPECTED"; then
+ if test "$NEXT_TEST"; then
+ # The test failed inside the file search loop: go to the next test
+ continue
+ elif test -f "$EXPECTED"; then
# This case should succeed: run dump-config and see if it does.
- FAILED_LOG=
- FAILED_CONFIG=
if test -f "$EXPECTED_LOG"; then
if ! test -s "$EXPECTED_LOG"; then
- echo "FAIL: expected log file '$EXPECTED_LOG' is empty." >&2
- echo "Empty expected log files match any output." >&2
- FINAL_EXIT=$EXITCODE
+ fail "Expected log file '%s' is empty.%s" \
+ "$EXPECTED_LOG" \
+ "(Empty expected log files match any output.)"
+ continue
fi
fi
- "${TOR_BINARY}" -f "./torrc" \
- --defaults-torrc "${DEFAULTS}" \
- --dump-config short \
- ${CMDLINE} \
- | "${FILTER}" > "${DATA_DIR}/output.${testname}" \
- || die "FAIL: $EXPECTED: Tor reported an error."
+ "$TOR_BINARY" -f "./torrc" \
+ --defaults-torrc "$DEFAULTS" \
+ --dump-config short \
+ $CMDLINE > "${DATA_DIR}/output_raw.${testname}" \
+ || fail "'%s': Tor --dump-config reported an error." \
+ "$EXPECTED"
+ "$FILTER" "${DATA_DIR}/output_raw.${testname}" \
+ > "${DATA_DIR}/output.${testname}" \
+ || fail "'%s': Filter '%s' reported an error." \
+ "$EXPECTED" \
+ "$FILTER"
- if cmp "$EXPECTED" "${DATA_DIR}/output.${testname}">/dev/null ; then
+ if cmp "$EXPECTED" "${DATA_DIR}/output.${testname}" > /dev/null; then
# Check round-trip.
- "${TOR_BINARY}" -f "${DATA_DIR}/output.${testname}" \
- --defaults-torrc "${DATA_DIR}/empty" \
- --dump-config short \
- | "${FILTER}" \
- > "${DATA_DIR}/output_2.${testname}" \
- || die \
- "FAIL: $EXPECTED: Tor reported an error on round-trip."
+ "$TOR_BINARY" -f "${DATA_DIR}/output.${testname}" \
+ --defaults-torrc "$EMPTY" \
+ --dump-config short \
+ > "${DATA_DIR}/output_2_raw.${testname}" \
+ || fail "'%s': Tor --dump-config reported an error%s." \
+ "$EXPECTED" \
+ " on round-trip"
+
+ "$FILTER" "${DATA_DIR}/output_2_raw.${testname}" \
+ > "${DATA_DIR}/output_2.${testname}" \
+ || fail "'%s': Filter '%s' reported an error." \
+ "$EXPECTED" \
+ "$FILTER"
if ! cmp "${DATA_DIR}/output.${testname}" \
"${DATA_DIR}/output_2.${testname}"; then
- echo "FAIL: $EXPECTED did not match on round-trip:" >&2
+ fail "'%s': did not match on round-trip:" \
+ "$EXPECTED"
diff -u "${DATA_DIR}/output.${testname}" \
"${DATA_DIR}/output_2.${testname}" >&2 \
|| true
- FINAL_EXIT=$EXITCODE
fi
else
- FAILED_CONFIG="yes"
if test "$(wc -c < "${DATA_DIR}/output.${testname}")" = 0; then
- echo "FAIL: $EXPECTED: Tor said:" >&2
# There was no output -- probably we failed.
- "${TOR_BINARY}" -f "./torrc" \
- --defaults-torrc "${DEFAULTS}" \
- --verify-config \
- ${CMDLINE} || true
+ fail "'%s': Tor said:" \
+ "$EXPECTED"
+ "$TOR_BINARY" -f "./torrc" \
+ --defaults-torrc "$DEFAULTS" \
+ --verify-config \
+ $CMDLINE >&2 \
+ || true
fi
- echo "FAIL: $EXPECTED did not match:" >&2
+ fail "'%s' did not match:" \
+ "$EXPECTED"
diff -u "$EXPECTED" "${DATA_DIR}/output.${testname}" >&2 \
|| true
- FINAL_EXIT=$EXITCODE
fi
- if test -f "$EXPECTED_LOG"; then
+ if test -f "$EXPECTED_LOG" || test "$NEXT_TEST"; then
# This case should succeed: run verify-config and see if it does.
+ #
+ # As a temporary hack, we also use this code when --dump-config
+ # has failed, to display the error logs.
+ if ! test -f "$EXPECTED_LOG"; then
+ NON_EMPTY="${DATA_DIR}/NON_EMPTY"
+ echo "This pattern should not match any log messages" \
+ > "$NON_EMPTY"
+ EXPECTED_LOG=$NON_EMPTY
+ fi
- "${TOR_BINARY}" --verify-config \
- -f ./torrc \
- --defaults-torrc "${DEFAULTS}" \
- ${CMDLINE} \
- > "${DATA_DIR}/output_log.${testname}" \
- || die "FAIL: $EXPECTED_LOG: Tor reported an error."
-
- expect_log="$(cat "$EXPECTED_LOG")"
- if grep "${expect_log}" "${DATA_DIR}/output_log.${testname}" \
- >/dev/null; then
+ "$TOR_BINARY" --verify-config \
+ -f ./torrc \
+ --defaults-torrc "$DEFAULTS" \
+ $CMDLINE \
+ > "${DATA_DIR}/output_log.${testname}" \
+ || fail "'%s': Tor --verify-config reported an error." \
+ "$EXPECTED_LOG"
+
+ expect_log="$(cat "${EXPECTED_LOG}")"
+ if grep "$expect_log" "${DATA_DIR}/output_log.${testname}" \
+ > /dev/null; then
:
else
- FAILED_LOG="yes"
- echo "FAIL: Expected $EXPECTED_LOG:" >&2
- echo "${expect_log}" >&2
- echo "Tor said:" >&2
+ fail "Expected '%s':\\n%s\\nTor said:" \
+ "$EXPECTED_LOG" \
+ "$expect_log"
cat "${DATA_DIR}/output_log.${testname}" >&2
- FINAL_EXIT=$EXITCODE
fi
fi
- if test -z "${FAILED_LOG}${FAILED_CONFIG}"; then
+ if test -z "$NEXT_TEST"; then
echo "OK"
fi
@@ -365,35 +405,34 @@ for dir in "${EXAMPLEDIR}"/*; do
# This case should fail: run verify-config and see if it does.
if ! test -s "$ERROR"; then
- echo "FAIL: error file '$ERROR' is empty." >&2
- echo "Empty error files match any output." >&2
- FINAL_EXIT=$EXITCODE
+ fail "Error file '%s' is empty.%s" \
+ "$ERROR" \
+ "(Empty error files match any output.)"
+ continue
fi
- "${TOR_BINARY}" --verify-config \
- -f ./torrc \
- --defaults-torrc "${DEFAULTS}" \
- ${CMDLINE} \
- > "${DATA_DIR}/output.${testname}" \
- && die "FAIL: $ERROR: Tor did not report an error."
+ "$TOR_BINARY" --verify-config \
+ -f ./torrc \
+ --defaults-torrc "$DEFAULTS" \
+ $CMDLINE \
+ > "${DATA_DIR}/output.${testname}" \
+ && fail "'%s': Tor did not report an error." \
+ "$ERROR"
expect_err="$(cat "$ERROR")"
if grep "${expect_err}" "${DATA_DIR}/output.${testname}" >/dev/null; then
echo "OK"
else
- echo "FAIL: Expected $ERROR: " >&2
- echo "${expect_err}" >&2
- echo "Tor said:" >&2
+ fail "Expected '%s':\\n%s\\nTor said:" \
+ "$ERROR" \
+ "$expect_err"
cat "${DATA_DIR}/output.${testname}" >&2
- FINAL_EXIT=$EXITCODE
fi
else
# This case is not actually configured with a success or a failure.
# call that an error.
-
- echo "FAIL: Did not find ${dir}/*expected or ${dir}/*error." >&2
- FINAL_EXIT=$EXITCODE
+ fail "Did not find ${dir}/*expected or ${dir}/*error."
fi
cd "${PREV_DIR}"
1
0

14 Nov '19
commit e6ca32fae3031e33898d541bf4da28c58b978713
Author: teor <teor(a)torproject.org>
Date: Tue Nov 12 16:51:18 2019 +1000
test/parseconf: Use consistent formatting
Make spacing, quotes, and env vars consistent.
Cleanup after 32451 and 32468.
---
src/test/test_parseconf.sh | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/test/test_parseconf.sh b/src/test/test_parseconf.sh
index b84350985..78b88c48e 100755
--- a/src/test/test_parseconf.sh
+++ b/src/test/test_parseconf.sh
@@ -107,7 +107,7 @@ MYNAME="$0"
# emulate realpath(), in case coreutils or equivalent is not installed.
abspath() {
f="$*"
- if [ -d "$f" ]; then
+ if test -d "$f"; then
dir="$f"
base=""
else
@@ -119,8 +119,8 @@ abspath() {
}
# find the tor binary
-if [ $# -ge 1 ]; then
- TOR_BINARY="${1}"
+if test $# -ge 1; then
+ TOR_BINARY="$1"
shift
else
TOR_BINARY="${TESTING_TOR_BINARY:-./src/app/tor}"
@@ -128,7 +128,7 @@ fi
TOR_BINARY="$(abspath "$TOR_BINARY")"
-echo "TOR BINARY IS ${TOR_BINARY}"
+echo "TOR BINARY IS $TOR_BINARY"
# make a safe space for temporary files
DATA_DIR=$(mktemp -d -t tor_parseconf_tests.XXXXXX)
@@ -163,14 +163,14 @@ fail() { printf "FAIL: " >&2;
# The first argument is a printf string, so this warning is spurious
# shellcheck disable=SC2059
printf "$@" >&2;
- printf '\n' >&2;
+ printf "\\n" >&2;
NEXT_TEST="yes"
FINAL_EXIT=$EXITCODE; }
die() { printf "FAIL: CRITICAL error in '%s':" "$MYNAME" >&2;
# The first argument is a printf string, so this warning is spurious
# shellcheck disable=SC2059
printf "$@" >&2;
- printf '\n' >&2;
+ printf "\\n" >&2;
exit $EXITCODE; }
if test "$WINDOWS" = 1; then
@@ -223,7 +223,7 @@ TOR_MODULES_DISABLED=${TOR_MODULES_DISABLED%_}
echo "Tor is configured with:"
echo "Optional Libraries: ${TOR_LIBS_ENABLED:-(None)}"
-if [ -n "${TOR_LIBS_ENABLED}" ]; then
+if test "$TOR_LIBS_ENABLED"; then
echo "Optional Library Search List: $TOR_LIBS_ENABLED_SEARCH"
fi
echo "Disabled Modules: ${TOR_MODULES_DISABLED:-(None)}"
@@ -238,10 +238,11 @@ for dir in "${EXAMPLEDIR}"/*; do
testname="$(basename "${dir}")"
# We use printf since "echo -n" is not standard
- printf "%s: " "$testname"
+ printf "%s: " \
+ "$testname"
PREV_DIR="$(pwd)"
- cd "${dir}"
+ cd "$dir"
if test -f "./torrc.defaults"; then
DEFAULTS="./torrc.defaults"
@@ -419,8 +420,8 @@ for dir in "${EXAMPLEDIR}"/*; do
&& fail "'%s': Tor did not report an error." \
"$ERROR"
- expect_err="$(cat "$ERROR")"
- if grep "${expect_err}" "${DATA_DIR}/output.${testname}" >/dev/null; then
+ expect_err="$(cat "${ERROR}")"
+ if grep "$expect_err" "${DATA_DIR}/output.${testname}" > /dev/null; then
echo "OK"
else
fail "Expected '%s':\\n%s\\nTor said:" \
@@ -435,7 +436,7 @@ for dir in "${EXAMPLEDIR}"/*; do
fail "Did not find ${dir}/*expected or ${dir}/*error."
fi
- cd "${PREV_DIR}"
+ cd "$PREV_DIR"
done
1
0

14 Nov '19
commit b4b3060f692ed934fe89d791be683a7506e5860e
Author: teor <teor(a)torproject.org>
Date: Wed Nov 13 14:00:09 2019 +1000
test/parseconf: Rename some functions, and reformat
Part of 32451.
---
src/test/test_parseconf.sh | 110 +++++++++++++++++++++++----------------------
1 file changed, 56 insertions(+), 54 deletions(-)
diff --git a/src/test/test_parseconf.sh b/src/test/test_parseconf.sh
index 78b88c48e..237bf33ce 100755
--- a/src/test/test_parseconf.sh
+++ b/src/test/test_parseconf.sh
@@ -159,19 +159,21 @@ fi
FINAL_EXIT=0
NEXT_TEST=
-fail() { printf "FAIL: " >&2;
- # The first argument is a printf string, so this warning is spurious
- # shellcheck disable=SC2059
- printf "$@" >&2;
- printf "\\n" >&2;
- NEXT_TEST="yes"
- FINAL_EXIT=$EXITCODE; }
-die() { printf "FAIL: CRITICAL error in '%s':" "$MYNAME" >&2;
- # The first argument is a printf string, so this warning is spurious
- # shellcheck disable=SC2059
- printf "$@" >&2;
- printf "\\n" >&2;
- exit $EXITCODE; }
+fail_printf() { printf "FAIL: " >&2;
+ # The first argument is a printf string, so this warning is
+ # spurious
+ # shellcheck disable=SC2059
+ printf "$@" >&2;
+ printf "\\n" >&2;
+ NEXT_TEST="yes"
+ FINAL_EXIT=$EXITCODE; }
+die_printf() { printf "FAIL: CRITICAL error in '%s':" "$MYNAME" >&2;
+ # The first argument is a printf string, so this warning is
+ # spurious
+ # shellcheck disable=SC2059
+ printf "$@" >&2;
+ printf "\\n" >&2;
+ exit $EXITCODE; }
if test "$WINDOWS" = 1; then
FILTER="dos2unix"
@@ -181,8 +183,8 @@ fi
EMPTY="${DATA_DIR}/EMPTY"
-touch "$EMPTY" || die "Couldn't create empty file '%s'." \
- "$EMPTY"
+touch "$EMPTY" || die_printf "Couldn't create empty file '%s'." \
+ "$EMPTY"
STANDARD_LIBS="libevent\\|openssl\\|zlib"
# Lib names are restricted to [a-z0-9]* at the moment
@@ -202,7 +204,7 @@ TOR_LIBS_ENABLED=${TOR_LIBS_ENABLED%_}
TOR_LIBS_ENABLED_COUNT="$(echo "$TOR_LIBS_ENABLED_SEARCH" \
| tr ' ' '\n' | wc -l)"
if test "$TOR_LIBS_ENABLED_COUNT" -gt 3; then
- die "Can not handle more than 3 optional libraries"
+ die_printf "Can not handle more than 3 optional libraries"
fi
# Brute-force the combinations of libraries
TOR_LIBS_ENABLED_SEARCH_3="$(echo "$TOR_LIBS_ENABLED" \
@@ -272,10 +274,10 @@ for dir in "${EXAMPLEDIR}"/*; do
# Check for broken configs
if test -f "./error${suffix}"; then
- fail "Found both '%s' and '%s'.%s" \
- "${dir}/expected${suffix}" \
- "${dir}/error${suffix}" \
- "(Only one of these files should exist.)"
+ fail_printf "Found both '%s' and '%s'.%s" \
+ "${dir}/expected${suffix}" \
+ "${dir}/error${suffix}" \
+ "(Only one of these files should exist.)"
break
fi
@@ -305,9 +307,9 @@ for dir in "${EXAMPLEDIR}"/*; do
if test -f "$EXPECTED_LOG"; then
if ! test -s "$EXPECTED_LOG"; then
- fail "Expected log file '%s' is empty.%s" \
- "$EXPECTED_LOG" \
- "(Empty expected log files match any output.)"
+ fail_printf "Expected log file '%s' is empty.%s" \
+ "$EXPECTED_LOG" \
+ "(Empty expected log files match any output.)"
continue
fi
fi
@@ -316,14 +318,14 @@ for dir in "${EXAMPLEDIR}"/*; do
--defaults-torrc "$DEFAULTS" \
--dump-config short \
$CMDLINE > "${DATA_DIR}/output_raw.${testname}" \
- || fail "'%s': Tor --dump-config reported an error." \
- "$EXPECTED"
+ || fail_printf "'%s': Tor --dump-config reported an error." \
+ "$EXPECTED"
"$FILTER" "${DATA_DIR}/output_raw.${testname}" \
> "${DATA_DIR}/output.${testname}" \
- || fail "'%s': Filter '%s' reported an error." \
- "$EXPECTED" \
- "$FILTER"
+ || fail_printf "'%s': Filter '%s' reported an error." \
+ "$EXPECTED" \
+ "$FILTER"
if cmp "$EXPECTED" "${DATA_DIR}/output.${testname}" > /dev/null; then
# Check round-trip.
@@ -331,20 +333,20 @@ for dir in "${EXAMPLEDIR}"/*; do
--defaults-torrc "$EMPTY" \
--dump-config short \
> "${DATA_DIR}/output_2_raw.${testname}" \
- || fail "'%s': Tor --dump-config reported an error%s." \
- "$EXPECTED" \
- " on round-trip"
+ || fail_printf "'%s': Tor --dump-config reported an %s." \
+ "$EXPECTED" \
+ "error on round-trip"
"$FILTER" "${DATA_DIR}/output_2_raw.${testname}" \
> "${DATA_DIR}/output_2.${testname}" \
- || fail "'%s': Filter '%s' reported an error." \
- "$EXPECTED" \
- "$FILTER"
+ || fail_printf "'%s': Filter '%s' reported an error." \
+ "$EXPECTED" \
+ "$FILTER"
if ! cmp "${DATA_DIR}/output.${testname}" \
"${DATA_DIR}/output_2.${testname}"; then
- fail "'%s': did not match on round-trip:" \
- "$EXPECTED"
+ fail_printf "'%s': did not match on round-trip:" \
+ "$EXPECTED"
diff -u "${DATA_DIR}/output.${testname}" \
"${DATA_DIR}/output_2.${testname}" >&2 \
|| true
@@ -352,16 +354,16 @@ for dir in "${EXAMPLEDIR}"/*; do
else
if test "$(wc -c < "${DATA_DIR}/output.${testname}")" = 0; then
# There was no output -- probably we failed.
- fail "'%s': Tor said:" \
- "$EXPECTED"
+ fail_printf "'%s': Tor said:" \
+ "$EXPECTED"
"$TOR_BINARY" -f "./torrc" \
--defaults-torrc "$DEFAULTS" \
--verify-config \
$CMDLINE >&2 \
|| true
fi
- fail "'%s' did not match:" \
- "$EXPECTED"
+ fail_printf "'%s' did not match:" \
+ "$EXPECTED"
diff -u "$EXPECTED" "${DATA_DIR}/output.${testname}" >&2 \
|| true
fi
@@ -383,17 +385,17 @@ for dir in "${EXAMPLEDIR}"/*; do
--defaults-torrc "$DEFAULTS" \
$CMDLINE \
> "${DATA_DIR}/output_log.${testname}" \
- || fail "'%s': Tor --verify-config reported an error." \
- "$EXPECTED_LOG"
+ || fail_printf "'%s': Tor --verify-config reported an error." \
+ "$EXPECTED_LOG"
expect_log="$(cat "${EXPECTED_LOG}")"
if grep "$expect_log" "${DATA_DIR}/output_log.${testname}" \
> /dev/null; then
:
else
- fail "Expected '%s':\\n%s\\nTor said:" \
- "$EXPECTED_LOG" \
- "$expect_log"
+ fail_printf "Expected '%s':\\n%s\\nTor said:" \
+ "$EXPECTED_LOG" \
+ "$expect_log"
cat "${DATA_DIR}/output_log.${testname}" >&2
fi
fi
@@ -406,9 +408,9 @@ for dir in "${EXAMPLEDIR}"/*; do
# This case should fail: run verify-config and see if it does.
if ! test -s "$ERROR"; then
- fail "Error file '%s' is empty.%s" \
- "$ERROR" \
- "(Empty error files match any output.)"
+ fail_printf "Error file '%s' is empty.%s" \
+ "$ERROR" \
+ "(Empty error files match any output.)"
continue
fi
@@ -417,23 +419,23 @@ for dir in "${EXAMPLEDIR}"/*; do
--defaults-torrc "$DEFAULTS" \
$CMDLINE \
> "${DATA_DIR}/output.${testname}" \
- && fail "'%s': Tor did not report an error." \
- "$ERROR"
+ && fail_printf "'%s': Tor did not report an error." \
+ "$ERROR"
expect_err="$(cat "${ERROR}")"
if grep "$expect_err" "${DATA_DIR}/output.${testname}" > /dev/null; then
echo "OK"
else
- fail "Expected '%s':\\n%s\\nTor said:" \
- "$ERROR" \
- "$expect_err"
+ fail_printf "Expected '%s':\\n%s\\nTor said:" \
+ "$ERROR" \
+ "$expect_err"
cat "${DATA_DIR}/output.${testname}" >&2
fi
else
# This case is not actually configured with a success or a failure.
# call that an error.
- fail "Did not find ${dir}/*expected or ${dir}/*error."
+ fail_printf "Did not find ${dir}/*expected or ${dir}/*error."
fi
cd "$PREV_DIR"
1
0

14 Nov '19
commit 39046019ec1192bd8222821a6b8677fabc0a9968
Author: teor <teor(a)torproject.org>
Date: Wed Nov 13 16:37:32 2019 +1000
test/parseconf: Refactor and standardise, stage 1
Remove duplicate code, and standardise similar behaviour.
Add some additional error checking.
Cleanup after 32451.
---
src/test/test_parseconf.sh | 400 ++++++++++++++++++++++++++++++---------------
1 file changed, 272 insertions(+), 128 deletions(-)
diff --git a/src/test/test_parseconf.sh b/src/test/test_parseconf.sh
index 237bf33ce..edda6c3ef 100755
--- a/src/test/test_parseconf.sh
+++ b/src/test/test_parseconf.sh
@@ -128,7 +128,7 @@ fi
TOR_BINARY="$(abspath "$TOR_BINARY")"
-echo "TOR BINARY IS $TOR_BINARY"
+echo "Using Tor binary '$TOR_BINARY'."
# make a safe space for temporary files
DATA_DIR=$(mktemp -d -t tor_parseconf_tests.XXXXXX)
@@ -157,23 +157,32 @@ else
fi
FINAL_EXIT=0
-
NEXT_TEST=
-fail_printf() { printf "FAIL: " >&2;
- # The first argument is a printf string, so this warning is
- # spurious
- # shellcheck disable=SC2059
- printf "$@" >&2;
- printf "\\n" >&2;
- NEXT_TEST="yes"
- FINAL_EXIT=$EXITCODE; }
-die_printf() { printf "FAIL: CRITICAL error in '%s':" "$MYNAME" >&2;
- # The first argument is a printf string, so this warning is
- # spurious
- # shellcheck disable=SC2059
- printf "$@" >&2;
- printf "\\n" >&2;
- exit $EXITCODE; }
+
+# Log a failure message to stderr, using $@ as a printf string and arguments
+# Set NEXT_TEST to "yes" and FINAL_EXIT to $EXITCODE.
+fail_printf()
+{
+ printf "FAIL: " >&2
+ # The first argument is a printf string, so this warning is spurious
+ # shellcheck disable=SC2059
+ printf "$@" >&2
+ printf "\\n" >&2
+ NEXT_TEST="yes"
+ FINAL_EXIT=$EXITCODE
+}
+
+# Log a failure message to stderr, using $@ as a printf string and arguments
+# Exit with status $EXITCODE.
+die_printf()
+{
+ printf "FAIL: CRITICAL error in '%s':" "$MYNAME" >&2
+ # The first argument is a printf string, so this warning is spurious
+ # shellcheck disable=SC2059
+ printf "$@" >&2
+ printf "\\n" >&2
+ exit $EXITCODE
+}
if test "$WINDOWS" = 1; then
FILTER="dos2unix"
@@ -182,9 +191,12 @@ else
fi
EMPTY="${DATA_DIR}/EMPTY"
-
touch "$EMPTY" || die_printf "Couldn't create empty file '%s'." \
"$EMPTY"
+NON_EMPTY="${DATA_DIR}/NON_EMPTY"
+echo "This pattern should not match any log messages" \
+ > "$NON_EMPTY" || die_printf "Couldn't create non-empty file '%s'." \
+ "$NON_EMPTY"
STANDARD_LIBS="libevent\\|openssl\\|zlib"
# Lib names are restricted to [a-z0-9]* at the moment
@@ -230,6 +242,178 @@ if test "$TOR_LIBS_ENABLED"; then
fi
echo "Disabled Modules: ${TOR_MODULES_DISABLED:-(None)}"
+# Yes, unix uses "0" for a successful command
+TRUE=0
+FALSE=1
+
+# Run tor --verify-config on the torrc $1, and defaults torrc $2, which may
+# be $EMPTY. Pass tor the extra command line arguments $3, which will be
+# passed unquoted.
+# Send tor's standard output to stderr.
+log_verify_config()
+{
+ # We need cmdline unquoted
+ # shellcheck disable=SC2086
+ "$TOR_BINARY" --verify-config \
+ -f "$1" \
+ --defaults-torrc "$2" \
+ $3 \
+ >&2 \
+ || true
+}
+
+# Run "tor --dump-config short" on the torrc $1, and defaults torrc $2, which
+# may be $EMPTY. Pass tor the extra command line arguments $3, which will be
+# passed unquoted.
+# Send the standard output to $4.
+# If tor fails, fail_printf() using the file name $5, and context $6,
+# which may be an empty string. Then run "tor --verify-config", and log tor's
+# error messages to stderr.
+dump_config()
+{
+ if test "$6"; then
+ CONTEXT=" $6"
+ else
+ CONTEXT=""
+ fi
+
+ # We need cmdline unquoted
+ # shellcheck disable=SC2086
+ if ! "$TOR_BINARY" --dump-config short \
+ -f "$1" \
+ --defaults-torrc "$2" \
+ $3 \
+ > "$4"; then
+ fail_printf "'%s': Tor --dump-config reported an error%s. Tor said:" \
+ "$5" \
+ "$CONTEXT"
+ log_verify_config "$1" \
+ "$2" \
+ "$3"
+ fi
+}
+
+# Run "$FILTER" on the input $1.
+# Send the standard output to $2.
+# If tor fails, log a failure message using the file name $3, and context $4,
+# which may be an empty string.
+filter()
+{
+ if test "$4"; then
+ CONTEXT=" $4"
+ else
+ CONTEXT=""
+ fi
+
+ "$FILTER" "$1" \
+ > "$2" \
+ || fail_printf "'%s': Filter '%s' reported an error%s." \
+ "$3" \
+ "$FILTER" \
+ "$CONTEXT"
+}
+
+# Compare the input file $1, and output file $2.
+#
+# If they are different, fail. If this is the first step that failed in this
+# test, run log_verify_config with torrc $3, defaults torrc $4, and command
+# line $5, to log Tor's error messages. Finally, log the differences between
+# the files.
+#
+# If the file contents are identical, returns true. Otherwise, return false.
+#
+# Log failure messages using fail_printf(), with the file name $6, and
+# context $7, which may be an empty string.
+check_diff()
+{
+ if test "$7"; then
+ CONTEXT=" $=7"
+ else
+ CONTEXT=""
+ fi
+
+ if cmp "$1" "$2" > /dev/null; then
+ return "$TRUE"
+ else
+ # If this is the first step that failed in this test,
+ # show tor's logs
+ if test -z "$NEXT_TEST"; then
+ fail_printf "'%s': Tor said%s:" \
+ "$6" \
+ "$CONTEXT"
+ log_verify_config "$3" \
+ "$4" \
+ "$5"
+ fi
+ fail_printf "'%s' did not match%s:" \
+ "$6" \
+ "$CONTEXT"
+ diff -u "$1" "$2" >&2 \
+ || true
+ return "$FALSE"
+ fi
+}
+
+# Check if $1 is an empty file.
+# If it is, fail_printf() using $2 as the type of file.
+# Returns true if the file is empty, false otherwise.
+check_empty_pattern()
+{
+ if ! test -s "$1"; then
+ fail_printf "%s file '%s' is empty, and will match any output." \
+ "$2" \
+ "$1"
+ return "$TRUE"
+ else
+ return "$FALSE"
+ fi
+}
+
+# Run tor --verify-config on the torrc $1, and defaults torrc $2, which may
+# be $EMPTY. Pass tor the extra command line arguments $3, which will be
+# passed unquoted.
+# Send tor's standard output to $4.
+# If tor's exit status does not match the boolean $5, fail_printf()
+# using the file name $6, and context $7, which is required.
+verify_config()
+{
+ RESULT=$TRUE
+ # We need cmdline unquoted
+ # shellcheck disable=SC2086
+ "$TOR_BINARY" --verify-config \
+ -f "$1" \
+ --defaults-torrc "$2" \
+ $3 \
+ > "$4" || RESULT=$FALSE
+
+ # Convert the actual and expected results to boolean, and compare
+ if test $((! (! RESULT))) -ne $((! (! $5))); then
+ fail_printf "'%s': Tor --verify-config did not %s." \
+ "$6" \
+ "$7"
+ fi
+}
+
+# Check for the pattern in file $1, in the lines in the output file $2.
+# Uses grep with the entire contents of $1 as the pattern. (Not "grep -f".)
+#
+# If the pattern does not match any lines in the output file, fail.
+# Log the pattern, and the entire contents of the output file.
+#
+# Log failure messages using fail_printf(), with the file name $1, and
+# context $3, which is required.
+check_pattern()
+{
+ expect_log="$(cat "$1")"
+ if ! grep "$expect_log" "$2" > /dev/null; then
+ fail_printf "Expected %s '%s':\\n%s\\nTor said:" \
+ "$3" \
+ "$1" \
+ "$expect_log"
+ cat "$2" >&2
+ fi
+}
+
for dir in "${EXAMPLEDIR}"/*; do
NEXT_TEST=
@@ -306,140 +490,100 @@ for dir in "${EXAMPLEDIR}"/*; do
# This case should succeed: run dump-config and see if it does.
if test -f "$EXPECTED_LOG"; then
- if ! test -s "$EXPECTED_LOG"; then
- fail_printf "Expected log file '%s' is empty.%s" \
- "$EXPECTED_LOG" \
- "(Empty expected log files match any output.)"
+ if check_empty_pattern "$EXPECTED_LOG" "Expected log"; then
continue
fi
fi
- "$TOR_BINARY" -f "./torrc" \
- --defaults-torrc "$DEFAULTS" \
- --dump-config short \
- $CMDLINE > "${DATA_DIR}/output_raw.${testname}" \
- || fail_printf "'%s': Tor --dump-config reported an error." \
- "$EXPECTED"
-
- "$FILTER" "${DATA_DIR}/output_raw.${testname}" \
- > "${DATA_DIR}/output.${testname}" \
- || fail_printf "'%s': Filter '%s' reported an error." \
- "$EXPECTED" \
- "$FILTER"
-
- if cmp "$EXPECTED" "${DATA_DIR}/output.${testname}" > /dev/null; then
+ dump_config "./torrc" \
+ "$DEFAULTS" \
+ "$CMDLINE" \
+ "${DATA_DIR}/output_raw.${testname}" \
+ "$EXPECTED" \
+ ""
+
+ filter "${DATA_DIR}/output_raw.${testname}" \
+ "${DATA_DIR}/output.${testname}" \
+ "$EXPECTED" \
+ ""
+
+ if check_diff "$EXPECTED" \
+ "${DATA_DIR}/output.${testname}" \
+ "./torrc" \
+ "$DEFAULTS" \
+ "$CMDLINE" \
+ "$EXPECTED" \
+ ""; then
# Check round-trip.
- "$TOR_BINARY" -f "${DATA_DIR}/output.${testname}" \
- --defaults-torrc "$EMPTY" \
- --dump-config short \
- > "${DATA_DIR}/output_2_raw.${testname}" \
- || fail_printf "'%s': Tor --dump-config reported an %s." \
- "$EXPECTED" \
- "error on round-trip"
-
- "$FILTER" "${DATA_DIR}/output_2_raw.${testname}" \
- > "${DATA_DIR}/output_2.${testname}" \
- || fail_printf "'%s': Filter '%s' reported an error." \
- "$EXPECTED" \
- "$FILTER"
-
- if ! cmp "${DATA_DIR}/output.${testname}" \
- "${DATA_DIR}/output_2.${testname}"; then
- fail_printf "'%s': did not match on round-trip:" \
- "$EXPECTED"
- diff -u "${DATA_DIR}/output.${testname}" \
- "${DATA_DIR}/output_2.${testname}" >&2 \
- || true
- fi
- else
- if test "$(wc -c < "${DATA_DIR}/output.${testname}")" = 0; then
- # There was no output -- probably we failed.
- fail_printf "'%s': Tor said:" \
- "$EXPECTED"
- "$TOR_BINARY" -f "./torrc" \
- --defaults-torrc "$DEFAULTS" \
- --verify-config \
- $CMDLINE >&2 \
- || true
- fi
- fail_printf "'%s' did not match:" \
- "$EXPECTED"
- diff -u "$EXPECTED" "${DATA_DIR}/output.${testname}" >&2 \
- || true
+ dump_config "${DATA_DIR}/output.${testname}" \
+ "$EMPTY" \
+ "" \
+ "${DATA_DIR}/output_2_raw.${testname}" \
+ "$EXPECTED" \
+ "on round-trip"
+
+ filter "${DATA_DIR}/output_2_raw.${testname}" \
+ "${DATA_DIR}/output_2.${testname}" \
+ "$EXPECTED" \
+ "on round-trip"
+
+ check_diff "${DATA_DIR}/output.${testname}" \
+ "${DATA_DIR}/output_2.${testname}" \
+ "${DATA_DIR}/output.${testname}" \
+ "$EMPTY" \
+ "" \
+ "$EXPECTED" \
+ "on round-trip" || true
fi
- if test -f "$EXPECTED_LOG" || test "$NEXT_TEST"; then
+ if test -f "$EXPECTED_LOG"; then
# This case should succeed: run verify-config and see if it does.
- #
- # As a temporary hack, we also use this code when --dump-config
- # has failed, to display the error logs.
- if ! test -f "$EXPECTED_LOG"; then
- NON_EMPTY="${DATA_DIR}/NON_EMPTY"
- echo "This pattern should not match any log messages" \
- > "$NON_EMPTY"
- EXPECTED_LOG=$NON_EMPTY
- fi
- "$TOR_BINARY" --verify-config \
- -f ./torrc \
- --defaults-torrc "$DEFAULTS" \
- $CMDLINE \
- > "${DATA_DIR}/output_log.${testname}" \
- || fail_printf "'%s': Tor --verify-config reported an error." \
- "$EXPECTED_LOG"
-
- expect_log="$(cat "${EXPECTED_LOG}")"
- if grep "$expect_log" "${DATA_DIR}/output_log.${testname}" \
- > /dev/null; then
- :
- else
- fail_printf "Expected '%s':\\n%s\\nTor said:" \
- "$EXPECTED_LOG" \
- "$expect_log"
- cat "${DATA_DIR}/output_log.${testname}" >&2
- fi
- fi
-
- if test -z "$NEXT_TEST"; then
- echo "OK"
+ verify_config "./torrc" \
+ "$DEFAULTS" \
+ "$CMDLINE" \
+ "${DATA_DIR}/output_log.${testname}" \
+ "$TRUE" \
+ "$EXPECTED_LOG" \
+ "succeed"
+
+ check_pattern "$EXPECTED_LOG" \
+ "${DATA_DIR}/output_log.${testname}" \
+ "log"
fi
elif test -f "$ERROR"; then
# This case should fail: run verify-config and see if it does.
if ! test -s "$ERROR"; then
- fail_printf "Error file '%s' is empty.%s" \
- "$ERROR" \
- "(Empty error files match any output.)"
- continue
- fi
-
- "$TOR_BINARY" --verify-config \
- -f ./torrc \
- --defaults-torrc "$DEFAULTS" \
- $CMDLINE \
- > "${DATA_DIR}/output.${testname}" \
- && fail_printf "'%s': Tor did not report an error." \
- "$ERROR"
-
- expect_err="$(cat "${ERROR}")"
- if grep "$expect_err" "${DATA_DIR}/output.${testname}" > /dev/null; then
- echo "OK"
- else
- fail_printf "Expected '%s':\\n%s\\nTor said:" \
- "$ERROR" \
- "$expect_err"
- cat "${DATA_DIR}/output.${testname}" >&2
+ if check_empty_pattern "$ERROR" "Error"; then
+ continue
+ fi
fi
+ verify_config "./torrc" \
+ "$DEFAULTS" \
+ "$CMDLINE" \
+ "${DATA_DIR}/output.${testname}" \
+ "$FALSE" \
+ "$ERROR" \
+ "report an error"
+
+ check_pattern "$ERROR" \
+ "${DATA_DIR}/output.${testname}" \
+ "error"
else
# This case is not actually configured with a success or a failure.
# call that an error.
fail_printf "Did not find ${dir}/*expected or ${dir}/*error."
fi
+ if test -z "$NEXT_TEST"; then
+ echo "OK"
+ fi
+
cd "$PREV_DIR"
done
-exit $FINAL_EXIT
+exit "$FINAL_EXIT"
1
0

14 Nov '19
commit 2c4ada729e275f37a2165866a78378ff606cb451
Author: teor <teor(a)torproject.org>
Date: Thu Nov 14 10:50:20 2019 +1000
test/parseconf: Show tor command lines on failure
Part of 32451.
---
src/test/test_parseconf.sh | 88 +++++++++++++++++++++++++++++++---------------
1 file changed, 59 insertions(+), 29 deletions(-)
diff --git a/src/test/test_parseconf.sh b/src/test/test_parseconf.sh
index 816ed97e3..2156077d7 100755
--- a/src/test/test_parseconf.sh
+++ b/src/test/test_parseconf.sh
@@ -252,6 +252,15 @@ FALSE=1
# Send tor's standard output to stderr.
log_verify_config()
{
+ # show the command we're about to execute
+ # log_verify_config() is only called when we've failed
+ printf "Tor --verify-config said:\\n" >&2
+ printf "$ %s %s %s %s %s %s %s\\n" \
+ "$TOR_BINARY" --verify-config \
+ -f "$1" \
+ --defaults-torrc "$2" \
+ "$3" \
+ >&2
# We need cmdline unquoted
# shellcheck disable=SC2086
"$TOR_BINARY" --verify-config \
@@ -266,6 +275,8 @@ log_verify_config()
# may be $EMPTY. Pass tor the extra command line arguments $3, which will be
# passed unquoted. Send tor's standard output to $4.
#
+# Set $FULL_TOR_CMD to the tor command line that was executed.
+#
# If tor fails, fail_printf() using the file name $5, and context $6,
# which may be an empty string. Then run log_verify_config().
dump_config()
@@ -276,6 +287,13 @@ dump_config()
CONTEXT=""
fi
+ # keep the command we're about to execute, and show if it we fail
+ FULL_TOR_CMD=$(printf "$ %s %s %s %s %s %s %s %s" \
+ "$TOR_BINARY" --dump-config short \
+ -f "$1" \
+ --defaults-torrc "$2" \
+ "$3"
+ )
# We need cmdline unquoted
# shellcheck disable=SC2086
if ! "$TOR_BINARY" --dump-config short \
@@ -283,9 +301,10 @@ dump_config()
--defaults-torrc "$2" \
$3 \
> "$4"; then
- fail_printf "'%s': Tor --dump-config reported an error%s. Tor said:" \
+ fail_printf "'%s': Tor --dump-config reported an error%s:\\n%s" \
"$5" \
- "$CONTEXT"
+ "$CONTEXT" \
+ "$FULL_TOR_CMD"
log_verify_config "$1" \
"$2" \
"$3"
@@ -314,19 +333,18 @@ filter()
# Compare the expected file $1, and output file $2.
#
-# If they are different, fail. If this is the first step that failed in this
-# test, run log_verify_config() with torrc $3, defaults torrc $4, and command
-# line $5, to log Tor's error messages. Finally, log the differences between
-# the files.
+# If they are different, fail. Log the differences between the files.
+# Run log_verify_config() with torrc $3, defaults torrc $4, and command
+# line $5, to log Tor's error messages.
#
# If the file contents are identical, returns true. Otherwise, return false.
#
-# Log failure messages using fail_printf(), with the expected file name, and
-# context $6, which may be an empty string.
+# Log failure messages using fail_printf(), with the expected file name,
+# context $6, which may be an empty string, and the tor command line $7.
check_diff()
{
if test "$6"; then
- CONTEXT=" $=6"
+ CONTEXT=" $6"
else
CONTEXT=""
fi
@@ -334,21 +352,15 @@ check_diff()
if cmp "$1" "$2" > /dev/null; then
return "$TRUE"
else
- # If this is the first step that failed in this test,
- # show tor's logs
- if test -z "$NEXT_TEST"; then
- fail_printf "'%s': Tor said%s:" \
- "$1" \
- "$CONTEXT"
- log_verify_config "$3" \
- "$4" \
- "$5"
- fi
- fail_printf "'%s' did not match%s:" \
+ fail_printf "'%s': Tor --dump-config said%s:\\n%s" \
"$1" \
- "$CONTEXT"
+ "$CONTEXT" \
+ "$7"
diff -u "$1" "$2" >&2 \
|| true
+ log_verify_config "$3" \
+ "$4" \
+ "$5"
return "$FALSE"
fi
}
@@ -372,6 +384,8 @@ check_dump_config()
{
OUTPUT="$4"
OUTPUT_RAW="${OUTPUT}_raw"
+
+ FULL_TOR_CMD=
dump_config "$1" \
"$2" \
"$3" \
@@ -389,8 +403,8 @@ check_dump_config()
"$1" \
"$2" \
"$3" \
- "$5" \
- "$6"; then
+ "$6" \
+ "$FULL_TOR_CMD"; then
return "$TRUE"
else
return "$FALSE"
@@ -416,11 +430,21 @@ check_empty_pattern()
# be $EMPTY. Pass tor the extra command line arguments $3, which will be
# passed unquoted. Send tor's standard output to $4.
#
+# Set $FULL_TOR_CMD to the tor command line that was executed.
+#
# If tor's exit status does not match the boolean $5, fail_printf()
# using the file name $6, and context $7, which is required.
verify_config()
{
RESULT=$TRUE
+
+ # keep the command we're about to execute, and show if it we fail
+ FULL_TOR_CMD=$(printf "$ %s %s %s %s %s %s %s" \
+ "$TOR_BINARY" --verify-config \
+ -f "$1" \
+ --defaults-torrc "$2" \
+ "$3"
+ )
# We need cmdline unquoted
# shellcheck disable=SC2086
"$TOR_BINARY" --verify-config \
@@ -431,9 +455,11 @@ verify_config()
# Convert the actual and expected results to boolean, and compare
if test $((! (! RESULT))) -ne $((! (! $5))); then
- fail_printf "'%s': Tor --verify-config did not %s." \
+ fail_printf "'%s': Tor --verify-config did not %s:\\n%s" \
"$6" \
- "$7"
+ "$7" \
+ "$FULL_TOR_CMD"
+ cat "$4" >&2
fi
}
@@ -445,15 +471,17 @@ verify_config()
# Log the pattern, and the entire contents of the output file.
#
# Log failure messages using fail_printf(), with the match file name,
-# and context $3, which is required.
+# context $3, and tor command line $4, which are required.
check_pattern()
{
expect_log="$(cat "$1")"
if ! grep "$expect_log" "$2" > /dev/null; then
- fail_printf "Expected %s '%s':\\n%s\\nTor said:" \
+ fail_printf "Expected %s '%s':\\n%s" \
"$3" \
"$1" \
"$expect_log"
+ printf "Tor --verify-config said:\\n%s\\n" \
+ "$4" >&2
cat "$2" >&2
fi
}
@@ -479,6 +507,7 @@ check_verify_config()
return
fi
+ FULL_TOR_CMD=
verify_config "$1" \
"$2" \
"$3" \
@@ -489,7 +518,8 @@ check_verify_config()
check_pattern "$6" \
"$4" \
- "$7"
+ "$7" \
+ "$FULL_TOR_CMD"
}
for dir in "${EXAMPLEDIR}"/*; do
@@ -591,7 +621,7 @@ for dir in "${EXAMPLEDIR}"/*; do
"${DATA_DIR}/output_log.${testname}" \
"$TRUE" \
"$EXPECTED_LOG" \
- "log ok"
+ "log success"
fi
elif test -f "$ERROR"; then
1
0

14 Nov '19
commit a5628cf5b318a1168d5092e26a79a7d876aa0b28
Author: teor <teor(a)torproject.org>
Date: Wed Nov 13 17:12:30 2019 +1000
test/parseconf: Refactor and simplify, stage 2
Remove more duplicate code.
Eliminate some arguments.
Rewrite some comments.
Cleanup after 32451.
---
src/test/test_parseconf.sh | 202 ++++++++++++++++++++++++++-------------------
1 file changed, 117 insertions(+), 85 deletions(-)
diff --git a/src/test/test_parseconf.sh b/src/test/test_parseconf.sh
index edda6c3ef..816ed97e3 100755
--- a/src/test/test_parseconf.sh
+++ b/src/test/test_parseconf.sh
@@ -264,11 +264,10 @@ log_verify_config()
# Run "tor --dump-config short" on the torrc $1, and defaults torrc $2, which
# may be $EMPTY. Pass tor the extra command line arguments $3, which will be
-# passed unquoted.
-# Send the standard output to $4.
+# passed unquoted. Send tor's standard output to $4.
+#
# If tor fails, fail_printf() using the file name $5, and context $6,
-# which may be an empty string. Then run "tor --verify-config", and log tor's
-# error messages to stderr.
+# which may be an empty string. Then run log_verify_config().
dump_config()
{
if test "$6"; then
@@ -313,21 +312,21 @@ filter()
"$CONTEXT"
}
-# Compare the input file $1, and output file $2.
+# Compare the expected file $1, and output file $2.
#
# If they are different, fail. If this is the first step that failed in this
-# test, run log_verify_config with torrc $3, defaults torrc $4, and command
+# test, run log_verify_config() with torrc $3, defaults torrc $4, and command
# line $5, to log Tor's error messages. Finally, log the differences between
# the files.
#
# If the file contents are identical, returns true. Otherwise, return false.
#
-# Log failure messages using fail_printf(), with the file name $6, and
-# context $7, which may be an empty string.
+# Log failure messages using fail_printf(), with the expected file name, and
+# context $6, which may be an empty string.
check_diff()
{
- if test "$7"; then
- CONTEXT=" $=7"
+ if test "$6"; then
+ CONTEXT=" $=6"
else
CONTEXT=""
fi
@@ -339,14 +338,14 @@ check_diff()
# show tor's logs
if test -z "$NEXT_TEST"; then
fail_printf "'%s': Tor said%s:" \
- "$6" \
+ "$1" \
"$CONTEXT"
log_verify_config "$3" \
"$4" \
"$5"
fi
fail_printf "'%s' did not match%s:" \
- "$6" \
+ "$1" \
"$CONTEXT"
diff -u "$1" "$2" >&2 \
|| true
@@ -354,6 +353,50 @@ check_diff()
fi
}
+# Run "tor --dump-config short" on the torrc $1, and defaults torrc $2, which
+# may be $EMPTY. Pass tor the extra command line arguments $3, which will be
+# passed unquoted. Send tor's standard output to $4, after running $FILTER
+# on it.
+#
+# If tor fails, run log_verify_config().
+#
+# Compare the expected file $5, and output file. If they are different, fail.
+# If this is the first step that failed in this test, run log_verify_config().
+#
+# If the file contents are identical, returns true. Otherwise, return false,
+# and log the differences between the files.
+#
+# Log failure messages using fail_printf(), with the expected file name, and
+# context $6, which may be an empty string.
+check_dump_config()
+{
+ OUTPUT="$4"
+ OUTPUT_RAW="${OUTPUT}_raw"
+ dump_config "$1" \
+ "$2" \
+ "$3" \
+ "$OUTPUT_RAW" \
+ "$5" \
+ "$6"
+
+ filter "$OUTPUT_RAW" \
+ "$OUTPUT" \
+ "$5" \
+ "$6"
+
+ if check_diff "$5" \
+ "$OUTPUT" \
+ "$1" \
+ "$2" \
+ "$3" \
+ "$5" \
+ "$6"; then
+ return "$TRUE"
+ else
+ return "$FALSE"
+ fi
+}
+
# Check if $1 is an empty file.
# If it is, fail_printf() using $2 as the type of file.
# Returns true if the file is empty, false otherwise.
@@ -371,8 +414,8 @@ check_empty_pattern()
# Run tor --verify-config on the torrc $1, and defaults torrc $2, which may
# be $EMPTY. Pass tor the extra command line arguments $3, which will be
-# passed unquoted.
-# Send tor's standard output to $4.
+# passed unquoted. Send tor's standard output to $4.
+#
# If tor's exit status does not match the boolean $5, fail_printf()
# using the file name $6, and context $7, which is required.
verify_config()
@@ -394,14 +437,15 @@ verify_config()
fi
}
-# Check for the pattern in file $1, in the lines in the output file $2.
-# Uses grep with the entire contents of $1 as the pattern. (Not "grep -f".)
+# Check for the patterns in the match file $1, in the output file $2.
+# Uses grep with the entire contents of the match file as the pattern.
+# (Not "grep -f".)
#
# If the pattern does not match any lines in the output file, fail.
# Log the pattern, and the entire contents of the output file.
#
-# Log failure messages using fail_printf(), with the file name $1, and
-# context $3, which is required.
+# Log failure messages using fail_printf(), with the match file name,
+# and context $3, which is required.
check_pattern()
{
expect_log="$(cat "$1")"
@@ -414,6 +458,40 @@ check_pattern()
fi
}
+# Run tor --verify-config on the torrc $1, and defaults torrc $2, which may
+# be $EMPTY. Pass tor the extra command line arguments $3, which will be
+# passed unquoted. Send tor's standard output to $4.
+#
+# If tor's exit status does not match the boolean $5, fail.
+#
+# Check for the patterns in the match file $6, in the output file.
+# Uses grep with the entire contents of the match file as the pattern.
+# (Not "grep -f".) The match file must not be empty.
+#
+# If the pattern does not match any lines in the output file, fail.
+# Log the pattern, and the entire contents of the output file.
+#
+# Log failure messages using fail_printf(), with the match file name,
+# and context $7, which is required.
+check_verify_config()
+{
+ if check_empty_pattern "$6" "$7"; then
+ return
+ fi
+
+ verify_config "$1" \
+ "$2" \
+ "$3" \
+ "$4" \
+ "$5" \
+ "$6" \
+ "$7"
+
+ check_pattern "$6" \
+ "$4" \
+ "$7"
+}
+
for dir in "${EXAMPLEDIR}"/*; do
NEXT_TEST=
@@ -489,89 +567,43 @@ for dir in "${EXAMPLEDIR}"/*; do
elif test -f "$EXPECTED"; then
# This case should succeed: run dump-config and see if it does.
- if test -f "$EXPECTED_LOG"; then
- if check_empty_pattern "$EXPECTED_LOG" "Expected log"; then
- continue
- fi
- fi
-
- dump_config "./torrc" \
- "$DEFAULTS" \
- "$CMDLINE" \
- "${DATA_DIR}/output_raw.${testname}" \
- "$EXPECTED" \
- ""
-
- filter "${DATA_DIR}/output_raw.${testname}" \
- "${DATA_DIR}/output.${testname}" \
- "$EXPECTED" \
- ""
-
- if check_diff "$EXPECTED" \
- "${DATA_DIR}/output.${testname}" \
- "./torrc" \
- "$DEFAULTS" \
- "$CMDLINE" \
- "$EXPECTED" \
- ""; then
+ if check_dump_config "./torrc" \
+ "$DEFAULTS" \
+ "$CMDLINE" \
+ "${DATA_DIR}/output.${testname}" \
+ "$EXPECTED" \
+ ""; then
# Check round-trip.
- dump_config "${DATA_DIR}/output.${testname}" \
- "$EMPTY" \
- "" \
- "${DATA_DIR}/output_2_raw.${testname}" \
- "$EXPECTED" \
- "on round-trip"
-
- filter "${DATA_DIR}/output_2_raw.${testname}" \
- "${DATA_DIR}/output_2.${testname}" \
- "$EXPECTED" \
- "on round-trip"
-
- check_diff "${DATA_DIR}/output.${testname}" \
- "${DATA_DIR}/output_2.${testname}" \
- "${DATA_DIR}/output.${testname}" \
- "$EMPTY" \
- "" \
- "$EXPECTED" \
- "on round-trip" || true
+ check_dump_config "${DATA_DIR}/output.${testname}" \
+ "$EMPTY" \
+ "" \
+ "${DATA_DIR}/output_2.${testname}" \
+ "$EXPECTED" \
+ "on round-trip" || true
fi
if test -f "$EXPECTED_LOG"; then
# This case should succeed: run verify-config and see if it does.
- verify_config "./torrc" \
+ check_verify_config "./torrc" \
"$DEFAULTS" \
"$CMDLINE" \
"${DATA_DIR}/output_log.${testname}" \
"$TRUE" \
"$EXPECTED_LOG" \
- "succeed"
-
- check_pattern "$EXPECTED_LOG" \
- "${DATA_DIR}/output_log.${testname}" \
- "log"
+ "log ok"
fi
elif test -f "$ERROR"; then
# This case should fail: run verify-config and see if it does.
- if ! test -s "$ERROR"; then
- if check_empty_pattern "$ERROR" "Error"; then
- continue
- fi
- fi
-
- verify_config "./torrc" \
- "$DEFAULTS" \
- "$CMDLINE" \
- "${DATA_DIR}/output.${testname}" \
- "$FALSE" \
- "$ERROR" \
- "report an error"
-
- check_pattern "$ERROR" \
- "${DATA_DIR}/output.${testname}" \
- "error"
+ check_verify_config "./torrc" \
+ "$DEFAULTS" \
+ "$CMDLINE" \
+ "${DATA_DIR}/output.${testname}" \
+ "$FALSE" \
+ "$ERROR" \
+ "log error"
else
# This case is not actually configured with a success or a failure.
# call that an error.
1
0
commit 9f37c0f4f2cde6b0f5be04f50edcfb23ce999830
Author: teor <teor(a)torproject.org>
Date: Thu Nov 14 13:12:42 2019 +1000
changes: file for 32451
---
changes/ticket32451 | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/changes/ticket32451 b/changes/ticket32451
new file mode 100644
index 000000000..dcca851e5
--- /dev/null
+++ b/changes/ticket32451
@@ -0,0 +1,5 @@
+ o Minor features (testing):
+ - Allow test_parseconf.sh to test expected log outputs for successful
+ configs, as well as failed configs. Closes ticket 32451.
+ - Add common failure cases for test_parseconf.sh in
+ src/test/conf_failures. Closes ticket 32451.
1
0