aboutsummaryrefslogtreecommitdiff
path: root/tests/manifest-roundtrip
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2016-09-29 21:54:14 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2016-09-29 23:28:03 +0300
commit25a9484378ddaae9602ec54532cdc03b1f1924ef (patch)
tree7aafb613337eb6c6aee4fef78b8345405c4d7f70 /tests/manifest-roundtrip
parentf4f6d906733027a7bd802e035b3e9852db7be967 (diff)
Add manifest_parser and manifest_serializer
Diffstat (limited to 'tests/manifest-roundtrip')
-rw-r--r--tests/manifest-roundtrip/buildfile8
-rw-r--r--tests/manifest-roundtrip/driver.cxx52
-rw-r--r--tests/manifest-roundtrip/manifest32
3 files changed, 92 insertions, 0 deletions
diff --git a/tests/manifest-roundtrip/buildfile b/tests/manifest-roundtrip/buildfile
new file mode 100644
index 0000000..78e5a08
--- /dev/null
+++ b/tests/manifest-roundtrip/buildfile
@@ -0,0 +1,8 @@
+# file : tests/manifest-roundtrip/buildfile
+# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd
+# license : MIT; see accompanying LICENSE file
+
+exe{driver}: cxx{driver} ../../butl/lib{butl}
+exe{driver}: test.roundtrip = manifest
+
+include ../../butl/
diff --git a/tests/manifest-roundtrip/driver.cxx b/tests/manifest-roundtrip/driver.cxx
new file mode 100644
index 0000000..e1ce5b8
--- /dev/null
+++ b/tests/manifest-roundtrip/driver.cxx
@@ -0,0 +1,52 @@
+// file : tests/manifest-roundtrip/driver.cxx -*- C++ -*-
+// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+#include <cassert>
+#include <iostream>
+
+#include <butl/fdstream>
+#include <butl/manifest-parser>
+#include <butl/manifest-serializer>
+
+using namespace std;
+using namespace butl;
+
+int
+main (int argc, char* argv[])
+{
+ if (argc != 2)
+ {
+ cerr << "usage: " << argv[0] << " <file>" << endl;
+ return 1;
+ }
+
+ try
+ {
+ ifdstream ifs (argv[1]);
+ manifest_parser p (ifs, argv[1]);
+
+ stdout_fdmode (fdstream_mode::binary); // Write in binary mode.
+ manifest_serializer s (cout, "stdout");
+
+ for (bool eom (true), eos (false); !eos; )
+ {
+ manifest_name_value nv (p.next ());
+
+ if (nv.empty ()) // End pair.
+ {
+ eos = eom;
+ eom = true;
+ }
+ else
+ eom = false;
+
+ s.next (nv.name, nv.value);
+ }
+ }
+ catch (const exception& e)
+ {
+ cerr << e.what () << endl;
+ return 1;
+ }
+}
diff --git a/tests/manifest-roundtrip/manifest b/tests/manifest-roundtrip/manifest
new file mode 100644
index 0000000..23c2730
--- /dev/null
+++ b/tests/manifest-roundtrip/manifest
@@ -0,0 +1,32 @@
+: 1
+name: libbpkg
+version: 1.0.1
+summary: build2 package manager library
+license: MIT
+tags: c++, package, manager, bpkg
+description: A very very very very very very very very very very very very\
+ very very very very very very very very very very very very very very very\
+ very very long description.
+changes: \
+1.0.1
+ - Fixed a very very very very very very very very very very very very very\
+ very annoying bug.
+1.0.0
+ - Firts public release
+ - Lots of really cool features
+\
+url: http://www.codesynthesis.com/projects/libstudxml/
+email: build-users@codesynthesis.com; Public mailing list, posts by\
+ non-members are allowed but moderated.
+package-email: boris@codesynthesis.com; Direct email to the author.
+depends: libbutl
+depends: * build2
+depends: ?* bpkg
+requires: ?* linux | windows
+requires: c++11
+:
+path: c:\windows\\
+path: \
+
+c:\windows\\
+\