winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

ExportFlow.cpp (5937B)


      1 // Copyright (c) Microsoft Corporation.
      2 // Licensed under the MIT License.
      3 #include "pch.h"
      4 #include "WorkflowCommon.h"
      5 #include <Commands/ExportCommand.h>
      6 
      7 using namespace TestCommon;
      8 using namespace AppInstaller::CLI;
      9 
     10 TEST_CASE("ExportFlow_ExportAll", "[ExportFlow][workflow]")
     11 {
     12     TestCommon::TempFile exportResultPath("TestExport.json");
     13 
     14     std::ostringstream exportOutput;
     15     TestContext context{ exportOutput, std::cin };
     16     auto previousThreadGlobals = context.SetForCurrentThread();
     17     OverrideForCompositeInstalledSource(context, CreateTestSource({
     18         TSR::TestInstaller_Exe,
     19         TSR::TestInstaller_Exe_UnknownVersion,
     20         TSR::TestInstaller_Msix,
     21         TSR::TestInstaller_MSStore,
     22         TSR::TestInstaller_Portable,
     23         TSR::TestInstaller_Zip,
     24         }));
     25     context.Args.AddArg(Execution::Args::Type::OutputFile, exportResultPath);
     26 
     27     ExportCommand exportCommand({});
     28     exportCommand.Execute(context);
     29     INFO(exportOutput.str());
     30 
     31     // Verify contents of exported collection
     32     const auto& exportedCollection = context.Get<Execution::Data::PackageCollection>();
     33     REQUIRE(exportedCollection.Sources.size() == 1);
     34     REQUIRE(exportedCollection.Sources[0].Details.Identifier == "*TestSource");
     35 
     36     const auto& exportedPackages = exportedCollection.Sources[0].Packages;
     37     REQUIRE(exportedPackages.size() == 6);
     38     REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p)
     39         {
     40             return p.Id == "AppInstallerCliTest.TestExeInstaller" && p.VersionAndChannel.GetVersion().ToString().empty();
     41         }));
     42     REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p)
     43         {
     44             return p.Id == "AppInstallerCliTest.TestMsixInstaller" && p.VersionAndChannel.GetVersion().ToString().empty();
     45         }));
     46     REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p)
     47         {
     48             return p.Id == "AppInstallerCliTest.TestMSStoreInstaller" && p.VersionAndChannel.GetVersion().ToString().empty();
     49         }));
     50     REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p)
     51         {
     52             return p.Id == "AppInstallerCliTest.TestPortableInstaller" && p.VersionAndChannel.GetVersion().ToString().empty();
     53         }));
     54     REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p)
     55         {
     56             return p.Id == "AppInstallerCliTest.TestZipInstaller" && p.VersionAndChannel.GetVersion().ToString().empty();
     57         }));
     58     REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p)
     59         {
     60             return p.Id == "AppInstallerCliTest.TestExeUnknownVersion" && p.VersionAndChannel.GetVersion().ToString().empty();
     61         }));
     62 }
     63 
     64 TEST_CASE("ExportFlow_ExportAll_WithVersions", "[ExportFlow][workflow]")
     65 {
     66     TestCommon::TempFile exportResultPath("TestExport.json");
     67 
     68     std::ostringstream exportOutput;
     69     TestContext context{ exportOutput, std::cin };
     70     auto previousThreadGlobals = context.SetForCurrentThread();
     71     OverrideForCompositeInstalledSource(context, CreateTestSource({
     72         TSR::TestInstaller_Exe,
     73         TSR::TestInstaller_Exe_UnknownVersion,
     74         TSR::TestInstaller_Msix,
     75         TSR::TestInstaller_MSStore,
     76         TSR::TestInstaller_Portable,
     77         TSR::TestInstaller_Zip,
     78         }));
     79     context.Args.AddArg(Execution::Args::Type::OutputFile, exportResultPath);
     80     context.Args.AddArg(Execution::Args::Type::IncludeVersions);
     81 
     82     ExportCommand exportCommand({});
     83     exportCommand.Execute(context);
     84     INFO(exportOutput.str());
     85 
     86     // Verify contents of exported collection
     87     const auto& exportedCollection = context.Get<Execution::Data::PackageCollection>();
     88     REQUIRE(exportedCollection.Sources.size() == 1);
     89     REQUIRE(exportedCollection.Sources[0].Details.Identifier == "*TestSource");
     90 
     91     const auto& exportedPackages = exportedCollection.Sources[0].Packages;
     92     REQUIRE(exportedPackages.size() == 6);
     93     REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p)
     94         {
     95             return p.Id == "AppInstallerCliTest.TestExeInstaller" && p.VersionAndChannel.GetVersion().ToString() == "1.0.0.0";
     96         }));
     97     REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p)
     98         {
     99             return p.Id == "AppInstallerCliTest.TestMsixInstaller" && p.VersionAndChannel.GetVersion().ToString() == "1.0.0.0";
    100         }));
    101     REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p)
    102         {
    103             return p.Id == "AppInstallerCliTest.TestMSStoreInstaller" && p.VersionAndChannel.GetVersion().ToString() == "1.0.0.0";
    104         }));
    105     REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p)
    106         {
    107             return p.Id == "AppInstallerCliTest.TestPortableInstaller" && p.VersionAndChannel.GetVersion().ToString() == "1.0.0.0";
    108         }));
    109     REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p)
    110         {
    111             return p.Id == "AppInstallerCliTest.TestZipInstaller" && p.VersionAndChannel.GetVersion().ToString() == "1.0.0.0";
    112         }));
    113     REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p)
    114         {
    115             return p.Id == "AppInstallerCliTest.TestExeUnknownVersion" && p.VersionAndChannel.GetVersion().ToString() == "unknown";
    116         }));
    117 }