From f8317be5c2b2f6d31622d863a41646fa456afbbe Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Thu, 24 Sep 2015 03:02:07 +0100 Subject: PostgreSQL mocking and tests from Project2 --- libpqpp/Jamfile.jam | 8 +- libpqpp/connection.cpp | 2 + libpqpp/mock.cpp | 33 ++ libpqpp/mock.h | 22 ++ libpqpp/unittests/Jamfile.jam | 18 + libpqpp/unittests/bulk.sample | 800 +++++++++++++++++++++++++++++++++++++++++ libpqpp/unittests/pqschema.sql | 37 ++ libpqpp/unittests/testpq.cpp | 159 ++++++++ 8 files changed, 1077 insertions(+), 2 deletions(-) create mode 100644 libpqpp/mock.cpp create mode 100644 libpqpp/mock.h create mode 100644 libpqpp/unittests/Jamfile.jam create mode 100644 libpqpp/unittests/bulk.sample create mode 100644 libpqpp/unittests/pqschema.sql create mode 100644 libpqpp/unittests/testpq.cpp (limited to 'libpqpp') diff --git a/libpqpp/Jamfile.jam b/libpqpp/Jamfile.jam index dc1fd66..77ac045 100644 --- a/libpqpp/Jamfile.jam +++ b/libpqpp/Jamfile.jam @@ -12,15 +12,19 @@ alias libpq : : : : ; -lib pqpp : +lib dbpp-postgresql : [ glob *.cpp ] : - -fPIC glibmm libpq ../libdbpp + -fvisibility=hidden + release:-flto : : . "-I`pg_config --includedir`" glibmm ../libdbpp ; + +build-project unittests ; + diff --git a/libpqpp/connection.cpp b/libpqpp/connection.cpp index 77bdd10..e41cd3b 100644 --- a/libpqpp/connection.cpp +++ b/libpqpp/connection.cpp @@ -4,6 +4,8 @@ #include "modifycommand.h" #include +NAMEDFACTORY("postgresql", PQ::Connection, DB::ConnectionFactory); + static void noNoticeProcessor(void *, const char *) { diff --git a/libpqpp/mock.cpp b/libpqpp/mock.cpp new file mode 100644 index 0000000..20d4340 --- /dev/null +++ b/libpqpp/mock.cpp @@ -0,0 +1,33 @@ +#include "mock.h" +#include "connection.h" +#include + +namespace PQ { + +Mock::Mock(const std::string & masterdb, const std::string & name, const std::vector & ss) : + MockServerDatabase(masterdb, name, "postgresql") +{ + CreateNewDatabase(); + PlaySchemaScripts(ss); +} + +DB::Connection * +Mock::openConnection() const +{ + return new Connection(stringbf("user=postgres dbname=%s", testDbName)); +} + +Mock::~Mock() +{ + DropDatabase(); +} + +void +Mock::DropDatabase() const +{ + master->execute("SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '" + testDbName + "'"); + MockServerDatabase::DropDatabase(); +} + +} + diff --git a/libpqpp/mock.h b/libpqpp/mock.h new file mode 100644 index 0000000..e8b7366 --- /dev/null +++ b/libpqpp/mock.h @@ -0,0 +1,22 @@ +#ifndef MOCKPQDATASOURCE_H +#define MOCKPQDATASOURCE_H + +#include +#include +#include + +namespace PQ { + class DLL_PUBLIC Mock : public DB::MockServerDatabase { + public: + Mock(const std::string & master, const std::string & name, const std::vector & ss); + ~Mock(); + + DB::Connection * openConnection() const override; + + protected: + void DropDatabase() const override; + }; +} + +#endif + diff --git a/libpqpp/unittests/Jamfile.jam b/libpqpp/unittests/Jamfile.jam new file mode 100644 index 0000000..39d0576 --- /dev/null +++ b/libpqpp/unittests/Jamfile.jam @@ -0,0 +1,18 @@ +import testing ; + +path-constant me : . ; + +lib boost_utf : : boost_unit_test_framework ; + +run + testpq.cpp + : : : + ROOT=\"$(me)\" + BOOST_TEST_DYN_LINK + ..//dbpp-postgresql + ../../libdbpp//dbpptestcore + boost_utf + : + testpq + ; + diff --git a/libpqpp/unittests/bulk.sample b/libpqpp/unittests/bulk.sample new file mode 100644 index 0000000..ae81633 --- /dev/null +++ b/libpqpp/unittests/bulk.sample @@ -0,0 +1,800 @@ +1 /usr/portage/ +2 /usr/portage/games-rpg +3 /usr/portage/games-rpg/penumbra-collection +4 /usr/portage/games-rpg/penumbra-collection/ChangeLog +5 /usr/portage/games-rpg/penumbra-collection/Manifest +6 /usr/portage/games-rpg/penumbra-collection/metadata.xml +7 /usr/portage/games-rpg/penumbra-collection/penumbra-collection-1.1.ebuild +8 /usr/portage/games-rpg/arx-fatalis-data +9 /usr/portage/games-rpg/arx-fatalis-data/ChangeLog +10 /usr/portage/games-rpg/arx-fatalis-data/Manifest +11 /usr/portage/games-rpg/arx-fatalis-data/metadata.xml +12 /usr/portage/games-rpg/arx-fatalis-data/arx-fatalis-data-1.21-r2.ebuild +13 /usr/portage/games-rpg/arx-fatalis-data/arx-fatalis-data-1.21-r1.ebuild +14 /usr/portage/games-rpg/nwmouse +15 /usr/portage/games-rpg/nwmouse/ChangeLog +16 /usr/portage/games-rpg/nwmouse/Manifest +17 /usr/portage/games-rpg/nwmouse/metadata.xml +18 /usr/portage/games-rpg/nwmouse/nwmouse-20090906.183839.ebuild +19 /usr/portage/games-rpg/bass +20 /usr/portage/games-rpg/bass/ChangeLog +21 /usr/portage/games-rpg/bass/Manifest +22 /usr/portage/games-rpg/bass/metadata.xml +23 /usr/portage/games-rpg/bass/bass-1.2-r1.ebuild +24 /usr/portage/games-rpg/bass/files +25 /usr/portage/games-rpg/bass/files/scummvmGetLang.sh +26 /usr/portage/games-rpg/a-bird-story +27 /usr/portage/games-rpg/a-bird-story/ChangeLog +28 /usr/portage/games-rpg/a-bird-story/Manifest +29 /usr/portage/games-rpg/a-bird-story/metadata.xml +30 /usr/portage/games-rpg/a-bird-story/a-bird-story-20141106.ebuild +31 /usr/portage/games-rpg/nwn-shadowlordsdreamcatcherdemon +32 /usr/portage/games-rpg/nwn-shadowlordsdreamcatcherdemon/ChangeLog +33 /usr/portage/games-rpg/nwn-shadowlordsdreamcatcherdemon/Manifest +34 /usr/portage/games-rpg/nwn-shadowlordsdreamcatcherdemon/metadata.xml +35 /usr/portage/games-rpg/nwn-shadowlordsdreamcatcherdemon/nwn-shadowlordsdreamcatcherdemon-1.ebuild +36 /usr/portage/games-rpg/eschalon-book-1-demo +37 /usr/portage/games-rpg/eschalon-book-1-demo/ChangeLog +38 /usr/portage/games-rpg/eschalon-book-1-demo/eschalon-book-1-demo-106.ebuild +39 /usr/portage/games-rpg/eschalon-book-1-demo/Manifest +40 /usr/portage/games-rpg/eschalon-book-1-demo/metadata.xml +41 /usr/portage/games-rpg/openglad +42 /usr/portage/games-rpg/openglad/ChangeLog +43 /usr/portage/games-rpg/openglad/Manifest +44 /usr/portage/games-rpg/openglad/metadata.xml +45 /usr/portage/games-rpg/openglad/files +46 /usr/portage/games-rpg/openglad/files/openglad-0.98-gcc43.patch +47 /usr/portage/games-rpg/openglad/files/0.98-gladpack.c.patch +48 /usr/portage/games-rpg/openglad/files/openglad-0.98-ovfl.patch +49 /usr/portage/games-rpg/openglad/openglad-0.98.ebuild +50 /usr/portage/games-rpg/dungeon-defenders +51 /usr/portage/games-rpg/dungeon-defenders/ChangeLog +52 /usr/portage/games-rpg/dungeon-defenders/dungeon-defenders-20130305.ebuild +53 /usr/portage/games-rpg/dungeon-defenders/Manifest +54 /usr/portage/games-rpg/dungeon-defenders/metadata.xml +55 /usr/portage/games-rpg/xu4 +56 /usr/portage/games-rpg/xu4/ChangeLog +57 /usr/portage/games-rpg/xu4/Manifest +58 /usr/portage/games-rpg/xu4/xu4-0.9.ebuild +59 /usr/portage/games-rpg/xu4/metadata.xml +60 /usr/portage/games-rpg/xu4/files +61 /usr/portage/games-rpg/xu4/files/xu4-0.9-ldflags.patch +62 /usr/portage/games-rpg/xu4/files/xu4-0.9-zip.patch +63 /usr/portage/games-rpg/xu4/files/xu4-0.9-warnings.patch +64 /usr/portage/games-rpg/xu4/files/0.9-savegame.patch +65 /usr/portage/games-rpg/eternal-lands-data +66 /usr/portage/games-rpg/eternal-lands-data/ChangeLog +67 /usr/portage/games-rpg/eternal-lands-data/eternal-lands-data-1.9.3.ebuild +68 /usr/portage/games-rpg/eternal-lands-data/Manifest +69 /usr/portage/games-rpg/eternal-lands-data/metadata.xml +70 /usr/portage/games-rpg/eternal-lands-data/eternal-lands-data-1.9.3-r1.ebuild +71 /usr/portage/games-rpg/eternal-lands-data/eternal-lands-data-1.9.2-r1.ebuild +72 /usr/portage/games-rpg/nwn-data +73 /usr/portage/games-rpg/nwn-data/ChangeLog +74 /usr/portage/games-rpg/nwn-data/Manifest +75 /usr/portage/games-rpg/nwn-data/metadata.xml +76 /usr/portage/games-rpg/nwn-data/nwn-data-1.29-r5.ebuild +77 /usr/portage/games-rpg/eternal-lands +78 /usr/portage/games-rpg/eternal-lands/ChangeLog +79 /usr/portage/games-rpg/eternal-lands/Manifest +80 /usr/portage/games-rpg/eternal-lands/eternal-lands-1.9.3-r2.ebuild +81 /usr/portage/games-rpg/eternal-lands/eternal-lands-1.9.2-r1.ebuild +82 /usr/portage/games-rpg/eternal-lands/metadata.xml +83 /usr/portage/games-rpg/eternal-lands/eternal-lands-1.9.2.ebuild +84 /usr/portage/games-rpg/eternal-lands/eternal-lands-1.9.3-r1.ebuild +85 /usr/portage/games-rpg/eternal-lands/eternal-lands-1.9.3.ebuild +86 /usr/portage/games-rpg/eternal-lands/files +87 /usr/portage/games-rpg/eternal-lands/files/eternal-lands-1.9.1-libpng.patch +88 /usr/portage/games-rpg/eternal-lands/files/eternal-lands-1.9.3-minizip.patch +89 /usr/portage/games-rpg/eternal-lands/files/eternal-lands-1.9.2-glext.patch +90 /usr/portage/games-rpg/eternal-lands/files/eternal-lands-1.9.3-build.patch +91 /usr/portage/games-rpg/eternal-lands/files/eternal-lands-1.9.3-glbuild.patch +92 /usr/portage/games-rpg/eternal-lands/files/eternal-lands-1.9.0-glext.patch +93 /usr/portage/games-rpg/freedink-data +94 /usr/portage/games-rpg/freedink-data/ChangeLog +95 /usr/portage/games-rpg/freedink-data/Manifest +96 /usr/portage/games-rpg/freedink-data/metadata.xml +97 /usr/portage/games-rpg/freedink-data/freedink-data-1.08.20140901.ebuild +98 /usr/portage/games-rpg/nwmovies +99 /usr/portage/games-rpg/nwmovies/ChangeLog +100 /usr/portage/games-rpg/nwmovies/nwmovies-20090223.080954.ebuild +101 /usr/portage/games-rpg/nwmovies/Manifest +102 /usr/portage/games-rpg/nwmovies/metadata.xml +103 /usr/portage/games-rpg/arx-libertatis +104 /usr/portage/games-rpg/arx-libertatis/ChangeLog +105 /usr/portage/games-rpg/arx-libertatis/arx-libertatis-1.1.2.ebuild +106 /usr/portage/games-rpg/arx-libertatis/Manifest +107 /usr/portage/games-rpg/arx-libertatis/metadata.xml +108 /usr/portage/games-rpg/arx-libertatis/arx-libertatis-1.1.1.ebuild +109 /usr/portage/games-rpg/arx-libertatis/arx-libertatis-1.0.3.ebuild +110 /usr/portage/games-rpg/arx-libertatis/files +111 /usr/portage/games-rpg/arx-libertatis/files/arx-data-copy +112 /usr/portage/games-rpg/arx-libertatis/files/arx-libertatis-1.0.3-gentoo.patch +113 /usr/portage/games-rpg/arx-libertatis/files/arx-libertatis-1.0.3-cmake2.8.patch +114 /usr/portage/games-rpg/lure +115 /usr/portage/games-rpg/lure/ChangeLog +116 /usr/portage/games-rpg/lure/Manifest +117 /usr/portage/games-rpg/lure/metadata.xml +118 /usr/portage/games-rpg/lure/lure-1.1.ebuild +119 /usr/portage/games-rpg/to-the-moon +120 /usr/portage/games-rpg/to-the-moon/ChangeLog +121 /usr/portage/games-rpg/to-the-moon/Manifest +122 /usr/portage/games-rpg/to-the-moon/metadata.xml +123 /usr/portage/games-rpg/to-the-moon/to-the-moon-0.ebuild +124 /usr/portage/games-rpg/drascula +125 /usr/portage/games-rpg/drascula/ChangeLog +126 /usr/portage/games-rpg/drascula/Manifest +127 /usr/portage/games-rpg/drascula/metadata.xml +128 /usr/portage/games-rpg/drascula/drascula-1.0-r2.ebuild +129 /usr/portage/games-rpg/coe2 +130 /usr/portage/games-rpg/coe2/ChangeLog +131 /usr/portage/games-rpg/coe2/Manifest +132 /usr/portage/games-rpg/coe2/metadata.xml +133 /usr/portage/games-rpg/coe2/coe2-2007-r1.ebuild +134 /usr/portage/games-rpg/queen +135 /usr/portage/games-rpg/queen/ChangeLog +136 /usr/portage/games-rpg/queen/Manifest +137 /usr/portage/games-rpg/queen/metadata.xml +138 /usr/portage/games-rpg/queen/queen-1.ebuild +139 /usr/portage/games-rpg/tmw +140 /usr/portage/games-rpg/tmw/ChangeLog +141 /usr/portage/games-rpg/tmw/Manifest +142 /usr/portage/games-rpg/tmw/tmw-20130201.ebuild +143 /usr/portage/games-rpg/tmw/metadata.xml +144 /usr/portage/games-rpg/tmw/files +145 /usr/portage/games-rpg/tmw/files/tmw-branding-20130201-gentoo.patch +146 /usr/portage/games-rpg/freedroid +147 /usr/portage/games-rpg/freedroid/ChangeLog +148 /usr/portage/games-rpg/freedroid/Manifest +149 /usr/portage/games-rpg/freedroid/freedroid-1.0.2.ebuild +150 /usr/portage/games-rpg/freedroid/metadata.xml +151 /usr/portage/games-rpg/nwn-penultimarerolled +152 /usr/portage/games-rpg/nwn-penultimarerolled/ChangeLog +153 /usr/portage/games-rpg/nwn-penultimarerolled/Manifest +154 /usr/portage/games-rpg/nwn-penultimarerolled/nwn-penultimarerolled-1.ebuild +155 /usr/portage/games-rpg/nwn-penultimarerolled/metadata.xml +156 /usr/portage/games-rpg/vendetta-online-bin +157 /usr/portage/games-rpg/vendetta-online-bin/ChangeLog +158 /usr/portage/games-rpg/vendetta-online-bin/Manifest +159 /usr/portage/games-rpg/vendetta-online-bin/metadata.xml +160 /usr/portage/games-rpg/vendetta-online-bin/files +161 /usr/portage/games-rpg/vendetta-online-bin/files/vendetta +162 /usr/portage/games-rpg/vendetta-online-bin/vendetta-online-bin-1.8.296.ebuild +163 /usr/portage/games-rpg/metadata.xml +164 /usr/portage/games-rpg/adonthell +165 /usr/portage/games-rpg/adonthell/ChangeLog +166 /usr/portage/games-rpg/adonthell/Manifest +167 /usr/portage/games-rpg/adonthell/metadata.xml +168 /usr/portage/games-rpg/adonthell/files +169 /usr/portage/games-rpg/adonthell/files/adonthell-0.3.5-gcc46.patch +170 /usr/portage/games-rpg/adonthell/files/adonthell-0.3.5-glibc-2.10.patch +171 /usr/portage/games-rpg/adonthell/files/adonthell-0.3.5-format.patch +172 /usr/portage/games-rpg/adonthell/files/adonthell-0.3.5-configure.in.patch +173 /usr/portage/games-rpg/adonthell/adonthell-0.3.5-r1.ebuild +174 /usr/portage/games-rpg/soltys +175 /usr/portage/games-rpg/soltys/ChangeLog +176 /usr/portage/games-rpg/soltys/Manifest +177 /usr/portage/games-rpg/soltys/metadata.xml +178 /usr/portage/games-rpg/soltys/soltys-1.0-r1.ebuild +179 /usr/portage/games-rpg/sumwars +180 /usr/portage/games-rpg/sumwars/ChangeLog +181 /usr/portage/games-rpg/sumwars/Manifest +182 /usr/portage/games-rpg/sumwars/metadata.xml +183 /usr/portage/games-rpg/sumwars/sumwars-0.5.8.ebuild +184 /usr/portage/games-rpg/bastion +185 /usr/portage/games-rpg/bastion/ChangeLog +186 /usr/portage/games-rpg/bastion/Manifest +187 /usr/portage/games-rpg/bastion/bastion-20120620-r1.ebuild +188 /usr/portage/games-rpg/bastion/metadata.xml +189 /usr/portage/games-rpg/manaplus +190 /usr/portage/games-rpg/manaplus/ChangeLog +191 /usr/portage/games-rpg/manaplus/manaplus-1.3.9.29.ebuild +192 /usr/portage/games-rpg/manaplus/Manifest +193 /usr/portage/games-rpg/manaplus/metadata.xml +194 /usr/portage/games-rpg/manaplus/manaplus-1.5.5.9.ebuild +195 /usr/portage/games-rpg/mana +196 /usr/portage/games-rpg/mana/ChangeLog +197 /usr/portage/games-rpg/mana/mana-0.6.1.ebuild +198 /usr/portage/games-rpg/mana/Manifest +199 /usr/portage/games-rpg/mana/metadata.xml +200 /usr/portage/games-rpg/mana/files +201 /usr/portage/games-rpg/mana/files/mana-0.6.1-Import-cstdint-for-int64_t.patch +202 /usr/portage/games-rpg/mana/files/mana-0.6.1-Trick-gcc-into-importing-C99-stdint.h-when-C-11-is-n.patch +203 /usr/portage/games-rpg/mana/files/mana-0.6.1-gentoo.patch +204 /usr/portage/games-rpg/mana/files/mana-0.6.1-Fix-missing-virtual-destructors-and-guichan-use.patch +205 /usr/portage/games-rpg/kqlives +206 /usr/portage/games-rpg/kqlives/ChangeLog +207 /usr/portage/games-rpg/kqlives/Manifest +208 /usr/portage/games-rpg/kqlives/metadata.xml +209 /usr/portage/games-rpg/kqlives/kqlives-0.99.ebuild +210 /usr/portage/games-rpg/kqlives/files +211 /usr/portage/games-rpg/kqlives/files/kqlives.xpm +212 /usr/portage/games-rpg/eternal-lands-bloodsucker +213 /usr/portage/games-rpg/eternal-lands-bloodsucker/ChangeLog +214 /usr/portage/games-rpg/eternal-lands-bloodsucker/eternal-lands-bloodsucker-3.0.ebuild +215 /usr/portage/games-rpg/eternal-lands-bloodsucker/Manifest +216 /usr/portage/games-rpg/eternal-lands-bloodsucker/eternal-lands-bloodsucker-3.0_p20110618.ebuild +217 /usr/portage/games-rpg/eternal-lands-bloodsucker/metadata.xml +218 /usr/portage/games-rpg/zsdx +219 /usr/portage/games-rpg/zsdx/ChangeLog +220 /usr/portage/games-rpg/zsdx/Manifest +221 /usr/portage/games-rpg/zsdx/zsdx-1.9.0.ebuild +222 /usr/portage/games-rpg/zsdx/metadata.xml +223 /usr/portage/games-rpg/arx-fatalis-demo +224 /usr/portage/games-rpg/arx-fatalis-demo/ChangeLog +225 /usr/portage/games-rpg/arx-fatalis-demo/Manifest +226 /usr/portage/games-rpg/arx-fatalis-demo/metadata.xml +227 /usr/portage/games-rpg/arx-fatalis-demo/arx-fatalis-demo-0.ebuild +228 /usr/portage/games-rpg/avadon +229 /usr/portage/games-rpg/avadon/ChangeLog +230 /usr/portage/games-rpg/avadon/Manifest +231 /usr/portage/games-rpg/avadon/avadon-1.0.4.ebuild +232 /usr/portage/games-rpg/avadon/metadata.xml +233 /usr/portage/games-rpg/wastesedge +234 /usr/portage/games-rpg/wastesedge/ChangeLog +235 /usr/portage/games-rpg/wastesedge/Manifest +236 /usr/portage/games-rpg/wastesedge/metadata.xml +237 /usr/portage/games-rpg/wastesedge/wastesedge-0.3.5.ebuild +238 /usr/portage/games-rpg/daimonin-client +239 /usr/portage/games-rpg/daimonin-client/ChangeLog +240 /usr/portage/games-rpg/daimonin-client/Manifest +241 /usr/portage/games-rpg/daimonin-client/metadata.xml +242 /usr/portage/games-rpg/daimonin-client/daimonin-client-0.10.5.ebuild +243 /usr/portage/games-rpg/daimonin-client/files +244 /usr/portage/games-rpg/daimonin-client/files/daimonin-client-0.10.5-nozlib.patch +245 /usr/portage/games-rpg/daimonin-client/files/daimonin-client-0.10.5-datadir.patch +246 /usr/portage/games-rpg/nwn-cep +247 /usr/portage/games-rpg/nwn-cep/ChangeLog +248 /usr/portage/games-rpg/nwn-cep/Manifest +249 /usr/portage/games-rpg/nwn-cep/nwn-cep-2.0.ebuild +250 /usr/portage/games-rpg/nwn-cep/metadata.xml +251 /usr/portage/games-rpg/nwn-cep/nwn-cep-1.68-r1.ebuild +252 /usr/portage/games-rpg/dear-esther +253 /usr/portage/games-rpg/dear-esther/ChangeLog +254 /usr/portage/games-rpg/dear-esther/Manifest +255 /usr/portage/games-rpg/dear-esther/metadata.xml +256 /usr/portage/games-rpg/dear-esther/dear-esther-20130608.ebuild +257 /usr/portage/games-rpg/wasteland2 +258 /usr/portage/games-rpg/wasteland2/ChangeLog +259 /usr/portage/games-rpg/wasteland2/Manifest +260 /usr/portage/games-rpg/wasteland2/metadata.xml +261 /usr/portage/games-rpg/wasteland2/wasteland2-1.3.0.7.ebuild +262 /usr/portage/games-rpg/sacred-gold +263 /usr/portage/games-rpg/sacred-gold/ChangeLog +264 /usr/portage/games-rpg/sacred-gold/Manifest +265 /usr/portage/games-rpg/sacred-gold/metadata.xml +266 /usr/portage/games-rpg/sacred-gold/sacred-gold-1.0.ebuild +267 /usr/portage/games-rpg/sacred-gold/sacred-gold-1.0.01.ebuild +268 /usr/portage/games-rpg/freedink +269 /usr/portage/games-rpg/freedink/ChangeLog +270 /usr/portage/games-rpg/freedink/Manifest +271 /usr/portage/games-rpg/freedink/metadata.xml +272 /usr/portage/games-rpg/freedink/freedink-108.4.ebuild +273 /usr/portage/games-rpg/pcgen +274 /usr/portage/games-rpg/pcgen/ChangeLog +275 /usr/portage/games-rpg/pcgen/Manifest +276 /usr/portage/games-rpg/pcgen/pcgen-6.04.01.ebuild +277 /usr/portage/games-rpg/pcgen/metadata.xml +278 /usr/portage/games-rpg/nwn-penultima +279 /usr/portage/games-rpg/nwn-penultima/ChangeLog +280 /usr/portage/games-rpg/nwn-penultima/Manifest +281 /usr/portage/games-rpg/nwn-penultima/metadata.xml +282 /usr/portage/games-rpg/nwn-penultima/nwn-penultima-1.ebuild +283 /usr/portage/games-rpg/nwn-penultima/nwn-penultima-1-r1.ebuild +284 /usr/portage/games-rpg/egoboo +285 /usr/portage/games-rpg/egoboo/ChangeLog +286 /usr/portage/games-rpg/egoboo/Manifest +287 /usr/portage/games-rpg/egoboo/egoboo-2.8.1.ebuild +288 /usr/portage/games-rpg/egoboo/metadata.xml +289 /usr/portage/games-rpg/egoboo/files +290 /usr/portage/games-rpg/egoboo/files/egoboo-2.8.1-gentoo.patch +291 /usr/portage/games-rpg/freedroidrpg +292 /usr/portage/games-rpg/freedroidrpg/ChangeLog +293 /usr/portage/games-rpg/freedroidrpg/Manifest +294 /usr/portage/games-rpg/freedroidrpg/freedroidrpg-0.15.1.ebuild +295 /usr/portage/games-rpg/freedroidrpg/metadata.xml +296 /usr/portage/games-rpg/gwiz +297 /usr/portage/games-rpg/gwiz/ChangeLog +298 /usr/portage/games-rpg/gwiz/Manifest +299 /usr/portage/games-rpg/gwiz/metadata.xml +300 /usr/portage/games-rpg/gwiz/gwiz-0.8.ebuild +301 /usr/portage/games-rpg/gwiz/files +302 /usr/portage/games-rpg/gwiz/files/gwiz-0.8-buffer.patch +303 /usr/portage/games-rpg/dragonhunt +304 /usr/portage/games-rpg/dragonhunt/ChangeLog +305 /usr/portage/games-rpg/dragonhunt/Manifest +306 /usr/portage/games-rpg/dragonhunt/dragonhunt-3.56-r1.ebuild +307 /usr/portage/games-rpg/dragonhunt/metadata.xml +308 /usr/portage/games-rpg/draci-historie +309 /usr/portage/games-rpg/draci-historie/ChangeLog +310 /usr/portage/games-rpg/draci-historie/draci-historie-2012.ebuild +311 /usr/portage/games-rpg/draci-historie/Manifest +312 /usr/portage/games-rpg/draci-historie/metadata.xml +313 /usr/portage/games-rpg/dreamweb +314 /usr/portage/games-rpg/dreamweb/ChangeLog +315 /usr/portage/games-rpg/dreamweb/Manifest +316 /usr/portage/games-rpg/dreamweb/dreamweb-1.1.ebuild +317 /usr/portage/games-rpg/dreamweb/metadata.xml +318 /usr/portage/games-rpg/valyriatear +319 /usr/portage/games-rpg/valyriatear/ChangeLog +320 /usr/portage/games-rpg/valyriatear/Manifest +321 /usr/portage/games-rpg/valyriatear/metadata.xml +322 /usr/portage/games-rpg/valyriatear/valyriatear-1.0.0.ebuild +323 /usr/portage/games-rpg/nwn +324 /usr/portage/games-rpg/nwn/ChangeLog +325 /usr/portage/games-rpg/nwn/Manifest +326 /usr/portage/games-rpg/nwn/nwn-1.69-r1.ebuild +327 /usr/portage/games-rpg/nwn/metadata.xml +328 /usr/portage/games-rpg/nwn/nwn-1.68-r5.ebuild +329 /usr/portage/games-rpg/nwn/files +330 /usr/portage/games-rpg/nwn/files/fixinstall +331 /usr/portage/games-rpg/nwn/nwn-1.68-r6.ebuild +332 /usr/portage/games-rpg/twclone +333 /usr/portage/games-rpg/twclone/ChangeLog +334 /usr/portage/games-rpg/twclone/Manifest +335 /usr/portage/games-rpg/twclone/metadata.xml +336 /usr/portage/games-rpg/twclone/twclone-0.14.ebuild +337 /usr/portage/games-rpg/zsxd +338 /usr/portage/games-rpg/zsxd/ChangeLog +339 /usr/portage/games-rpg/zsxd/Manifest +340 /usr/portage/games-rpg/zsxd/metadata.xml +341 /usr/portage/games-rpg/zsxd/zsxd-1.9.0.ebuild +342 /usr/portage/games-rpg/grimrock +343 /usr/portage/games-rpg/grimrock/ChangeLog +344 /usr/portage/games-rpg/grimrock/Manifest +345 /usr/portage/games-rpg/grimrock/metadata.xml +346 /usr/portage/games-rpg/grimrock/grimrock-20130515.ebuild +347 /usr/portage/games-arcade +348 /usr/portage/games-arcade/ascii-invaders +349 /usr/portage/games-arcade/ascii-invaders/ChangeLog +350 /usr/portage/games-arcade/ascii-invaders/Manifest +351 /usr/portage/games-arcade/ascii-invaders/metadata.xml +352 /usr/portage/games-arcade/ascii-invaders/ascii-invaders-0.1b.ebuild +353 /usr/portage/games-arcade/notpacman +354 /usr/portage/games-arcade/notpacman/ChangeLog +355 /usr/portage/games-arcade/notpacman/Manifest +356 /usr/portage/games-arcade/notpacman/metadata.xml +357 /usr/portage/games-arcade/notpacman/notpacman-1.0.4.ebuild +358 /usr/portage/games-arcade/gnake +359 /usr/portage/games-arcade/gnake/ChangeLog +360 /usr/portage/games-arcade/gnake/Manifest +361 /usr/portage/games-arcade/gnake/metadata.xml +362 /usr/portage/games-arcade/gnake/gnake-0.94b.ebuild +363 /usr/portage/games-arcade/xbubble +364 /usr/portage/games-arcade/xbubble/ChangeLog +365 /usr/portage/games-arcade/xbubble/Manifest +366 /usr/portage/games-arcade/xbubble/metadata.xml +367 /usr/portage/games-arcade/xbubble/xbubble-0.5.8.ebuild +368 /usr/portage/games-arcade/xbubble/files +369 /usr/portage/games-arcade/xbubble/files/xbubble-0.5.8-libpng14.patch +370 /usr/portage/games-arcade/xbubble/files/xbubble-0.5.8-png15.patch +371 /usr/portage/games-arcade/xbubble/files/xbubble-0.5.8-locale.patch +372 /usr/portage/games-arcade/xbubble/files/xbubble-0.5.8-xpaths.patch +373 /usr/portage/games-arcade/stardork +374 /usr/portage/games-arcade/stardork/ChangeLog +375 /usr/portage/games-arcade/stardork/Manifest +376 /usr/portage/games-arcade/stardork/stardork-0.7.ebuild +377 /usr/portage/games-arcade/stardork/metadata.xml +378 /usr/portage/games-arcade/blobby +379 /usr/portage/games-arcade/blobby/ChangeLog +380 /usr/portage/games-arcade/blobby/Manifest +381 /usr/portage/games-arcade/blobby/blobby-0.9c.ebuild +382 /usr/portage/games-arcade/blobby/metadata.xml +383 /usr/portage/games-arcade/blobby/files +384 /usr/portage/games-arcade/blobby/files/blobby-0.9c-gcc47.patch +385 /usr/portage/games-arcade/jumpnbump +386 /usr/portage/games-arcade/jumpnbump/ChangeLog +387 /usr/portage/games-arcade/jumpnbump/Manifest +388 /usr/portage/games-arcade/jumpnbump/jumpnbump-1.50-r1.ebuild +389 /usr/portage/games-arcade/jumpnbump/metadata.xml +390 /usr/portage/games-arcade/xtux +391 /usr/portage/games-arcade/xtux/ChangeLog +392 /usr/portage/games-arcade/xtux/xtux-20030306.ebuild +393 /usr/portage/games-arcade/xtux/Manifest +394 /usr/portage/games-arcade/xtux/metadata.xml +395 /usr/portage/games-arcade/xtux/files +396 /usr/portage/games-arcade/xtux/files/xtux-20030306-particles.patch +397 /usr/portage/games-arcade/xtux/files/xtux-20030306-ldflags.patch +398 /usr/portage/games-arcade/rockdodger +399 /usr/portage/games-arcade/rockdodger/ChangeLog +400 /usr/portage/games-arcade/rockdodger/Manifest +401 /usr/portage/games-arcade/rockdodger/rockdodger-0.6.0a-r1.ebuild +402 /usr/portage/games-arcade/rockdodger/metadata.xml +403 /usr/portage/games-arcade/rockdodger/files +404 /usr/portage/games-arcade/rockdodger/files/rockdodger-0.6.0a-gcc41.patch +405 /usr/portage/games-arcade/rockdodger/files/rockdodger-0.6.0a-underlink.patch +406 /usr/portage/games-arcade/rockdodger/files/0.6.0a-sec.patch +407 /usr/portage/games-arcade/supertux +408 /usr/portage/games-arcade/supertux/ChangeLog +409 /usr/portage/games-arcade/supertux/Manifest +410 /usr/portage/games-arcade/supertux/metadata.xml +411 /usr/portage/games-arcade/supertux/supertux-0.1.3.ebuild +412 /usr/portage/games-arcade/supertux/files +413 /usr/portage/games-arcade/supertux/files/supertux-0.1.3-desktop.patch +414 /usr/portage/games-arcade/supertux/files/supertux-0.1.3-ndebug.patch +415 /usr/portage/games-arcade/supertux/files/supertux-0.1.3-gcc41.patch +416 /usr/portage/games-arcade/dynamitejack +417 /usr/portage/games-arcade/dynamitejack/ChangeLog +418 /usr/portage/games-arcade/dynamitejack/Manifest +419 /usr/portage/games-arcade/dynamitejack/metadata.xml +420 /usr/portage/games-arcade/dynamitejack/dynamitejack-1.0.23-r1.ebuild +421 /usr/portage/games-arcade/smc +422 /usr/portage/games-arcade/smc/ChangeLog +423 /usr/portage/games-arcade/smc/Manifest +424 /usr/portage/games-arcade/smc/smc-1.9.ebuild +425 /usr/portage/games-arcade/smc/metadata.xml +426 /usr/portage/games-arcade/smc/files +427 /usr/portage/games-arcade/smc/files/smc-1.9-underlink.patch +428 /usr/portage/games-arcade/smc/files/smc-1.9-boost150.patch +429 /usr/portage/games-arcade/marbleblast-demo +430 /usr/portage/games-arcade/marbleblast-demo/ChangeLog +431 /usr/portage/games-arcade/marbleblast-demo/Manifest +432 /usr/portage/games-arcade/marbleblast-demo/metadata.xml +433 /usr/portage/games-arcade/marbleblast-demo/marbleblast-demo-1.3.ebuild +434 /usr/portage/games-arcade/epiar +435 /usr/portage/games-arcade/epiar/ChangeLog +436 /usr/portage/games-arcade/epiar/Manifest +437 /usr/portage/games-arcade/epiar/metadata.xml +438 /usr/portage/games-arcade/epiar/files +439 /usr/portage/games-arcade/epiar/files/epiar-0.5-paths.patch +440 /usr/portage/games-arcade/epiar/files/epiar-0.5-gcc41.patch +441 /usr/portage/games-arcade/epiar/files/epiar-0.5-Makefile.linux.patch +442 /usr/portage/games-arcade/epiar/files/epiar-0.5-underlink.patch +443 /usr/portage/games-arcade/epiar/files/0.5-gentoo-paths.patch +444 /usr/portage/games-arcade/epiar/epiar-0.5-r1.ebuild +445 /usr/portage/games-arcade/circuslinux +446 /usr/portage/games-arcade/circuslinux/ChangeLog +447 /usr/portage/games-arcade/circuslinux/Manifest +448 /usr/portage/games-arcade/circuslinux/metadata.xml +449 /usr/portage/games-arcade/circuslinux/circuslinux-1.0.3.ebuild +450 /usr/portage/games-arcade/sdl-sopwith +451 /usr/portage/games-arcade/sdl-sopwith/ChangeLog +452 /usr/portage/games-arcade/sdl-sopwith/Manifest +453 /usr/portage/games-arcade/sdl-sopwith/sdl-sopwith-1.7.5-r1.ebuild +454 /usr/portage/games-arcade/sdl-sopwith/metadata.xml +455 /usr/portage/games-arcade/sdl-sopwith/files +456 /usr/portage/games-arcade/sdl-sopwith/files/sdl-sopwith-1.7.5-nogtk.patch +457 /usr/portage/games-arcade/sdl-sopwith/files/sdl-sopwith-1.7.5-video-fix.patch +458 /usr/portage/games-arcade/moleinvasion +459 /usr/portage/games-arcade/moleinvasion/ChangeLog +460 /usr/portage/games-arcade/moleinvasion/Manifest +461 /usr/portage/games-arcade/moleinvasion/metadata.xml +462 /usr/portage/games-arcade/moleinvasion/moleinvasion-0.4-r1.ebuild +463 /usr/portage/games-arcade/moleinvasion/files +464 /usr/portage/games-arcade/moleinvasion/files/moleinvasion-0.4-opengl.patch +465 /usr/portage/games-arcade/moleinvasion/files/moleinvasion-0.4-underlink.patch +466 /usr/portage/games-arcade/aquaria +467 /usr/portage/games-arcade/aquaria/ChangeLog +468 /usr/portage/games-arcade/aquaria/Manifest +469 /usr/portage/games-arcade/aquaria/aquaria-1.1.3-r1.ebuild +470 /usr/portage/games-arcade/aquaria/metadata.xml +471 /usr/portage/games-arcade/pycadia +472 /usr/portage/games-arcade/pycadia/ChangeLog +473 /usr/portage/games-arcade/pycadia/Manifest +474 /usr/portage/games-arcade/pycadia/metadata.xml +475 /usr/portage/games-arcade/pycadia/pycadia-0.5.1.ebuild +476 /usr/portage/games-arcade/sable +477 /usr/portage/games-arcade/sable/ChangeLog +478 /usr/portage/games-arcade/sable/Manifest +479 /usr/portage/games-arcade/sable/sable-1.0.ebuild +480 /usr/portage/games-arcade/sable/metadata.xml +481 /usr/portage/games-arcade/sable/files +482 /usr/portage/games-arcade/sable/files/sable-1.0-gentoo.patch +483 /usr/portage/games-arcade/cdogs-sdl +484 /usr/portage/games-arcade/cdogs-sdl/ChangeLog +485 /usr/portage/games-arcade/cdogs-sdl/Manifest +486 /usr/portage/games-arcade/cdogs-sdl/cdogs-sdl-0.4-r1.ebuild +487 /usr/portage/games-arcade/cdogs-sdl/metadata.xml +488 /usr/portage/games-arcade/cdogs-sdl/files +489 /usr/portage/games-arcade/cdogs-sdl/files/cdogs-sdl-0.4-64bit.patch +490 /usr/portage/games-arcade/digger +491 /usr/portage/games-arcade/digger/ChangeLog +492 /usr/portage/games-arcade/digger/Manifest +493 /usr/portage/games-arcade/digger/digger-20140423.ebuild +494 /usr/portage/games-arcade/digger/metadata.xml +495 /usr/portage/games-arcade/digger/files +496 /usr/portage/games-arcade/digger/files/digger-20140423-ldflags.patch +497 /usr/portage/games-arcade/afternoonstalker +498 /usr/portage/games-arcade/afternoonstalker/ChangeLog +499 /usr/portage/games-arcade/afternoonstalker/Manifest +500 /usr/portage/games-arcade/afternoonstalker/metadata.xml +501 /usr/portage/games-arcade/afternoonstalker/afternoonstalker-1.1.5.ebuild +502 /usr/portage/games-arcade/pacmanarena +503 /usr/portage/games-arcade/pacmanarena/ChangeLog +504 /usr/portage/games-arcade/pacmanarena/Manifest +505 /usr/portage/games-arcade/pacmanarena/metadata.xml +506 /usr/portage/games-arcade/pacmanarena/pacmanarena-0.15.ebuild +507 /usr/portage/games-arcade/pacmanarena/files +508 /usr/portage/games-arcade/pacmanarena/files/pacmanarena-0.15-underlink.patch +509 /usr/portage/games-arcade/holotz-castle +510 /usr/portage/games-arcade/holotz-castle/ChangeLog +511 /usr/portage/games-arcade/holotz-castle/Manifest +512 /usr/portage/games-arcade/holotz-castle/holotz-castle-1.3.14.ebuild +513 /usr/portage/games-arcade/holotz-castle/metadata.xml +514 /usr/portage/games-arcade/holotz-castle/files +515 /usr/portage/games-arcade/holotz-castle/files/holotz-castle-1.3.14-gcc44.patch +516 /usr/portage/games-arcade/holotz-castle/files/holotz-castle-1.3.14-build.patch +517 /usr/portage/games-arcade/holotz-castle/files/holotz-castle-1.3.14-underlink.patch +518 /usr/portage/games-arcade/bloboats +519 /usr/portage/games-arcade/bloboats/ChangeLog +520 /usr/portage/games-arcade/bloboats/Manifest +521 /usr/portage/games-arcade/bloboats/bloboats-1.0.2.ebuild +522 /usr/portage/games-arcade/bloboats/metadata.xml +523 /usr/portage/games-arcade/bloboats/files +524 /usr/portage/games-arcade/bloboats/files/bloboats-1.0.2-warnings.patch +525 /usr/portage/games-arcade/berusky +526 /usr/portage/games-arcade/berusky/ChangeLog +527 /usr/portage/games-arcade/berusky/Manifest +528 /usr/portage/games-arcade/berusky/berusky-1.7.1.ebuild +529 /usr/portage/games-arcade/berusky/metadata.xml +530 /usr/portage/games-arcade/berusky/files +531 /usr/portage/games-arcade/berusky/files/berusky-1.7.1-gentoo.patch +532 /usr/portage/games-arcade/conveysdl +533 /usr/portage/games-arcade/conveysdl/ChangeLog +534 /usr/portage/games-arcade/conveysdl/Manifest +535 /usr/portage/games-arcade/conveysdl/metadata.xml +536 /usr/portage/games-arcade/conveysdl/conveysdl-1.3.ebuild +537 /usr/portage/games-arcade/conveysdl/files +538 /usr/portage/games-arcade/conveysdl/files/conveysdl-1.3-arrays.patch +539 /usr/portage/games-arcade/conveysdl/files/conveysdl-1.3-speed.patch +540 /usr/portage/games-arcade/openbubbles +541 /usr/portage/games-arcade/openbubbles/ChangeLog +542 /usr/portage/games-arcade/openbubbles/Manifest +543 /usr/portage/games-arcade/openbubbles/metadata.xml +544 /usr/portage/games-arcade/openbubbles/openbubbles-1.2.ebuild +545 /usr/portage/games-arcade/openbubbles/files +546 /usr/portage/games-arcade/openbubbles/files/openbubbles-1.2-glibc2.10.patch +547 /usr/portage/games-arcade/vor +548 /usr/portage/games-arcade/vor/ChangeLog +549 /usr/portage/games-arcade/vor/Manifest +550 /usr/portage/games-arcade/vor/metadata.xml +551 /usr/portage/games-arcade/vor/vor-0.5.5.ebuild +552 /usr/portage/games-arcade/vor/files +553 /usr/portage/games-arcade/vor/files/vor-0.5.5-underlink.patch +554 /usr/portage/games-arcade/wop +555 /usr/portage/games-arcade/wop/ChangeLog +556 /usr/portage/games-arcade/wop/Manifest +557 /usr/portage/games-arcade/wop/wop-0.4.3-r1.ebuild +558 /usr/portage/games-arcade/wop/metadata.xml +559 /usr/portage/games-arcade/wop/files +560 /usr/portage/games-arcade/wop/files/wop-0.4.3-gcc43.patch +561 /usr/portage/games-arcade/wop/files/wop-0.4.3-Makefile.patch +562 /usr/portage/games-arcade/supertransball2 +563 /usr/portage/games-arcade/supertransball2/ChangeLog +564 /usr/portage/games-arcade/supertransball2/supertransball2-1.5.ebuild +565 /usr/portage/games-arcade/supertransball2/Manifest +566 /usr/portage/games-arcade/supertransball2/metadata.xml +567 /usr/portage/games-arcade/supertransball2/files +568 /usr/portage/games-arcade/supertransball2/files/supertransball2-1.5-ldflags.patch +569 /usr/portage/games-arcade/grande-KXL +570 /usr/portage/games-arcade/grande-KXL/ChangeLog +571 /usr/portage/games-arcade/grande-KXL/Manifest +572 /usr/portage/games-arcade/grande-KXL/metadata.xml +573 /usr/portage/games-arcade/grande-KXL/grande-KXL-0.6.ebuild +574 /usr/portage/games-arcade/grande-KXL/files +575 /usr/portage/games-arcade/grande-KXL/files/grande-KXL-0.6-configure.in.patch +576 /usr/portage/games-arcade/grande-KXL/files/grande-KXL-0.6-cflags.patch +577 /usr/portage/games-arcade/cavezofphear +578 /usr/portage/games-arcade/cavezofphear/ChangeLog +579 /usr/portage/games-arcade/cavezofphear/Manifest +580 /usr/portage/games-arcade/cavezofphear/metadata.xml +581 /usr/portage/games-arcade/cavezofphear/cavezofphear-0.5.1.ebuild +582 /usr/portage/games-arcade/cavezofphear/files +583 /usr/portage/games-arcade/cavezofphear/files/cavezofphear-0.5.1-gentoo.patch +584 /usr/portage/games-arcade/defendguin +585 /usr/portage/games-arcade/defendguin/ChangeLog +586 /usr/portage/games-arcade/defendguin/Manifest +587 /usr/portage/games-arcade/defendguin/metadata.xml +588 /usr/portage/games-arcade/defendguin/defendguin-0.0.12.ebuild +589 /usr/portage/games-arcade/missile +590 /usr/portage/games-arcade/missile/ChangeLog +591 /usr/portage/games-arcade/missile/Manifest +592 /usr/portage/games-arcade/missile/metadata.xml +593 /usr/portage/games-arcade/missile/missile-1.0.1.ebuild +594 /usr/portage/games-arcade/missile/files +595 /usr/portage/games-arcade/missile/files/missile-1.0.1-ldflags.patch +596 /usr/portage/games-arcade/retrobattle +597 /usr/portage/games-arcade/retrobattle/ChangeLog +598 /usr/portage/games-arcade/retrobattle/Manifest +599 /usr/portage/games-arcade/retrobattle/retrobattle-1.0.0.ebuild +600 /usr/portage/games-arcade/retrobattle/metadata.xml +601 /usr/portage/games-arcade/retrobattle/files +602 /usr/portage/games-arcade/retrobattle/files/retrobattle-1.0.0-sound.patch +603 /usr/portage/games-arcade/retrobattle/files/retrobattle-1.0.0-build.patch +604 /usr/portage/games-arcade/asteroid +605 /usr/portage/games-arcade/asteroid/ChangeLog +606 /usr/portage/games-arcade/asteroid/Manifest +607 /usr/portage/games-arcade/asteroid/metadata.xml +608 /usr/portage/games-arcade/asteroid/asteroid-1.1.ebuild +609 /usr/portage/games-arcade/asteroid/files +610 /usr/portage/games-arcade/asteroid/files/asteroid-1.1-include.patch +611 /usr/portage/games-arcade/sdb +612 /usr/portage/games-arcade/sdb/ChangeLog +613 /usr/portage/games-arcade/sdb/Manifest +614 /usr/portage/games-arcade/sdb/metadata.xml +615 /usr/portage/games-arcade/sdb/files +616 /usr/portage/games-arcade/sdb/files/sdb-1.0.2-endian.patch +617 /usr/portage/games-arcade/sdb/files/sdb-1.0.2-gcc43.patch +618 /usr/portage/games-arcade/sdb/files/sdb-1.0.2-ldflags.patch +619 /usr/portage/games-arcade/sdb/sdb-1.0.2.ebuild +620 /usr/portage/games-arcade/lbreakout +621 /usr/portage/games-arcade/lbreakout/ChangeLog +622 /usr/portage/games-arcade/lbreakout/Manifest +623 /usr/portage/games-arcade/lbreakout/metadata.xml +624 /usr/portage/games-arcade/lbreakout/lbreakout-010315.ebuild +625 /usr/portage/games-arcade/xscavenger +626 /usr/portage/games-arcade/xscavenger/ChangeLog +627 /usr/portage/games-arcade/xscavenger/Manifest +628 /usr/portage/games-arcade/xscavenger/metadata.xml +629 /usr/portage/games-arcade/xscavenger/files +630 /usr/portage/games-arcade/xscavenger/files/1.4.4-gentoo.patch +631 /usr/portage/games-arcade/xscavenger/xscavenger-1.4.4.ebuild +632 /usr/portage/games-arcade/bomns +633 /usr/portage/games-arcade/bomns/ChangeLog +634 /usr/portage/games-arcade/bomns/Manifest +635 /usr/portage/games-arcade/bomns/metadata.xml +636 /usr/portage/games-arcade/bomns/bomns-0.99.2.ebuild +637 /usr/portage/games-arcade/bomns/files +638 /usr/portage/games-arcade/bomns/files/bomns-0.99.2-fpe.patch +639 /usr/portage/games-arcade/openmortal +640 /usr/portage/games-arcade/openmortal/ChangeLog +641 /usr/portage/games-arcade/openmortal/Manifest +642 /usr/portage/games-arcade/openmortal/metadata.xml +643 /usr/portage/games-arcade/openmortal/openmortal-0.7-r1.ebuild +644 /usr/portage/games-arcade/openmortal/files +645 /usr/portage/games-arcade/openmortal/files/openmortal-0.7-freetype.patch +646 /usr/portage/games-arcade/openmortal/files/openmortal-0.7-gcc41.patch +647 /usr/portage/games-arcade/syobon +648 /usr/portage/games-arcade/syobon/ChangeLog +649 /usr/portage/games-arcade/syobon/Manifest +650 /usr/portage/games-arcade/syobon/metadata.xml +651 /usr/portage/games-arcade/syobon/syobon-1.0.1.ebuild +652 /usr/portage/games-arcade/aop +653 /usr/portage/games-arcade/aop/ChangeLog +654 /usr/portage/games-arcade/aop/Manifest +655 /usr/portage/games-arcade/aop/aop-0.6.ebuild +656 /usr/portage/games-arcade/aop/metadata.xml +657 /usr/portage/games-arcade/aop/files +658 /usr/portage/games-arcade/aop/files/aop-0.6-as-needed.patch +659 /usr/portage/games-arcade/commandergenius +660 /usr/portage/games-arcade/commandergenius/ChangeLog +661 /usr/portage/games-arcade/commandergenius/Manifest +662 /usr/portage/games-arcade/commandergenius/metadata.xml +663 /usr/portage/games-arcade/commandergenius/commandergenius-1.8.0.0.ebuild +664 /usr/portage/games-arcade/commandergenius/files +665 /usr/portage/games-arcade/commandergenius/files/commandergenius-1.8.0.0-install.patch +666 /usr/portage/games-arcade/commandergenius/files/commandergenius-wrapper +667 /usr/portage/games-arcade/thinktanks-demo +668 /usr/portage/games-arcade/thinktanks-demo/ChangeLog +669 /usr/portage/games-arcade/thinktanks-demo/Manifest +670 /usr/portage/games-arcade/thinktanks-demo/thinktanks-demo-1.1-r2.ebuild +671 /usr/portage/games-arcade/thinktanks-demo/metadata.xml +672 /usr/portage/games-arcade/gunocide2ex +673 /usr/portage/games-arcade/gunocide2ex/ChangeLog +674 /usr/portage/games-arcade/gunocide2ex/Manifest +675 /usr/portage/games-arcade/gunocide2ex/metadata.xml +676 /usr/portage/games-arcade/gunocide2ex/gunocide2ex-1.0.ebuild +677 /usr/portage/games-arcade/gunocide2ex/files +678 /usr/portage/games-arcade/gunocide2ex/files/gunocide2ex-1.0-build.patch +679 /usr/portage/games-arcade/gunocide2ex/files/gunocide2ex-1.0-glibc2.10.patch +680 /usr/portage/games-arcade/excido +681 /usr/portage/games-arcade/excido/ChangeLog +682 /usr/portage/games-arcade/excido/Manifest +683 /usr/portage/games-arcade/excido/metadata.xml +684 /usr/portage/games-arcade/excido/excido-0.1.5c-r2.ebuild +685 /usr/portage/games-arcade/excido/files +686 /usr/portage/games-arcade/excido/files/excido-0.1.5c-build.patch +687 /usr/portage/games-arcade/excido/files/excido-0.1.5c-freealut.patch +688 /usr/portage/games-arcade/apricots +689 /usr/portage/games-arcade/apricots/ChangeLog +690 /usr/portage/games-arcade/apricots/apricots-0.2.6-r1.ebuild +691 /usr/portage/games-arcade/apricots/Manifest +692 /usr/portage/games-arcade/apricots/metadata.xml +693 /usr/portage/games-arcade/apricots/files +694 /usr/portage/games-arcade/apricots/files/apricots-0.2.6-freealut.patch +695 /usr/portage/games-arcade/apricots/files/apricots-0.2.6-ldflags.patch +696 /usr/portage/games-arcade/primateplunge +697 /usr/portage/games-arcade/primateplunge/ChangeLog +698 /usr/portage/games-arcade/primateplunge/Manifest +699 /usr/portage/games-arcade/primateplunge/primateplunge-1.1-r1.ebuild +700 /usr/portage/games-arcade/primateplunge/metadata.xml +701 /usr/portage/games-arcade/primateplunge/files +702 /usr/portage/games-arcade/primateplunge/files/primateplunge-1.1-AC_SUBST.patch +703 /usr/portage/games-arcade/xsfcave +704 /usr/portage/games-arcade/xsfcave/ChangeLog +705 /usr/portage/games-arcade/xsfcave/Manifest +706 /usr/portage/games-arcade/xsfcave/metadata.xml +707 /usr/portage/games-arcade/xsfcave/xsfcave-0.5.ebuild +708 /usr/portage/games-arcade/triplexinvaders +709 /usr/portage/games-arcade/triplexinvaders/ChangeLog +710 /usr/portage/games-arcade/triplexinvaders/Manifest +711 /usr/portage/games-arcade/triplexinvaders/metadata.xml +712 /usr/portage/games-arcade/triplexinvaders/triplexinvaders-1.08.ebuild +713 /usr/portage/games-arcade/triplexinvaders/files +714 /usr/portage/games-arcade/triplexinvaders/files/triplexinvaders-1.08-gentoo.patch +715 /usr/portage/games-arcade/pachi +716 /usr/portage/games-arcade/pachi/ChangeLog +717 /usr/portage/games-arcade/pachi/Manifest +718 /usr/portage/games-arcade/pachi/metadata.xml +719 /usr/portage/games-arcade/pachi/pachi-1.0.ebuild +720 /usr/portage/games-arcade/pachi/files +721 /usr/portage/games-arcade/pachi/files/1.0-autotools.patch +722 /usr/portage/games-arcade/marbleblastgold-demo +723 /usr/portage/games-arcade/marbleblastgold-demo/ChangeLog +724 /usr/portage/games-arcade/marbleblastgold-demo/Manifest +725 /usr/portage/games-arcade/marbleblastgold-demo/metadata.xml +726 /usr/portage/games-arcade/marbleblastgold-demo/marbleblastgold-demo-1.4.1.ebuild +727 /usr/portage/games-arcade/blockrage +728 /usr/portage/games-arcade/blockrage/ChangeLog +729 /usr/portage/games-arcade/blockrage/Manifest +730 /usr/portage/games-arcade/blockrage/metadata.xml +731 /usr/portage/games-arcade/blockrage/blockrage-0.2.3.ebuild +732 /usr/portage/games-arcade/blockrage/files +733 /usr/portage/games-arcade/blockrage/files/blockrage-0.2.3-config.patch +734 /usr/portage/games-arcade/solarwolf +735 /usr/portage/games-arcade/solarwolf/solarwolf-1.5.ebuild +736 /usr/portage/games-arcade/solarwolf/ChangeLog +737 /usr/portage/games-arcade/solarwolf/Manifest +738 /usr/portage/games-arcade/solarwolf/metadata.xml +739 /usr/portage/games-arcade/xboing +740 /usr/portage/games-arcade/xboing/ChangeLog +741 /usr/portage/games-arcade/xboing/Manifest +742 /usr/portage/games-arcade/xboing/metadata.xml +743 /usr/portage/games-arcade/xboing/xboing-2.4-r2.ebuild +744 /usr/portage/games-arcade/xboing/files +745 /usr/portage/games-arcade/xboing/files/xboing-2.4-buffer.patch +746 /usr/portage/games-arcade/xboing/files/xboing-2.4-sleep.patch +747 /usr/portage/games-arcade/komi +748 /usr/portage/games-arcade/komi/ChangeLog +749 /usr/portage/games-arcade/komi/Manifest +750 /usr/portage/games-arcade/komi/metadata.xml +751 /usr/portage/games-arcade/komi/komi-1.04.ebuild +752 /usr/portage/games-arcade/komi/files +753 /usr/portage/games-arcade/komi/files/1.04-DESTDIR.patch +754 /usr/portage/games-arcade/komi/files/komi-1.04-install.patch +755 /usr/portage/games-arcade/metadata.xml +756 /usr/portage/games-arcade/briquolo +757 /usr/portage/games-arcade/briquolo/ChangeLog +758 /usr/portage/games-arcade/briquolo/Manifest +759 /usr/portage/games-arcade/briquolo/briquolo-0.5.7.ebuild +760 /usr/portage/games-arcade/briquolo/metadata.xml +761 /usr/portage/games-arcade/briquolo/files +762 /usr/portage/games-arcade/briquolo/files/briquolo-0.5.7-gcc43.patch +763 /usr/portage/games-arcade/briquolo/files/briquolo-0.5.7-libpng14.patch +764 /usr/portage/games-arcade/spout +765 /usr/portage/games-arcade/spout/ChangeLog +766 /usr/portage/games-arcade/spout/Manifest +767 /usr/portage/games-arcade/spout/metadata.xml +768 /usr/portage/games-arcade/spout/spout-1.3.ebuild +769 /usr/portage/games-arcade/mrrescue +770 /usr/portage/games-arcade/mrrescue/ChangeLog +771 /usr/portage/games-arcade/mrrescue/Manifest +772 /usr/portage/games-arcade/mrrescue/metadata.xml +773 /usr/portage/games-arcade/mrrescue/mrrescue-1.02b.ebuild +774 /usr/portage/games-arcade/insaneodyssey +775 /usr/portage/games-arcade/insaneodyssey/ChangeLog +776 /usr/portage/games-arcade/insaneodyssey/Manifest +777 /usr/portage/games-arcade/insaneodyssey/metadata.xml +778 /usr/portage/games-arcade/insaneodyssey/insaneodyssey-000311.ebuild +779 /usr/portage/games-arcade/insaneodyssey/files +780 /usr/portage/games-arcade/insaneodyssey/files/insaneodyssey-000311-datafiles.patch +781 /usr/portage/games-arcade/trailblazer +782 /usr/portage/games-arcade/trailblazer/ChangeLog +783 /usr/portage/games-arcade/trailblazer/Manifest +784 /usr/portage/games-arcade/trailblazer/metadata.xml +785 /usr/portage/games-arcade/trailblazer/trailblazer-0.9.ebuild +786 /usr/portage/games-arcade/trailblazer/files +787 /usr/portage/games-arcade/trailblazer/files/trailblazer-0.9-underlink.patch +788 /usr/portage/games-arcade/trailblazer/files/trailblazer-0.9-ldflags.patch +789 /usr/portage/games-arcade/monkey-bubble +790 /usr/portage/games-arcade/monkey-bubble/ChangeLog +791 /usr/portage/games-arcade/monkey-bubble/monkey-bubble-0.4.0.ebuild +792 /usr/portage/games-arcade/monkey-bubble/Manifest +793 /usr/portage/games-arcade/monkey-bubble/metadata.xml +794 /usr/portage/games-arcade/monkey-bubble/files +795 /usr/portage/games-arcade/monkey-bubble/files/monkey-bubble-0.4.0-glib-single-include.patch +796 /usr/portage/games-arcade/monkey-bubble/files/monkey-bubble-0.4.0-gnome-doc.patch +797 /usr/portage/games-arcade/monkey-bubble/files/monkey-bubble-0.4.0-asneeded.patch +798 /usr/portage/games-arcade/monkey-bubble/files/monkey-bubble-0.4.0-noesound.patch +799 /usr/portage/games-arcade/whichwayisup +800 /usr/portage/games-arcade/whichwayisup/ChangeLog diff --git a/libpqpp/unittests/pqschema.sql b/libpqpp/unittests/pqschema.sql new file mode 100644 index 0000000..80d9183 --- /dev/null +++ b/libpqpp/unittests/pqschema.sql @@ -0,0 +1,37 @@ +-- +-- pg_dump style comment +-- Table: test; owner: comment: ; +-- + +/* + This is + a + multiline comment */ + +CREATE TABLE test( + id int, + fl numeric(5,2), + string text, + boolean bool, + dt timestamp without time zone, + ts interval); + +INSERT INTO test VALUES(4, 123.45, 'some text with a ; in it and a '' too', true, '2015-04-27 23:06:03', '1 day 14:13:12'); + +CREATE TABLE test2( + path text not null); + +INSERT INTO test2 VALUES('$SCRIPTDIR/pqschema.sql'); + +CREATE FUNCTION event_tsvector() RETURNS int +LANGUAGE sql STABLE +AS $tag$ + SELECT max(id) + FROM test + WHERE string != 'complex '' string;'; +$tag$; + +CREATE TABLE bulktest( + id int, + string text); + diff --git a/libpqpp/unittests/testpq.cpp b/libpqpp/unittests/testpq.cpp new file mode 100644 index 0000000..58441d2 --- /dev/null +++ b/libpqpp/unittests/testpq.cpp @@ -0,0 +1,159 @@ +#define BOOST_TEST_MODULE TestPQ +#include + +#include +#include +#include +#include +#include "mock.h" +#include +#include +#include + +class StandardMockDatabase : public PQ::Mock { + public: + StandardMockDatabase() : PQ::Mock("user=postgres dbname=postgres", "pqmock", { + rootDir / "pqschema.sql" }) + { + } +}; + +BOOST_GLOBAL_FIXTURE( StandardMockDatabase ); + +BOOST_FIXTURE_TEST_SUITE( Core, DB::TestCore ); + +BOOST_AUTO_TEST_CASE( transactions ) +{ + auto ro = DB::MockDatabase::openConnectionTo("pqmock"); + + BOOST_REQUIRE_EQUAL(false, ro->inTx()); + ro->beginTx(); + BOOST_REQUIRE_EQUAL(true, ro->inTx()); + ro->rollbackTx(); + BOOST_REQUIRE_EQUAL(false, ro->inTx()); + + ro->beginTx(); + BOOST_REQUIRE_EQUAL(true, ro->inTx()); + ro->commitTx(); + BOOST_REQUIRE_EQUAL(false, ro->inTx()); + + delete ro; +} + +BOOST_AUTO_TEST_CASE( bindAndSend ) +{ + auto rw = DB::MockDatabase::openConnectionTo("pqmock"); + + auto mod = rw->newModifyCommand("INSERT INTO test VALUES(?, ?, ?, ?, ?, ?)"); + mod->bindParamI(0, testInt); + mod->bindParamF(1, testDouble); + mod->bindParamS(2, testString); + mod->bindParamB(3, testBool); + mod->bindParamT(4, testDateTime); + mod->bindParamT(5, testInterval); + mod->execute(); + delete mod; + rw->commitTx(); + delete rw; +} + +BOOST_AUTO_TEST_CASE( bindAndSelect ) +{ + auto ro = DB::MockDatabase::openConnectionTo("pqmock"); + + auto select = ro->newSelectCommand("SELECT * FROM test WHERE id = ?"); + select->bindParamI(0, testInt); + select->execute(); + int rows = 0; + while (select->fetch()) { + assertColumnValueHelper(*select, 0, testInt); + assertColumnValueHelper(*select, 1, testDouble); + assertColumnValueHelper(*select, 2, testString); + assertColumnValueHelper(*select, 3, testBool); + assertColumnValueHelper(*select, 4, testDateTime); + assertColumnValueHelper(*select, 5, testInterval); + rows += 1; + } + delete select; + BOOST_REQUIRE_EQUAL(1, rows); + delete ro; +} + +BOOST_AUTO_TEST_CASE( bindAndSelectOther ) +{ + auto ro = DB::MockDatabase::openConnectionTo("pqmock"); + + auto select = ro->newSelectCommand("SELECT * FROM test WHERE id != ?"); + select->bindParamI(0, testInt); + select->execute(); + int rows = 0; + while (select->fetch()) { + assertColumnValueHelper(*select, 0, 4); + assertColumnValueHelper(*select, 1, 123.45); + assertColumnValueHelper(*select, 2, std::string("some text with a ; in it and a ' too")); + assertColumnValueHelper(*select, 3, true); + assertColumnValueHelper(*select, 4, boost::posix_time::ptime_from_tm({ 3, 6, 23, 27, 3, 115, 0, 0, 0, 0, 0})); + assertColumnValueHelper(*select, 5, boost::posix_time::time_duration(38, 13, 12)); + rows += 1; + } + delete select; + BOOST_REQUIRE_EQUAL(1, rows); + delete ro; +} + +BOOST_AUTO_TEST_CASE( testP2MockScriptDir ) +{ + auto ro = DB::MockDatabase::openConnectionTo("pqmock"); + + auto select = ro->newSelectCommand("SELECT path FROM test2"); + select->execute(); + while (select->fetch()) { + std::string path; + (*select)[0] >> path; + BOOST_REQUIRE(boost::filesystem::exists(path)); + } + delete select; + delete ro; +} + +BOOST_AUTO_TEST_CASE( bulkload ) +{ + auto ro = DB::MockDatabase::openConnectionTo("pqmock"); + + auto count = ro->newSelectCommand("SELECT COUNT(*) FROM bulktest"); + // Test empty + ro->beginBulkUpload("bulktest", ""); + ro->endBulkUpload(NULL); + assertScalarValueHelper(*count, 0); + // Test sample file + ro->beginBulkUpload("bulktest", ""); + std::ifstream in((rootDir / "bulk.sample").string()); + if (!in.good()) throw std::runtime_error("Couldn't open bulk.sample"); + char buf[BUFSIZ]; + for (std::streamsize r; (r = in.readsome(buf, sizeof(buf))) > 0; ) { + ro->bulkUploadData(buf, r); + } + ro->endBulkUpload(NULL); + assertScalarValueHelper(*count, 800); + + delete count; + delete ro; +} + +BOOST_AUTO_TEST_CASE( bigIterate ) +{ + auto ro = DB::MockDatabase::openConnectionTo("pqmock"); + + auto count = ro->newSelectCommand("SELECT * FROM bulktest"); + unsigned int rows = 0; + while (count->fetch()) { + rows += 1; + } + BOOST_REQUIRE_EQUAL(800, rows); + + delete count; + delete ro; +} + +BOOST_AUTO_TEST_SUITE_END(); + -- cgit v1.2.3