From 1b192351dc0ef09423ee9a40d68bacc3137c9aec Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Mon, 9 Jul 2018 17:32:04 +0300 Subject: Make repository_url(string) to throw invalid_argument for empty string --- libbpkg/manifest.cxx | 4 +++- libbpkg/manifest.hxx | 3 +++ tests/repository-location/driver.cxx | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libbpkg/manifest.cxx b/libbpkg/manifest.cxx index af2a889..c2d7eee 100644 --- a/libbpkg/manifest.cxx +++ b/libbpkg/manifest.cxx @@ -1923,10 +1923,12 @@ namespace bpkg return scheme_type::file; } - // Consider URL as a path if the URL parsing failed. + // Consider non-empty URL as a path if the URL parsing failed. If the URL + // is empty then leave the basic_url ctor to throw. // else if (scheme.empty ()) { + if (!url.empty ()) try { size_t p (url.find ('#')); diff --git a/libbpkg/manifest.hxx b/libbpkg/manifest.hxx index 59359b4..72af14c 100644 --- a/libbpkg/manifest.hxx +++ b/libbpkg/manifest.hxx @@ -584,6 +584,9 @@ namespace bpkg // it is absolute and the authority or fragment is present. Otherwise // represent it as a local path, appending the fragment if present. // + // - repository_url(string) ctor throws invalid_argument exception for an + // empty string. + // using repository_url = butl::basic_url; diff --git a/tests/repository-location/driver.cxx b/tests/repository-location/driver.cxx index 4b4a807..bb55cf9 100644 --- a/tests/repository-location/driver.cxx +++ b/tests/repository-location/driver.cxx @@ -231,7 +231,7 @@ namespace bpkg // Test valid locations. // { - repository_location l (loc ("")); + repository_location l (repository_url (), repository_type::pkg); assert (l.string ().empty ()); assert (l.canonical_name ().empty ()); } -- cgit v1.1