RHEL 9.0.0 Alpha bootstrap

The content of this branch was automatically imported from Fedora ELN
with the following as its source:
https://src.fedoraproject.org/rpms/diffutils#9b2b8d9dea62e1786736b14e6986431a5d87abf8
This commit is contained in:
Petr Šabata 2020-10-14 23:38:43 +02:00
parent 9cab6d3f5a
commit e7c6f1eb8d
35 changed files with 482237 additions and 0 deletions

8
.gitignore vendored
View File

@ -0,0 +1,8 @@
diffutils-2.8.1.tar.gz
/diffutils-3.0.tar.xz
/diffutils-3.1.tar.xz
/diffutils-3.2.tar.xz
/diffutils-3.3.tar.xz
/diffutils-3.5.tar.xz
/diffutils-3.6.tar.xz
/diffutils-3.7.tar.xz

7
STAGE1-diffutils Normal file
View File

@ -0,0 +1,7 @@
srpm $1
mcd $BUILDDIR/$1
$SRC/${1}-*/configure $TCONFIGARGS
notparallel
test -d tools/gnulib/lib && make $J V=1 -C tools/gnulib/lib
make $J V=1
make $J install DESTDIR=${ROOTFS}

16
diffutils-3.7.tar.xz.sig Normal file
View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEFV0/xQDINEhtHupnf9n8ywAL7u4FAlwqylgACgkQf9n8ywAL
7u6ujBAAh81vOPv2HhDG/DtnI0zLcP2Twr+beAxrhDkFi7hb9szFiAzx88nxlt7L
zmqVh4AF7czMsYsjujHYGmAFxgMFEW5HPbXEbNN2zOFC2lcIOq+5PyGyAN1tPdiG
Zcju/TiLXtmpyPt0aYsAnVx4lY2IBtjVhVRBSQnbZcWEXrZisNid0KoAkFFGQyim
loSgUN7622L8JDZQ+XrtnvPgEcR/wVcLmyGozLouKc1trkO8Pyhjam0UOQEFq12L
eEf5PAV9d3r/DqZQW98YhA5g5XwaAaOdKR7sbc1NDKqbo0qAtRZJ9aBn7TCxiBM/
4SQAu3HAgr14r97Df9yQdd/LbfOiMm47txz0OCWI2+QC5NIK9OVkdnjfPU2D6pRY
xh+9n8Gict5/BYO6NHNE8Zs50ZxQFEHvh0y/GJNTpJHLUBbvA0jWDfIXq1tlg4Gt
DkQz6TmJzltFDgh6TZcmCEWd/8beT81U7u/NZYmCWHUeNx7g6voe1oZeofqcG4EF
LXvBkK/go4l8p7qWQ3ifb7ydY4cOisfIQpddYJCpjEt+OAnVAzsfckpQUXiMzdpS
G7pqbR3DTIqAp1ZQJlV+UV4lcMxgnktg3gSzmtAct7/pfF5OVoch3EylyOWjs4F5
BTtIvn9AcaU0xuO1VogKu9HyZHq0InDV5dCsGgnz8M+9uHEiyf8=
=nbm3
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,20 @@
diff -up diffutils-3.6/src/cmp.c.cmp-s-empty diffutils-3.6/src/cmp.c
--- diffutils-3.6/src/cmp.c.cmp-s-empty 2017-05-18 18:39:59.000000000 +0100
+++ diffutils-3.6/src/cmp.c 2017-05-22 10:53:28.477147864 +0100
@@ -330,12 +330,15 @@ main (int argc, char **argv)
/* If only a return code is needed,
and if both input descriptors are associated with plain files,
+ and if both files are larger than 0 bytes (procfs files are always 0),
conclude that the files differ if they have different sizes
and if more bytes will be compared than are in the smaller file. */
if (comparison_type == type_status
&& S_ISREG (stat_buf[0].st_mode)
- && S_ISREG (stat_buf[1].st_mode))
+ && S_ISREG (stat_buf[1].st_mode)
+ && stat_buf[0].st_size > 0
+ && stat_buf[1].st_size > 0)
{
off_t s0 = stat_buf[0].st_size - file_position (0);
off_t s1 = stat_buf[1].st_size - file_position (1);

View File

@ -0,0 +1,26 @@
diff -up diffutils-3.7/gnulib-tests/test-perror2.c.fix-gnulib-tests diffutils-3.7/gnulib-tests/test-perror2.c
--- diffutils-3.7/gnulib-tests/test-perror2.c.fix-gnulib-tests 2018-01-07 00:45:53.000000000 +0000
+++ diffutils-3.7/gnulib-tests/test-perror2.c 2020-10-08 14:36:15.002040558 +0100
@@ -79,9 +79,6 @@ main (void)
errno = -5;
perror ("");
ASSERT (!ferror (stderr));
- ASSERT (msg1 == msg2 || msg1 == msg4 || STREQ (msg1, str1));
- ASSERT (msg2 == msg4 || STREQ (msg2, str2));
- ASSERT (msg3 == msg4 || STREQ (msg3, str3));
ASSERT (STREQ (msg4, str4));
free (str1);
diff -up diffutils-3.7/gnulib-tests/test-strerror_r.c.fix-gnulib-tests diffutils-3.7/gnulib-tests/test-strerror_r.c
--- diffutils-3.7/gnulib-tests/test-strerror_r.c.fix-gnulib-tests 2018-01-07 00:45:53.000000000 +0000
+++ diffutils-3.7/gnulib-tests/test-strerror_r.c 2020-10-08 14:36:15.003040568 +0100
@@ -165,9 +165,6 @@ main (void)
strerror_r (EACCES, buf, sizeof buf);
strerror_r (-5, buf, sizeof buf);
- ASSERT (msg1 == msg2 || msg1 == msg4 || STREQ (msg1, str1));
- ASSERT (msg2 == msg4 || STREQ (msg2, str2));
- ASSERT (msg3 == msg4 || STREQ (msg3, str3));
ASSERT (STREQ (msg4, str4));
free (str1);

778
diffutils-i18n.patch Normal file
View File

@ -0,0 +1,778 @@
diff -up diffutils-3.6/src/diff.c.i18n diffutils-3.6/src/diff.c
--- diffutils-3.6/src/diff.c.i18n 2017-05-06 20:02:54.000000000 +0100
+++ diffutils-3.6/src/diff.c 2017-05-22 10:52:21.989254674 +0100
@@ -76,6 +76,8 @@ static void try_help (char const *, char
static void check_stdout (void);
static void usage (void);
+bool (*lines_differ) (char const *, size_t, char const *, size_t);
+
/* If comparing directories, compare their common subdirectories
recursively. */
static bool recursive;
@@ -298,6 +300,13 @@ main (int argc, char **argv)
excluded = new_exclude ();
presume_output_tty = false;
+#ifdef HANDLE_MULTIBYTE
+ if (MB_CUR_MAX > 1)
+ lines_differ = lines_differ_multibyte;
+ else
+#endif
+ lines_differ = lines_differ_singlebyte;
+
/* Decode the options. */
while ((c = getopt_long (argc, argv, shortopts, longopts, NULL)) != -1)
diff -up diffutils-3.6/src/diff.h.i18n diffutils-3.6/src/diff.h
--- diffutils-3.6/src/diff.h.i18n 2017-01-01 11:22:36.000000000 +0000
+++ diffutils-3.6/src/diff.h 2017-05-22 10:51:09.050371844 +0100
@@ -23,6 +23,17 @@
#include <stdio.h>
#include <unlocked-io.h>
+/* For platforms which support the ISO C ammendment 1 functionality we
+ support user-defined character classes. */
+#if defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H
+/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
+# include <wchar.h>
+# include <wctype.h>
+# if defined (HAVE_MBRTOWC)
+# define HANDLE_MULTIBYTE 1
+# endif
+#endif
+
/* What kind of changes a hunk contains. */
enum changes
{
@@ -381,7 +392,11 @@ extern void print_sdiff_script (struct c
extern char const change_letter[4];
extern char const pr_program[];
extern char *concat (char const *, char const *, char const *);
-extern bool lines_differ (char const *, char const *) _GL_ATTRIBUTE_PURE;
+extern bool (*lines_differ) (char const *, size_t, char const *, size_t) _GL_ATTRIBUTE_PURE;
+extern bool lines_differ_singlebyte (char const *, size_t, char const *, size_t) _GL_ATTRIBUTE_PURE;
+#ifdef HANDLE_MULTIBYTE
+extern bool lines_differ_multibyte (char const *, size_t, char const *, size_t) _GL_ATTRIBUTE_PURE;
+#endif
extern lin translate_line_number (struct file_data const *, lin);
extern struct change *find_change (struct change *);
extern struct change *find_reverse_change (struct change *);
diff -up diffutils-3.6/src/io.c.i18n diffutils-3.6/src/io.c
--- diffutils-3.6/src/io.c.i18n 2017-01-01 11:22:36.000000000 +0000
+++ diffutils-3.6/src/io.c 2017-05-22 10:51:09.050371844 +0100
@@ -23,6 +23,7 @@
#include <cmpbuf.h>
#include <file-type.h>
#include <xalloc.h>
+#include <assert.h>
/* Rotate an unsigned value to the left. */
#define ROL(v, n) ((v) << (n) | (v) >> (sizeof (v) * CHAR_BIT - (n)))
@@ -215,6 +216,28 @@ slurp (struct file_data *current)
/* Split the file into lines, simultaneously computing the equivalence
class for each line. */
+#ifdef HANDLE_MULTIBYTE
+# define MBC2WC(P, END, MBLENGTH, WC, STATE, CONVFAIL) \
+do \
+ { \
+ mbstate_t state_bak = STATE; \
+ \
+ CONVFAIL = 0; \
+ MBLENGTH = mbrtowc (&WC, P, END - (char const *)P, &STATE); \
+ \
+ switch (MBLENGTH) \
+ { \
+ case (size_t)-2: \
+ case (size_t)-1: \
+ STATE = state_bak; \
+ ++CONVFAIL; \
+ /* Fall through. */ \
+ case 0: \
+ MBLENGTH = 1; \
+ } \
+ } \
+ while (0)
+#endif
static void
find_and_hash_each_line (struct file_data *current)
@@ -241,12 +264,300 @@ find_and_hash_each_line (struct file_dat
bool same_length_diff_contents_compare_anyway =
diff_length_compare_anyway | ig_case;
+#ifdef HANDLE_MULTIBYTE
+ wchar_t wc;
+ size_t mblength;
+ mbstate_t state;
+ int convfail;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+#endif
+
while (p < suffix_begin)
{
char const *ip = p;
hash_value h = 0;
unsigned char c;
+#ifdef HANDLE_MULTIBYTE
+ if (MB_CUR_MAX > 1)
+ {
+ wchar_t lo_wc;
+ char mbc[MB_LEN_MAX];
+ mbstate_t state_wc;
+
+ /* Hash this line until we find a newline. */
+ switch (ig_white_space)
+ {
+ case IGNORE_ALL_SPACE:
+ while (1)
+ {
+ if (*p == '\n')
+ {
+ ++p;
+ break;
+ }
+
+ MBC2WC (p, suffix_begin, mblength, wc, state, convfail);
+
+ if (convfail)
+ mbc[0] = *p++;
+ else if (!iswspace (wc))
+ {
+ bool flag = 0;
+
+ if (ig_case)
+ {
+ lo_wc = towlower (wc);
+ if (lo_wc != wc)
+ {
+ flag = 1;
+
+ p += mblength;
+ memset (&state_wc, '\0', sizeof(mbstate_t));
+ mblength = wcrtomb (mbc, lo_wc, &state_wc);
+
+ assert (mblength != (size_t)-1 &&
+ mblength != (size_t)-2);
+
+ mblength = (mblength < 1) ? 1 : mblength;
+ }
+ }
+
+ if (!flag)
+ {
+ for (i = 0; i < mblength; i++)
+ mbc[i] = *p++;
+ }
+ }
+ else
+ {
+ p += mblength;
+ continue;
+ }
+
+ for (i = 0; i < mblength; i++)
+ h = HASH (h, mbc[i]);
+ }
+ break;
+
+ case IGNORE_SPACE_CHANGE:
+ while (1)
+ {
+ if (*p == '\n')
+ {
+ ++p;
+ break;
+ }
+
+ MBC2WC (p, suffix_begin, mblength, wc, state, convfail);
+
+ if (!convfail && iswspace (wc))
+ {
+ while (1)
+ {
+ if (*p == '\n')
+ {
+ ++p;
+ goto hashing_done;
+ }
+
+ p += mblength;
+ MBC2WC (p, suffix_begin, mblength, wc, state, convfail);
+ if (convfail || !iswspace (wc))
+ break;
+ }
+ h = HASH (h, ' ');
+ }
+
+ /* WC is now the first non-space. */
+ if (convfail)
+ mbc[0] = *p++;
+ else
+ {
+ bool flag = 0;
+
+ if (ignore_case)
+ {
+ lo_wc = towlower (wc);
+ if (lo_wc != wc)
+ {
+ flag = 1;
+
+ p += mblength;
+ memset (&state_wc, '\0', sizeof(mbstate_t));
+ mblength = wcrtomb (mbc, lo_wc, &state_wc);
+
+ assert (mblength != (size_t)-1 &&
+ mblength != (size_t)-2);
+
+ mblength = (mblength < 1) ? 1 : mblength;
+ }
+ }
+
+ if (!flag)
+ {
+ for (i = 0; i < mblength; i++)
+ mbc[i] = *p++;
+ }
+ }
+
+ for (i = 0; i < mblength; i++)
+ h = HASH (h, mbc[i]);
+ }
+ break;
+
+ case IGNORE_TAB_EXPANSION:
+ case IGNORE_TAB_EXPANSION_AND_TRAILING_SPACE:
+ case IGNORE_TRAILING_SPACE:
+ {
+ size_t column = 0;
+ while (1)
+ {
+ if (*p == '\n')
+ {
+ ++p;
+ break;
+ }
+
+ MBC2WC (p, suffix_begin, mblength, wc, state, convfail);
+
+ if (!convfail
+ && ig_white_space & IGNORE_TRAILING_SPACE
+ && iswspace (wc))
+ {
+ char const *p1 = p;
+ while (1)
+ {
+ if (*p1 == '\n')
+ {
+ p = p1 + 1;
+ goto hashing_done;
+ }
+
+ p1 += mblength;
+ MBC2WC (p1, suffix_begin, mblength, wc, state, convfail);
+ if (convfail || !iswspace (wc))
+ break;
+ }
+ }
+
+ size_t repetitions = 1;
+ bool no_convert = 0;
+
+ if (ig_white_space & IGNORE_TAB_EXPANSION)
+ {
+ if (convfail)
+ column++;
+ else
+ switch (wc)
+ {
+ case L'\b':
+ column -= 0 < column;
+ break;
+
+ case L'\t':
+ mbc[0] = ' ';
+ mblength = 1;
+ no_convert = 1;
+ p++;
+ assert(mblength == 1);
+ repetitions = tabsize - column % tabsize;
+ column = (column + repetitions < column
+ ? 0
+ : column + repetitions);
+ break;
+
+ case L'\r':
+ column = 0;
+ break;
+
+ default:
+ column += wcwidth (wc);
+ break;
+ }
+ }
+
+ if (ig_case)
+ {
+ lo_wc = towlower (wc);
+ if (lo_wc != wc)
+ {
+ no_convert = 1;
+ p += mblength;
+ memset (&state_wc, '\0', sizeof(mbstate_t));
+ mblength = wcrtomb (mbc, lo_wc, &state_wc);
+
+ assert (mblength != (size_t)-1 &&
+ mblength != (size_t)-2);
+
+ mblength = (mblength < 1) ? 1 : mblength;
+ }
+ }
+
+ if (!no_convert)
+ for (i = 0; i < mblength; i++)
+ mbc[i] = *p++;
+
+ do
+ {
+ for (i = 0; i < mblength; i++)
+ h = HASH (h, mbc[i]);
+ }
+ while (--repetitions != 0);
+ }
+ }
+ break;
+
+ default:
+ while (1)
+ {
+ if (*p == '\n')
+ {
+ ++p;
+ break;
+ }
+
+ MBC2WC (p, suffix_begin, mblength, wc, state, convfail);
+
+ if (convfail)
+ mbc[0] = *p++;
+ else
+ {
+ int flag = 0;
+
+ if (ig_case)
+ {
+ lo_wc = towlower (wc);
+ if (lo_wc != wc)
+ {
+ flag = 1;
+ p += mblength;
+ memset (&state_wc, '\0', sizeof(mbstate_t));
+ mblength = wcrtomb (mbc, lo_wc, &state_wc);
+
+ assert (mblength != (size_t)-1 &&
+ mblength != (size_t)-2);
+
+ mblength = (mblength < 1) ? 1 : mblength;
+ }
+ }
+
+ if (!flag)
+ {
+ for (i = 0; i < mblength; i++)
+ mbc[i] = *p++;
+ }
+ }
+
+ for (i = 0; i < mblength; i++)
+ h = HASH (h, mbc[i]);
+ }
+ }
+ }
+ else
+#endif
+
/* Hash this line until we find a newline. */
switch (ig_white_space)
{
@@ -397,7 +708,7 @@ find_and_hash_each_line (struct file_dat
else if (!diff_length_compare_anyway)
continue;
- if (! lines_differ (eqline, ip))
+ if (! lines_differ (eqline, eqs[i].length + 1, ip, length + 1))
break;
}
diff -up diffutils-3.6/src/util.c.i18n diffutils-3.6/src/util.c
--- diffutils-3.6/src/util.c.i18n 2017-05-18 18:39:59.000000000 +0100
+++ diffutils-3.6/src/util.c 2017-05-22 10:51:09.050371844 +0100
@@ -985,7 +985,8 @@ finish_output (void)
Return nonzero if the lines differ. */
bool
-lines_differ (char const *s1, char const *s2)
+lines_differ_singlebyte (char const *s1, size_t s1len,
+ char const *s2, size_t s2len)
{
register char const *t1 = s1;
register char const *t2 = s2;
@@ -1141,6 +1142,354 @@ lines_differ (char const *s1, char const
return true;
}
+
+#ifdef HANDLE_MULTIBYTE
+# define MBC2WC(T, END, MBLENGTH, WC, STATE, CONVFAIL) \
+do \
+ { \
+ mbstate_t bak = STATE; \
+ \
+ CONVFAIL = 0; \
+ MBLENGTH = mbrtowc (&WC, T, END - T, &STATE); \
+ \
+ switch (MBLENGTH) \
+ { \
+ case (size_t)-2: \
+ case (size_t)-1: \
+ STATE = bak; \
+ ++CONVFAIL; \
+ /* Fall through. */ \
+ case 0: \
+ MBLENGTH = 1; \
+ } \
+ } \
+ while (0)
+
+bool
+lines_differ_multibyte (char const *s1, size_t s1len,
+ char const *s2, size_t s2len)
+{
+ char const *end1, *end2;
+ char c1, c2;
+ wchar_t wc1, wc2, wc1_bak, wc2_bak;
+ size_t mblen1, mblen2;
+ mbstate_t state1, state2, state1_bak, state2_bak;
+ int convfail1, convfail2, convfail1_bak, convfail2_bak;
+
+ char const *t1 = s1;
+ char const *t2 = s2;
+ char const *t1_bak, *t2_bak;
+ size_t column = 0;
+
+ if (ignore_white_space == IGNORE_NO_WHITE_SPACE && !ignore_case)
+ {
+ while (*t1 != '\n')
+ if (*t1++ != *t2++)
+ return 1;
+ return 0;
+ }
+
+ end1 = t1 + s1len;
+ end2 = t2 + s2len;
+
+ memset (&state1, '\0', sizeof (mbstate_t));
+ memset (&state2, '\0', sizeof (mbstate_t));
+
+ while (1)
+ {
+ c1 = *t1;
+ c2 = *t2;
+ MBC2WC (t1, end1, mblen1, wc1, state1, convfail1);
+ MBC2WC (t2, end2, mblen2, wc2, state2, convfail2);
+
+ /* Test for exact char equality first, since it's a common case. */
+ if (convfail1 ^ convfail2)
+ break;
+ else if (convfail1 && convfail2 && c1 != c2)
+ break;
+ else if (!convfail1 && !convfail2 && wc1 != wc2)
+ {
+ switch (ignore_white_space)
+ {
+ case IGNORE_ALL_SPACE:
+ /* For -w, just skip past any white space. */
+ while (1)
+ {
+ if (convfail1)
+ break;
+ else if (wc1 == L'\n' || !iswspace (wc1))
+ break;
+
+ t1 += mblen1;
+ c1 = *t1;
+ MBC2WC (t1, end1, mblen1, wc1, state1, convfail1);
+ }
+
+ while (1)
+ {
+ if (convfail2)
+ break;
+ else if (wc2 == L'\n' || !iswspace (wc2))
+ break;
+
+ t2 += mblen2;
+ c2 = *t2;
+ MBC2WC (t2, end2, mblen2, wc2, state2, convfail2);
+ }
+ t1 += mblen1;
+ t2 += mblen2;
+ break;
+
+ case IGNORE_SPACE_CHANGE:
+ /* For -b, advance past any sequence of white space in
+ line 1 and consider it just one space, or nothing at
+ all if it is at the end of the line. */
+ if (wc1 != L'\n' && iswspace (wc1))
+ {
+ size_t mblen_bak;
+ mbstate_t state_bak;
+
+ do
+ {
+ t1 += mblen1;
+ mblen_bak = mblen1;
+ state_bak = state1;
+ MBC2WC (t1, end1, mblen1, wc1, state1, convfail1);
+ }
+ while (!convfail1 && (wc1 != L'\n' && iswspace (wc1)));
+
+ state1 = state_bak;
+ mblen1 = mblen_bak;
+ t1 -= mblen1;
+ convfail1 = 0;
+ wc1 = L' ';
+ }
+
+ /* Likewise for line 2. */
+ if (wc2 != L'\n' && iswspace (wc2))
+ {
+ size_t mblen_bak;
+ mbstate_t state_bak;
+
+ do
+ {
+ t2 += mblen2;
+ mblen_bak = mblen2;
+ state_bak = state2;
+ MBC2WC (t2, end2, mblen2, wc2, state2, convfail2);
+ }
+ while (!convfail2 && (wc2 != L'\n' && iswspace (wc2)));
+
+ state2 = state_bak;
+ mblen2 = mblen_bak;
+ t2 -= mblen2;
+ convfail2 = 0;
+ wc2 = L' ';
+ }
+
+ if (wc1 != wc2)
+ {
+ /* If we went too far when doing the simple test for
+ equality, go back to the first non-whitespace
+ character in both sides and try again. */
+ if (wc2 == L' ' && wc1 != L'\n' &&
+ t1 > s1 &&
+ !convfail1_bak && iswspace (wc1_bak))
+ {
+ t1 = t1_bak;
+ wc1 = wc1_bak;
+ state1 = state1_bak;
+ convfail1 = convfail1_bak;
+ continue;
+ }
+ if (wc1 == L' ' && wc2 != L'\n'
+ && t2 > s2
+ && !convfail2_bak && iswspace (wc2_bak))
+ {
+ t2 = t2_bak;
+ wc2 = wc2_bak;
+ state2 = state2_bak;
+ convfail2 = convfail2_bak;
+ continue;
+ }
+ }
+
+ t1_bak = t1; t2_bak = t2;
+ wc1_bak = wc1; wc2_bak = wc2;
+ state1_bak = state1; state2_bak = state2;
+ convfail1_bak = convfail1; convfail2_bak = convfail2;
+
+ if (wc1 == L'\n')
+ wc1 = L' ';
+ else
+ t1 += mblen1;
+
+ if (wc2 == L'\n')
+ wc2 = L' ';
+ else
+ t2 += mblen2;
+
+ break;
+
+ case IGNORE_TRAILING_SPACE:
+ case IGNORE_TAB_EXPANSION_AND_TRAILING_SPACE:
+ if (iswspace (wc1) && iswspace (wc2))
+ {
+ char const *p;
+ wchar_t wc;
+ size_t mblength;
+ int convfail;
+ mbstate_t state;
+ bool just_whitespace_left = 1;
+ if (wc1 != L'\n')
+ {
+ mblength = mblen1;
+ p = t1;
+ memset (&state, '\0', sizeof(mbstate_t));
+ while (p < end1)
+ {
+ if (*p == '\n')
+ break;
+
+ p += mblength;
+ MBC2WC (p, end1, mblength, wc, state, convfail);
+ if (convfail || !iswspace (wc))
+ {
+ just_whitespace_left = 0;
+ break;
+ }
+ }
+ }
+ if (just_whitespace_left && wc2 != L'\n')
+ {
+ mblength = mblen2;
+ p = t2;
+ memset (&state, '\0', sizeof(mbstate_t));
+ while (p < end2)
+ {
+ if (*p == '\n')
+ break;
+
+ p += mblength;
+ MBC2WC (p, end2, mblength, wc, state, convfail);
+ if (convfail || !iswspace (wc))
+ {
+ just_whitespace_left = 0;
+ break;
+ }
+ }
+ }
+
+ if (just_whitespace_left)
+ /* Both lines have nothing but whitespace left. */
+ return false;
+ }
+
+ if (ignore_white_space == IGNORE_TRAILING_SPACE)
+ break;
+ /* Fall through. */
+ case IGNORE_TAB_EXPANSION:
+ if ((wc1 == L' ' && wc2 == L'\t')
+ || (wc1 == L'\t' && wc2 == L' '))
+ {
+ size_t column2 = column;
+
+ while (1)
+ {
+ if (convfail1)
+ {
+ ++t1;
+ break;
+ }
+ else if (wc1 == L' ')
+ column++;
+ else if (wc1 == L'\t')
+ column += tabsize - column % tabsize;
+ else
+ {
+ t1 += mblen1;
+ break;
+ }
+
+ t1 += mblen1;
+ c1 = *t1;
+ MBC2WC (t1, end1, mblen1, wc1, state1, convfail1);
+ }
+
+ while (1)
+ {
+ if (convfail2)
+ {
+ ++t2;
+ break;
+ }
+ else if (wc2 == L' ')
+ column2++;
+ else if (wc2 == L'\t')
+ column2 += tabsize - column2 % tabsize;
+ else
+ {
+ t2 += mblen2;
+ break;
+ }
+
+ t2 += mblen2;
+ c2 = *t2;
+ MBC2WC (t2, end2, mblen2, wc2, state2, convfail2);
+ }
+
+ if (column != column2)
+ return 1;
+ }
+ else
+ {
+ t1 += mblen1;
+ t2 += mblen2;
+ }
+ break;
+
+ case IGNORE_NO_WHITE_SPACE:
+ t1 += mblen1;
+ t2 += mblen2;
+ break;
+ }
+
+ /* Lowercase all letters if -i is specified. */
+ if (ignore_case)
+ {
+ if (!convfail1)
+ wc1 = towlower (wc1);
+ if (!convfail2)
+ wc2 = towlower (wc2);
+ }
+
+ if (convfail1 ^ convfail2)
+ break;
+ else if (convfail1 && convfail2 && c1 != c2)
+ break;
+ else if (!convfail1 && !convfail2 && wc1 != wc2)
+ break;
+ }
+ else
+ {
+ t1_bak = t1; t2_bak = t2;
+ wc1_bak = wc1; wc2_bak = wc2;
+ state1_bak = state1; state2_bak = state2;
+ convfail1_bak = convfail1; convfail2_bak = convfail2;
+
+ t1 += mblen1; t2 += mblen2;
+ }
+
+ if (!convfail1 && wc1 == L'\n')
+ return 0;
+
+ column += convfail1 ? 1 :
+ (wc1 == L'\t') ? tabsize - column % tabsize : wcwidth (wc1);
+ }
+
+ return 1;
+}
+#endif
/* Find the consecutive changes at the start of the script START.
Return the last link before the first gap. */

380
diffutils.spec Normal file
View File

@ -0,0 +1,380 @@
Summary: A GNU collection of diff utilities
Name: diffutils
Version: 3.7
Release: 7%{?dist}
URL: http://www.gnu.org/software/diffutils/diffutils.html
Source: ftp://ftp.gnu.org/gnu/diffutils/diffutils-%{version}.tar.xz
Patch1: diffutils-cmp-s-empty.patch
Patch2: diffutils-i18n.patch
Patch3: diffutils-fix-gnulib-tests.patch
License: GPLv3+
Provides: bundled(gnulib)
BuildRequires: gcc
BuildRequires: help2man
BuildRequires: autoconf, automake, texinfo
%description
Diffutils includes four utilities: diff, cmp, diff3 and sdiff. Diff
compares two files and shows the differences, line by line. The cmp
command shows the offset and line numbers where two files differ, or
cmp can show the characters that differ between the two files. The
diff3 command shows the differences between three files. Diff3 can be
used when two people have made independent changes to a common
original; diff3 can produce a merged file that contains both sets of
changes and warnings about conflicts. The sdiff command can be used
to merge two files interactively.
Install diffutils if you need to compare text files.
%prep
%setup -q
# For 'cmp -s', compare file sizes only if both non-zero (bug #563618).
%patch1 -p1 -b .cmp-s-empty
%patch2 -p1 -b .i18n
# Fix from gnulib upstream, commit 175e0bc (bug #1863423).
%patch3 -p1 -b .fix-gnulib-tests
# Run autoreconf for aarch64 support (bug #925256).
autoreconf
%build
%configure
make PR_PROGRAM=%{_bindir}/pr
%install
%make_install
rm -f $RPM_BUILD_ROOT%{_infodir}/dir
%find_lang %{name}
%check
# Disable update-copyright gnulib test (bug #1239428).
>gnulib-tests/test-update-copyright.sh
make check
%files -f %{name}.lang
%doc NEWS README
%license COPYING
%{_bindir}/*
%{_mandir}/*/*
%{_infodir}/diffutils.info*
%changelog
* Thu Oct 8 2020 Tim Waugh <twaugh@redhat.com> - 3.7-7
- Fix from gnulib upstream, commit 175e0bc (bug #1863423).
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.7-6
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.7-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.7-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.7-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Mon Jan 07 2019 Than Ngo <than@redhat.com> - 3.7-1
- 3.7
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.6-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.6-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Mon May 22 2017 Tim Waugh <twaugh@redhat.com> - 3.6-1
- 3.6 (bug #1453019).
* Tue Feb 21 2017 Than Ngo <than@redhat.com> - 3.5-3
- backport to fix FTBFs with GCC 7
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Wed Sep 21 2016 Tim Waugh <twaugh@redhat.com> - 3.5-1
- 3.5 (bug #1365325).
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.3-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Mon Jul 6 2015 Tim Waugh <twaugh@redhat.com> - 3.3-12
- Disable update-copyright gnulib test (bug #1239428).
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Sat Feb 21 2015 Till Maas <opensource@till.name> - 3.3-10
- Rebuilt for Fedora 23 Change
https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Fri Jul 11 2014 Tom Callaway <spot@fedoraproject.org> - 3.3-8
- fix license handling
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Thu Mar 27 2014 Tim Waugh <twaugh@redhat.com> 3.3-6
- Fix --help output and man page (bug #1079076).
* Wed Dec 4 2013 Tim Waugh <twaugh@redhat.com> 3.3-5
- Applied upstream gnulib patch to avoid -Wformat-security warning
(bug #1037038).
* Wed Oct 23 2013 Tim Waugh <twaugh@redhat.com> 3.3-4
- Fixed multibyte handling logic for diff -Z (bug #1012075).
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Mon Apr 29 2013 Tim Waugh <twaugh@redhat.com> 3.3-2
- Run autoreconf for aarch64 support (bug #925256).
* Tue Mar 26 2013 Tim Waugh <twaugh@redhat.com> 3.3-1
- 3.3 (bug #927560).
* Fri Feb 22 2013 Tim Waugh <twaugh@redhat.com> 3.2-13
- Fixed i18n handling of 'diff -E' (bug #914666).
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.2-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Fri Oct 26 2012 Tim Waugh <twaugh@redhat.com> 3.2-11
- Ported i18n patch and reinstated it (bug #870460).
* Wed Sep 19 2012 Tim Waugh <twaugh@redhat.com> 3.2-10
- Fixed license as current source says GPLv3+.
* Mon Jul 23 2012 Tim Waugh <twaugh@redhat.com> 3.2-9
- Fixed build failure.
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.2-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Mon May 21 2012 Tim Waugh <twaugh@redhat.com> 3.2-7
- Provides bundled(gnulib) (bug #821751).
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.2-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Thu Dec 8 2011 Tim Waugh <twaugh@redhat.com> 3.2-5
- Fix bug #747969 again.
* Tue Nov 29 2011 Tim Waugh <twaugh@redhat.com> 3.2-4
- Real fix for bug #747969: the diffutils info file changed name in
3.1. Updated the scriptlets to install/remove the correct filename
from the info directory.
* Fri Nov 25 2011 Tim Waugh <twaugh@redhat.com> 3.2-3
- Fixed up reference to info page in man pages (bug #747969).
* Fri Nov 25 2011 Tim Waugh <twaugh@redhat.com> 3.2-2
- Applied upstream gnulib fix for float test on ppc, as well as
correction for LDBL_MANT_DIG definition (bug #733536).
* Fri Sep 2 2011 Tim Waugh <twaugh@redhat.com> 3.2-1
- 3.2.
* Thu Aug 11 2011 Tim Waugh <twaugh@redhat.com> 3.1-1
- 3.1.
* Wed Apr 13 2011 Tim Waugh <twaugh@redhat.com> 3.0-1
- 3.0 (bug #566482).
- The i18n patch is dropped for the time being.
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.8.1-30
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Fri Jun 25 2010 Tim Waugh <twaugh@redhat.com> 2.8.1-29
- For 'cmp -s', compare file sizes only if both non-zero (bug #563618).
* Wed Apr 21 2010 Tim Waugh <twaugh@redhat.com> - 2.8.1-28
- Build requires help2man (bug #577325). Fixes empty diff man page.
* Wed Mar 3 2010 Tim Waugh <twaugh@redhat.com> - 2.8.1-27
- Added comments for all patches.
* Wed Mar 3 2010 Tim Waugh <twaugh@redhat.com> - 2.8.1-26
- Use upstream man pages.
- Ship COPYING file.
* Tue Aug 11 2009 Tim Waugh <twaugh@redhat.com> 2.8.1-25
- Only try to install the info file if it exists so that package
installation does not fail with --excludedocs (bug #515919).
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.8.1-24
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.8.1-23
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Fri Feb 13 2009 Tim Waugh <twaugh@redhat.com> 2.8.1-22
- Fixed 'sdiff -E' (bug #484892).
* Wed Feb 13 2008 Tim Waugh <twaugh@redhat.com> 2.8.1-21
- Rebuild for GCC 4.3.
* Wed Jan 2 2008 Tim Waugh <twaugh@redhat.com> 2.8.1-20
- Converted spec file to UTF-8 (bug #225696).
- Fixed summary (bug #225696).
- Fixed PreReq (bug #225696).
- Removed Prefix (bug #225696).
- Fixed build root (bug #225696).
- Avoid %%makeinstall (bug #225696).
- Fixed license tag (bug #225696).
* Tue Nov 6 2007 Tim Waugh <twaugh@redhat.com> 2.8.1-19
- Rebuilt.
* Tue Nov 6 2007 Tim Waugh <twaugh@redhat.com> 2.8.1-18
- Fixed multibyte speed improvement patch (bug #363831).
* Tue Aug 14 2007 Tim Waugh <twaugh@redhat.com> 2.8.1-17
- Multibyte speed improvement (bug #252117).
* Mon Jan 22 2007 Tim Waugh <twaugh@redhat.com> 2.8.1-16
- Make scriptlet unconditionally succeed (bug #223683).
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 2.8.1-15.2.2
- rebuild
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 2.8.1-15.2.1
- bump again for double-long bug on ppc(64)
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 2.8.1-15.2
- rebuilt for new gcc4.1 snapshot and glibc changes
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
- rebuilt
* Wed Apr 6 2005 Tim Waugh <twaugh@redhat.com> 2.8.1-15
- Fixed sdiff exit code handling (bug #152967).
* Wed Mar 2 2005 Tim Waugh <twaugh@redhat.com> 2.8.1-14
- Rebuild for new GCC.
* Wed Feb 9 2005 Tim Waugh <twaugh@redhat.com> 2.8.1-13
- Rebuilt.
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Thu Jan 8 2004 Tim Waugh <twaugh@redhat.com> 2.8.1-10
- Fix mistaken use of '|' instead of '||'.
* Sat Oct 25 2003 Tim Waugh <twaugh@redhat.com> 2.8.1-9
- Rebuilt.
* Tue Jun 17 2003 Tim Waugh <twaugh@redhat.com> 2.8.1-8
- Rebuilt.
* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Wed Jan 22 2003 Tim Powers <timp@redhat.com>
- rebuilt
* Tue Nov 19 2002 Tim Waugh <twaugh@redhat.com> 2.8.1-5
- i18n patch.
* Tue Oct 22 2002 Tim Waugh <twaugh@redhat.com> 2.8.1-4
- Ship translations.
* Fri Jun 21 2002 Tim Powers <timp@redhat.com>
- automated rebuild
* Thu May 23 2002 Tim Powers <timp@redhat.com>
- automated rebuild
* Mon Apr 22 2002 Tim Waugh <twaugh@redhat.com> 2.8.1-1
- 2.8.1.
- No longer need immunix-owl-tmp patch.
* Wed Feb 27 2002 Tim Waugh <twaugh@redhat.com> 2.7.2-5
- Rebuild in new environment.
* Wed Jan 09 2002 Tim Powers <timp@redhat.com>
- automated rebuild
* Fri Nov 02 2001 Tim Waugh <twaugh@redhat.com> 2.7.2-3
- Make sure %%post scriplet doesn't fail if --excludedocs is used.
* Fri Jun 01 2001 Tim Waugh <twaugh@redhat.com> 2.7.2-2
- Install diff.1, since it's no longer in man-pages.
* Fri Mar 30 2001 Tim Waugh <twaugh@redhat.com> 2.7.2-1
- 2.7.2.
* Wed Jul 12 2000 Prospector <bugzilla@redhat.com>
- automatic rebuild
* Thu Jul 06 2000 Trond Eivind Glomsrød <teg@redhat.com>
- fix %%changelog entries (escape them)
- update source location
- remove manual stripping
- add URL
* Tue Jun 06 2000 Than Ngo <than@redhat.de>
- add %%defattr
- use rpm macros
* Wed May 31 2000 Ngo Than <than@redhat.de>
- put man pages and info files in correct place
- cleanup specfile
* Thu Feb 03 2000 Preston Brown <pbrown@redhat.com>
- rebuild to gzip man pages.
* Mon Apr 19 1999 Jeff Johnson <jbj@redhat.com>
- man pages not in %%files.
- but avoid conflict for diff.1
* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com>
- auto rebuild in the new build environment (release 14)
* Sun Mar 14 1999 Jeff Johnson <jbj@redhat.com>
- add man pages (#831).
- add %%configure and Prefix.
* Thu Dec 17 1998 Cristian Gafton <gafton@redhat.com>
- build for glibc 2.1
* Tue Jul 14 1998 Bill Kawakami <billk@home.com>
- included the four man pages stolen from Slackware
* Tue May 05 1998 Prospector System <bugs@redhat.com>
- translations modified for de, fr, tr
* Sun May 03 1998 Cristian Gafton <gafton@redhat.com>
- fixed spec file to reference/use the $RPM_BUILD_ROOT always
* Wed Dec 31 1997 Otto Hammersmith <otto@redhat.com>
- fixed where it looks for 'pr' (/usr/bin, rather than /bin)
* Fri Oct 17 1997 Donnie Barnes <djb@redhat.com>
- added BuildRoot
* Sun Sep 14 1997 Erik Troan <ewt@redhat.com>
- uses install-info
* Mon Jun 02 1997 Erik Troan <ewt@redhat.com>
- built against glibc

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (diffutils-3.7.tar.xz) = 7b12cf8aea1b9844773748f72272d9c6a38adae9c3c3a8c62048f91fb56c60b76035fa5f51665dceaf2cfbf1d1f4a3efdcc24bf47a5a16ff4350543314b12c9c

View File

@ -0,0 +1,63 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Makefile of /CoreOS/diffutils/Regression/cmp-s-returns-1-even-if-files-are-identical
# Description: Test for cmp -s returns 1 even if files are identical
# Author: Jeffrey Bastian <jbastian@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export TEST=/CoreOS/diffutils/Regression/cmp-s-returns-1-even-if-files-are-identical
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
chmod a+x runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@echo "Owner: Jeffrey Bastian <jbastian@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "Description: Test for cmp -s returns 1 even if files are identical" >> $(METADATA)
@echo "Type: Regression" >> $(METADATA)
@echo "TestTime: 5m" >> $(METADATA)
@echo "RunFor: diffutils" >> $(METADATA)
@echo "Requires: diffutils" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2" >> $(METADATA)
@echo "Confidential: no" >> $(METADATA)
@echo "Destructive: no" >> $(METADATA)
rhts-lint $(METADATA)

View File

@ -0,0 +1,9 @@
PURPOSE of /CoreOS/diffutils/Regression/cmp-s-returns-1-even-if-files-are-identical
Description: Test for cmp -s returns 1 even if files are identical
Author: Jeffrey Bastian <jbastian@redhat.com>
Bug summary: cmp -s returns 1 even if files are identical
Description:
'cmp -s' can return 1 even if files are identical, for example, if comparing
a file from /proc with a copy of that file in /tmp, since all files in
/proc have a size of 0 bytes.

View File

@ -0,0 +1,51 @@
#!/bin/bash
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /CoreOS/diffutils/Regression/cmp-s-returns-1-even-if-files-are-identical
# Description: Test for cmp -s returns 1 even if files are identical
# Author: Jeffrey Bastian <jbastian@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include rhts environment
. /usr/bin/rhts-environment.sh
. /usr/share/rhts-library/rhtslib.sh
PACKAGE="diffutils"
#set -x
rlJournalStart
rlPhaseStartSetup
rlAssertRpm $PACKAGE
rlRun "TmpDir=\`mktemp -d\`" 0 "Creating tmp directory"
rlPhaseEnd
rlPhaseStartTest
rlAssertExists $TmpDir
rlRun "cp /proc/version $TmpDir" 0 "Copy /proc/version to tmp directory"
rlRun "cmp -s /proc/version $TmpDir/version" 0 "Compare /proc/version to tmp copy"
rlPhaseEnd
rlPhaseStartCleanup
rlRun "rm -fr $TmpDir" 0 "Removing tmp directory"
rlPhaseEnd
rlJournalEnd
rlJournalPrintText

View File

@ -0,0 +1,64 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Makefile of /CoreOS/diffutils/Regression/diff-Z-hangs
# Description: Test for diffutils to check if comparing two files using diff -Z with mixed line endings doesn't hang
# Author: Filip Holec <fholec@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export TEST=/CoreOS/diffutils/Regression/diff-Z-hangs
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
test -x runtest.sh || chmod a+x runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@echo "Owner: Filip Holec <fholec@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "Description: Test for diffutils to check if comparing two files using diff -Z with mixed line endings doesn't hang" >> $(METADATA)
@echo "Type: Regression" >> $(METADATA)
@echo "TestTime: 5m" >> $(METADATA)
@echo "RunFor: diffutils" >> $(METADATA)
@echo "Requires: diffutils" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2" >> $(METADATA)
@echo "Confidential: no" >> $(METADATA)
@echo "Destructive: no" >> $(METADATA)
@echo "Releases: RHEL7" >> $(METADATA)
rhts-lint $(METADATA)

View File

@ -0,0 +1,4 @@
PURPOSE of /CoreOS/diffutils/Regression/diff-Z-hangs
Description: Test for diffutils to check if comparing two files using diff -Z with mixed line endings doesn't hang
Author: Filip Holec <fholec@redhat.com>
Bug summary: diff -Z hangs

View File

@ -0,0 +1,56 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /CoreOS/diffutils/Regression/diff-Z-hangs
# Description: Test for diffutils to check if comparing two files using diff -Z with mixed line endings doesn't hang
# Author: Filip Holec <fholec@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/bin/rhts-environment.sh
. /usr/share/beakerlib/beakerlib.sh
PACKAGE="diffutils"
rlJournalStart
rlPhaseStartSetup
rlAssertRpm $PACKAGE
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
rlRun "pushd $TmpDir"
rlPhaseEnd
rlPhaseStartTest
rlRun "diff -Z <(printf 'a\nb\n') <(printf 'a\nb\n'); echo $?" \
0 "First simple test"
rlRun "timeout 10s diff -Z <(printf 'a\r\nb\n') <(printf 'a\nb\r\n')" \
0 "Main test, should not timeout (124)"
rlRun "timeout 10s diff -Z <(echo 'a') <(echo -n 'a')" \
0 "Second test, should not timeout (124)"
rlPhaseEnd
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,61 @@
# Makefile - diff-hang-long-files
# Author: Michal Fabry <mfabry@redhat.com>
# Location: /CoreOS/diffutils/Regression/diff-hang-long-files/Makefile
# Description: Diff appears to hang in long file
# Copyright (c) 2009 Red Hat, Inc. All rights reserved. This copyrighted material
# is made available to anyone wishing to use, modify, copy, or
# redistribute it subject to the terms and conditions of the GNU General
# Public License v.2.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
TOPLEVEL_NAMESPACE=/CoreOS
PACKAGE_NAME=diffutils
RELATIVE_PATH=Regression/diff-hang-long-files
export TEST=$(TOPLEVEL_NAMESPACE)/$(PACKAGE_NAME)/$(RELATIVE_PATH)
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
chmod a+x ./runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@touch $(METADATA)
@echo "Owner: Michal Fabry <mfabry@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Description: Diff appears to hang in long file" >> $(METADATA)
@echo "Type: Regression" >> $(METADATA)
@echo "TestTime: 5m" >> $(METADATA)
@echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA)
@echo "Requires: $(PACKAGE_NAME) words time" >> $(METADATA)
@echo "License: GPLv2" >> $(METADATA)
rhts-lint $(METADATA)

View File

@ -0,0 +1,10 @@
Test Name: diff-hang-long-files
Author: Michal Fabry <mfabry@redhat.com>
Location: /CoreOS/diffutils/Regression/diff-hang-long-files
Short Description: Diff appears to hang in long file
Long Description:
Running the "diff -bBw" command on a very large input file (eg 250 MB), in a multi-byte locale (ie UTF-8), took a very long time to complete, if at all. In a reported case, a diff ran for multiple days and did not complete. In certain situations, this could cause 100% CPU usage.

View File

@ -0,0 +1,78 @@
#!/bin/bash
# Author: Michal Fabry <mfabry@redhat.com>
# Copyright (c) 2009 Red Hat, Inc. All rights reserved. This copyrighted material
# is made available to anyone wishing to use, modify, copy, or
# redistribute it subject to the terms and conditions of the GNU General
# Public License v.2.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Include Beaker environment
. /usr/bin/rhts-environment.sh || exit 1
. /usr/share/beakerlib/beakerlib.sh || exit 1
rlJournalStart
# ===================================================================
# Setup - ABORT if some assert fails
# ===================================================================
rlPhaseStartSetup Setup
set -o pipefail
function count_lines() {
[ ! -r "$1" ] && return 1
wc -l "$1" | sed "s/^\s*\([0-9]\+\)\s\+.*$/\1/"
}
rlPhaseEnd
# ===================================================================
# Start the test
# ===================================================================
# -------------------------------------------------------------------
# Create connection
rlPhaseStartTest "Create big file"
# -------------------------------------------------------------------
log=$( mktemp /tmp/log.XXXXXX )
rlRun "tr -d \"'\" <words | xargs echo >long-line" 0 "Create big file part 1"
rlRun "for a in \$(seq 30); do cat long-line; done >long-lines" 0 "Create big file part 2"
rlAssertExists 'long-lines'
# -------------------------------------------------------------------
# Test /usr/sbin/ss output
rlPhaseEnd; rlPhaseStartTest "Test diff"
# -------------------------------------------------------------------
log2=$( mktemp /tmp/log.XXXXXX )
now=$(date '+%s')
rlRun "diff -bBw long-lines <(sed -e 's/ / /' long-lines) >/dev/null"
rlAssertGreater "Less than 150 seconds" 150 `expr $now - $(date '+%s')`
rlPhaseEnd
# ===================================================================
# Start the cleanup
# ===================================================================
rlPhaseStartCleanup Cleanup
rm -f $log $log2 long-line long-lines
rlAssert0 "Remove the log" $?
rlPhaseEnd
#rlCreateLogFromJournal | tee $OUTPUTFILE
rlJournalPrintText

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,63 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Makefile of /CoreOS/diffutils/Regression/diff-w-b-doesn-t-treat-U3000-IDEOGRAPHIC-SPACE-as-space
# Description: Test for diffutils to ensure U3000 ideographic space is treated as space when used -b or -w options
# Author: Filip Holec <fholec@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export TEST=/CoreOS/diffutils/Regression/diff-w-b-doesn-t-treat-U3000-IDEOGRAPHIC-SPACE-as-space
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE a b
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
test -x runtest.sh || chmod a+x runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@echo "Owner: Filip Holec <fholec@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "Description: Test for diffutils to ensure U3000 ideographic space is treated as space when used -b or -w options" >> $(METADATA)
@echo "Type: Regression" >> $(METADATA)
@echo "TestTime: 5m" >> $(METADATA)
@echo "RunFor: diffutils" >> $(METADATA)
@echo "Requires: diffutils" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2" >> $(METADATA)
@echo "Confidential: no" >> $(METADATA)
@echo "Destructive: no" >> $(METADATA)
rhts-lint $(METADATA)

View File

@ -0,0 +1,6 @@
PURPOSE of /CoreOS/diffutils/Regression/diff-w-b-doesn-t-treat-U3000-IDEOGRAPHIC-SPACE-as-space
Description: Test for diffutils to ensure U3000 ideographic space is treated as space when used -b or -w options
Author: Filip Holec <fholec@redhat.com>
Bug summary: diff -w/-b doesn't treat U3000 (IDEOGRAPHIC SPACE) as space
Test for diffutils to ensure U3000 ideographic space is treated as space when used -b or -w options

View File

@ -0,0 +1 @@
a b

View File

@ -0,0 +1 @@
a b

View File

@ -0,0 +1,58 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /CoreOS/diffutils/Regression/diff-w-b-doesn-t-treat-U3000-IDEOGRAPHIC-SPACE-as-space
# Description: Test for diffutils to ensure U3000 ideographic space is treated as space when used -b or -w options
# Author: Filip Holec <fholec@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/bin/rhts-environment.sh
. /usr/share/beakerlib/beakerlib.sh
PACKAGE="diffutils"
# This test requires a non-C locale. Lets make it predictable
export LC_ALL=en_US.utf8
rlJournalStart
rlPhaseStartSetup
rlAssertRpm $PACKAGE
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
rlRun "cp a b $TmpDir" 0 "Copy files to $TmpDir"
rlRun "pushd $TmpDir"
rlPhaseEnd
rlPhaseStartTest
rlRun "diff -w a b >out" 0 "diff with -w option"
rlRun "[ ! -s out ]" 0 "Output should be empty"
rlRun "diff -b a b >out" 0 "diff with -b option"
rlRun "[ ! -s out ]" 0 "Output should be empty"
rlPhaseEnd
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,63 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Makefile of /CoreOS/diffutils/Regression/sdiff-does-not-recognize-E-option
# Description: Test for sdiff does not recognize -E option
# Author: Martin Kyral <mkyral@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2012 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export TEST=/CoreOS/diffutils/Regression/sdiff-does-not-recognize-E-option
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE file1 file2
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
test -x runtest.sh || chmod a+x runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@echo "Owner: Martin Kyral <mkyral@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "Description: Test for sdiff does not recognize -E option" >> $(METADATA)
@echo "Type: Regression" >> $(METADATA)
@echo "TestTime: 10m" >> $(METADATA)
@echo "RunFor: diffutils" >> $(METADATA)
@echo "Requires: diffutils" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2" >> $(METADATA)
@echo "Confidential: yes" >> $(METADATA)
@echo "Destructive: no" >> $(METADATA)
rhts-lint $(METADATA)

View File

@ -0,0 +1,6 @@
PURPOSE of /CoreOS/diffutils/Regression/sdiff-does-not-recognize-E-option
Description: Test for sdiff does not recognize -E option
Author: Martin Kyral <mkyral@redhat.com>
Bug summary: sdiff does not recognize -E option
The test runs sdiff -E on two files differing just in use of tab/8 spaces. sdiff shall not fail and shall return that the files are identical.

View File

@ -0,0 +1,2 @@
aaa
bbb

View File

@ -0,0 +1,2 @@
aaa
bbb

View File

@ -0,0 +1,52 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /CoreOS/diffutils/Regression/sdiff-does-not-recognize-E-option
# Description: Test for sdiff does not recognize -E option
# Author: Martin Kyral <mkyral@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2012 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/bin/rhts-environment.sh
. /usr/lib/beakerlib/beakerlib.sh
PACKAGE="diffutils"
rlJournalStart
rlPhaseStartSetup
rlAssertRpm $PACKAGE
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
rlRun "cp file1 file2 $TmpDir"
rlRun "pushd $TmpDir"
rlPhaseEnd
rlPhaseStartTest
rlRun "sdiff -E file1 file2"
rlPhaseEnd
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

18
tests/tests.yml Normal file
View File

@ -0,0 +1,18 @@
---
# Tests that run in classic context
- hosts: localhost
roles:
- role: standard-test-beakerlib
tags:
- classic
- container
- atomic
tests:
- cmp-s-returns-1-even-if-files-are-identical
- diff-hang-long-files
- diff-w-b-doesn-t-treat-U3000-IDEOGRAPHIC-SPACE-as-space
- diff-Z-hangs
- sdiff-does-not-recognize-E-option
- whitespace
required_packages:
- findutils # beakerlib needs find command

85
tests/whitespace/Makefile Normal file
View File

@ -0,0 +1,85 @@
# Copyright (c) 2006 Red Hat, Inc. All rights reserved. This copyrighted material
# is made available to anyone wishing to use, modify, copy, or
# redistribute it subject to the terms and conditions of the GNU General
# Public License v.2.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Author: bpeck@redhat.com
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Example Makefile for RHTS #
# This example is geared towards a test for a specific package #
# It does most of the work for you, but may require further coding #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# The toplevel namespace within which the test lives.
# FIXME: You will need to change this:
TOPLEVEL_NAMESPACE=CoreOS
# The name of the package under test:
# FIXME: you wil need to change this:
PACKAGE_NAME=diffutils
# The path of the test below the package:
# FIXME: you wil need to change this:
RELATIVE_PATH=whitespace
# Version of the Test. Used with make tag.
export TESTVERSION=1.1
# The combined namespace of the test.
export TEST=/$(TOPLEVEL_NAMESPACE)/$(PACKAGE_NAME)/$(RELATIVE_PATH)
# A phony target is one that is not really the name of a file.
# It is just a name for some commands to be executed when you
# make an explicit request. There are two reasons to use a
# phony target: to avoid a conflict with a file of the same
# name, and to improve performance.
.PHONY: all install download clean
# executables to be built should be added here, they will be generated on the system under test.
BUILT_FILES=
# data files, .c files, scripts anything needed to either compile the test and/or run it.
FILES=$(METADATA) runtest.sh Makefile PURPOSE file1 file2
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
chmod a+x ./runtest.sh
clean:
rm -f *~ *.rpm $(BUILT_FILES)
# You may need to add other targets e.g. to build executables from source code
# Add them here:
# Include Common Makefile
include /usr/share/rhts/lib/rhts-make.include
# Generate the testinfo.desc here:
$(METADATA): Makefile
@touch $(METADATA)
# Change to the test owner's name
@echo "Owner: Bill Peck <bpeck@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "License: GPL V2" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Description: diff -b should ignore whitespace ">> $(METADATA)
@echo "TestTime: 5m" >> $(METADATA)
@echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA)
@echo "Requires: $(PACKAGE_NAME)" >> $(METADATA)
# You may need other fields here; see the documentation
rhts-lint $(METADATA)

10
tests/whitespace/PURPOSE Normal file
View File

@ -0,0 +1,10 @@
Create 2 files, f1, f2 with contents "abc" and "abc " (without quotes),
i.e. the same line with a space on the end.
Diff ignoring whitespace:
diff -b f1 f2
should produce no diff output, but does on F8. Works fine on FC6.
version: diffutils-2.8.1-17.fc8

1
tests/whitespace/file1 Normal file
View File

@ -0,0 +1 @@
abc

1
tests/whitespace/file2 Normal file
View File

@ -0,0 +1 @@
abc

View File

@ -0,0 +1,37 @@
#!/bin/sh
# Copyright (c) 2006 Red Hat, Inc. All rights reserved. This copyrighted material
# is made available to anyone wishing to use, modify, copy, or
# redistribute it subject to the terms and conditions of the GNU General
# Public License v.2.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Author: Bill Peck
. /usr/bin/rhts-environment.sh
. /usr/share/rhts-library/rhtslib.sh
PACKAGE="diffutils"
rlJournalStart
rlPhaseStartSetup
rlAssertRpm $PACKAGE
rlRun "TmpDir=\`mktemp -d\`" 0 "Creating tmp directory"
rlPhaseEnd
rlPhaseStartTest
rlRun "diff -b file1 file2"
rlPhaseEnd
rlPhaseStartCleanup
rlRun "rm -fr $TmpDir" 0 "Removing tmp directory"
rlPhaseEnd
rlJournalEnd
rlJournalPrintText

371
upstream-key.gpg Normal file
View File

@ -0,0 +1,371 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
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
TsT5hoBVIBulDJ13iotYt5qIhAlhASJs
=Nb2k
-----END PGP PUBLIC KEY BLOCK-----