<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>27059</bug_id>
          
          <creation_ts>2012-03-12 08:38:29 +0400</creation_ts>
          <short_desc>output debugging info if a test aborts with a strange exit status</short_desc>
          <delta_ts>2015-02-24 15:56:11 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>libshell</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://gitorious.org/altlinux/libshell_imz/commits/unittest/debug-strange-status</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan Zakharyaschev">imz</reporter>
          <assigned_to name="Alexey Gladkov">legion</assigned_to>
          <cc>glebfm</cc>
    
    <cc>legion</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>129670</commentid>
    <comment_count>0</comment_count>
      <attachid>5375</attachid>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2012-03-12 08:38:29 +0400</bug_when>
    <thetext>Created attachment 5375
git diff upstream...unittest/debug-strange-status

libshell-0.1.6-alt1

The motivation for the enhancement:
-----------------------------------

I couldn&apos;t figure out why one of my tests for gear--when run in hasher--reported a strange exit status (whereas when done by a simple &quot;rpm -bb&quot;, the test passed).

It should be more convenient to see the reason for such an unexpected strange exit status of a test.

So, to help myself understand the reason, I modified shell-unittest to output some debugging info in this case (simply, the output of &quot;set -x&quot;).

With the debugging info now, the build of gear with the problematic test looks like this:
			
make: Entering directory `/usr/src/RPM/BUILD/gear-1.7.2.6&apos;
cd tests &amp;&amp; ./run
[status=128, to be run again with debugging output] (gear_import_check_lost_cwd) 
+ rc=0
++ gear_import_check_lost_cwd
++ finalize_repo=
++ gear_import_check_lost
++ local v
++ mkdir -p .git/.work
+ msg=
+ rc=128
+ set +x
[status=128] (gear_import_check_lost_cwd) 
			
And I&apos;m able to find the point in the script where this happens.
(The explanation for the strange exit status in my test for gear was probably a bashism there.)

The patch:
----------
 
My modifications are in branch &quot;unittest/debug-strange-status&quot; in git://gitorious.org/libshell/imz.git ( https://gitorious.org/libshell/imz/commits/unittest/debug-strange-status ); &quot;git diff upstream...unittest/debug-strange-status&quot; looks like displayed here: https://gitorious.org/libshell/imz/commit/8aa223336c7cc8a9b636ad12c57d87161bd84f73/diffs/e30f11e98849f47ff49f4142f9797d1c5305c4d5 .

The patch is also attached below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137139</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2013-01-22 19:19:27 +0400</bug_when>
    <thetext>New localtion of my code: https://gitorious.org/altlinux/libshell_imz/commits/unittest/debug-strange-status</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137187</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2013-01-24 00:37:44 +0400</bug_when>
    <thetext>Этот бранч содержит не только финальные изменения, но и ваши искания; там содержится изменение спека, который менять можно лишь для релиза; в ваших содержатся примеры использования каких-то команд (этому не место в коде); у вас в коде присутствуют пробелы в конце строки.

Бранч unittest/debug-strange-status не то, что можно смерджить.

Кроме того, мне не понятна первопричина для этих изменений. Unittest на то и unit, чтобы было понятно что и где сломалось. Если какой-либо проект имеет невнятную диагностику, то стоит исправлять тест, а не фреймворк.

Ещё меня смущает идея повторного выполнения теста. Некоторые тесты могут быть довольно длительные и их повтор может быть долгим. Делать это автоматически (без контроля пользователя) мне кажется неправильным.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150108</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2015-02-10 12:50:49 +0300</bug_when>
    <thetext>Реакции нет больше года. Закрываю, до появления заинтересованных.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150126</commentid>
    <comment_count>4</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2015-02-10 20:55:57 +0300</bug_when>
    <thetext>Прошу прощения за отсутствие своевременной реакции!

Вот что подумалось к этому обсуждению:

(В ответ на комментарий №2)

&gt; Кроме того, мне не понятна первопричина для этих изменений. Unittest на то и
&gt; unit, чтобы было понятно что и где сломалось. Если какой-либо проект имеет
&gt; невнятную диагностику, то стоит исправлять тест, а не фреймворк.

Дело было в том, что было ничего непонятно: что с тестом (т.к. из-за особенностей окружения код возврата не соответствовал тому, что ожидал вот этот запсукатель тестов).

&gt; Ещё меня смущает идея повторного выполнения теста. Некоторые тесты могут быть
&gt; довольно длительные и их повтор может быть долгим. Делать это автоматически
&gt; (без контроля пользователя) мне кажется неправильным.

Да, возражение понятно. Тогда можно остановиться на таком простом решении и ничего не городить: дать руками запустить ещё раз именно этот тест с загадочным status и, возможно, всяким включённым tracing. Это же лучше делать через shell-unittest; как самому запустить отдельный тест не очень понятно?

По крайней мере, я бы предложил не проглатывать неожиданный status молча, а реагировать на него как на failed:

 		case &quot;$rc&quot; in
 			0) passed=$(($passed+1)) ;;
 			1) failed=$(($failed+1)); retval=1; ;;
 			2) skipped=$(($skipped+1)) ;;
+		        *) 
+			    # It&apos;s safer to fail in this case (to draw the attention of the maintainer).
+			    failed=$(($failed+1)); retval=1; ;;
 		esac
 		run_or_exit messageTest &quot;$1&quot; &quot;$msg&quot; &quot;$rc&quot;
 
 		run_or_exit tearDown

и дать совет, как запустить конкретный тест самому руками.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150246</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2015-02-14 15:06:43 +0300</bug_when>
    <thetext>В этом есть смысл. Посмотрите в master. Я добавил переменную окружения TESTCASES, в которой можно перечислить юниттесты, которые нужно выполнить. Также если выставить переменную окружения TESTTRACE=1 каждый тест будет запускаться с set -x.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150441</commentid>
    <comment_count>6</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2015-02-24 15:56:11 +0300</bug_when>
    <thetext>libshell-0.3.0-alt1 -&gt; sisyphus:

* Tue Feb 24 2015 Alexey Gladkov &lt;legion@altlinux&gt; 0.3.0-alt1
- New version (0.3.0).
- Fix bootstrap (ALT#29584).
- shell-ini-config changes:
  + Add ini_config_is_set() function.
  + Take care about lines without values (ALT#30713).
- shell-unittest changes:
  + Add TESTCASES variable to list individual testcases (ALT#27059).
  + Add TESTTRACE variable to run testcase in debug mode (ALT#27059).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5375</attachid>
            <date>2012-03-12 08:38:29 +0400</date>
            <delta_ts>2012-03-12 08:38:29 +0400</delta_ts>
            <desc>git diff upstream...unittest/debug-strange-status</desc>
            <filename>libshell-unittest-debug-strange-status.patch</filename>
            <type>text/plain</type>
            <size>3493</size>
            <attacher name="Ivan Zakharyaschev">imz</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2xpYnNoZWxsLnNwZWMgYi9saWJzaGVsbC5zcGVjCmluZGV4IDJlZmRiNGYu
LjIzODA2MDEgMTAwNjQ0Ci0tLSBhL2xpYnNoZWxsLnNwZWMKKysrIGIvbGlic2hlbGwuc3BlYwpA
QCAtMSw2ICsxLDYgQEAKIE5hbWU6IGxpYnNoZWxsCiBWZXJzaW9uOiAwLjEuNgotUmVsZWFzZTog
YWx0MQorUmVsZWFzZTogYWx0MS5pbXoxCiAKIFN1bW1hcnk6ICBBIGxpYnJhcnkgb2Ygc2hlbGwg
ZnVuY3Rpb25zCiBMaWNlbnNlOiBHUEwKQEAgLTI4LDYgKzI4LDExIEBAIFRoaXMgcGFja2FnZSBj
b250YWlucyBjb21tb24gZnVuY3Rpb25zIGZvciBzaGVsbCBwcm9qZWN0cyB0byBpbmNyZWFzZSBj
b2RlIHJldXNlCiAlZG9jIENPUFlJTkcgU1lNUwogCiAlY2hhbmdlbG9nCisqIEZyaSBNYXIgMDIg
MjAxMiBJdmFuIFpha2hhcnlhc2NoZXYgPGltekBhbHRsaW51eC5vcmc+IDAuMS42LWFsdDEuaW16
MQorLSBzaGVsbC11bml0dGVzdCBjaGFuZ2VzOgorICArIE91dHB1dCBkZWJ1Z2dpbmcgaW5mbyBp
ZiB0aGUgdGVzdCBhYm9ydHMgd2l0aCBhIHN0cmFuZ2UgZXhpdAorICAgIHN0YXR1cy4KKwogKiBX
ZWQgSnVsIDI3IDIwMTEgQWxleGV5IEdsYWRrb3YgPGxlZ2lvbkBhbHRsaW51eC5vcmc+IDAuMS42
LWFsdDEKIC0gc2hlbGwtaW5pLWNvbmZpZyBjaGFuZ2VzIChBTFQjMjU5NDYpOgogICArIEZpeCBj
b21tZW50IGZvcm1hdHRpbmcgKHRoeCBWbGFkaXNsYXYgWmF2amFsb3YpOwpkaWZmIC0tZ2l0IGEv
bGlic2hlbGwvc2hlbGwtdW5pdHRlc3QgYi9saWJzaGVsbC9zaGVsbC11bml0dGVzdAppbmRleCA2
N2NiMGM1Li5iZmQzNWI4IDEwMDY0NAotLS0gYS9saWJzaGVsbC9zaGVsbC11bml0dGVzdAorKysg
Yi9saWJzaGVsbC9zaGVsbC11bml0dGVzdApAQCAtMTkzLDcgKzE5Myw3IEBAIG1lc3NhZ2VUZXN0
KCkgewogCQkwKSBwcmludGYgJ1tkb25lXScgOzsKIAkJMSkgcHJpbnRmICdbRkFJTF0nIDs7CiAJ
CTIpIHByaW50ZiAnW3NraXBdJyA7OwotCQkqKSBwcmludGYgJ1tzdGF0dXM9JXNdJyAkMyA7Owor
CQkqKSBwcmludGYgJ1tzdGF0dXM9JXMlc10nICIkMyIgIiR7ZGVidWc6KywgdG8gYmUgcnVuIGFn
YWluIHdpdGggZGVidWdnaW5nIG91dHB1dH0iIDs7CiAJZXNhYwogCXByaW50ZiAnICglcykgJXNc
bicgIiQxIiAiJDIiCiB9CkBAIC0yMjUsMTkgKzIyNSw2MiBAQCBydW5Vbml0VGVzdHMoKSB7CiAJ
X19zaGVsbF91bml0X3Rlc3RzPSIkKHByaW50ZiAnJXNcbicgIiRfX3NoZWxsX3VuaXRfdGVzdHMi
IHxzb3J0IC11KSIKIAlzZXQgLS0gJHtfX3NoZWxsX3VuaXRfdGVzdHMtfQogCi0JbG9jYWwgcmV0
dmFsPTAgcmMgcGFzc2VkPTAgZmFpbGVkPTAgc2tpcHBlZD0wIHRvdGFsPSIkIyIKKwlsb2NhbCBy
ZXR2YWw9MCByYyBkZWJ1ZyBwYXNzZWQ9MCBmYWlsZWQ9MCBza2lwcGVkPTAgdG90YWw9IiQjIgog
CiAJd2hpbGUgWyAiJCMiIC1ndCAwIF07IGRvCiAJCXJ1bl9vcl9leGl0IHNldFVwCiAKKwkJaWYg
WyAtbiAiJGRlYnVnIiBdOyB0aGVuCisJCSAgICBzZXQgLXgKKwkJZmkKIAkJcmM9MAogCQltc2c9
IiQoIiQxIikiIHx8IHJjPSQ/CisJCXNldCAreAogCiAJCWNhc2UgIiRyYyIgaW4KIAkJCTApIHBh
c3NlZD0kKCgkcGFzc2VkKzEpKSA7OwogCQkJMSkgZmFpbGVkPSQoKCRmYWlsZWQrMSkpOyByZXR2
YWw9MTsgOzsKIAkJCTIpIHNraXBwZWQ9JCgoJHNraXBwZWQrMSkpIDs7CisJCSAgICAgICAgKikg
CisJCQkjIFNtdGggdW5leHBlY3RlZCBoYXMgaGFwcGVuZWQgZHVyaW5nIHRoZSB0ZXN0LiBXZSBh
cmUgYWJvdXQgdG8gb3V0cHV0IHRoZSBkZWJ1Z2dpbmcgaW5mby4KKwkJCSMgCisJCQkjIE1vdGl2
YXRpbmcgZXhhbXBsZToKKwkJCSMKKwkJCSMgSSBjb3VsZG4ndCBmaWd1cmUgb3V0IHdoeSBvbmUg
b2YgbXkgdGVzdHMgZm9yIGdlYXItLXdoZW4gcnVuIGluIGhhc2hlci0tcmVwb3J0ZWQgdGhpcyBz
dHJhbmdlCisJCQkjIGV4aXQgc3RhdHVzICh3aGVyZWFzIHdoZW4gZG9uZSBieSBhIHNpbXBsZSAi
cnBtIC1iYiIsIHRoZSB0ZXN0IHBhc3NlZCkuCisJCQkjIAorCQkJIyBXaXRoIHRoZSBkZWJ1Z2dp
bmcgaW5mbyBub3csIGl0IGxvb2tzIGxpa2UgdGhpczoKKwkJCSMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICMgbWFrZTogRW50ZXJpbmcgZGlyZWN0b3J5IGAvdXNyL3NyYy9SUE0vQlVJTEQvZ2Vh
ci0xLjcuMi42JworICAgICAgICAgICAgICAgICAgICAgICAgIyBjZCB0ZXN0cyAmJiAuL3J1bgor
ICAgICAgICAgICAgICAgICAgICAgICAgIyBbc3RhdHVzPTEyOCwgdG8gYmUgcnVuIGFnYWluIHdp
dGggZGVidWdnaW5nIG91dHB1dF0gKGdlYXJfaW1wb3J0X2NoZWNrX2xvc3RfY3dkKSAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICMgKyByYz0wCisgICAgICAgICAgICAgICAgICAgICAgICAjICsr
IGdlYXJfaW1wb3J0X2NoZWNrX2xvc3RfY3dkCisgICAgICAgICAgICAgICAgICAgICAgICAjICsr
IGZpbmFsaXplX3JlcG89CisgICAgICAgICAgICAgICAgICAgICAgICAjICsrIGdlYXJfaW1wb3J0
X2NoZWNrX2xvc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICMgKysgbG9jYWwgdgorICAgICAg
ICAgICAgICAgICAgICAgICAgIyArKyBta2RpciAtcCAuZ2l0Ly53b3JrCisgICAgICAgICAgICAg
ICAgICAgICAgICAjICsgbXNnPQorICAgICAgICAgICAgICAgICAgICAgICAgIyArIHJjPTEyOAor
ICAgICAgICAgICAgICAgICAgICAgICAgIyArIHNldCAreAorICAgICAgICAgICAgICAgICAgICAg
ICAgIyBbc3RhdHVzPTEyOF0gKGdlYXJfaW1wb3J0X2NoZWNrX2xvc3RfY3dkKSAKKwkJCSMgCisJ
CQkjIEFuZCBJJ20gYWJsZSB0byBmaW5kIHRoZSBwb2ludCBpbiB0aGUgc2NyaXB0IHdoZXJlIHRo
aXMgaGFwcGVucy4KKwkJCSMgKFRoZSBleHBsYW5hdGlvbiBmb3IgdGhlIHN0cmFuZ2UgZXhpdCBz
dGF0dXMgd2FzIHByb2JhYmx5IGEgYmFzaGlzbSB0aGVyZS4pCisJCQlpZiBbIC16ICIkZGVidWci
IF07IHRoZW4gCisJCQkgICAgZGVidWc9MQorCQkJICAgICMgbWVzc2FnZVRlc3Qgd2lsbCBleHBs
YWluIHRoYXQgdGhlIHRlc3Qgd2lsbCBiZSByZS1ydW46CisJCQkgICAgcnVuX29yX2V4aXQgbWVz
c2FnZVRlc3QgIiQxIiAiJG1zZyIgIiRyYyIKKwkJCSAgICBydW5fb3JfZXhpdCB0ZWFyRG93bgor
CQkJICAgIGNvbnRpbnVlCisJCQllbHNlCisJCQkgICAgIyBJdCdzIHNhZmVyIHRvIGZhaWwgaW4g
dGhpcyBjYXNlICh0byBkcmF3IHRoZSBhdHRlbnRpb24gb2YgdGhlIG1haW50YWluZXIpLgorCQkJ
ICAgIGZhaWxlZD0kKCgkZmFpbGVkKzEpKTsgcmV0dmFsPTEKKwkJCWZpCisJCQk7OwogCQllc2Fj
CisJCSMgQ2xlYXIgdGhlIGRlYnVnIGZsYWcsIGJlY2F1c2Ugd2UgaGF2ZSBqdXN0IHJ1biB0aGUg
bGFzdCB0ZXN0IHdpdGggdGhlIGRlYnVnIHN3aXRjaGVkIG9uLCBpZiBuZWVkZWQuCisJCWRlYnVn
PQogCQlydW5fb3JfZXhpdCBtZXNzYWdlVGVzdCAiJDEiICIkbXNnIiAiJHJjIgogCiAJCXJ1bl9v
cl9leGl0IHRlYXJEb3duCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>