diff options
| -rw-r--r-- | toolsrc/include/tests.utils.h | 3 | ||||
| -rw-r--r-- | toolsrc/include/vcpkg/statusparagraphs.h | 7 | ||||
| -rw-r--r-- | toolsrc/src/tests.plan.cpp | 7 | ||||
| -rw-r--r-- | toolsrc/src/tests.statusparagraphs.cpp | 10 | ||||
| -rw-r--r-- | toolsrc/src/tests.utils.cpp | 7 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/build.cpp | 6 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/statusparagraphs.cpp | 15 |
7 files changed, 32 insertions, 23 deletions
diff --git a/toolsrc/include/tests.utils.h b/toolsrc/include/tests.utils.h index 0c0add7ab..b23abe4eb 100644 --- a/toolsrc/include/tests.utils.h +++ b/toolsrc/include/tests.utils.h @@ -6,6 +6,7 @@ #include <vcpkg/packagespec.h> #include <vcpkg/packagespecparseresult.h> #include <vcpkg/statusparagraph.h> +#include <vcpkg/triplet.h> #include <memory> @@ -38,3 +39,5 @@ T&& unwrap(vcpkg::Optional<T>&& opt) Assert::IsTrue(opt.has_value()); return std::move(*opt.get()); } + +vcpkg::PackageSpec unsafe_pspec(std::string name, vcpkg::Triplet t = vcpkg::Triplet::X86_WINDOWS); diff --git a/toolsrc/include/vcpkg/statusparagraphs.h b/toolsrc/include/vcpkg/statusparagraphs.h index 51fbd14dd..4e31b48d8 100644 --- a/toolsrc/include/vcpkg/statusparagraphs.h +++ b/toolsrc/include/vcpkg/statusparagraphs.h @@ -23,11 +23,8 @@ namespace vcpkg std::vector<const std::unique_ptr<StatusParagraph>*> find_all_installed(const PackageSpec& spec) const; - const_iterator find_installed(const PackageSpec& spec) const - { - return find_installed(spec.name(), spec.triplet()); - } - const_iterator find_installed(const std::string& name, const Triplet& triplet) const; + const_iterator find_installed(const PackageSpec& spec) const; + bool is_installed(const PackageSpec& spec) const; iterator insert(std::unique_ptr<StatusParagraph>); diff --git a/toolsrc/src/tests.plan.cpp b/toolsrc/src/tests.plan.cpp index 67abf8de0..86386be14 100644 --- a/toolsrc/src/tests.plan.cpp +++ b/toolsrc/src/tests.plan.cpp @@ -504,13 +504,6 @@ namespace UnitTest1 } }; - static PackageSpec unsafe_pspec(std::string name, Triplet t = Triplet::X86_WINDOWS) - { - auto m_ret = PackageSpec::from_name_and_triplet(name, t); - Assert::IsTrue(m_ret.has_value()); - return m_ret.value_or_exit(VCPKG_LINE_INFO); - } - class RemovePlanTests : public TestClass<RemovePlanTests> { TEST_METHOD(basic_remove_scheme) diff --git a/toolsrc/src/tests.statusparagraphs.cpp b/toolsrc/src/tests.statusparagraphs.cpp index ed6eaa764..0d5324a8c 100644 --- a/toolsrc/src/tests.statusparagraphs.cpp +++ b/toolsrc/src/tests.statusparagraphs.cpp @@ -1,5 +1,7 @@ #include "tests.pch.h" +#include <tests.utils.h> + using namespace Microsoft::VisualStudio::CppUnitTestFramework; using namespace vcpkg; @@ -25,7 +27,7 @@ Status: install ok installed StatusParagraphs status_db(Util::fmap( *pghs.get(), [](RawParagraph& rpgh) { return std::make_unique<StatusParagraph>(std::move(rpgh)); })); - auto it = status_db.find_installed("ffmpeg", Triplet::X64_WINDOWS); + auto it = status_db.find_installed(unsafe_pspec("ffmpeg", Triplet::X64_WINDOWS)); Assert::IsTrue(it != status_db.end()); } @@ -45,7 +47,7 @@ Status: purge ok not-installed StatusParagraphs status_db(Util::fmap( *pghs.get(), [](RawParagraph& rpgh) { return std::make_unique<StatusParagraph>(std::move(rpgh)); })); - auto it = status_db.find_installed("ffmpeg", Triplet::X64_WINDOWS); + auto it = status_db.find_installed(unsafe_pspec("ffmpeg", Triplet::X64_WINDOWS)); Assert::IsTrue(it == status_db.end()); } @@ -73,8 +75,8 @@ Status: purge ok not-installed StatusParagraphs status_db(Util::fmap( *pghs.get(), [](RawParagraph& rpgh) { return std::make_unique<StatusParagraph>(std::move(rpgh)); })); - auto it = status_db.find_installed("ffmpeg", Triplet::X64_WINDOWS); + auto it = status_db.find_installed(unsafe_pspec("ffmpeg", Triplet::X64_WINDOWS)); Assert::IsTrue(it != status_db.end()); } }; -}
\ No newline at end of file +} diff --git a/toolsrc/src/tests.utils.cpp b/toolsrc/src/tests.utils.cpp index d155c7238..19e877920 100644 --- a/toolsrc/src/tests.utils.cpp +++ b/toolsrc/src/tests.utils.cpp @@ -59,3 +59,10 @@ std::unique_ptr<StatusParagraph> make_status_feature_pgh(const char* name, {"Depends", depends}, {"Status", "install ok installed"}}); } + +PackageSpec unsafe_pspec(std::string name, Triplet t) +{ + auto m_ret = PackageSpec::from_name_and_triplet(name, t); + Assert::IsTrue(m_ret.has_value()); + return m_ret.value_or_exit(VCPKG_LINE_INFO); +} diff --git a/toolsrc/src/vcpkg/build.cpp b/toolsrc/src/vcpkg/build.cpp index 960ba0400..d583a409e 100644 --- a/toolsrc/src/vcpkg/build.cpp +++ b/toolsrc/src/vcpkg/build.cpp @@ -269,10 +269,10 @@ namespace vcpkg::Build std::vector<PackageSpec> missing_specs; for (auto&& dep : filter_dependencies(config.scf.core_paragraph->depends, triplet)) { - if (status_db.find_installed(dep, triplet) == status_db.end()) + auto spec = PackageSpec::from_name_and_triplet(dep, triplet).value_or_exit(VCPKG_LINE_INFO); + if (!status_db.is_installed(spec)) { - missing_specs.push_back( - PackageSpec::from_name_and_triplet(dep, triplet).value_or_exit(VCPKG_LINE_INFO)); + missing_specs.push_back(spec); } } // Fail the build if any dependencies were missing diff --git a/toolsrc/src/vcpkg/statusparagraphs.cpp b/toolsrc/src/vcpkg/statusparagraphs.cpp index 61c04d72a..fb5267b95 100644 --- a/toolsrc/src/vcpkg/statusparagraphs.cpp +++ b/toolsrc/src/vcpkg/statusparagraphs.cpp @@ -65,16 +65,23 @@ namespace vcpkg }); } - StatusParagraphs::const_iterator StatusParagraphs::find_installed(const std::string& name, - const Triplet& triplet) const + StatusParagraphs::const_iterator StatusParagraphs::find_installed(const PackageSpec& spec) const { - const const_iterator it = find(name, triplet); + auto it = find(spec); if (it != end() && (*it)->is_installed()) { return it; } + else + { + return end(); + } + } - return end(); + bool vcpkg::StatusParagraphs::is_installed(const PackageSpec& spec) const + { + auto it = find(spec); + return it != end() && (*it)->is_installed(); } StatusParagraphs::iterator StatusParagraphs::insert(std::unique_ptr<StatusParagraph> pgh) |
