From b3189f307157d0369c019850ab4bdcbec9320006 Mon Sep 17 00:00:00 2001 From: Michael Wood Date: Wed, 20 May 2015 15:44:16 +0100 Subject: bitbake: orm: Fix all failing unit test This fixes all the unit tests for the orm. Also added is the ability to set a custom Layer index if you want to avoid using the public one by specifying TTS_LAYER_INDEX (Bitbake rev: dfbcbe116d0b987b850f67056f02f489ac0b8360) Signed-off-by: Michael Wood Signed-off-by: Richard Purdie --- bitbake/lib/toaster/orm/models.py | 5 ++++- bitbake/lib/toaster/orm/tests.py | 32 ++++++++++++++++++++------------ 2 files changed, 24 insertions(+), 13 deletions(-) (limited to 'bitbake/lib') diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py index 8a9a21eeee..198c6f5d22 100644 --- a/bitbake/lib/toaster/orm/models.py +++ b/bitbake/lib/toaster/orm/models.py @@ -782,8 +782,11 @@ class LayerIndexLayerSource(LayerSource): print "EE: could not connect to %s, skipping update: %s\n%s" % (self.apiurl, e, traceback.format_exc(e)) return - # update branches; only those that we already have names listed in the Releases table + # update branches; only those that we already have names listed in the + # Releases table whitelist_branch_names = map(lambda x: x.branch_name, Release.objects.all()) + if len(whitelist_branch_names) == 0: + raise Exception("Failed to make list of branches to fetch") print "Fetching branches" branches_info = _get_json_response(apilinks['branches'] diff --git a/bitbake/lib/toaster/orm/tests.py b/bitbake/lib/toaster/orm/tests.py index 7b1b9633f9..d4d97eea0a 100644 --- a/bitbake/lib/toaster/orm/tests.py +++ b/bitbake/lib/toaster/orm/tests.py @@ -1,4 +1,4 @@ -from django.test import TestCase +from django.test import TestCase, TransactionTestCase from orm.models import LocalLayerSource, LayerIndexLayerSource, ImportedLayerSource, LayerSource from orm.models import Branch @@ -7,6 +7,10 @@ from orm.models import Release, ReleaseLayerSourcePriority, BitbakeVersion from django.utils import timezone +import os + +# set TTS_LAYER_INDEX to the base url to use a different instance of the layer index + # tests to verify inheritance for the LayerSource proxy-inheritance classes class LayerSourceVerifyInheritanceSaveLoad(TestCase): def test_object_creation(self): @@ -29,17 +33,20 @@ class LayerSourceVerifyInheritanceSaveLoad(TestCase): self.assertRaises(Exception, duplicate) -# test to verify the layer source update functionality for layerindex. edit to pass the URL to a layerindex application -class LILSUpdateTestCase(TestCase): - def test_update(self): - lils = LayerSource.objects.create(name = "b1", sourcetype = LayerSource.TYPE_LAYERINDEX, apiurl = "http://adamian-desk.local:8080/layerindex/api/") - lils.update() +class LILSUpdateTestCase(TransactionTestCase): + def setUp(self): + # create release + bbv = BitbakeVersion.objects.create(name="master", giturl="git://git.openembedded.org/bitbake") + release = Release.objects.create(name="default-release", bitbake_version = bbv, branch_name = "master") - # run second update - # lils.update() + def test_update(self): + layer_index_url = os.getenv("TTS_LAYER_INDEX") + if layer_index_url == None: + print "Using layers.openembedded.org for layer index. override with TTS_LAYER_INDEX enviroment variable" + layer_index_url = "http://layers.openembedded.org/" - # print vars(lils) - #print map(lambda x: vars(x), Branch.objects.all()) + lils = LayerSource.objects.create(name = "b1", sourcetype = LayerSource.TYPE_LAYERINDEX, apiurl = layer_index_url + "layerindex/api/") + lils.update() # run asserts self.assertTrue(lils.branch_set.all().count() > 0, "update() needs to fetch some branches") @@ -59,6 +66,7 @@ class LayerVersionEquivalenceTestCase(TestCase): # attach layer source to release ReleaseLayerSourcePriority.objects.create(release = release, layer_source = ls, priority = 1) + # create layer attach self.layer = Layer.objects.create(name="meta-testlayer", layer_source = ls) # create branch @@ -84,7 +92,7 @@ class LayerVersionEquivalenceTestCase(TestCase): def test_dual_layersource(self): # if we have two layers with the same name, from different layer sources, we expect both layers in, in increasing priority of the layer source - ls2 = LayerSource.objects.create(name = "dummy-layersource2", sourcetype = LayerSource.TYPE_LOCAL) + ls2 = LayerSource.objects.create(name = "dummy-layersource2", sourcetype = LayerSource.TYPE_LOCAL, apiurl="test") # assign a lower priority for the second layer source Release.objects.get(name="default-release").releaselayersourcepriority_set.create(layer_source = ls2, priority = 2) @@ -149,7 +157,7 @@ class ProjectLVSelectionTestCase(TestCase): def test_dual_layersource(self): # if we have two layers with the same name, from different layer sources, we expect both layers in, in increasing priority of the layer source - ls2 = LayerSource.objects.create(name = "dummy-layersource2", sourcetype = LayerSource.TYPE_LOCAL) + ls2 = LayerSource.objects.create(name = "dummy-layersource2", sourcetype = LayerSource.TYPE_LOCAL, apiurl="testing") # assign a lower priority for the second layer source Release.objects.get(name="default-release").releaselayersourcepriority_set.create(layer_source = ls2, priority = 2) -- cgit v1.2.3-54-g00ecf