tests/uname.test: check abbreviated output, use print_quoted_string
* tests/uname.c (main): Use print_quoted_string to print
utsname members. Add abbrev check.
* tests/uname.test: Add abbrev check.
diff --git a/tests/uname.c b/tests/uname.c
index 0f1b5f3..571cf9b 100644
--- a/tests/uname.c
+++ b/tests/uname.c
@@ -7,25 +7,31 @@
# include <sys/utsname.h>
# include <unistd.h>
-int main()
+int main(int ac, char **av)
{
+ int abbrev = ac > 1;
struct utsname *const uname = tail_alloc(sizeof(struct utsname));
int rc = syscall(__NR_uname, uname);
- printf("uname({sysname=\"%s\", nodename=\"%s\", release=\"%s\""
- ", version=\"%s\", machine=\"%s\""
+ printf("uname({sysname=\"");
+ print_quoted_string(uname->sysname);
+ printf("\", nodename=\"");
+ print_quoted_string(uname->nodename);
+ if (abbrev) {
+ printf("\", ...");
+ } else {
+ printf("\", release=\"");
+ print_quoted_string(uname->release);
+ printf("\", version=\"");
+ print_quoted_string(uname->version);
+ printf("\", machine=\"");
+ print_quoted_string(uname->machine);
# ifdef HAVE_STRUCT_UTSNAME_DOMAINNAME
- ", domainname=\"%s\""
+ printf("\", domainname=\"");
+ print_quoted_string(uname->domainname);
# endif
- "}) = %d\n",
- uname->sysname,
- uname->nodename,
- uname->release,
- uname->version,
- uname->machine,
-# ifdef HAVE_STRUCT_UTSNAME_DOMAINNAME
- uname->domainname,
-# endif
- rc);
+ printf("\"");
+ }
+ printf("}) = %d\n", rc);
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/uname.test b/tests/uname.test
index e699f1c..9ba529b 100755
--- a/tests/uname.test
+++ b/tests/uname.test
@@ -6,10 +6,16 @@
check_prog uniq
-run_prog > /dev/null
OUT="$LOG.out"
EXP="$LOG.exp"
+
+run_prog > /dev/null
run_strace -v -euname $args > "$EXP"
uniq < "$LOG" > "$OUT"
+
+run_prog "./${ME_%.test}" abbrev > /dev/null
+run_strace -euname $args >> "$EXP"
+uniq < "$LOG" >> "$OUT"
+
match_diff "$OUT" "$EXP"
rm -f "$OUT" "$EXP"