Added config option to allow to bommb in test suites faiures.

This commit is contained in:
Manuel Canales Esparcia 2006-08-05 14:51:11 +00:00
parent 1e69324e07
commit 28f47563a6
6 changed files with 170 additions and 44 deletions

View file

@ -23,9 +23,16 @@
0 = none 0 = none
1 = only Glibc, GCC and Binutils testsuites 1 = only Glibc, GCC and Binutils testsuites
2 = all testsuites 2 = all testsuites
3 = alias to 2 --> 3 = alias to 2
-->
<xsl:param name="testsuite" select="1"/> <xsl:param name="testsuite" select="1"/>
<!-- Bomb on test suites failures?
0 = no, I want to build the full system and review the logs
1 = yes, bomb at the first test suite failure to can review the build dir
-->
<xsl:param name="bomb-testsuite" select="0"/>
<!-- Install vim-lang package? --> <!-- Install vim-lang package? -->
<xsl:param name="vim-lang" select="1"/> <xsl:param name="vim-lang" select="1"/>
@ -117,10 +124,18 @@
<xsl:if test="(contains(string(),'test') or <xsl:if test="(contains(string(),'test') or
contains(string(),'check')) and contains(string(),'check')) and
($testsuite = '2' or $testsuite = '3')"> ($testsuite = '2' or $testsuite = '3')">
<xsl:choose>
<xsl:when test="$bomb-testsuite = '0'">
<xsl:value-of select="substring-before(string(),'make')"/> <xsl:value-of select="substring-before(string(),'make')"/>
<xsl:text>make -k</xsl:text> <xsl:text>make -k</xsl:text>
<xsl:value-of select="substring-after(string(),'make')"/> <xsl:value-of select="substring-after(string(),'make')"/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text> <xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1&#xA;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:if> </xsl:if>
</xsl:template> </xsl:template>
@ -172,11 +187,24 @@
<xsl:choose> <xsl:choose>
<xsl:when test="$testsuite = '0' or $testsuite = '1'"/> <xsl:when test="$testsuite = '0' or $testsuite = '1'"/>
<xsl:otherwise> <xsl:otherwise>
<xsl:if test="not(contains(string(),'check'))">
<xsl:apply-templates/> <xsl:apply-templates/>
<xsl:if test="contains(string(),'check')">
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true</xsl:text>
</xsl:if>
<xsl:text>&#xA;</xsl:text> <xsl:text>&#xA;</xsl:text>
</xsl:if>
<xsl:if test="contains(string(),'check')">
<xsl:choose>
<xsl:when test="$bomb-testsuite = '0'">
<xsl:value-of select="substring-before(string(),'check')"/>
<xsl:text>-k check</xsl:text>
<xsl:value-of select="substring-after(string(),'check')"/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1&#xA;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:when> </xsl:when>
@ -185,16 +213,31 @@
string() = 'make -k check'"> string() = 'make -k check'">
<xsl:choose> <xsl:choose>
<xsl:when test="$testsuite != '0'"> <xsl:when test="$testsuite != '0'">
<xsl:choose>
<xsl:when test="$bomb-testsuite = '0'">
<xsl:text>make -k check &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text> <xsl:text>make -k check &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text>
</xsl:when> </xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1&#xA;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose> </xsl:choose>
</xsl:when> </xsl:when>
<xsl:when test="contains(string(),'glibc-check-log')"> <xsl:when test="contains(string(),'glibc-check-log')">
<xsl:choose> <xsl:choose>
<xsl:when test="$testsuite != '0'"> <xsl:when test="$testsuite != '0'">
<xsl:value-of select="substring-before(string(),'&gt;g')"/> <xsl:value-of select="substring-before(string(),'&gt;g')"/>
<xsl:choose>
<xsl:when test="$bomb-testsuite = '0'">
<xsl:text>&gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text> <xsl:text>&gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text>
</xsl:when> </xsl:when>
<xsl:otherwise>
<xsl:text>&gt;&gt; $TEST_LOG 2&gt;&amp;1&#xA;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose> </xsl:choose>
</xsl:when> </xsl:when>
<xsl:when test="contains(string(),'test_summary') or <xsl:when test="contains(string(),'test_summary') or
@ -202,10 +245,7 @@
<xsl:choose> <xsl:choose>
<xsl:when test="$testsuite != '0'"> <xsl:when test="$testsuite != '0'">
<xsl:apply-templates/> <xsl:apply-templates/>
<xsl:if test="contains(string(),'test_summary')"> <xsl:text> &gt;&gt; $TEST_LOG&#xA;</xsl:text>
<xsl:text> &gt;&gt; $TEST_LOG</xsl:text>
</xsl:if>
<xsl:text>&#xA;</xsl:text>
</xsl:when> </xsl:when>
</xsl:choose> </xsl:choose>
</xsl:when> </xsl:when>

View file

@ -26,9 +26,16 @@
0 = none 0 = none
1 = only chapter06 Glibc, GCC and Binutils testsuites 1 = only chapter06 Glibc, GCC and Binutils testsuites
2 = all chapter06 testsuites 2 = all chapter06 testsuites
3 = alias to 2 --> 3 = alias to 2
-->
<xsl:param name="testsuite" select="1"/> <xsl:param name="testsuite" select="1"/>
<!-- Bomb on test suites failures?
0 = no, I want to build the full system and review the logs
1 = yes, bomb at the first test suite failure to can review the build dir
-->
<xsl:param name="bomb-testsuite" select="0"/>
<!-- Time zone --> <!-- Time zone -->
<xsl:param name="timezone" select="GMT"/> <xsl:param name="timezone" select="GMT"/>
@ -135,10 +142,18 @@
<xsl:if test="(contains(string(),'test') or <xsl:if test="(contains(string(),'test') or
contains(string(),'check')) and contains(string(),'check')) and
($testsuite = '2' or $testsuite = '3')"> ($testsuite = '2' or $testsuite = '3')">
<xsl:choose>
<xsl:when test="$bomb-testsuite = '0'">
<xsl:value-of select="substring-before(string(),'make')"/> <xsl:value-of select="substring-before(string(),'make')"/>
<xsl:text>make -k</xsl:text> <xsl:text>make -k</xsl:text>
<xsl:value-of select="substring-after(string(),'make')"/> <xsl:value-of select="substring-after(string(),'make')"/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text> <xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1&#xA;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:if> </xsl:if>
</xsl:template> </xsl:template>
@ -205,11 +220,24 @@
<xsl:choose> <xsl:choose>
<xsl:when test="$testsuite = '0' or $testsuite = '1'"/> <xsl:when test="$testsuite = '0' or $testsuite = '1'"/>
<xsl:otherwise> <xsl:otherwise>
<xsl:if test="not(contains(string(),'check'))">
<xsl:apply-templates/> <xsl:apply-templates/>
<xsl:if test="contains(string(),'check')">
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true</xsl:text>
</xsl:if>
<xsl:text>&#xA;</xsl:text> <xsl:text>&#xA;</xsl:text>
</xsl:if>
<xsl:if test="contains(string(),'check')">
<xsl:choose>
<xsl:when test="$bomb-testsuite = '0'">
<xsl:value-of select="substring-before(string(),'check')"/>
<xsl:text>-k check</xsl:text>
<xsl:value-of select="substring-after(string(),'check')"/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1&#xA;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:when> </xsl:when>
@ -217,7 +245,15 @@
<xsl:when test="string() = 'make -k check'"> <xsl:when test="string() = 'make -k check'">
<xsl:choose> <xsl:choose>
<xsl:when test="$testsuite != '0'"> <xsl:when test="$testsuite != '0'">
<xsl:text>make -k check &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text> <xsl:apply-templates/>
<xsl:choose>
<xsl:when test="$bomb-testsuite = '0'">
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1&#xA;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when> </xsl:when>
</xsl:choose> </xsl:choose>
</xsl:when> </xsl:when>
@ -226,7 +262,14 @@
<xsl:choose> <xsl:choose>
<xsl:when test="$testsuite != '0'"> <xsl:when test="$testsuite != '0'">
<xsl:value-of select="substring-before(string(),'&gt; glibc-')"/> <xsl:value-of select="substring-before(string(),'&gt; glibc-')"/>
<xsl:text>&gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text> <xsl:choose>
<xsl:when test="$bomb-testsuite = '0'">
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1&#xA;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when> </xsl:when>
</xsl:choose> </xsl:choose>
</xsl:when> </xsl:when>

View file

@ -17,9 +17,16 @@
0 = none 0 = none
1 = only chapter06 Glibc, GCC and Binutils testsuites 1 = only chapter06 Glibc, GCC and Binutils testsuites
2 = all chapter06 testsuites 2 = all chapter06 testsuites
3 = all chapter05 and chapter06 testsuites--> 3 = all chapter05 and chapter06 testsuites
-->
<xsl:param name="testsuite" select="1"/> <xsl:param name="testsuite" select="1"/>
<!-- Bomb on test suites failures?
0 = no, I want to build the full system and review the logs
1 = yes, bomb at the first test suite failure to can review the build dir
-->
<xsl:param name="bomb-testsuite" select="0"/>
<!-- Install vim-lang package? --> <!-- Install vim-lang package? -->
<xsl:param name="vim-lang" select="1"/> <xsl:param name="vim-lang" select="1"/>
@ -109,10 +116,18 @@
(($testsuite = '2' and (($testsuite = '2' and
ancestor::chapter[@id='chapter-building-system']) or ancestor::chapter[@id='chapter-building-system']) or
$testsuite = '3')"> $testsuite = '3')">
<xsl:choose>
<xsl:when test="$bomb-testsuite = '0'">
<xsl:value-of select="substring-before(string(),'make')"/> <xsl:value-of select="substring-before(string(),'make')"/>
<xsl:text>make -k</xsl:text> <xsl:text>make -k</xsl:text>
<xsl:value-of select="substring-after(string(),'make')"/> <xsl:value-of select="substring-after(string(),'make')"/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text> <xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1&#xA;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:if> </xsl:if>
</xsl:template> </xsl:template>
@ -160,11 +175,24 @@
<xsl:choose> <xsl:choose>
<xsl:when test="$testsuite = '0' or $testsuite = '1'"/> <xsl:when test="$testsuite = '0' or $testsuite = '1'"/>
<xsl:otherwise> <xsl:otherwise>
<xsl:if test="not(contains(string(),'check'))">
<xsl:apply-templates/> <xsl:apply-templates/>
<xsl:if test="contains(string(),'check')">
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true</xsl:text>
</xsl:if>
<xsl:text>&#xA;</xsl:text> <xsl:text>&#xA;</xsl:text>
</xsl:if>
<xsl:if test="contains(string(),'check')">
<xsl:choose>
<xsl:when test="$bomb-testsuite = '0'">
<xsl:value-of select="substring-before(string(),'check')"/>
<xsl:text>-k check</xsl:text>
<xsl:value-of select="substring-after(string(),'check')"/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1&#xA;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:when> </xsl:when>
@ -175,8 +203,16 @@
<xsl:when test="(($testsuite = '1' or $testsuite = '2') and <xsl:when test="(($testsuite = '1' or $testsuite = '2') and
ancestor::chapter[@id='chapter-building-system']) or ancestor::chapter[@id='chapter-building-system']) or
$testsuite = '3'"> $testsuite = '3'">
<xsl:choose>
<xsl:when test="$bomb-testsuite = '0'">
<xsl:text>make -k check &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text> <xsl:text>make -k check &gt;&gt; $TEST_LOG 2&gt;&amp;1 || true&#xA;</xsl:text>
</xsl:when> </xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
<xsl:text> &gt;&gt; $TEST_LOG 2&gt;&amp;1&#xA;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose> </xsl:choose>
</xsl:when> </xsl:when>
<xsl:when test="contains(string(),'glibc-check-log')"> <xsl:when test="contains(string(),'glibc-check-log')">
@ -194,10 +230,7 @@
ancestor::chapter[@id='chapter-building-system']) or ancestor::chapter[@id='chapter-building-system']) or
$testsuite = '3'"> $testsuite = '3'">
<xsl:apply-templates/> <xsl:apply-templates/>
<xsl:if test="contains(string(),'test_summary')"> <xsl:text> &gt;&gt; $TEST_LOG&#xA;</xsl:text>
<xsl:text> &gt;&gt; $TEST_LOG</xsl:text>
</xsl:if>
<xsl:text>&#xA;</xsl:text>
</xsl:when> </xsl:when>
</xsl:choose> </xsl:choose>
</xsl:when> </xsl:when>

View file

@ -727,6 +727,7 @@ extract_commands() { #
--xinclude \ --xinclude \
--stringparam method $METHOD \ --stringparam method $METHOD \
--stringparam testsuite $TEST \ --stringparam testsuite $TEST \
--stringparam bomb-testsuite $BOMB_TEST \
--stringparam vim-lang $VIMLANG \ --stringparam vim-lang $VIMLANG \
--stringparam timezone $TIMEZONE \ --stringparam timezone $TIMEZONE \
--stringparam page $PAGE \ --stringparam page $PAGE \
@ -740,6 +741,7 @@ extract_commands() { #
xsltproc --nonet \ xsltproc --nonet \
--xinclude \ --xinclude \
--stringparam testsuite $TEST \ --stringparam testsuite $TEST \
--stringparam bomb-testsuite $BOMB_TEST \
--stringparam vim-lang $VIMLANG \ --stringparam vim-lang $VIMLANG \
--stringparam timezone $TIMEZONE \ --stringparam timezone $TIMEZONE \
--stringparam page $PAGE \ --stringparam page $PAGE \
@ -753,6 +755,7 @@ extract_commands() { #
--xinclude \ --xinclude \
--stringparam model $MODEL \ --stringparam model $MODEL \
--stringparam testsuite $TEST \ --stringparam testsuite $TEST \
--stringparam bomb-testsuite $BOMB_TEST \
--stringparam timezone $TIMEZONE \ --stringparam timezone $TIMEZONE \
--stringparam page $PAGE \ --stringparam page $PAGE \
--stringparam lang $LANG \ --stringparam lang $LANG \
@ -766,6 +769,7 @@ extract_commands() { #
xsltproc --nonet \ xsltproc --nonet \
--xinclude \ --xinclude \
--stringparam testsuite $TEST \ --stringparam testsuite $TEST \
--stringparam bomb-testsuite $BOMB_TEST \
--stringparam vim-lang $VIMLANG \ --stringparam vim-lang $VIMLANG \
--stringparam timezone $TIMEZONE \ --stringparam timezone $TIMEZONE \
--stringparam page $PAGE \ --stringparam page $PAGE \

View file

@ -51,6 +51,11 @@ OPTIMIZE=0
# (in CLFS and HLFS, alias to 2) # (in CLFS and HLFS, alias to 2)
TEST=1 TEST=1
#--- Bomb on test suites failures?
# 0 = no, I want to build the full system and review the logs
# 1 = yes, bomb at the first test suite failure to can review the build dir
BOMB_TEST=0
#--- Run the stripping phases 0(no)/1(yes) #--- Run the stripping phases 0(no)/1(yes)
STRIP=1 STRIP=1

View file

@ -86,10 +86,10 @@ validate_config() { # Are the config values sane (within reason)
inline_doc inline_doc
# First internal variables, then the ones that change the book's flavour, and lastly system configuration variables # First internal variables, then the ones that change the book's flavour, and lastly system configuration variables
local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE MODEL GRSECURITY_HOST TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL KEYMAP PAGE TIMEZONE LANG LC_ALL" local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE MODEL GRSECURITY_HOST TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL KEYMAP PAGE TIMEZONE LANG LC_ALL"
local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE METHOD ARCH TARGET TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG" local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE METHOD ARCH TARGET TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG"
local -r clfs2_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE ARCH TARGET OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG" local -r clfs2_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE ARCH TARGET OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG"
local -r lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL VIMLANG PAGE TIMEZONE LANG" local -r lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL VIMLANG PAGE TIMEZONE LANG"
local -r ERROR_MSG_pt1='The variable \"${L_arrow}${config_param}${R_arrow}\" value ${L_arrow}${BOLD}${!config_param}${R_arrow} is invalid,' local -r ERROR_MSG_pt1='The variable \"${L_arrow}${config_param}${R_arrow}\" value ${L_arrow}${BOLD}${!config_param}${R_arrow} is invalid,'
local -r ERROR_MSG_pt2=' check the config file ${BOLD}${GREEN}\<$(echo $PROGNAME | tr [a-z] [A-Z])/config\> or \<common/config\>${OFF}' local -r ERROR_MSG_pt2=' check the config file ${BOLD}${GREEN}\<$(echo $PROGNAME | tr [a-z] [A-Z])/config\> or \<common/config\>${OFF}'
@ -205,6 +205,7 @@ inline_doc
RUN_FARCE) [[ "$COMPARE" = "1" ]] && validate_against_str "x0x x1x" ;; RUN_FARCE) [[ "$COMPARE" = "1" ]] && validate_against_str "x0x x1x" ;;
ITERATIONS) [[ "$COMPARE" = "1" ]] && validate_against_str "x2x x3x x4x x5x" ;; ITERATIONS) [[ "$COMPARE" = "1" ]] && validate_against_str "x2x x3x x4x x5x" ;;
TEST) validate_against_str "x0x x1x x2x x3x" ;; TEST) validate_against_str "x0x x1x x2x x3x" ;;
BOMB_TEST) [[ ! "$TEST" = "0" ]] && validate_against_str "x0x x1x" ;;
OPTIMIZE) validate_against_str "x0x x1x x2x" ;; OPTIMIZE) validate_against_str "x0x x1x x2x" ;;
STRIP) validate_against_str "x0x x1x" ;; STRIP) validate_against_str "x0x x1x" ;;
VIMLANG) validate_against_str "x0x x1x" ;; VIMLANG) validate_against_str "x0x x1x" ;;