Commit 793e9f3 Add some basic testing, dummy rpm creation, and a testing README

8 files Authored and Committed by Adam Miller 2 years ago
Add some basic testing, dummy rpm creation, and a testing README

    
 1 @@ -0,0 +1,44 @@
 2 + Running pungi4 tests
 3 + 
 4 + Pungi4 is an utility to perform composes of rpms, as such we will need some
 5 + rpms to perform composes on.
 6 + 
 7 + In this directory you will find a small utility called 'createtestdata.py' that
 8 + takes two arguments, first is the package manifest JSON file that will contain
 9 + the list of packages that are architecture specific, the list of architectures
10 + to build them for, and finally the packages that are noarch. (Don't worry about
11 + your dev machine being the wrong arch as needed to be produced, we're using an
12 + utility library called rpmfluff[0] that's faking a lot of this for us)
13 + 
14 + Before we run any tests we will need to create a repo to work with using the
15 + 'createtestdata.py' script. NOTE: This script requires both the 'python-click
16 + and 'python-rpmfluff' packages.
17 + 
18 +     $ ./createtestdata.py --pkgfile pkgs.json --outdir .
19 + 
20 + You will now find a directory called ./repo in the current directory, this is
21 + setup exactly as the pungi tests need it and you are now ready to run tests.
22 + 
23 + Next you will find a hand full of scripts named test_* and these are to run the
24 + actual tests. There is also a small wrapper called 'run_all_tests.sh' that will
25 + run all scripts prefixed with test_* in the current directory.
26 + 
27 +     $ ./run_all_tests.sh
28 + 
29 + Or alternatively, select the tests you want to run and run them one by one:
30 + 
31 +     $ ./test_arch.py
32 +     ......
33 +     ----------------------------------------------------------------------
34 +     Ran 6 tests in 0.001s
35 + 
36 +     OK
37 + 
38 +     $ ./test_pathmatch.py
39 +     ...
40 +     ----------------------------------------------------------------------
41 +     Ran 3 tests in 0.001s
42 + 
43 +     OK
44 + 
45 + [0] - https://fedorahosted.org/rpmfluff/
  1 @@ -0,0 +1,150 @@
  2 + #!/usr/bin/env python2
  3 + # -*- coding: utf-8 -*-
  4 + 
  5 + 
  6 + # This program is free software; you can redistribute it and/or modify
  7 + # it under the terms of the GNU General Public License as published by
  8 + # the Free Software Foundation; version 2 of the License.
  9 + #
 10 + # This program is distributed in the hope that it will be useful,
 11 + # but WITHOUT ANY WARRANTY; without even the implied warranty of
 12 + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 13 + # GNU Library General Public License for more details.
 14 + #
 15 + # You should have received a copy of the GNU General Public License
 16 + # along with this program; if not, write to the Free Software
 17 + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 18 + 
 19 + import os
 20 + import tempfile
 21 + import shutil
 22 + import libcomps
 23 + from contextlib import contextmanager
 24 + 
 25 + #import pungi.phases.pkgsets.pkgsets
 26 + from rpmfluff import SimpleRpmBuild
 27 + 
 28 + # helpers for creating RPMs to test with
 29 + @contextmanager
 30 + def in_tempdir(outdir, prefix='_'):
 31 +     """
 32 +     py:class:: in_tempdir(prefix='_')
 33 + 
 34 +     Context manager for the rpmbuild tempdir
 35 +     """
 36 +     oldcwd = os.getcwd()
 37 +     tmpdir = tempfile.mkdtemp(prefix=prefix)
 38 +     os.chdir(tmpdir)
 39 +     yield
 40 +     os.chdir(oldcwd)
 41 +     shutil.rmtree(tmpdir)
 42 + 
 43 + @contextmanager
 44 + def in_dir(directory):
 45 +     """
 46 +     py:class:: in_dir(dir)
 47 + 
 48 +     Context manager to handle things in a generic method
 49 +     """
 50 +     oldcwd = os.getcwd()
 51 +     tmpdir = tempfile.mkdtemp()
 52 +     os.chdir(tmpdir)
 53 +     yield
 54 +     os.chdir(oldcwd)
 55 + 
 56 + def make_rpm(outdir, archlist, name, version='1.0', release='1'):
 57 +     """
 58 +     py:function:: make_rpm(outdir, name='test', version='1.0', release='1', archlist=None)
 59 + 
 60 +     Create the fake test rpms
 61 +     """
 62 + 
 63 +     if (archlist is None):
 64 +         raise TypeError( "No defined architectures for make_rpm")
 65 + 
 66 +     abs_outdir = os.path.abspath(outdir)
 67 + 
 68 +     if not os.path.isdir(abs_outdir):
 69 +         os.mkdir(abs_outdir)
 70 + 
 71 +     p = SimpleRpmBuild(name, version, release, archlist)
 72 +     with in_tempdir(abs_outdir, prefix="tmppkgs"):
 73 +         p.make()
 74 + 
 75 +         srpm_outdir = os.path.join(
 76 +             abs_outdir,
 77 +             "repo",
 78 +             "src",
 79 +         )
 80 + 
 81 +         if not os.path.isdir(srpm_outdir):
 82 +             os.makedirs(srpm_outdir)
 83 + 
 84 +         srpmfile = p.get_built_srpm()
 85 +         src_outfile = os.path.join(
 86 +             os.path.abspath(abs_outdir),
 87 +             "repo",
 88 +             'src',
 89 +             os.path.basename(srpmfile)
 90 +         )
 91 +         shutil.move(srpmfile, src_outfile)
 92 + 
 93 +         for arch in archlist:
 94 + 
 95 +             arch_outdir = os.path.join(
 96 +                 abs_outdir,
 97 +                 "repo",
 98 +                 arch,
 99 +             )
100 +             if not os.path.isdir(arch_outdir):
101 +                 os.makedirs(arch_outdir)
102 + 
103 + 
104 +             rpmfile = p.get_built_rpm(arch)
105 +             bin_outfile = os.path.join(
106 +                 os.path.abspath(abs_outdir),
107 +                 "repo",
108 +                 arch,
109 +                 os.path.basename(rpmfile)
110 +             )
111 +             shutil.move(rpmfile, bin_outfile)
112 +     return p
113 + 
114 + def get_rpm_list_from_comps(compspath):
115 +     """
116 +     py:function:: get_rpm_list_from_comps(compspath)
117 + 
118 +     Return a list of rpms from a compsfile
119 +     """
120 + 
121 +     pkg_list = []
122 + 
123 +     comps = libcomps.Comps()
124 +     comps.fromxml_f(compspath)
125 + 
126 +     for group in comps.groups:
127 +         for pkg in comps.groups[group.id].packages:
128 +             pkg_list.append(pkg.name)
129 + 
130 +     return pkg_list
131 + 
132 + 
133 + if __name__ == "__main__":
134 +     import click
135 +     import json
136 + 
137 +     @click.command()
138 +     @click.option('--pkgfile', default=None, required=True,
139 +                   help="Path to json pkg file")
140 +     @click.option('--outdir', default=None, required=True,
141 +                   help="Directory to create temp dummy repo")
142 +     def createtestdata(pkgfile, outdir):
143 +         pkgdata = json.loads(open(pkgfile,'r').read())
144 +         for pkg in pkgdata['archpkgs']:
145 +             make_rpm(outdir, pkgdata['archs'], pkg)
146 +         for pkg in pkgdata['noarchpkgs']:
147 +             make_rpm(outdir, ['noarch'], pkg)
148 + 
149 +         os.popen('/usr/bin/createrepo %s' % os.path.join(outdir, "repo"))
150 + 
151 +     createtestdata()
  1 @@ -0,0 +1,163 @@
  2 + <?xml version="1.0" encoding="UTF-8"?>
  3 + <!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
  4 + <comps>
  5 + 
  6 +   <!-- GROUPS -->
  7 + 
  8 +   <group>
  9 +     <id>core</id>
 10 +     <name>Core</name>
 11 +     <description>Smallest possible installation</description>
 12 +     <default>true</default>
 13 +     <uservisible>false</uservisible>
 14 +     <packagelist>
 15 +       <packagereq type="mandatory">dummy-bash</packagereq>
 16 +     </packagelist>
 17 +   </group>
 18 + 
 19 +   <group>
 20 +     <id>standard</id>
 21 +     <name>Standard</name>
 22 +     <description>Common set of utilities that extend the minimal installation.</description>
 23 +     <default>false</default>
 24 +     <uservisible>true</uservisible>
 25 +     <packagelist>
 26 +       <packagereq>dummy-lvm2</packagereq>
 27 +     </packagelist>
 28 +   </group>
 29 + 
 30 +   <group>
 31 +     <id>text-internet</id>
 32 +     <name>Text-based Internet</name>
 33 +     <description>This group includes text-based email, Web, and chat clients.  These applications do not require the X Window System.</description>
 34 +     <default>false</default>
 35 +     <uservisible>true</uservisible>
 36 +     <packagelist>
 37 +       <packagereq type="optional">dummy-elinks</packagereq>
 38 +       <packagereq type="optional">dummy-tftp</packagereq>
 39 +     </packagelist>
 40 +   </group>
 41 + 
 42 +   <group>
 43 +     <id>firefox</id>
 44 +     <name>Firefox Web Browser</name>
 45 +     <description>The Firefox web browser</description>
 46 +     <default>false</default>
 47 +     <uservisible>false</uservisible>
 48 +     <packagelist>
 49 +       <packagereq>dummy-firefox</packagereq>
 50 +       <packagereq>dummy-icedtea-web</packagereq>
 51 +     </packagelist>
 52 +   </group>
 53 + 
 54 +   <group arch="i386 x86_64">
 55 +     <id>skype</id>
 56 +     <name>Skype</name>
 57 +     <description>Free internet telephony</description>
 58 +     <default>false</default>
 59 +     <uservisible>true</uservisible>
 60 +     <packagelist>
 61 +       <packagereq>dummy-skype</packagereq>
 62 +     </packagelist>
 63 +   </group>
 64 + 
 65 +   <group arch="x86_64">
 66 +     <id>resilient-storage</id>
 67 +     <name>Resilient Storage</name>
 68 +     <description>Clustered storage, including the GFS2 filesystem.</description>
 69 +     <default>false</default>
 70 +     <uservisible>true</uservisible>
 71 +     <packagelist>
 72 +       <packagereq type="mandatory">dummy-gfs2-utils</packagereq>
 73 +       <packagereq type="mandatory">dummy-lvm2-cluster</packagereq>
 74 +       <packagereq type="mandatory">dummy-pacemaker</packagereq>
 75 +       <packagereq type="mandatory">dummy-resource-agents</packagereq>
 76 +     </packagelist>
 77 +   </group>
 78 + 
 79 +   <group>
 80 +     <id>gluster</id>
 81 +     <name>Gluster</name>
 82 +     <description>GlusterFS support packages</description>
 83 +     <default>false</default>
 84 +     <uservisible>true</uservisible>
 85 +     <packagelist>
 86 +       <packagereq type="mandatory">dummy-glusterfs-resource-agents</packagereq>
 87 +     </packagelist>
 88 +   </group>
 89 + 
 90 +   <group>
 91 +     <id>basic-desktop</id>
 92 +     <name>Desktop</name>
 93 +     <description>Basic Desktop packages</description>
 94 +     <default>true</default>
 95 +     <uservisible>true</uservisible>
 96 +     <packagelist>
 97 +       <packagereq type="conditional" requires="dummy-imsettings">dummy-imsettings-gnome</packagereq>
 98 +     </packagelist>
 99 +   </group>
100 + 
101 +   <!-- ENVIRONMENTS -->
102 + 
103 +   <environment>
104 +     <id>minimal</id>
105 +     <name>Minimal install</name>
106 +     <description>Basic functionality.</description>
107 +     <display_order>99</display_order>
108 +     <grouplist>
109 +       <groupid>core</groupid>
110 +     </grouplist>
111 +     <optionlist>
112 +     </optionlist>
113 +   </environment>
114 + 
115 +   <environment>
116 +     <id>desktop</id>
117 +     <name>Desktop</name>
118 +     <description>Desktop.</description>
119 +     <display_order>10</display_order>
120 +     <grouplist>
121 +       <groupid>core</groupid>
122 +       <groupid>standard</groupid>
123 +       <groupid>basic-desktop</groupid>
124 +     </grouplist>
125 +     <optionlist>
126 +     </optionlist>
127 +   </environment>
128 + 
129 +   <environment>
130 +     <id>empty</id>
131 +     <name>Empty</name>
132 +     <description>Should not appear in the repos.</description>
133 +     <display_order>10</display_order>
134 +     <grouplist>
135 +       <groupid>does-not-exist</groupid>
136 +     </grouplist>
137 +   </environment>
138 + 
139 +   <!-- LANGPACKS -->
140 + 
141 +   <langpacks>
142 +     <match install="LabPlot-doc-%s" name="LabPlot-doc"/>
143 +     <match install="aspell-%s" name="aspell"/>
144 +     <match install="autocorr-%s" name="autocorr-en"/>
145 +     <match install="calligra-l10n-%s" name="calligra-core"/>
146 +     <match install="childsplay-alphabet_sounds_%s" name="childsplay"/>
147 +     <match install="eclipse-nls-%s" name="eclipse-platform"/>
148 +     <match install="firefox-langpack-%s" name="firefox"/>
149 +     <match install="gcompris-sound-%s" name="gcompris"/>
150 +     <match install="gimp-help-%s" name="gimp-help"/>
151 +     <match install="hunspell-%s" name="hunspell"/>
152 +     <match install="hyphen-%s" name="hyphen"/>
153 +     <match install="kde-l10n-%s" name="kdelibs"/>
154 +     <match install="kde-i18n-%s" name="kdelibs3"/>
155 +     <match install="libreoffice-langpack-%s" name="libreoffice-core"/>
156 +     <match install="man-pages-%s" name="man-pages"/>
157 +     <match install="moodle-%s" name="moodle"/>
158 +     <match install="mythes-%s" name="mythes"/>
159 +     <match install="nqc-doc-%s" name="nqc-doc"/>
160 +     <match install="openoffice.org-langpack-%s" name="openoffice.org-core"/>
161 +     <match install="tesseract-langpack-%s" name="tesseract"/>
162 +     <match install="tkgate-%s" name="tkgate"/>
163 +   </langpacks>
164 + </comps>
  1 @@ -0,0 +1,139 @@
  2 + # PRODUCT (RELEASE) INFO
  3 + product_name = "Dummy Product"
  4 + product_short = "DP"
  5 + product_version = "1.0"
  6 + product_is_layered = False
  7 + product_type = "ga"
  8 + 
  9 + 
 10 + # GENERAL SETTINGS
 11 + bootable = False
 12 + comps_file = "dummy-comps.xml"
 13 + variants_file = "dummy-variants.xml"
 14 + sigkeys = [None] # None = unsigned
 15 + 
 16 + # limit tree architectures
 17 + # if undefined, all architectures from variants.xml will be included
 18 + atree_arches = ["x86_64"]
 19 + 
 20 + # limit tree variants
 21 + # if undefined, all variants from variants.xml will be included
 22 + #tree_variants = ["Server"]
 23 + 
 24 + multilib_arches = ["ppc64", "x86_64", "s390x"]
 25 + multilib_methods = ["devel", "runtime"] # devel (recommended), all, base, file, kernel, none, runtime
 26 + 
 27 + 
 28 + # RUNROOT settings
 29 + runroot = False
 30 + #runroot_channel = ""
 31 + #runroot_tag = ""
 32 + 
 33 + 
 34 + # PKGSET
 35 + pkgset_source = "repos" # koji, repos
 36 + 
 37 + # PKGSET - REPOS
 38 + # pkgset_repos format: {arch: [repo1_url, repo2_url, ...]}
 39 + pkgset_repos = {
 40 +     "i386": [
 41 +         "repo",
 42 +     ],
 43 +     "x86_64": [
 44 +         "repo",
 45 +     ],
 46 +     "s390x": [
 47 +         "repo",
 48 +     ],
 49 + }
 50 + 
 51 + # PKGSET - KOJI
 52 + #pkgset_koji_path_prefix = "/mnt/koji"
 53 + #pkgset_koji_url = ""
 54 + #pkgset_koji_tag = ""
 55 + 
 56 + 
 57 + # GATHER
 58 + gather_source = "comps"
 59 + gather_method = "deps"
 60 + check_deps = False
 61 + greedy_method = "build"
 62 + 
 63 + # fomat: [(variant_uid_regex, {arch|*: [repos]})]
 64 + # gather_lookaside_repos = []
 65 + 
 66 + # GATHER - JSON
 67 + # format: {variant_uid: {arch: package: [arch1, arch2, None (for any arch)]}}
 68 + #gather_source_mapping = "/path/to/mapping.json"
 69 + 
 70 + 
 71 + # CREATEREPO
 72 + # TODO: checksum type - mandatory
 73 + createrepo_c = True
 74 + 
 75 + 
 76 + # BUILDINSTALL
 77 + 
 78 + 
 79 + # PRODUCTIMG
 80 + 
 81 + 
 82 + # CREATEISO
 83 + create_optional_isos = False
 84 + symlink_isos_to = None
 85 + 
 86 + 
 87 + # fomat: [(variant_uid_regex, {arch|*: [packages]})]
 88 + additional_packages = [
 89 +     ('^Server$', {
 90 +         '*': [
 91 + #            'dummy-lvm2-devel',
 92 +              'dummy-libtool',
 93 +         ],
 94 +     }),
 95 +     ('^Client-optional$', {
 96 +         '*': [
 97 +             'dummy-httpd',
 98 +         ],
 99 +     }),
100 + ]
101 + 
102 + filter_packages = [
103 +     ('^.*$', {
104 +         '*': [
105 +             'dummy-pacemaker',
106 +         ],
107 +     }),
108 +     ('^Client$', {
109 +         '*': [
110 +             'dummy-httpd',
111 +         ],
112 +     }),
113 +     ('^Server-optional$', {
114 +         '*': [
115 +             'dummy-httpd.i686',
116 +         ],
117 +     }),
118 +     ('^.*-ResilientStorage$', {
119 +         '*': [
120 +             'dummy-glusterfs-resource-agents',
121 +         ],
122 +     }),
123 + ]
124 + 
125 + 
126 + # format: {arch|*: [packages]}
127 + multilib_blacklist = {
128 +     "*": [
129 +         "kernel-devel",
130 +         "httpd-devel",
131 +         "*",
132 + #        "dummy-glibc",
133 +     ],
134 + }
135 + 
136 + multilib_whitelist = {
137 +     "*": [
138 +         "dummy-glibc",
139 +     ],
140 + }
 1 @@ -0,0 +1,70 @@
 2 + <?xml version="1.0" encoding="UTF-8"?>
 3 + <!DOCTYPE variants PUBLIC "-//Red Hat, Inc.//DTD Variants info//EN" "variants.dtd">
 4 + 
 5 + <variants>
 6 +   <variant id="ResilientStorage" name="Resilient Storage" type="addon">
 7 +     <arches>
 8 +       <arch>x86_64</arch>
 9 +     </arches>
10 +     <groups>
11 +       <group default="true">resilient-storage</group>
12 +     </groups>
13 +   </variant>
14 + 
15 +   <variant id="Gluster" name="Gluster Layered Product" type="layered-product">
16 +     <product name="Gluster" version="2.3" short="Gluster" />
17 +     <arches>
18 +       <arch>x86_64</arch>
19 +     </arches>
20 +     <groups>
21 +       <group default="true">gluster</group>
22 +     </groups>
23 +   </variant>
24 + 
25 +   <variant id="Client" name="Client" type="variant" has_optional="true">
26 +     <arches>
27 +       <arch>i386</arch>
28 +       <arch>x86_64</arch>
29 +     </arches>
30 +     <groups>
31 +       <group default="true">core</group>
32 +       <group default="true">standard</group>
33 +       <group default="false">text-internet</group>
34 +       <group default="true" uservisible="false">firefox</group>
35 +       <group>skype</group>
36 +     </groups>
37 +     <environments>
38 +       <environment>minimal</environment>
39 +       <environment display_order="1000">desktop</environment>
40 +     </environments>
41 +   </variant>
42 + 
43 +   <variant id="Server" name="Server" type="variant" has_optional="true">
44 +     <arches>
45 +       <arch>x86_64</arch>
46 +       <arch>s390x</arch>
47 +     </arches>
48 +     <groups>
49 +       <group default="true" uservisible="true">core</group>
50 +       <group default="true">standard</group>
51 +       <group default="true">text-internet</group>
52 +     </groups>
53 +     <environments>
54 +       <environment>minimal</environment>
55 +     </environments>
56 +     <variants>
57 +       <ref id="ResilientStorage"/>
58 +       <ref id="Gluster"/>
59 +       <variant id="optional" name="optional" type="optional">
60 +         <arches>
61 +           <arch>x86_64</arch>
62 +           <arch>s390x</arch>
63 +         </arches>
64 +         <groups>
65 +           <group default="false">firefox</group>
66 +         </groups>
67 +       </variant>
68 +     </variants>
69 +   </variant>
70 + 
71 + </variants>
  1 @@ -0,0 +1,116 @@
  2 + {
  3 +     "archpkgs" : [
  4 +         "dummy-AdobeReader_enu",
  5 +         "dummy-atlas",
  6 +         "dummy-atlas-3dnow",
  7 +         "dummy-atlas-3dnow-devel",
  8 +         "dummy-atlas-devel",
  9 +         "dummy-atlas-sse",
 10 +         "dummy-atlas-sse2",
 11 +         "dummy-atlas-sse2-devel",
 12 +         "dummy-atlas-sse3",
 13 +         "dummy-atlas-sse3-devel",
 14 +         "dummy-atlas-sse-devel",
 15 +         "dummy-atlas-z10",
 16 +         "dummy-atlas-z10-devel",
 17 +         "dummy-atlas-z196",
 18 +         "dummy-atlas-z196-devel",
 19 +         "dummy-basesystem",
 20 +         "dummy-bash",
 21 +         "dummy-bash-debuginfo",
 22 +         "dummy-bash-doc",
 23 +         "dummy-elinks",
 24 +         "dummy-elinks-debuginfo",
 25 +         "dummy-fcoe-target-utils",
 26 +         "dummy-filesystem",
 27 +         "dummy-firefox",
 28 +         "dummy-firefox-debuginfo",
 29 +         "dummy-foo32",
 30 +         "dummy-foo32-doc",
 31 +         "dummy-freeipa",
 32 +         "dummy-freeipa-server",
 33 +         "dummy-gfs2-utils",
 34 +         "dummy-gfs2-utils-debuginfo",
 35 +         "dummy-glibc",
 36 +         "dummy-glibc-common",
 37 +         "dummy-glibc-debuginfo",
 38 +         "dummy-glibc-debuginfo-common",
 39 +         "dummy-glusterfs-resource-agents",
 40 +         "dummy-httpd",
 41 +         "dummy-httpd-debuginfo",
 42 +         "dummy-imsettings",
 43 +         "dummy-imsettings-gnome",
 44 +         "dummy-imsettings-qt",
 45 +         "dummy-ipw3945-kmod",
 46 +         "dummy-ipw3945-kmod-debuginfo",
 47 +         "dummy-kernel",
 48 +         "dummy-kernel-doc",
 49 +         "dummy-kernel-headers",
 50 +         "dummy-kmod-ipw3945",
 51 +         "dummy-kmod-ipw3945-xen",
 52 +         "dummy-krb5",
 53 +         "dummy-krb5-debuginfo",
 54 +         "dummy-krb5-devel",
 55 +         "dummy-krb5-libs",
 56 +         "dummy-krb5-workstation",
 57 +         "dummy-lvm2",
 58 +         "dummy-lvm2-cluster",
 59 +         "dummy-lvm2-debuginfo",
 60 +         "dummy-lvm2-devel",
 61 +         "dummy-lvm2-libs",
 62 +         "dummy-nscd",
 63 +         "dummy-postfix",
 64 +         "dummy-postfix-debuginfo",
 65 +         "dummy-release-client",
 66 +         "dummy-release-client-workstation",
 67 +         "dummy-release-notes",
 68 +         "dummy-release-notes-cs-CZ",
 69 +         "dummy-release-notes-en-US",
 70 +         "dummy-release-server",
 71 +         "dummy-resource-agents",
 72 +         "dummy-resource-agents-debuginfo",
 73 +         "dummy-selinux-policy",
 74 +         "dummy-selinux-policy-doc",
 75 +         "dummy-selinux-policy-minimal",
 76 +         "dummy-selinux-policy-mls",
 77 +         "dummy-selinux-policy-targeted",
 78 +         "dummy-sendmail",
 79 +         "dummy-sendmail-debuginfo",
 80 +         "dummy-skype",
 81 +         "dummy-tftp",
 82 +         "dummy-tftp-debuginfo",
 83 +         "dummy-vacation",
 84 +         "dummy-vacation-debuginfo",
 85 +         "dummy-xulrunner",
 86 +         "dummy-xulrunner-debuginfo"
 87 +     ],
 88 + 
 89 +     "archs" : [
 90 +         "i486",
 91 +         "i586",
 92 +         "i686",
 93 +         "ppc",
 94 +         "ppc64",
 95 +         "s390",
 96 +         "s390x",
 97 +         "x86_64",
 98 +         "src"
 99 +     ],
100 + 
101 +     "noarchpkgs" : [
102 +         "dummy-basesystem",
103 +         "dummy-bash-doc",
104 +         "dummy-bash-doc",
105 +         "dummy-fcoe-target-utils",
106 +         "dummy-foo32-doc",
107 +         "dummy-kernel-doc",
108 +         "dummy-release-notes",
109 +         "dummy-release-notes-cs-CZ",
110 +         "dummy-release-notes-en-US",
111 +         "dummy-selinux-policy-doc",
112 +         "dummy-selinux-policy-minimal",
113 +         "dummy-selinux-policy-mls",
114 +         "dummy-selinux-policy-targeted"
115 +     ]
116 + 
117 + }
1 @@ -0,0 +1,7 @@
2 + #!/bin/bash
3 + 
4 + # Thin wrapper to run all tests
5 + for t in $(dirname $0)/test_*
6 + do
7 +     $t
8 + done
 1 @@ -0,0 +1,12 @@
 2 + #!/bin/sh
 3 + 
 4 + export PYTHONPATH=$(pwd)/pmd:$(pwd)/../
 5 + export PATH=$(pwd)/../bin:$PATH
 6 + 
 7 + mkdir -p _composes
 8 + 
 9 + pungi-koji \
10 + --target-dir=_composes \
11 + --old-composes=_composes \
12 + --config=dummy-pungi.conf \
13 + --test