From 2d62e1f9e2a6793e747dcda46e94e6a14e67629d Mon Sep 17 00:00:00 2001 From: Duncan Mac-Vicar P Date: Mon, 19 May 2008 12:55:01 +0000 Subject: [PATCH] testcase to test attributes are read correctly, should prevent some stupid bugs to happen again --- tests/CMakeLists.txt | 2 +- tests/sat/CMakeLists.txt | 5 +-- tests/sat/Solvable_test.cc | 95 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 4 deletions(-) create mode 100644 tests/sat/Solvable_test.cc diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6c1d465..abb4858 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -6,7 +6,7 @@ ADD_DEFINITIONS( -DTESTS_SRC_DIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}\\\" -DTESTS_BUI ADD_SUBDIRECTORY( zypp ) ADD_SUBDIRECTORY( parser ) ADD_SUBDIRECTORY( repo ) -#ADD_SUBDIRECTORY( sat ) +ADD_SUBDIRECTORY( sat ) ADD_CUSTOM_TARGET( ctest COMMAND ctest -a diff --git a/tests/sat/CMakeLists.txt b/tests/sat/CMakeLists.txt index 9b995e2..9180914 100644 --- a/tests/sat/CMakeLists.txt +++ b/tests/sat/CMakeLists.txt @@ -1,6 +1,5 @@ -ADD_TESTS(WhatProvides) - - +#ADD_TESTS(WhatProvides Solvable) +ADD_TESTS(Solvable) diff --git a/tests/sat/Solvable_test.cc b/tests/sat/Solvable_test.cc new file mode 100644 index 0000000..a976e09 --- /dev/null +++ b/tests/sat/Solvable_test.cc @@ -0,0 +1,95 @@ +#include +#include +#include + +#include +#include "zypp/base/Logger.h" +#include "zypp/base/Easy.h" +#include "zypp/ZYppFactory.h" +#include "zypp/Pattern.h" +#include "zypp/sat/Solvable.h" + +#define BOOST_TEST_MODULE Solvable + +using std::cout; +using std::endl; +using std::string; +using namespace zypp; +using namespace boost::unit_test; + + +static void init_pool() +{ + Pathname dir(TESTS_SRC_DIR); + dir += "/zypp/data/PoolQuery"; + + ZYpp::Ptr z = getZYpp(); + ZConfig::instance().setSystemArchitecture(Arch("i586")); + + RepoInfo i1; i1.setAlias("factory"); + sat::Pool::instance().addRepoSolv(dir / "factory.solv", i1); +} + +BOOST_AUTO_TEST_CASE(attributes) +{ + init_pool(); + MIL << sat::Pool::instance(); + Repository r = sat::Pool::instance().reposFind("factory"); + + int c = 0; + + for ( Repository::SolvableIterator it = r.solvablesBegin(); + it != r.solvablesEnd(); + ++it ) + { + sat::Solvable s = *it; + //MIL << s.ident() << endl; + if ( s.ident() == "pattern:apparmor" ) + { + c++; + + // solvable 21795 (21796): + // name: pattern:apparmor 11.0-67 i586 + // vendor: SUSE LINUX Products GmbH, Nuernberg, Germany + // provides: + // pattern:apparmor = 11.0-67 + // requires: + // pattern:basesystem + // apparmor-parser + // audit + // apparmor-profiles + // recommends: + // yast2-apparmor + // apparmor-utils + // pattern:apparmor_opt + // solvable:category: Base Technologies + // solvable:icon: yast-software + // solvable:summary: Novell AppArmor + // solvable:description: Novell AppArmor is an application security framework that provides mandatory access control for programs. It protects from exploitation of software flaws and compromised systems. It offers an advanced tool set that automates the development of per-program application security without requiring additional knowledge. + // solvable:isvisible: 1 + // solvable:order: 1030 + Pattern::Ptr p = asKind(makeResObject(s)); + BOOST_CHECK(p); + BOOST_CHECK_EQUAL(p->name(), "apparmor"); + BOOST_CHECK_EQUAL(p->vendor(), "SUSE LINUX Products GmbH, Nuernberg, Germany"); + BOOST_CHECK_EQUAL(p->category(), "Base Technologies"); + BOOST_CHECK_EQUAL(p->summary(), "Novell AppArmor"); + BOOST_CHECK_EQUAL(p->icon(), "yast-software"); + BOOST_CHECK_EQUAL(p->userVisible(), true); + BOOST_CHECK_EQUAL(p->isDefault(), false); + } + if ( s.ident() == "pattern:default" ) + { + c++; + Pattern::Ptr p = asKind(makeResObject(s)); + BOOST_CHECK(p); + BOOST_CHECK_EQUAL(p->userVisible(), false); + } + } + + // check that we actually found all testeable + // resolvables + BOOST_CHECK_EQUAL(c, 2); + + +} -- 2.7.4