Imported Upstream version 17.25.4
[platform/upstream/libzypp.git] / tests / zypp / Vendor_test.cc
1
2 #include <iostream>
3 #include <list>
4 #include <string>
5
6 // Boost.Test
7 #include <boost/test/unit_test.hpp>
8
9 #include <zypp/base/LogControl.h>
10 #include <zypp/base/Logger.h>
11 #include <zypp/base/Exception.h>
12 #include <zypp/VendorAttr.h>
13
14 using boost::unit_test::test_case;
15 using namespace zypp;
16 using std::cout;
17 using std::endl;
18
19 #define DATADIR (Pathname(TESTS_SRC_DIR) + "/zypp/data/Vendor")
20
21 BOOST_AUTO_TEST_CASE(vendor_empty)
22 {
23   VendorAttr::noTargetInstance() = VendorAttr(); // suse defaults; no configfiles read
24
25   BOOST_REQUIRE( VendorAttr::instance().equivalent("", "") );
26   BOOST_REQUIRE( !VendorAttr::instance().equivalent("a", "") );
27   BOOST_REQUIRE( !VendorAttr::instance().equivalent("", "a") );
28   BOOST_REQUIRE( VendorAttr::instance().equivalent("a", "a") );
29   BOOST_REQUIRE( !VendorAttr::instance().equivalent("a", "aa") );
30   BOOST_REQUIRE( !VendorAttr::instance().equivalent("aa", "a") );
31
32   BOOST_REQUIRE( VendorAttr::instance().equivalent( IdString::Null, IdString::Null ) );
33   BOOST_REQUIRE( VendorAttr::instance().equivalent( IdString::Empty, IdString::Null ) );
34   BOOST_REQUIRE( VendorAttr::instance().equivalent( IdString::Null, IdString::Empty ) );
35   BOOST_REQUIRE( VendorAttr::instance().equivalent( IdString::Empty, IdString::Empty ) );
36 }
37
38 BOOST_AUTO_TEST_CASE(vendor_test1)
39 {
40
41   VendorAttr::noTargetInstance() = VendorAttr(); // suse defaults; no configfiles read
42   // bsc#1030686: Remove legacy vendor equivalence between 'suse' and 'opensuse'
43   // No vendor definition files has been read. So only suse* vendors are
44   // equivalent
45   BOOST_REQUIRE( VendorAttr::instance().equivalent("suse", "SuSE as prefix") );
46   BOOST_REQUIRE( VendorAttr::instance().equivalent("SuSE as prefix", "suse") );
47   BOOST_REQUIRE( !VendorAttr::instance().equivalent("SuSE as prefix","foreign") );
48   // bnc#812608: All opensuse projects get their own class (no prefix compare in opensuse namespace)
49   BOOST_REQUIRE( !VendorAttr::instance().equivalent("opensuse",           "SuSE as prefix") );
50   BOOST_REQUIRE( !VendorAttr::instance().equivalent("opensuse as prefix", "SuSE as prefix") );
51   BOOST_REQUIRE( !VendorAttr::instance().equivalent("opensuse",           "opensuse as prefix") );
52   BOOST_REQUIRE( !VendorAttr::instance().equivalent("opensuse as prefix", "opensuse but different prefix") );
53 }
54
55 BOOST_AUTO_TEST_CASE(vendor_test2)
56 {
57   VendorAttr::noTargetInstance() = VendorAttr( DATADIR / "vendors.d" );
58
59   BOOST_REQUIRE( VendorAttr::instance().equivalent("suse", "suse") );
60   BOOST_REQUIRE( VendorAttr::instance().equivalent("equal", "equal") );
61   BOOST_REQUIRE( VendorAttr::instance().equivalent("suse", "SuSE") );
62   BOOST_REQUIRE( !VendorAttr::instance().equivalent("opensuse", "SuSE") );
63   BOOST_REQUIRE( !VendorAttr::instance().equivalent("open", "SuSE") );
64   BOOST_REQUIRE( !VendorAttr::instance().equivalent("nothing", "SuSE") );
65   BOOST_REQUIRE( VendorAttr::instance().equivalent("nvidia", "SuSE") );
66   BOOST_REQUIRE( VendorAttr::instance().equivalent("nvidia_new_new", "SuSE") );
67   BOOST_REQUIRE( !VendorAttr::instance().equivalent("nvidia", "opensuse") );
68   BOOST_REQUIRE( !VendorAttr::instance().equivalent("ati", "SuSE") );
69   BOOST_REQUIRE( !VendorAttr::instance().equivalent("ati", "nvidia") );
70   BOOST_REQUIRE( VendorAttr::instance().equivalent("ati_new", "ati") );
71 }
72
73 BOOST_AUTO_TEST_CASE(vendor_test3)
74 {
75   VendorAttr::noTargetInstance() = VendorAttr(); // suse defaults; no configfiles read
76   VendorAttr::noTargetInstance().addVendorList( { "suse", "opensuse", "opensuse too" } );
77
78   BOOST_REQUIRE( VendorAttr::instance().equivalent("SuSE as prefix", "opensuse") );
79   BOOST_REQUIRE( VendorAttr::instance().equivalent("SuSE as prefix", "opensuse too") );
80   BOOST_REQUIRE( VendorAttr::instance().equivalent("opensuse", "opensuse too") );
81   // bnc#812608: All opensuse projects get their own class (no prefix compare in opensuse namespace)
82   BOOST_REQUIRE( !VendorAttr::instance().equivalent("SuSE as prefix", "opensuse as prefix") );
83   BOOST_REQUIRE( !VendorAttr::instance().equivalent("SuSE as prefix", "opensuse too as prefix") );
84   BOOST_REQUIRE( !VendorAttr::instance().equivalent("opensuse",           "opensuse too as prefix") );
85   BOOST_REQUIRE( !VendorAttr::instance().equivalent("opensuse as prefix", "opensuse too") );
86   BOOST_REQUIRE( !VendorAttr::instance().equivalent("opensuse as prefix", "opensuse too as prefix") );
87 }