From f4660720e3ab0dc70d31fd39d48199590810ab03 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 11 Jun 2015 16:53:03 +0200 Subject: Implement manifest serializer --- tests/manifest-roundtrip/buildfile | 9 ++++++ tests/manifest-roundtrip/driver.cxx | 57 +++++++++++++++++++++++++++++++++++++ tests/manifest-roundtrip/manifest | 29 +++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 tests/manifest-roundtrip/buildfile create mode 100644 tests/manifest-roundtrip/driver.cxx create mode 100644 tests/manifest-roundtrip/manifest (limited to 'tests/manifest-roundtrip') diff --git a/tests/manifest-roundtrip/buildfile b/tests/manifest-roundtrip/buildfile new file mode 100644 index 0000000..0883303 --- /dev/null +++ b/tests/manifest-roundtrip/buildfile @@ -0,0 +1,9 @@ +# file : tests/manifest-roundtrip/buildfile +# copyright : Copyright (c) 2014-2015 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +exe{driver}: cxx{driver} ../../bpkg/lib{bpkg} + +include ../../bpkg/ + +# test: ./driver manifest | diff -u manifest - diff --git a/tests/manifest-roundtrip/driver.cxx b/tests/manifest-roundtrip/driver.cxx new file mode 100644 index 0000000..45abc67 --- /dev/null +++ b/tests/manifest-roundtrip/driver.cxx @@ -0,0 +1,57 @@ +// file : tests/manifest-roundtrip/driver.cxx -*- C++ -*- +// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#include +#include + +#include +#include + +using namespace std; +using namespace bpkg; + +int +main (int argc, char* argv[]) +{ + if (argc != 2) + { + cerr << "usage: " << argv[0] << " " << endl; + return 1; + } + + try + { + ifstream ifs; + ifs.exceptions (ifstream::badbit | ifstream::failbit); + ifs.open (argv[1], ifstream::in | ifstream::binary); + + manifest_parser p (ifs, ""); + manifest_serializer s (cout, "stdout"); + + for (bool eom (true), eos (false); !eos; ) + { + auto nv (p.next ()); + + if (nv.empty ()) // End pair. + { + eos = eom; + eom = true; + } + else + eom = false; + + s.next (nv.name, nv.value); + } + } + catch (const ios_base::failure&) + { + cerr << "io failure" << endl; + return 1; + } + catch (const std::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..31d6b28 --- /dev/null +++ b/tests/manifest-roundtrip/manifest @@ -0,0 +1,29 @@ +: 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 +requires: c++11 +: +path: c:\windows\\ +path: \ + +c:\windows\\ +\ -- cgit v1.1