Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2014-05-02 15:22:33 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2014-05-02 15:22:33 (GMT)
commita625f7b3bea0de2d2effe56e116e512c3ea405fb (patch)
tree9d117b4589ceab646f530eaf23d3c201c75f0af3
parent06c7ebd2508f354d48be59d3842034c0d477ed20 (diff)
Do not fail the entore solve if one of dependent contexts is absent
-rw-r--r--sugar_network/node/model.py6
-rwxr-xr-xtests/units/node/node_model.py18
2 files changed, 23 insertions, 1 deletions
diff --git a/sugar_network/node/model.py b/sugar_network/node/model.py
index 77ee978..5d42583 100644
--- a/sugar_network/node/model.py
+++ b/sugar_network/node/model.py
@@ -334,7 +334,11 @@ def solve(volume, top_context, command=None, lsb_id=None, lsb_release=None,
if context in context_clauses:
return context_clauses[context]
context = volume['context'][context]
- enforce(context.available, http.NotFound, 'Context not found')
+
+ if not context.available:
+ _logger.trace('No %r context', context.guid)
+ return []
+
releases = context['releases']
clause = []
diff --git a/tests/units/node/node_model.py b/tests/units/node/node_model.py
index 369b0de..a4f5c86 100755
--- a/tests/units/node/node_model.py
+++ b/tests/units/node/node_model.py
@@ -1910,6 +1910,24 @@ class NodeModelTest(tests.Test):
})
self.assertEqual(None, model.solve(volume, context))
+ def test_solve_IgnoreAbsentContexts(self):
+ volume = Volume('master', [Context])
+ this.volume = volume
+
+ volume['context'].create({
+ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': {
+ '2': {'value': {'bundles': {'*-*': {}}, 'stability': 'stable', 'version': [[2], 0], 'commands': {'activity': {'exec': 0}},
+ 'requires': spec.parse_requires('absent'), 'commands': {'activity': {'exec': 2}}}},
+ '1': {'value': {'bundles': {'*-*': {}}, 'stability': 'stable', 'version': [[1], 0], 'commands': {'activity': {'exec': 0}},
+ 'commands': {'activity': {'exec': 1}}}},
+ },
+ })
+
+ self.assertEqual({
+ 'context': {'title': '', 'blob': '1', 'version': [[1], 0], 'command': ('activity', 1)},
+ },
+ model.solve(volume, 'context'))
+
def test_load_bundle_Activity(self):
volume = self.start_master()
blobs = volume.blobs