bitbake: toaster: toastergui unit tests convert to use fixtures

Instead of having to manually write up in the setUp function all the
different objects to create in the database, just specifiy them in a
fixture and load it. This has the advantage that it can be used on a
live server by using the ./manage.py loaddata command and can then
be inspected.

(Bitbake rev: 8a653ad8b075892d24d15696b3070c5a28a4fbe2)

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: brian avery <avery.brian@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Michael Wood 2016-02-18 21:21:50 -08:00 committed by Richard Purdie
parent 8796ac8a55
commit 94bca58067
2 changed files with 488 additions and 213 deletions

View File

@ -0,0 +1,446 @@
<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
<object pk="1" model="orm.project">
<field type="CharField" name="name">a test project</field>
<field type="CharField" name="short_description"></field>
<field to="orm.bitbakeversion" name="bitbake_version" rel="ManyToOneRel">1</field>
<field to="orm.release" name="release" rel="ManyToOneRel">1</field>
<field type="DateTimeField" name="created">2016-02-15T18:46:20.098248+00:00</field>
<field type="DateTimeField" name="updated">2016-02-15T18:46:20.098392+00:00</field>
<field type="IntegerField" name="user_id"><None></None></field>
<field type="BooleanField" name="is_default">False</field>
</object>
<object pk="2" model="orm.project">
<field type="CharField" name="name">z test project</field>
<field type="CharField" name="short_description"></field>
<field to="orm.bitbakeversion" name="bitbake_version" rel="ManyToOneRel">1</field>
<field to="orm.release" name="release" rel="ManyToOneRel">2</field>
<field type="DateTimeField" name="created">2016-02-15T18:46:20.107936+00:00</field>
<field type="DateTimeField" name="updated">2016-02-15T18:46:20.108066+00:00</field>
<field type="IntegerField" name="user_id"><None></None></field>
<field type="BooleanField" name="is_default">False</field>
</object>
<object pk="1" model="orm.ProjectVariable">
<field to="orm.project" name="project" rel="ManyToOneRel">1</field>
<field type="CharField" name="name">machine</field>
<field type="TextField" name="value">qemux86</field>
</object>
<object pk="2" model="orm.ProjectVariable">
<field to="orm.project" name="project" rel="ManyToOneRel">2</field>
<field type="CharField" name="name">machine</field>
<field type="TextField" name="value">qemux86</field>
</object>
<object pk="1" model="orm.build">
<field to="orm.project" name="project" rel="ManyToOneRel">1</field>
<field type="CharField" name="machine">x12</field>
<field type="CharField" name="distro"></field>
<field type="CharField" name="distro_version"></field>
<field type="DateTimeField" name="started_on">2016-02-14T18:46:20.114530+00:00</field>
<field type="DateTimeField" name="completed_on">2016-02-14T18:46:20.114530+00:00</field>
<field type="IntegerField" name="outcome">0</field>
<field type="CharField" name="cooker_log_path"></field>
<field type="CharField" name="build_name">a</field>
<field type="CharField" name="bitbake_version"></field>
</object>
<object pk="2" model="orm.build">
<field to="orm.project" name="project" rel="ManyToOneRel">1</field>
<field type="CharField" name="machine">raspberrypi2</field>
<field type="CharField" name="distro"></field>
<field type="CharField" name="distro_version"></field>
<field type="DateTimeField" name="started_on">2016-02-13T18:46:20.114530+00:00</field>
<field type="DateTimeField" name="completed_on">2016-02-13T18:46:20.114530+00:00</field>
<field type="IntegerField" name="outcome">0</field>
<field type="CharField" name="cooker_log_path"></field>
<field type="CharField" name="build_name">b</field>
<field type="CharField" name="bitbake_version"></field>
</object>
<object pk="3" model="orm.build">
<field to="orm.project" name="project" rel="ManyToOneRel">1</field>
<field type="CharField" name="machine">qemux86</field>
<field type="CharField" name="distro"></field>
<field type="CharField" name="distro_version"></field>
<field type="DateTimeField" name="started_on">2016-02-12T18:46:20.114530+00:00</field>
<field type="DateTimeField" name="completed_on">2016-02-12T18:46:20.114530+00:00</field>
<field type="IntegerField" name="outcome">1</field>
<field type="CharField" name="cooker_log_path"></field>
<field type="CharField" name="build_name">c</field>
<field type="CharField" name="bitbake_version"></field>
</object>
<object pk="4" model="orm.build">
<field to="orm.project" name="project" rel="ManyToOneRel">2</field>
<field type="CharField" name="machine">qemux86</field>
<field type="CharField" name="distro"></field>
<field type="CharField" name="distro_version"></field>
<field type="DateTimeField" name="started_on">2016-02-11T18:46:20.114530+00:00</field>
<field type="DateTimeField" name="completed_on">2016-02-11T18:46:20.114530+00:00</field>
<field type="IntegerField" name="outcome">0</field>
<field type="CharField" name="cooker_log_path"></field>
<field type="CharField" name="build_name">d</field>
<field type="CharField" name="bitbake_version"></field>
</object>
<object pk="1" model="orm.target">
<field to="orm.build" name="build" rel="ManyToOneRel">1</field>
<field type="CharField" name="target">a image recipe</field>
<field type="CharField" name="task"><None></None></field>
<field type="BooleanField" name="is_image">False</field>
<field type="IntegerField" name="image_size">0</field>
<field type="CharField" name="license_manifest_path"><None></None></field>
</object>
<object pk="2" model="orm.target">
<field to="orm.build" name="build" rel="ManyToOneRel">2</field>
<field type="CharField" name="target">z something</field>
<field type="CharField" name="task"><None></None></field>
<field type="BooleanField" name="is_image">False</field>
<field type="IntegerField" name="image_size">0</field>
<field type="CharField" name="license_manifest_path"><None></None></field>
</object>
<object pk="3" model="orm.target">
<field to="orm.build" name="build" rel="ManyToOneRel">3</field>
<field type="CharField" name="target">h recipe</field>
<field type="CharField" name="task"><None></None></field>
<field type="BooleanField" name="is_image">False</field>
<field type="IntegerField" name="image_size">0</field>
<field type="CharField" name="license_manifest_path"><None></None></field>
</object>
<object pk="1" model="orm.package">
<field to="orm.build" name="build" rel="ManyToOneRel">1</field>
<field to="orm.recipe" name="recipe" rel="ManyToOneRel">2</field>
<field type="CharField" name="name">b pkg</field>
<field type="CharField" name="installed_name"></field>
<field type="CharField" name="version"></field>
<field type="CharField" name="revision"></field>
<field type="TextField" name="summary"></field>
<field type="TextField" name="description"></field>
<field type="IntegerField" name="size">777</field>
<field type="IntegerField" name="installed_size">0</field>
<field type="CharField" name="section"></field>
<field type="CharField" name="license">a license</field>
</object>
<object pk="2" model="orm.package">
<field to="orm.build" name="build" rel="ManyToOneRel">1</field>
<field to="orm.recipe" name="recipe" rel="ManyToOneRel">2</field>
<field type="CharField" name="name">f pkg</field>
<field type="CharField" name="installed_name"></field>
<field type="CharField" name="version"></field>
<field type="CharField" name="revision"></field>
<field type="TextField" name="summary"></field>
<field type="TextField" name="description"></field>
<field type="IntegerField" name="size">4</field>
<field type="IntegerField" name="installed_size">10</field>
<field type="CharField" name="section"></field>
<field type="CharField" name="license">z license</field>
</object>
<object pk="3" model="orm.package">
<field to="orm.build" name="build" rel="ManyToOneRel"><None></None></field>
<field to="orm.recipe" name="recipe" rel="ManyToOneRel">1</field>
<field type="CharField" name="name">a custom image pkg</field>
<field type="CharField" name="installed_name"></field>
<field type="CharField" name="version"></field>
<field type="CharField" name="revision"></field>
<field type="TextField" name="summary"></field>
<field type="TextField" name="description"></field>
<field type="IntegerField" name="size">10</field>
<field type="IntegerField" name="installed_size">0</field>
<field type="CharField" name="section"></field>
<field type="CharField" name="license">h license</field>
</object>
<object pk="4" model="orm.package">
<field to="orm.build" name="build" rel="ManyToOneRel"><None></None></field>
<field to="orm.recipe" name="recipe" rel="ManyToOneRel">2</field>
<field type="CharField" name="name">z custom image pkg</field>
<field type="CharField" name="installed_name"></field>
<field type="CharField" name="version"></field>
<field type="CharField" name="revision"></field>
<field type="TextField" name="summary"></field>
<field type="TextField" name="description"></field>
<field type="IntegerField" name="size">5</field>
<field type="IntegerField" name="installed_size">0</field>
<field type="CharField" name="section"></field>
<field type="CharField" name="license">z license</field>
</object>
<object pk="5" model="orm.package">
<field to="orm.build" name="build" rel="ManyToOneRel">1</field>
<field to="orm.recipe" name="recipe" rel="ManyToOneRel">4</field>
<field type="CharField" name="name">a custom image pkg</field>
<field type="CharField" name="installed_name"></field>
<field type="CharField" name="version"></field>
<field type="CharField" name="revision"></field>
<field type="TextField" name="summary"></field>
<field type="TextField" name="description"></field>
<field type="IntegerField" name="size">2</field>
<field type="IntegerField" name="installed_size">0</field>
<field type="CharField" name="section"></field>
<field type="CharField" name="license">h licence</field>
</object>
<object pk="1" model="orm.target_installed_package">
<field to="orm.target" name="target" rel="ManyToOneRel">1</field>
<field to="orm.package" name="package" rel="ManyToOneRel">1</field>
</object>
<object pk="2" model="orm.target_installed_package">
<field to="orm.target" name="target" rel="ManyToOneRel">1</field>
<field to="orm.package" name="package" rel="ManyToOneRel">2</field>
</object>
<object pk="3" model="orm.target_installed_package">
<field to="orm.target" name="target" rel="ManyToOneRel">1</field>
<field to="orm.package" name="package" rel="ManyToOneRel">3</field>
</object>
<!-- Note that these augment the existing orm.package of the same pk -->
<object pk="4" model="orm.customimagepackage">
<field to="orm.customimagerecipe" name="recipe_includes" rel="ManyToManyRel"></field>
<field to="orm.customimagerecipe" name="recipe_excludes" rel="ManyToManyRel"></field>
<field to="orm.customimagerecipe" name="recipe_appends" rel="ManyToManyRel"><object pk="3"></object></field>
</object>
<object pk="5" model="orm.customimagepackage">
<field to="orm.customimagerecipe" name="recipe_includes" rel="ManyToManyRel"></field>
<field to="orm.customimagerecipe" name="recipe_excludes" rel="ManyToManyRel"></field>
<field to="orm.customimagerecipe" name="recipe_appends" rel="ManyToManyRel"><object pk="3"></object></field>
</object>
<object pk="1" model="orm.recipe">
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field type="CharField" name="name">z recipe</field>
<field type="CharField" name="version">5.2</field>
<field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">2</field>
<field type="TextField" name="summary">z recipe</field>
<field type="TextField" name="description">z recipe</field>
<field type="CharField" name="section">z section</field>
<field type="CharField" name="license">z license</field>
<field type="CharField" name="homepage"></field>
<field type="CharField" name="bugtracker"></field>
<field type="FilePathField" name="file_path"></field>
<field type="CharField" name="pathflags"></field>
<field type="BooleanField" name="is_image">False</field>
</object>
<object pk="2" model="orm.recipe">
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field type="CharField" name="name">a recipe</field>
<field type="CharField" name="version">1.2</field>
<field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">1</field>
<field type="TextField" name="summary">a recipe</field>
<field type="TextField" name="description">a recipe</field>
<field type="CharField" name="section">a section</field>
<field type="CharField" name="license">a license</field>
<field type="CharField" name="homepage"></field>
<field type="CharField" name="bugtracker"></field>
<field type="FilePathField" name="file_path">a_recipe.bb</field>
<field type="CharField" name="pathflags"></field>
<field type="BooleanField" name="is_image">False</field>
</object>
<object pk="3" model="orm.recipe">
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field type="CharField" name="name">a custom recipe</field>
<field type="CharField" name="version"></field>
<field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">2</field>
<field type="TextField" name="summary"></field>
<field type="TextField" name="description"></field>
<field type="CharField" name="section"></field>
<field type="CharField" name="license"></field>
<field type="CharField" name="homepage"></field>
<field type="CharField" name="bugtracker"></field>
<field type="FilePathField" name="file_path">custr</field>
<field type="CharField" name="pathflags"></field>
<field type="BooleanField" name="is_image">False</field>
</object>
<object pk="4" model="orm.recipe">
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field type="CharField" name="name">a image recipe</field>
<field type="CharField" name="version">1.2</field>
<field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">1</field>
<field type="TextField" name="summary">one recipe</field>
<field type="TextField" name="description">recipe</field>
<field type="CharField" name="section">A</field>
<field type="CharField" name="license">A</field>
<field type="CharField" name="homepage"></field>
<field type="CharField" name="bugtracker"></field>
<field type="FilePathField" name="file_path">/one/</field>
<field type="CharField" name="pathflags"></field>
<field type="BooleanField" name="is_image">True</field>
</object>
<object pk="5" model="orm.recipe">
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field type="CharField" name="name">z image recipe</field>
<field type="CharField" name="version">1.3</field>
<field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">2</field>
<field type="TextField" name="summary">two image recipe</field>
<field type="TextField" name="description">recipe two</field>
<field type="CharField" name="section">B</field>
<field type="CharField" name="license">Z</field>
<field type="CharField" name="homepage"></field>
<field type="CharField" name="bugtracker"></field>
<field type="FilePathField" name="file_path">/two/</field>
<field type="CharField" name="pathflags"></field>
<field type="BooleanField" name="is_image">True</field>
</object>
<object pk="6" model="orm.recipe">
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field type="CharField" name="name">z custom recipe</field>
<field type="CharField" name="version"></field>
<field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">2</field>
<field type="TextField" name="summary"></field>
<field type="TextField" name="description"></field>
<field type="CharField" name="section"></field>
<field type="CharField" name="license"></field>
<field type="CharField" name="homepage"></field>
<field type="CharField" name="bugtracker"></field>
<field type="FilePathField" name="file_path">zzzz</field>
<field type="CharField" name="pathflags"></field>
<field type="BooleanField" name="is_image">False</field>
</object>
<object pk="1" model="orm.machine">
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">1</field>
<field type="CharField" name="name">a machine</field>
<field type="CharField" name="description">a machine</field>
</object>
<object pk="2" model="orm.machine">
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">2</field>
<field type="CharField" name="name">z machine</field>
<field type="CharField" name="description">z machine</field>
</object>
<object pk="3" model="orm.machine">
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">1</field>
<field type="CharField" name="name">g machine</field>
<field type="CharField" name="description">g machine</field>
</object>
<object pk="1" model="orm.layersource">
<field type="CharField" name="name">local</field>
<field type="IntegerField" name="sourcetype">1</field>
<field type="CharField" name="apiurl"></field>
</object>
<object pk="1" model="orm.bitbakeversion">
<field type="CharField" name="name">test bbv</field>
<field type="CharField" name="giturl">/tmp/</field>
<field type="CharField" name="branch">master</field>
<field type="CharField" name="dirpath"></field>
</object>
<object pk="1" model="orm.release">
<field type="CharField" name="name">test release</field>
<field type="CharField" name="description"></field>
<field to="orm.bitbakeversion" name="bitbake_version" rel="ManyToOneRel">1</field>
<field type="CharField" name="branch_name">master</field>
<field type="TextField" name="helptext"><None></None></field>
</object>
<object pk="2" model="orm.release">
<field type="CharField" name="name">test release 2</field>
<field type="CharField" name="description"></field>
<field to="orm.bitbakeversion" name="bitbake_version" rel="ManyToOneRel">1</field>
<field type="CharField" name="branch_name">master</field>
<field type="TextField" name="helptext"><None></None></field>
</object>
<object pk="1" model="orm.releaselayersourcepriority">
<field to="orm.release" name="release" rel="ManyToOneRel">1</field>
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
<field type="IntegerField" name="priority">0</field>
</object>
<object pk="1" model="orm.branch">
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field type="CharField" name="name">master</field>
<field type="CharField" name="short_description"></field>
</object>
<object pk="1" model="orm.layer">
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field type="CharField" name="name">a layer</field>
<field type="CharField" name="layer_index_url"></field>
<field type="CharField" name="vcs_url">/tmp/</field>
<field type="CharField" name="vcs_web_url"><None></None></field>
<field type="CharField" name="vcs_web_tree_base_url"><None></None></field>
<field type="CharField" name="vcs_web_file_base_url"><None></None></field>
<field type="TextField" name="summary"><None></None></field>
<field type="TextField" name="description"><None></None></field>
</object>
<object pk="2" model="orm.layer">
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field type="CharField" name="name">z layer</field>
<field type="CharField" name="layer_index_url"></field>
<field type="CharField" name="vcs_url">git://two/</field>
<field type="CharField" name="vcs_web_url"><None></None></field>
<field type="CharField" name="vcs_web_tree_base_url"><None></None></field>
<field type="CharField" name="vcs_web_file_base_url"><None></None></field>
<field type="TextField" name="summary"><None></None></field>
<field type="TextField" name="description"><None></None></field>
</object>
<object pk="1" model="orm.layer_version">
<field to="orm.build" name="build" rel="ManyToOneRel"><None></None></field>
<field to="orm.layer" name="layer" rel="ManyToOneRel">1</field>
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field to="orm.branch" name="up_branch" rel="ManyToOneRel">1</field>
<field type="CharField" name="branch"></field>
<field type="CharField" name="commit">master</field>
<field type="CharField" name="dirpath">/tmp/</field>
<field type="IntegerField" name="priority">0</field>
<field type="FilePathField" name="local_path">/</field>
<field to="orm.project" name="project" rel="ManyToOneRel">1</field>
</object>
<object pk="2" model="orm.layer_version">
<field to="orm.build" name="build" rel="ManyToOneRel"><None></None></field>
<field to="orm.layer" name="layer" rel="ManyToOneRel">2</field>
<field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
<field type="IntegerField" name="up_id"><None></None></field>
<field type="DateTimeField" name="up_date"><None></None></field>
<field to="orm.branch" name="up_branch" rel="ManyToOneRel">1</field>
<field type="CharField" name="branch"></field>
<field type="CharField" name="commit">master</field>
<field type="CharField" name="dirpath"><None></None></field>
<field type="IntegerField" name="priority">0</field>
<field type="FilePathField" name="local_path">/</field>
<field to="orm.project" name="project" rel="ManyToOneRel"><None></None></field>
</object>
<object pk="1" model="orm.projectlayer">
<field to="orm.project" name="project" rel="ManyToOneRel">1</field>
<field to="orm.layer_version" name="layercommit" rel="ManyToOneRel">1</field>
<field type="BooleanField" name="optional">True</field>
</object>
<object pk="3" model="orm.customimagerecipe">
<field to="orm.recipe" name="base_recipe" rel="ManyToOneRel">2</field>
<field to="orm.project" name="project" rel="ManyToOneRel">1</field>
<field type="DateTimeField" name="last_updated"><None></None></field>
</object>
<object pk="6" model="orm.customimagerecipe">
<field to="orm.recipe" name="base_recipe" rel="ManyToOneRel">4</field>
<field to="orm.project" name="project" rel="ManyToOneRel">1</field>
<field type="DateTimeField" name="last_updated"><None></None></field>
</object>
<object pk="1" model="orm.logmessage">
<field to="orm.build" name="build" rel="ManyToOneRel">2</field>
<field to="orm.task" name="task" rel="ManyToOneRel"><None></None></field>
<field type="IntegerField" name="level">1</field>
<field type="TextField" name="message"><None></None></field>
<field type="FilePathField" name="pathname"></field>
<field type="IntegerField" name="lineno"><None></None></field>
</object>
<object pk="2" model="orm.logmessage">
<field to="orm.build" name="build" rel="ManyToOneRel">2</field>
<field to="orm.task" name="task" rel="ManyToOneRel"><None></None></field>
<field type="IntegerField" name="level">2</field>
<field type="TextField" name="message"><None></None></field>
<field type="FilePathField" name="pathname"></field>
<field type="IntegerField" name="lineno"><None></None></field>
</object>
</django-objects>

View File

@ -51,205 +51,17 @@ CLI_BUILDS_PROJECT_NAME = 'Command line builds'
class ViewTests(TestCase):
"""Tests to verify view APIs."""
fixtures = ['toastergui-unittest-data']
def setUp(self):
bbv = BitbakeVersion.objects.create(name="test bbv", giturl="/tmp/",
branch="master", dirpath="")
release = Release.objects.create(name="test release",
branch_name="master",
bitbake_version=bbv)
release2 = Release.objects.create(name="test release 2",
branch_name="master",
bitbake_version=bbv)
self.project = Project.objects.create_project(name=PROJECT_NAME,
release=release)
self.project2 = Project.objects.create_project(name=PROJECT_NAME2,
release=release2)
now = timezone.now()
later = now + timedelta(days=1)
build = Build.objects.create(project=self.project,
started_on=now,
completed_on=now,
outcome=Build.SUCCEEDED)
# for testing BuildsTable
build1 = Build.objects.create(project=self.project,
started_on=now,
completed_on=now,
outcome=Build.SUCCEEDED,
machine="raspberrypi2")
Build.objects.create(project=self.project,
started_on=later,
completed_on=later,
outcome=Build.FAILED,
machine="qemux86")
Build.objects.create(project=self.project2,
started_on=later,
completed_on=later,
outcome=Build.SUCCEEDED,
machine="qemux86")
# to test sorting by errors and warnings in BuildsTable
LogMessage.objects.create(build=build1, level=LogMessage.WARNING)
LogMessage.objects.create(build=build1, level=LogMessage.ERROR)
layersrc = LayerSource.objects.create(sourcetype=LayerSource.TYPE_IMPORTED)
self.priority = ReleaseLayerSourcePriority.objects.create(release=release,
layer_source=layersrc)
layer = Layer.objects.create(name="base-layer", layer_source=layersrc,
vcs_url="/tmp/")
layer_two = Layer.objects.create(name="z-layer",
layer_source=layersrc,
vcs_url="git://two/")
branch = Branch.objects.create(name="master", layer_source=layersrc)
self.lver = Layer_Version.objects.create(layer=layer,
project=self.project,
layer_source=layersrc,
commit="master",
dirpath="/tmp/",
up_branch=branch)
lver_two = Layer_Version.objects.create(layer=layer_two,
layer_source=layersrc,
commit="master",
up_branch=branch)
Recipe.objects.create(layer_source=layersrc,
name="z recipe",
version="5.2",
summary="z recipe",
description="G recipe",
license="Z GPL",
section="h section",
layer_version=lver_two)
# Create a dummy recipe file for the custom image generation to read
open("/tmp/my_recipe.bb", 'wa').close()
self.recipe1 = Recipe.objects.create(layer_source=layersrc,
name="base-recipe",
version="1.2",
summary="one recipe",
description="recipe",
section="A section",
license="Apache",
layer_version=self.lver,
file_path="my_recipe.bb")
Machine.objects.create(layer_version=self.lver, name="wisk",
description="wisking machine")
Machine.objects.create(layer_version=self.lver, name="zap",
description="zap machine")
Machine.objects.create(layer_version=lver_two, name="xray",
description="xray machine")
ProjectLayer.objects.create(project=self.project, layercommit=self.lver)
lver_custom = Layer_Version.objects.create(layer=layer,
project=self.project,
layer_source=layersrc,
commit="mymaster",
up_branch=branch)
self.customr = CustomImageRecipe.objects.create(\
name="custom recipe", project=self.project,
base_recipe=self.recipe1,
file_path="custr",
layer_version=lver_custom)
self.package = Package.objects.create(name='pkg1',
size=999,
recipe=self.recipe1,
license="HHH",
build=build)
Package.objects.create(name='A pkg1',
size=777,
recipe=self.recipe1,
build=build)
Package.objects.create(name='zpkg1',
recipe=self.recipe1,
build=build,
size=4,
license="ZZ")
self.cust_package = CustomImagePackage.objects.create(
name="A pkg",
recipe=self.recipe1,
size=10,
license="AAA")
self.customr.appends_set.add(self.cust_package)
# recipe with project for testing AvailableRecipe table
self.recipe2 = Recipe.objects.create(layer_source=layersrc,
name="fancy-recipe",
version="1.4",
summary="a fancy recipe",
description="fancy recipe",
license="MIT",
layer_version=self.lver,
section="Z section",
file_path='/home/foo')
# additional package for the sorting for the SelectPackagesTable
cust_package_two = CustomImagePackage.objects.create(name="ZZ pkg",
size=5,
recipe=self.recipe2)
self.customr.appends_set.add(cust_package_two)
Package.objects.create(name='one1',
recipe=self.recipe2,
build=build,
size=2,
license="L")
Recipe.objects.create(layer_source=layersrc,
is_image=True,
name="Test image one",
version="1.2",
summary="one recipe",
description="recipe",
section="A",
license="A",
file_path="/one/",
layer_version=self.lver)
zrecipe = Recipe.objects.create(layer_source=layersrc,
is_image=True,
name="Z Test image two",
version="1.3",
summary="two image recipe",
description="recipe two",
section="B",
license="Z",
file_path="/two/",
layer_version=lver_two)
CustomImageRecipe.objects.create(name="z custom recipe",
project=self.project,
base_recipe=zrecipe,
file_path="zzzz",
layer_version=lver_custom)
# Packages in PackagesTable requre that the recipe has been built so
# we need to create a target and build pair
target = Target.objects.create(target=self.recipe1.name,
build=build)
self.project = Project.objects.first()
self.recipe1 = Recipe.objects.get(pk=2)
self.recipe2 = Recipe.objects.last()
self.customr = CustomImageRecipe.objects.first()
self.cust_package = CustomImagePackage.objects.first()
self.package = Package.objects.first()
self.lver = Layer_Version.objects.first()
def test_get_base_call_returns_html(self):
"""Basic test for all-projects view"""
@ -271,7 +83,7 @@ class ViewTests(TestCase):
self.assertEqual(data["error"], "ok")
self.assertTrue("rows" in data)
self.assertTrue(PROJECT_NAME in [x["name"] for x in data["rows"]])
self.assertTrue(self.project.name in [x["name"] for x in data["rows"]])
self.assertTrue("id" in data["rows"][0])
def test_typeaheads(self):
@ -333,11 +145,13 @@ class ViewTests(TestCase):
def test_xhr_import_layer(self):
"""Test xhr_importlayer API"""
LayerSource.objects.create(sourcetype=LayerSource.TYPE_IMPORTED)
#Test for importing an already existing layer
args = {'vcs_url' : "git://git.example.com/test",
'name' : "base-layer",
'git_ref': "c12b9596afd236116b25ce26dbe0d793de9dc7ce",
'project_id': 1, 'dir_path' : "/path/in/repository"}
'project_id': self.project.id,
'dir_path' : "/path/in/repository"}
response = self.client.post(reverse('xhr_importlayer'), args)
data = json.loads(response.content)
self.assertEqual(response.status_code, 200)
@ -407,13 +221,12 @@ class ViewTests(TestCase):
def test_xhr_custom_details(self):
"""Test getting custom recipe details"""
name = "custom recipe"
url = reverse('xhr_customrecipe_id', args=(self.customr.id,))
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
expected = {"error": "ok",
"info": {'id': self.customr.id,
'name': name,
'name': self.customr.name,
'base_recipe_id': self.recipe1.id,
'project_id': self.project.id,
}
@ -484,6 +297,10 @@ class ViewTests(TestCase):
{"error": "ok"})
def test_download_custom_recipe(self):
"""Download the recipe file generated for the custom image"""
# Create a dummy recipe file for the custom image generation to read
open("/tmp/a_recipe.bb", 'wa').close()
response = self.client.get(reverse('customrecipedownload',
args=(self.project.id,
self.customr.id)))
@ -503,8 +320,6 @@ class ViewTests(TestCase):
row2 = next(x for x in rows if x['name'] == self.recipe2.name)
self.assertEqual(response.status_code, 200, 'should be 200 OK status')
# All recipes in the setUp
self.assertEqual(len(rows), 5, 'should be 5 recipes')
# check other columns have been populated correctly
self.assertEqual(row1['name'], self.recipe1.name)
@ -529,13 +344,20 @@ class ViewTests(TestCase):
options['format'] = "json"
options['nocache'] = "true"
request = RequestFactory().get('/', options)
# This is the image recipe needed for a package list for
# PackagesTable do this here to throw a non exist exception
image_recipe = Recipe.objects.get(pk=4)
# Add any kwargs that are needed by any of the possible tables
response = table.get(request,
pid=self.project.id,
layerid=self.lver.pk,
recipeid=self.recipe1.pk,
recipe_id=self.recipe1.pk,
custrecipeid=self.customr.pk)
args = {'pid': self.project.id,
'layerid': self.lver.pk,
'recipeid': self.recipe1.pk,
'recipe_id': image_recipe.pk,
'custrecipeid': self.customr.pk
}
response = table.get(request, **args)
return json.loads(response.content)
# Get a list of classes in tables module
@ -562,10 +384,14 @@ class ViewTests(TestCase):
if '-' in table.default_orderby:
self.assertTrue(row_one >= row_two,
"Default ordering not working on %s" % name)
"Default ordering not working on %s"
" '%s' should be >= '%s'" %
(name, row_one, row_two))
else:
self.assertTrue(row_one <= row_two,
"Default ordering not working on %s" % name)
"Default ordering not working on %s"
" '%s' should be <= '%s'" %
(name, row_one, row_two))
# Test the column ordering and filtering functionality
for column in table.columns:
@ -580,7 +406,9 @@ class ViewTests(TestCase):
self.assertTrue(row_one <= row_two,
"Ascending sort applied but row 0 is less "
"than row 1")
"than row 1 %s %s " %
(column['field_name'], name))
descending = get_data(table_cls(),
{"orderby" :
@ -591,7 +419,8 @@ class ViewTests(TestCase):
self.assertTrue(row_one >= row_two,
"Descending sort applied but row 0 is "
"greater than row 1")
"greater than row 1 %s %s" %
(column['field_name'], name))
# If the two start rows are the same we haven't actually
# changed the order