This file is indexed.

/usr/share/doc/ubuntu-packaging-guide-html-de/auto-pkg-test.html is in ubuntu-packaging-guide-html-de 0.3.5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>3. autopkgtest: Automatische Tests für Pakete &mdash; Ubuntu Packaging Guide</title>
    <link rel="shortcut icon" href="./_static/images/favicon.ico" type="image/x-icon" />
    <link rel="stylesheet" href="./_static/reset.css" type="text/css" />
    <link rel="stylesheet" href="./_static/960.css" type="text/css" />
    <link rel="stylesheet" href="./_static/base.css" type="text/css" />
    <link rel="stylesheet" href="./_static/home.css" type="text/css" />
    <link rel="stylesheet" href="./_static/pygments.css" type="text/css" />
    <link rel="stylesheet" href="./_static/guide.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '0.3.5',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="./_static/jquery.js"></script>
    <script type="text/javascript" src="./_static/underscore.js"></script>
    <script type="text/javascript" src="./_static/doctools.js"></script>
    <script type="text/javascript" src="./_static/translations.js"></script>
    
    <script type="text/javascript" src="./_static/main.js"></script>
    <link rel="top" title="Ubuntu Packaging Guide" href="./index.html" />
    <link rel="next" title="4. Den Quelltext bekommen" href="udd-getting-the-source.html" />
    <link rel="prev" title="2. Allgemeine Übersicht über das debian/ Verzeichnis" href="debian-dir-overview.html" /> 
  </head>
  <body class="home">
  <a name="top"></a>

<div class="header-navigation">
    <div>
      <nav role="navigation">
        <ul>
          <li class="page_item current_page_item"><a title="Inhalt" href="index.html">Inhalt</a>
          <li>
            <form id="form-search" method="get" action="search.html">
              <fieldset>
                <input id="input-search" type="text" name="q" value="Search" />
              </fieldset>
            </form>
          </li>
        </ul>
      </nav>
      <a class="logo-ubuntu" href="http://packaging.ubuntu.com/">
        <img src="./_static/images/logo-ubuntu.png" width="119" height="27" alt="Ubuntu logo" />
      </a>
      <a href="http://packaging.ubuntu.com/"><h2>Packaging Guide</h2></a>
    </div>
  </div>
<div class="header-content">
    <div class="clearfix">
  <div class="header-navigation-secondary">
    <div>
          <nav role="navigation">
            <ul class="clearfix">
	        <li class="page_item"><a style="margin-right: 10px" 
	        href="udd-getting-the-source.html" title="4. Den Quelltext bekommen"
	        accesskey="N">weiter</a></li>
	        <li class="page_item"><a  
	        href="debian-dir-overview.html" title="2. Allgemeine Übersicht über das debian/ Verzeichnis"
	        accesskey="P">zurück</a></li>
        <li class="page_item"><a class="sub-nav-item" href="index.html">Ubuntu Packaging Guide  &raquo;</a></li> 
      </ul>
    </nav>
  </div>
</div>
</div>
</div>
  
<div id="content" class="body container_12">
  <div class="grid_12">  

     <!--<section id="main-section">-->

    <div class="grid_9 alpha">
		
    
  <div class="section" id="autopkgtest-automatic-testing-for-packages">
<h1>3. autopkgtest: Automatische Tests für Pakete<a class="headerlink" href="#autopkgtest-automatic-testing-for-packages" title="Permalink zu dieser Überschrift"></a></h1>
<p>Die <a class="reference external" href="http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD">DEP 8-Spezifikation</a> legt fest, wie automatische Tests sehr einfach in Pakete eingebunden werden können. Um einen Test in ein Paket einzubinden, müssen Sie nur folgendes machen:</p>
<ul>
<li><p class="first">fügen Sie folgendes zum Abschnitt &#8220;Source&#8221; in <tt class="docutils literal"><span class="pre">debian/control</span></tt> hinzu:</p>
<div class="highlight-python"><div class="highlight"><pre>XS-Testsuite: autopkgtest
</pre></div>
</div>
</li>
<li><p class="first">erstellen Sie eine Datei namens <tt class="docutils literal"><span class="pre">debian/tests/control</span></tt>, die die Anforderungen für die Testumgebung festlegt,</p>
</li>
<li><p class="first">fügen Sie die Tests in <tt class="docutils literal"><span class="pre">debian/tests/</span></tt> ein.</p>
</li>
</ul>
<div class="section" id="testbed-requirements">
<h2>3.1. Anforderungen für die Testumgebung<a class="headerlink" href="#testbed-requirements" title="Permalink zu dieser Überschrift"></a></h2>
<p>In <tt class="docutils literal"><span class="pre">debian/tests/control</span></tt> legen Sie fest, welche Anforderungen die Testumgebung erfüllen muss. Sie können zum Beispiel alle Pakete auflisten, die für die Tests benötigt werden, oder angeben, ob die Testumgebung beim Erstellen des Pakets beschädigt wird oder ob <tt class="docutils literal"><span class="pre">root</span></tt>-Rechte benötigt werden. Die  <a class="reference external" href="http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD">DEP 8 specification</a> listet alle verfügbaren Optionen auf.</p>
<p>Im Folgenden schauen uns das Quellpaket  <tt class="docutils literal"><span class="pre">glib2.0</span></tt> an. Im einfachsten Fall sieht die Datei so aus:</p>
<div class="highlight-python"><div class="highlight"><pre>Tests: build
Depends: libglib2.0-dev, build-essential
</pre></div>
</div>
<p>Das stellt für den Test <tt class="docutils literal"><span class="pre">debian/tests/build</span></tt> sicher, dass die Pakete <tt class="docutils literal"><span class="pre">libglib2.0-dev</span></tt> und <tt class="docutils literal"><span class="pre">build-essential</span></tt> installiert sind.</p>
<div class="admonition note">
<p class="first admonition-title">Bemerkung</p>
<p class="last">Sie können in der <tt class="docutils literal"><span class="pre">Depends</span></tt>-Zeile <tt class="docutils literal"><span class="pre">&#64;</span></tt> benutzen, um festzulegen, dass Sie alle Pakete installiert haben wollen, die aus dem jeweiligen Quellpaket erzeugt werden.</p>
</div>
</div>
<div class="section" id="the-actual-tests">
<h2>3.2. Die eigentlichen Tests<a class="headerlink" href="#the-actual-tests" title="Permalink zu dieser Überschrift"></a></h2>
<p>Der passende Test für das obige Beispiel könnte folgender sein:</p>
<div class="highlight-sh"><div class="highlight"><pre><span class="c">#!/bin/sh</span>
<span class="c"># autopkgtest check: Build and run a program against glib, to verify that the</span>
<span class="c"># headers and pkg-config file are installed correctly</span>
<span class="c"># (C) 2012 Canonical Ltd.</span>
<span class="c"># Author: Martin Pitt &lt;martin.pitt@ubuntu.com&gt;</span>

<span class="nb">set</span> -e

<span class="nv">WORKDIR</span><span class="o">=</span><span class="k">$(</span>mktemp -d<span class="k">)</span>
<span class="nb">trap</span> <span class="s2">&quot;rm -rf $WORKDIR&quot;</span> 0 INT QUIT ABRT PIPE TERM
<span class="nb">cd</span> <span class="nv">$WORKDIR</span>
cat <span class="s">&lt;&lt;EOF &gt; glibtest.c</span>
<span class="s">#include &lt;glib.h&gt;</span>

<span class="s">int main()</span>
<span class="s">{</span>
<span class="s">    g_assert_cmpint (g_strcmp0 (NULL, &quot;hello&quot;), ==, -1);</span>
<span class="s">    g_assert_cmpstr (g_find_program_in_path (&quot;bash&quot;), ==, &quot;/bin/bash&quot;);</span>
<span class="s">    return 0;</span>
<span class="s">}</span>
<span class="s">EOF</span>

gcc -o glibtest glibtest.c <span class="sb">`</span>pkg-config --cflags --libs glib-2.0<span class="sb">`</span>
<span class="nb">echo</span> <span class="s2">&quot;build: OK&quot;</span>
<span class="o">[</span> -x glibtest <span class="o">]</span>
./glibtest
<span class="nb">echo</span> <span class="s2">&quot;run: OK&quot;</span>
</pre></div>
</div>
<p>An dieser Stelle wird ein sehr einfaches Stück C-Code in ein temporäres Verzeichnis geschrieben. Dies wird mit den Systembibliotheken übersetzt (wobei die Flags und Bibliothekpfade benutzt werden, wie sie uns von <cite>pkg-config</cite> geliefert werden). Dann wird der resultierende Binär-Code ausgeführt, der grundlegende Funtionen in glib testet.</p>
<p>Obwohl es sich um einen kleinen und simplen Test handelt, werden eine größere Anzahl von Systemkomponenten getestet. Dies hilft kritische Fehler früher zu entdecken.</p>
</div>
<div class="section" id="executing-the-test">
<h2>3.3. Den Test ausführen<a class="headerlink" href="#executing-the-test" title="Permalink zu dieser Überschrift"></a></h2>
<p>Das Test-Skript kann selbst ausgeführt werden, aber um sicherzustellen, dass der Test auch in der Testumgebung zufriedenstellend abläuft, bietet es sich an &#8220;adt-run&#8221; (im Paket &#8220;autopkgtest&#8221;) zu verwenden, um diesen Test auszuführen. Der einfachste Weg dazu ist diesen Befehl im Quellpfad auszuführen.</p>
<div class="highlight-python"><div class="highlight"><pre>sudo adt-run --no-built-binaries --built-tree=. --- adt-virt-null
</pre></div>
</div>
<p>Der Nachteil dieser Herangehensweise ist, dass du es zwar lokal testen kannst, aber nicht sicherstellen kannst, dass es in einer minimalen Umgebung funktioniert. Zum Beispiel ist es schwierig festzustellen, ob alle benötigten Pakete für die Versuche installiert sind. Mit &#8216;lp:auto-package-testing&#8217; haben wir ein umfangreiches Hilfsmittel, welches auf Basis einer unveränderten virtuellen Machine die Tests durchführt. Um es einzurichten, musst du zuerst die benötigten Abhängigkeiten installieren:</p>
<div class="highlight-python"><div class="highlight"><pre>sudo apt-get install qemu-utils kvm eatmydata
</pre></div>
</div>
<p>Dann besorge dir den Quellcode von Launchpad:</p>
<div class="highlight-python"><div class="highlight"><pre>bzr branch lp:auto-package-testing
cd auto-package-testing
</pre></div>
</div>
<p>And provision a Trusty AMD64 system:</p>
<div class="highlight-python"><div class="highlight"><pre>./bin/prepare-testbed -r trusty amd64
</pre></div>
</div>
<p>This command will create a pristine Trusty AMD64 VM from a cloud image. To
run the tests, simply run:</p>
<div class="highlight-python"><div class="highlight"><pre>./bin/run-adt-test -r trusty -a amd64 \
    -S file:///tmp/glib2.0-2.35.7/ glib2.0
</pre></div>
</div>
<p>Das würde das Quellpaket <tt class="docutils literal"><span class="pre">/tmp/glib2.0-2.35.7/</span></tt> auswählen und die Tests gegen das Paket <tt class="docutils literal"><span class="pre">glib2.0</span></tt> aus dem Archiv laufen lassen.  Die Option <tt class="docutils literal"><span class="pre">-S</span></tt> unterstützt auch Quellen von bzr, git und apt. Wenn du nur eine Quelle mit <tt class="docutils literal"><span class="pre">-S</span></tt> festlegst, aber den Paketnamen nicht genauer bestimmst, wird diese Funktion stattdessen den Zweig aufbauen und die Binaries von dieser Version installieren; das ist nützlich wenn du Tests für ein neueres Paket durchführen willst als das welches in Ubuntu enthalten ist oder das Paket überhaupt nicht in Ubuntu existiert. Wenn du die Option <tt class="docutils literal"><span class="pre">-k</span></tt>  setzt kannst du in die virtuelle Maschine wechseln nachdem die Tests durchgeführt wurden. Das macht es sehr einfach Fehler zu erkennen.</p>
<p>Die &#8216;auto-package-testing documentation&#8217; hat viele andere wichtige Informationen für andere Testoptionen.</p>
</div>
<div class="section" id="further-examples">
<h2>3.4. Weitere Beispiele<a class="headerlink" href="#further-examples" title="Permalink zu dieser Überschrift"></a></h2>
<p>Diese Liste ist nicht vollständig, aber wird dir sicher einen guten Einblick geben wie automatisierte Testdurchläufe in Ubuntu implementiert und benutzt werden.</p>
<ul class="simple">
<li><p class="first">Die <a class="reference external" href="https://bazaar.launchpad.net/+branch/ubuntu/libxml2/files/head:/debian/tests/">libxml2 tests</a> sind sehr ähnlich. Sie enthalten auch eine Test-Kompilierung eines Stücks C-Code und führen es aus.</p>
</li>
<li><p class="first">Der Test &#8216;gtk+3.0 tests&#8217; erwirkt außerdem einen Kompilierungs-, Link- und Durchlaufstest im &#8216;&#8217;build&#8217;&#8217; Test. Es gibt einen zusätzlichen &#8220;python3-gi&#8221;-Test, welcher sicherstellt, dass die GTK-Bibliothek auch durch &#8220;Introspection&#8221; benutzt werden kann.</p>
</li>
<li><p class="first">In den <a class="reference external" href="https://bazaar.launchpad.net/+branch/ubiquity/files/head:/debian/tests/">ubiquity tests</a> wird die Test-Suite von Upstream (den Software-Autoren) ausgeführt.</p>
</li>
<li><p class="first">Die <a class="reference external" href="https://bazaar.launchpad.net/+branch/ubuntu/gvfs/files/head:/debian/tests/">gvfs tests</a> haben ausführliche Funktionalitätstests und sind sehr interessant, weil sie die Benutzung von CDs, Samba, DAV und anderen Dingen simulieren.</p>
</li>
</ul>
</div>
<div class="section" id="ubuntu-infrastructure">
<h2>3.5. Ubuntu Infrastruktur<a class="headerlink" href="#ubuntu-infrastructure" title="Permalink zu dieser Überschrift"></a></h2>
<p>Pakete, welche <tt class="docutils literal"><span class="pre">autopkgtest</span></tt> aktiviert haben, werden jedes mal, wenn Sie hochgeladen werden oder eine Ihrer Abhängigkeiten sich ändert, einem Testlauf unterzogen. Die Ausgabe der <a class="reference external" href="https://jenkins.qa.ubuntu.com/view/Trusty/view/AutoPkgTest/">automatisch laufenden autopkgtest-Tests</a> können im Internet angesehen werden und werden regelmäßig aktualisiert.</p>
<p>Debian hat bisher noch keine Infrastruktur für Automatisches Testen, aber Tests sollten trotzdem nach Debian weitergeleitet werden, denn DEP-8 ist eine Debian-Spezifikation und Debian-Entwickler und -Nutzer können Tests immerhin manuell ausführen.</p>
<p>Pakete in Debian mit dem Testsuite-Header werden außerdem automatisch hinzugefügt, wenn sie nach Ubuntu gesynced werden.</p>
</div>
<div class="section" id="getting-the-test-into-ubuntu">
<h2>3.6. Die Tests in Ubuntu bekommen<a class="headerlink" href="#getting-the-test-into-ubuntu" title="Permalink zu dieser Überschrift"></a></h2>
<p>Der Prozess, um einen autopkgtest in Ubuntu einzubringen ist größtenteils identisch mit <a class="reference internal" href="fixing-a-bug.html"><em>fixing a bug in Ubuntu</em></a>. Im Prinzip muss man einfach:</p>
<ul class="simple">
<li><p class="first">Führe <tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">branch</span> <span class="pre">ubuntu:&lt;Paketname&gt;</span></tt> aus,</p>
</li>
<li><p class="first">bearbeiten Sie <tt class="docutils literal"><span class="pre">debian/control</span></tt> um die Tests zu aktivitieren,</p>
</li>
<li><p class="first">fügen Sie ein <tt class="docutils literal"><span class="pre">debian/tests</span></tt>-Verzeichnis hinzu,</p>
</li>
<li><p class="first">schreiben Sie die <tt class="docutils literal"><span class="pre">debian/tests/control</span></tt>-Datei, basierend auf der <a class="reference external" href="http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD">DEP 8 Specification</a>,</p>
</li>
<li><p class="first">fügen Sie Ihre(n) Test(s) zu <tt class="docutils literal"><span class="pre">debian/tests</span></tt> hinzu,</p>
</li>
<li><p class="first">die Änderungen committen, sie nach Launchpad hochladen, und einen Merge vorschlagen, sie dann überprüfen lassen, genau wie jede andere Änderung an einem Quellpaket auch.</p>
</li>
</ul>
</div>
<div class="section" id="what-you-can-do">
<h2>3.7. Was du machen kannst<a class="headerlink" href="#what-you-can-do" title="Permalink zu dieser Überschrift"></a></h2>
<p>Das Ubuntu Engineering Team hat eine Liste von <a class="reference external" href="https://wiki.ubuntu.com/QATeam/RequiredTests">list of required test-cases</a> zusammengestellt, wo Pakete die Tests brauchen in verschiedene Kategorien aufgeteilt wurden. Hier kannst du eine Liste von Beispielen von Tests finden und das Schreiben der Tests Dir zuweisen.</p>
<p>Falls irgendwelche Probleme auftreten, kannst du dem <a class="reference external" href="http://webchat.freenode.net/?channels=ubuntu-quality">#ubuntu-quality IRC channel</a> beitreten, um in Kontakt mit den Entwicklern zu treten.</p>
</div>
</div>


	<div class="divide"></div>

          </div>

  <div id="sidebar" class="grid_3 omega">
    <div class="container-tweet">
        <h3>Inhalt</h3>
        <div class="toc">
          <ul>
<li><a class="reference internal" href="#">3. autopkgtest: Automatische Tests für Pakete</a><ul>
<li><a class="reference internal" href="#testbed-requirements">3.1. Anforderungen für die Testumgebung</a></li>
<li><a class="reference internal" href="#the-actual-tests">3.2. Die eigentlichen Tests</a></li>
<li><a class="reference internal" href="#executing-the-test">3.3. Den Test ausführen</a></li>
<li><a class="reference internal" href="#further-examples">3.4. Weitere Beispiele</a></li>
<li><a class="reference internal" href="#ubuntu-infrastructure">3.5. Ubuntu Infrastruktur</a></li>
<li><a class="reference internal" href="#getting-the-test-into-ubuntu">3.6. Die Tests in Ubuntu bekommen</a></li>
<li><a class="reference internal" href="#what-you-can-do">3.7. Was du machen kannst</a></li>
</ul>
</li>
</ul>

        </div>

      <div class="browse-guide">
        <h3>Browse The Guide:</h3>
        <ul>
          <li class="prev">
            <a href="debian-dir-overview.html"
                      title="Vorheriges Thema: 2. Allgemeine Übersicht über das <tt class="docutils literal"><span class="pre">debian/</span></tt> Verzeichnis">Go Previous</a>
          </li>
          
          <li class="center">
            <a title="Back to Index" href="index.html">Index Guide</a>
          </li>
        
          <li class="next">
            <a href="udd-getting-the-source.html"
                      title="Nächstes Thema: 4. Den Quelltext bekommen">Go Next</a>
          </li>
        </ul>
        <span>Diese Seite:</span> <a href="./_sources/auto-pkg-test.txt"
               rel="nofollow">Quelltext anzeigen</a>
      </div>
     </div>
     <div id="back_top"><a href="#top">Back to Top</a></div>
    </div>
    <!--</section>-->
  </div>
</div>
<div class="shadow"></div>
<footer>
  <div>
      Version: 0.3.5.
    <a href="https://bugs.launchpad.net/ubuntu-packaging-guide">Report bugs</a> or 
    <a href="https://code.launchpad.net/~ubuntu-packaging-guide-team/ubuntu-packaging-guide/trunk">grab the source code</a> from Launchpad.
      Mit <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2 erstellt.
      <br />
        &copy; Copyright 2010-2014 , Ubuntu Developers, Creative Commons Attribution-ShareAlike 3.0.
        <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
        Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
        <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
        <img alt="Creative Commons License" style="border-width:0" 
        src="./_static/images/cc-by-sa.png" /></a>
    <br />
    <a href="http://people.ubuntu.com/~mitya57/ubuntu-packaging-guide-readme.html#translating">Help translate</a> or
    <a href="./_static/translators.html">view the list of translators</a>.

  </div>
</footer>
  </body>
</html>