aboutsummaryrefslogtreecommitdiff
path: root/build2/test/script/script.cxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2017-01-20 20:25:59 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2017-01-24 14:53:00 +0300
commit28106f96de8ae5cdb3a0ee0e3a8a8185551e3b00 (patch)
tree8b912a7c9a2bd2ba1263695428d8343d022953a5 /build2/test/script/script.cxx
parenteeed734583c2f553e71ae0bd78a4b6e7e4d9cc2b (diff)
Add support for comparison of test command output to a file
Diffstat (limited to 'build2/test/script/script.cxx')
-rw-r--r--build2/test/script/script.cxx12
1 files changed, 9 insertions, 3 deletions
diff --git a/build2/test/script/script.cxx b/build2/test/script/script.cxx
index 6f56661..f5cec44 100644
--- a/build2/test/script/script.cxx
+++ b/build2/test/script/script.cxx
@@ -80,7 +80,7 @@ namespace build2
switch (r.type)
{
case redirect_type::none: assert (false); break;
- case redirect_type::pass: o << '+'; break;
+ case redirect_type::pass: o << '|'; break;
case redirect_type::null: o << '-'; break;
case redirect_type::merge: o << '&' << r.fd; break;
@@ -141,9 +141,15 @@ namespace build2
case redirect_type::file:
{
- // Add '>>' or '<<' (and so make it '<<<' or '>>>').
+ // For stdin or stdout-comparison redirect add '>>' or '<<' (and
+ // so make it '<<<' or '>>>'). Otherwise add '+' or '=' (and so
+ // make it '>+' or '>=').
//
- o << d << d << r.modifiers;
+ if (d == '<' || r.file.mode == redirect_fmode::compare)
+ o << d << d;
+ else
+ o << (r.file.mode == redirect_fmode::append ? '+' : '=');
+
print_path (r.file.path);
break;
}