diff options
Diffstat (limited to 'tests/units')
-rwxr-xr-x | tests/units/model/context.py | 20 | ||||
-rwxr-xr-x | tests/units/model/model.py | 28 | ||||
-rwxr-xr-x | tests/units/node/model.py | 296 | ||||
-rwxr-xr-x | tests/units/node/node.py | 21 | ||||
-rwxr-xr-x | tests/units/toolkit/spec.py | 154 |
5 files changed, 259 insertions, 260 deletions
diff --git a/tests/units/model/context.py b/tests/units/model/context.py index 8fd5b56..0990f15 100755 --- a/tests/units/model/context.py +++ b/tests/units/model/context.py @@ -79,10 +79,9 @@ class ContextTest(tests.Test): 'announce': next(volume['post'].find(query='title:1')[0]).guid, 'version': [[1], 0], 'requires': {}, - 'commands': {'activity': {'exec': 'true'}}, - 'spec': {'*-*': {'bundle': str(hash(bundle1))}}, + 'command': 'true', + 'bundles': {'*-*': {'blob': str(hash(bundle1)), 'unpack_size': len(activity_info1)}}, 'stability': 'stable', - 'unpack_size': len(activity_info1), }, }, }, conn.get(['context', context, 'releases'])) @@ -109,10 +108,9 @@ class ContextTest(tests.Test): 'announce': next(volume['post'].find(query='title:1')[0]).guid, 'version': [[1], 0], 'requires': {}, - 'commands': {'activity': {'exec': 'true'}}, - 'spec': {'*-*': {'bundle': str(hash(bundle1))}}, + 'command': 'true', + 'bundles': {'*-*': {'blob': str(hash(bundle1)), 'unpack_size': len(activity_info1)}}, 'stability': 'stable', - 'unpack_size': len(activity_info1), }, }, release2: { @@ -123,10 +121,9 @@ class ContextTest(tests.Test): 'announce': next(volume['post'].find(query='title:2')[0]).guid, 'version': [[2], 0], 'requires': {}, - 'commands': {'activity': {'exec': 'true'}}, - 'spec': {'*-*': {'bundle': str(hash(bundle2))}}, + 'command': 'true', + 'bundles': {'*-*': {'blob': str(hash(bundle2)), 'unpack_size': len(activity_info2)}}, 'stability': 'stable', - 'unpack_size': len(activity_info2), }, }, }, conn.get(['context', context, 'releases'])) @@ -147,10 +144,9 @@ class ContextTest(tests.Test): 'announce': next(volume['post'].find(query='title:2')[0]).guid, 'version': [[2], 0], 'requires': {}, - 'commands': {'activity': {'exec': 'true'}}, - 'spec': {'*-*': {'bundle': str(hash(bundle2))}}, + 'command': 'true', + 'bundles': {'*-*': {'blob': str(hash(bundle2)), 'unpack_size': len(activity_info2)}}, 'stability': 'stable', - 'unpack_size': len(activity_info2), }, }, }, conn.get(['context', context, 'releases'])) diff --git a/tests/units/model/model.py b/tests/units/model/model.py index 28d8244..7649571 100755 --- a/tests/units/model/model.py +++ b/tests/units/model/model.py @@ -79,16 +79,18 @@ class ModelTest(tests.Test): self.assertEqual('developer', release['stability']) self.assertEqual(['Public Domain'], release['license']) self.assertEqual('developer', release['stability']) - self.assertEqual( - {'dep': {}, 'sugar': {'restrictions': [('0.88', None)]}}, - release['requires']) + self.assertEqual({ + 'dep': [], + 'sugar': [([1, 0], [[0, 88], 0])], + }, + release['requires']) self.assertEqual({ '*-*': { - 'bundle': blob.digest, + 'blob': blob.digest, + 'unpack_size': len(activity_info) + len(changelog), }, }, - release['spec']) - self.assertEqual(len(activity_info) + len(changelog), release['unpack_size']) + release['bundles']) post = volume['post'][release['announce']] assert tests.UID in post['author'] @@ -492,13 +494,13 @@ class ModelTest(tests.Test): context, release = load_bundle(blob, 'bundle_id') self.assertEqual({ - 'dep5': {'restrictions': [('40', None)]}, - 'dep4': {'restrictions': [('31', None)]}, - 'dep7': {'restrictions': [('1', '4')]}, - 'dep6': {'restrictions': [('6', '7')]}, - 'dep1': {}, - 'dep3': {'restrictions': [(None, '21')]}, - 'dep2': {'restrictions': [(None, '10')]}, + 'dep5': [([1, 0], [[40], 0])], + 'dep4': [([1], [[30], 0])], + 'dep7': [([1, 0], [[1], 0]), ([-1, 0], [[3], 0])], + 'dep6': [([1], [[5], 0]), ([-1], [[7], 0])], + 'dep1': [], + 'dep3': [([-1, 0], [[20], 0])], + 'dep2': [([-1], [[10], 0])], }, release['requires']) diff --git a/tests/units/node/model.py b/tests/units/node/model.py index 13c1ef5..795b124 100755 --- a/tests/units/node/model.py +++ b/tests/units/node/model.py @@ -662,24 +662,24 @@ class ModelTest(tests.Test): context = volume['context'].create({ 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '1': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands1'}}, - '2': {'value': {'stability': 'stable', 'version': 2, 'commands': 'commands2'}}, - '3': {'value': {'stability': 'stable', 'version': 3, 'commands': 'commands3'}}, + '1': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'commands1'}}, + '2': {'value': {'stability': 'stable', 'version': [[2], 0], 'command': 'commands2'}}, + '3': {'value': {'stability': 'stable', 'version': [[3], 0], 'command': 'commands3'}}, }, }) self.assertEqual( - {'commands': 'commands3', 'files': {context: '3'}, 'packages': {}}, + {context: {'command': 'commands3', 'blob': '3', 'version': [[3], 0]}}, model.solve(volume, context)) context = volume['context'].create({ 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '3': {'value': {'stability': 'stable', 'version': 3, 'commands': 'commands3'}}, - '2': {'value': {'stability': 'stable', 'version': 2, 'commands': 'commands2'}}, - '1': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands1'}}, + '3': {'value': {'stability': 'stable', 'version': [[3], 0], 'command': 'commands3'}}, + '2': {'value': {'stability': 'stable', 'version': [[2], 0], 'command': 'commands2'}}, + '1': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'commands1'}}, }, }) self.assertEqual( - {'commands': 'commands3', 'files': {context: '3'}, 'packages': {}}, + {context: {'command': 'commands3', 'blob': '3', 'version': [[3], 0]}}, model.solve(volume, context)) def test_solve_SortByStability(self): @@ -688,13 +688,13 @@ class ModelTest(tests.Test): context = volume['context'].create({ 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '1': {'value': {'stability': 'developer', 'version': 1, 'commands': 'commands1'}}, - '2': {'value': {'stability': 'stable', 'version': 2, 'commands': 'commands2'}}, - '3': {'value': {'stability': 'buggy', 'version': 3, 'commands': 'commands3'}}, + '1': {'value': {'stability': 'developer', 'version': [[1], 0], 'command': 'commands1'}}, + '2': {'value': {'stability': 'stable', 'version': [[2], 0], 'command': 'commands2'}}, + '3': {'value': {'stability': 'buggy', 'version': [[3], 0], 'command': 'commands3'}}, }, }) self.assertEqual( - {'commands': 'commands2', 'files': {context: '2'}, 'packages': {}}, + {context: {'command': 'commands2', 'blob': '2', 'version': [[2], 0]}}, model.solve(volume, context)) def test_solve_CollectDeps(self): @@ -705,9 +705,9 @@ class ModelTest(tests.Test): 'guid': 'context1', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { '1': {'value': { 'stability': 'stable', - 'version': 1, + 'version': [[1], 0], 'requires': spec.parse_requires('context2; context4'), - 'commands': 'commands', + 'command': 'command', }}, }, }) @@ -715,26 +715,27 @@ class ModelTest(tests.Test): 'guid': 'context2', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { '2': {'value': { 'stability': 'stable', - 'version': 2, + 'version': [[2], 0], 'requires': spec.parse_requires('context3'), }}, }, }) volume['context'].create({ 'guid': 'context3', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '3': {'value': {'stability': 'stable', 'version': 3}}, + '3': {'value': {'stability': 'stable', 'version': [[3], 0]}}, }, }) volume['context'].create({ 'guid': 'context4', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '4': {'value': {'stability': 'stable', 'version': 4}}, + '4': {'value': {'stability': 'stable', 'version': [[4], 0]}}, }, }) self.assertEqual({ - 'commands': 'commands', - 'files': {'context3': '3', 'context2': '2', 'context1': '1', 'context4': '4'}, - 'packages': {}, + 'context1': {'blob': '1', 'version': [[1], 0], 'command': 'command'}, + 'context2': {'blob': '2', 'version': [[2], 0]}, + 'context3': {'blob': '3', 'version': [[3], 0]}, + 'context4': {'blob': '4', 'version': [[4], 0]}, }, model.solve(volume, 'context1')) @@ -744,90 +745,103 @@ class ModelTest(tests.Test): volume['context'].create({ 'guid': 'dep', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '1': {'value': {'stability': 'stable', 'version': '1'}}, - '2': {'value': {'stability': 'stable', 'version': '2'}}, - '3': {'value': {'stability': 'stable', 'version': '3'}}, - '4': {'value': {'stability': 'stable', 'version': '4'}}, - '5': {'value': {'stability': 'stable', 'version': '5'}}, + '1': {'value': {'stability': 'stable', 'version': [[1], 0]}}, + '2': {'value': {'stability': 'stable', 'version': [[2], 0]}}, + '3': {'value': {'stability': 'stable', 'version': [[3], 0]}}, + '4': {'value': {'stability': 'stable', 'version': [[4], 0]}}, + '5': {'value': {'stability': 'stable', 'version': [[5], 0]}}, }, }) volume['context'].create({ 'guid': 'context1', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep < 3'), }}, }, }) - self.assertEqual( - {'files': {'dep': '2', 'context1': '10'}, 'commands': 'commands', 'packages': {}}, + self.assertEqual({ + 'context1': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + 'dep': {'blob': '2', 'version': [[2], 0]}, + }, model.solve(volume, 'context1')) volume['context'].create({ 'guid': 'context1', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep <= 3'), }}, }, }) - self.assertEqual( - {'files': {'dep': '3', 'context1': '10'}, 'commands': 'commands', 'packages': {}}, + self.assertEqual({ + 'context1': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + 'dep': {'blob': '3', 'version': [[3], 0]}, + }, model.solve(volume, 'context1')) - volume['context'].create({ 'guid': 'context1', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep > 2'), }}, }, }) - self.assertEqual( - {'files': {'dep': '5', 'context1': '10'}, 'commands': 'commands', 'packages': {}}, + self.assertEqual({ + 'context1': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + 'dep': {'blob': '5', 'version': [[5], 0]}, + }, model.solve(volume, 'context1')) volume['context'].create({ 'guid': 'context1', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep >= 2'), }}, }, }) - self.assertEqual( - {'files': {'dep': '5', 'context1': '10'}, 'commands': 'commands', 'packages': {}}, + self.assertEqual({ + 'context1': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + 'dep': {'blob': '5', 'version': [[5], 0]}, + }, model.solve(volume, 'context1')) volume['context'].create({ 'guid': 'context1', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep > 2; dep < 5'), }}, }, }) - self.assertEqual( - {'files': {'dep': '4', 'context1': '10'}, 'commands': 'commands', 'packages': {}}, + self.assertEqual({ + 'context1': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + 'dep': {'blob': '4', 'version': [[4], 0]}, + }, model.solve(volume, 'context1')) volume['context'].create({ 'guid': 'context1', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep > 2; dep <= 3'), }}, }, }) - self.assertEqual( - {'files': {'dep': '3', 'context1': '10'}, 'commands': 'commands', 'packages': {}}, + self.assertEqual({ + 'context1': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + 'dep': {'blob': '3', 'version': [[3], 0]}, + }, model.solve(volume, 'context1')) volume['context'].create({ 'guid': 'context1', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep = 1'), }}, }, }) - self.assertEqual( - {'files': {'dep': '1', 'context1': '10'}, 'commands': 'commands', 'packages': {}}, + self.assertEqual({ + 'context1': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + 'dep': {'blob': '1', 'version': [[1], 0]}, + }, model.solve(volume, 'context1')) def test_solve_SwitchToAlternativeBranch(self): @@ -836,30 +850,32 @@ class ModelTest(tests.Test): volume['context'].create({ 'guid': 'context1', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '6': {'value': {'stability': 'stable', 'version': '1', 'requires': spec.parse_requires('context4=1'), 'commands': 'commands6'}}, - '1': {'value': {'stability': 'stable', 'version': '2', 'requires': spec.parse_requires('context2'), 'commands': 'commands1'}}, + '6': {'value': {'stability': 'stable', 'version': [[1], 0], 'requires': spec.parse_requires('context4=1'), 'command': 'commands6'}}, + '1': {'value': {'stability': 'stable', 'version': [[2], 0], 'requires': spec.parse_requires('context2'), 'command': 'commands1'}}, }, }) volume['context'].create({ 'guid': 'context2', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '2': {'value': {'stability': 'stable', 'version': '1', 'requires': spec.parse_requires('context3; context4=1')}}, + '2': {'value': {'stability': 'stable', 'version': [[1], 0], 'requires': spec.parse_requires('context3; context4=1')}}, }, }) volume['context'].create({ 'guid': 'context3', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '3': {'value': {'stability': 'stable', 'version': '1', 'requires': spec.parse_requires('context4=2')}}, + '3': {'value': {'stability': 'stable', 'version': [[1], 0], 'requires': spec.parse_requires('context4=2')}}, }, }) volume['context'].create({ 'guid': 'context4', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '4': {'value': {'stability': 'stable', 'version': '2'}}, - '5': {'value': {'stability': 'stable', 'version': '1'}}, + '4': {'value': {'stability': 'stable', 'version': [[2], 0]}}, + '5': {'value': {'stability': 'stable', 'version': [[1], 0]}}, }, }) - self.assertEqual( - {'files': {'context1': '6', 'context4': '5'}, 'commands': 'commands6', 'packages': {}}, - model.solve(volume, 'context1')) + self.assertEqual({ + 'context1': {'blob': '6', 'version': [[1], 0], 'command': 'commands6'}, + 'context4': {'blob': '5', 'version': [[1], 0]}, + }, + model.solve(volume, 'context1')) def test_solve_CommonDeps(self): volume = db.Volume('master', [Context]) @@ -867,11 +883,11 @@ class ModelTest(tests.Test): volume['context'].create({ 'guid': 'dep', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '1': {'value': {'stability': 'stable', 'version': '1'}}, - '2': {'value': {'stability': 'stable', 'version': '2'}}, - '3': {'value': {'stability': 'stable', 'version': '3'}}, - '4': {'value': {'stability': 'stable', 'version': '4'}}, - '5': {'value': {'stability': 'stable', 'version': '5'}}, + '1': {'value': {'stability': 'stable', 'version': [[1], 0]}}, + '2': {'value': {'stability': 'stable', 'version': [[2], 0]}}, + '3': {'value': {'stability': 'stable', 'version': [[3], 0]}}, + '4': {'value': {'stability': 'stable', 'version': [[4], 0]}}, + '5': {'value': {'stability': 'stable', 'version': [[5], 0]}}, }, }) @@ -879,40 +895,46 @@ class ModelTest(tests.Test): 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'dependencies': 'dep=2', 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires(''), }}, }, }) - self.assertEqual( - {'files': {'dep': '2', 'context': '10'}, 'commands': 'commands', 'packages': {}}, - model.solve(volume, 'context')) + self.assertEqual({ + 'context': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + 'dep': {'blob': '2', 'version': [[2], 0]}, + }, + model.solve(volume, 'context')) volume['context'].create({ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'dependencies': 'dep<5', 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep>1'), }}, }, }) - self.assertEqual( - {'files': {'dep': '4', 'context': '10'}, 'commands': 'commands', 'packages': {}}, - model.solve(volume, 'context')) + self.assertEqual({ + 'context': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + 'dep': {'blob': '4', 'version': [[4], 0]}, + }, + model.solve(volume, 'context')) volume['context'].create({ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'dependencies': 'dep<4', 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep<5'), }}, }, }) - self.assertEqual( - {'files': {'dep': '3', 'context': '10'}, 'commands': 'commands', 'packages': {}}, - model.solve(volume, 'context')) + self.assertEqual({ + 'context': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + 'dep': {'blob': '3', 'version': [[3], 0]}, + }, + model.solve(volume, 'context')) def test_solve_ExtraDeps(self): volume = db.Volume('master', [Context]) @@ -920,46 +942,51 @@ class ModelTest(tests.Test): volume['context'].create({ 'guid': 'dep', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '1': {'value': {'stability': 'stable', 'version': '1'}}, - '2': {'value': {'stability': 'stable', 'version': '2'}}, - '3': {'value': {'stability': 'stable', 'version': '3'}}, - '4': {'value': {'stability': 'stable', 'version': '4'}}, - '5': {'value': {'stability': 'stable', 'version': '5'}}, + '1': {'value': {'stability': 'stable', 'version': [[1], 0]}}, + '2': {'value': {'stability': 'stable', 'version': [[2], 0]}}, + '3': {'value': {'stability': 'stable', 'version': [[3], 0]}}, + '4': {'value': {'stability': 'stable', 'version': [[4], 0]}}, + '5': {'value': {'stability': 'stable', 'version': [[5], 0]}}, }, }) volume['context'].create({ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires(''), }}, }, }) - self.assertEqual( - {'files': {'dep': '2', 'context': '10'}, 'commands': 'commands', 'packages': {}}, - model.solve(volume, 'context', requires='dep=2')) + self.assertEqual({ + 'context': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + }, + model.solve(volume, 'context')) volume['context'].create({ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep>1'), }}, }, }) - self.assertEqual( - {'files': {'dep': '4', 'context': '10'}, 'commands': 'commands', 'packages': {}}, - model.solve(volume, 'context', requires='dep<5')) + self.assertEqual({ + 'context': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + 'dep': {'blob': '5', 'version': [[5], 0]}, + }, + model.solve(volume, 'context')) volume['context'].create({ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep<5'), }}, }, }) - self.assertEqual( - {'files': {'dep': '3', 'context': '10'}, 'commands': 'commands', 'packages': {}}, - model.solve(volume, 'context', requires='dep<4')) + self.assertEqual({ + 'context': {'blob': '10', 'version': [[1], 0], 'command': 'command'}, + 'dep': {'blob': '4', 'version': [[4], 0]}, + }, + model.solve(volume, 'context')) def test_solve_Nothing(self): volume = db.Volume('master', [Context]) @@ -968,11 +995,11 @@ class ModelTest(tests.Test): volume['context'].create({ 'guid': 'dep', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '1': {'value': {'stability': 'stable', 'version': '1'}}, - '2': {'value': {'stability': 'stable', 'version': '2'}}, - '3': {'value': {'stability': 'stable', 'version': '3'}}, - '4': {'value': {'stability': 'stable', 'version': '4'}}, - '5': {'value': {'stability': 'stable', 'version': '5'}}, + '1': {'value': {'stability': 'stable', 'version': [[1], 0]}}, + '2': {'value': {'stability': 'stable', 'version': [[2], 0]}}, + '3': {'value': {'stability': 'stable', 'version': [[3], 0]}}, + '4': {'value': {'stability': 'stable', 'version': [[4], 0]}}, + '5': {'value': {'stability': 'stable', 'version': [[5], 0]}}, }, }) @@ -984,7 +1011,7 @@ class ModelTest(tests.Test): volume['context'].create({ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '10': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '10': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep=0'), }}, }, @@ -998,7 +1025,7 @@ class ModelTest(tests.Test): context = volume['context'].create({ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '1': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '1': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('package'), }}, }, @@ -1006,29 +1033,34 @@ class ModelTest(tests.Test): volume['context'].create({ 'guid': 'package', 'type': ['package'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { 'resolves': { - 'Ubuntu-10.04': {'version': 1, 'packages': ['pkg1', 'pkg2']}, + 'Ubuntu-10.04': {'version': [[1], 0], 'packages': ['pkg1', 'pkg2']}, }, }, }) - self.assertEqual( - {'files': {'context': '1'}, 'commands': 'commands', 'packages': {'package': ['pkg1', 'pkg2']}}, - model.solve(volume, context, lsb_id='Ubuntu', lsb_release='10.04')) + self.assertEqual({ + 'context': {'blob': '1', 'command': 'command', 'version': [[1], 0]}, + 'package': {'packages': ['pkg1', 'pkg2'], 'version': [[1], 0]}, + }, + model.solve(volume, context, lsb_id='Ubuntu', lsb_release='10.04')) context = volume['context'].create({ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '1': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '1': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('dep; package'), }}, }, }) volume['context'].create({ 'guid': 'dep', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '2': {'value': {'stability': 'stable', 'version': '1'}}, + '2': {'value': {'stability': 'stable', 'version': [[1], 0]}}, }, }) - self.assertEqual( - {'files': {'dep': '2', 'context': '1'}, 'commands': 'commands', 'packages': {'package': ['pkg1', 'pkg2']}}, - model.solve(volume, context, lsb_id='Ubuntu', lsb_release='10.04')) + self.assertEqual({ + 'context': {'blob': '1', 'command': 'command', 'version': [[1], 0]}, + 'dep': {'blob': '2', 'version': [[1], 0]}, + 'package': {'packages': ['pkg1', 'pkg2'], 'version': [[1], 0]}, + }, + model.solve(volume, context, lsb_id='Ubuntu', lsb_release='10.04')) def test_solve_PackagesByLsbId(self): volume = db.Volume('master', [Context]) @@ -1037,7 +1069,7 @@ class ModelTest(tests.Test): context = volume['context'].create({ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '1': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '1': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('package1'), }}, }, @@ -1047,13 +1079,15 @@ class ModelTest(tests.Test): 'Ubuntu': {'value': {'binary': ['bin1', 'bin2'], 'devel': ['devel1', 'devel2']}}, }, }) - self.assertEqual( - {'files': {'context': '1'}, 'commands': 'commands', 'packages': {'package1': ['bin1', 'bin2', 'devel1', 'devel2']}}, - model.solve(volume, context, lsb_id='Ubuntu')) + self.assertEqual({ + 'context': {'blob': '1', 'command': 'command', 'version': [[1], 0]}, + 'package1': {'packages': ['bin1', 'bin2', 'devel1', 'devel2'], 'version': []}, + }, + model.solve(volume, context, lsb_id='Ubuntu')) context = volume['context'].create({ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '1': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '1': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('package2'), }}, }, @@ -1062,13 +1096,15 @@ class ModelTest(tests.Test): 'guid': 'package2', 'type': ['package'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { 'Ubuntu': {'value': {'binary': ['bin']}}, 'resolves': { - 'Ubuntu-10.04': {'version': 1, 'packages': ['pkg1', 'pkg2']}, + 'Ubuntu-10.04': {'version': [[1], 0], 'packages': ['pkg1', 'pkg2']}, }, }, }) - self.assertEqual( - {'files': {'context': '1'}, 'commands': 'commands', 'packages': {'package2': ['bin']}}, - model.solve(volume, context, lsb_id='Ubuntu', lsb_release='fake')) + self.assertEqual({ + 'context': {'blob': '1', 'command': 'command', 'version': [[1], 0]}, + 'package2': {'packages': ['bin'], 'version': []}, + }, + model.solve(volume, context, lsb_id='Ubuntu', lsb_release='fake')) def test_solve_PackagesByCommonAlias(self): volume = db.Volume('master', [Context]) @@ -1077,7 +1113,7 @@ class ModelTest(tests.Test): context = volume['context'].create({ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '1': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '1': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('package1'), }}, }, @@ -1087,19 +1123,25 @@ class ModelTest(tests.Test): '*': {'value': {'binary': ['pkg1']}}, 'Ubuntu': {'value': {'binary': ['pkg2']}}, 'resolves': { - 'Ubuntu-10.04': {'version': 1, 'packages': ['pkg3']}, + 'Ubuntu-10.04': {'version': [[1], 0], 'packages': ['pkg3']}, }, }, }) - self.assertEqual( - {'files': {'context': '1'}, 'commands': 'commands', 'packages': {'package1': ['pkg1']}}, - model.solve(volume, context)) - self.assertEqual( - {'files': {'context': '1'}, 'commands': 'commands', 'packages': {'package1': ['pkg1']}}, - model.solve(volume, context, lsb_id='Fake')) - self.assertEqual( - {'files': {'context': '1'}, 'commands': 'commands', 'packages': {'package1': ['pkg1']}}, - model.solve(volume, context, lsb_id='Fake', lsb_release='fake')) + self.assertEqual({ + 'context': {'blob': '1', 'command': 'command', 'version': [[1], 0]}, + 'package1': {'packages': ['pkg1'], 'version': []}, + }, + model.solve(volume, context)) + self.assertEqual({ + 'context': {'blob': '1', 'command': 'command', 'version': [[1], 0]}, + 'package1': {'packages': ['pkg1'], 'version': []}, + }, + model.solve(volume, context, lsb_id='Fake')) + self.assertEqual({ + 'context': {'blob': '1', 'command': 'command', 'version': [[1], 0]}, + 'package1': {'packages': ['pkg1'], 'version': []}, + }, + model.solve(volume, context, lsb_id='Fake', lsb_release='fake')) def test_solve_NoPackages(self): volume = db.Volume('master', [Context]) @@ -1108,7 +1150,7 @@ class ModelTest(tests.Test): context = volume['context'].create({ 'guid': 'context', 'type': ['activity'], 'title': {}, 'summary': {}, 'description': {}, 'releases': { - '1': {'value': {'stability': 'stable', 'version': 1, 'commands': 'commands', + '1': {'value': {'stability': 'stable', 'version': [[1], 0], 'command': 'command', 'requires': spec.parse_requires('package'), }}, }, diff --git a/tests/units/node/node.py b/tests/units/node/node.py index 025a0c0..2c8ab8a 100755 --- a/tests/units/node/node.py +++ b/tests/units/node/node.py @@ -560,10 +560,9 @@ class NodeTest(tests.Test): 'announce': announce, 'version': [[1], 0], 'requires': {}, - 'spec': {'*-*': {'bundle': str(hash(bundle))}}, - 'commands': {'activity': {'exec': 'true'}}, + 'bundles': {'*-*': {'blob': str(hash(bundle)), 'unpack_size': len(activity_info) + len(changelog)}}, + 'command': 'true', 'stability': 'developer', - 'unpack_size': len(activity_info) + len(changelog), }, }, }, conn.get(['context', 'bundle_id', 'releases'])) @@ -617,9 +616,9 @@ class NodeTest(tests.Test): conn.put(['context', 'package', 'releases', '*'], {'binary': ['package.bin']}) self.assertEqual({ - 'commands': {'activity': {'exec': 'true'}}, - 'files': {'dep': dep_file, 'activity': activity_file}, - 'packages': {'package': ['package.bin']}, + 'activity': {'blob': activity_file, 'command': 'true', 'version': [[1], 0]}, + 'dep': {'blob': dep_file, 'version': [[2], 0]}, + 'package': {'packages': ['package.bin'], 'version': []}, }, conn.get(['context', 'activity'], cmd='solve')) @@ -671,14 +670,14 @@ class NodeTest(tests.Test): }) volume['context'].update('package', {'releases': { 'resolves': { - 'Ubuntu-10.04': {'version': 1, 'packages': ['package.bin']}, - 'Ubuntu-12.04': {'version': 2, 'packages': ['package-fake.bin']}, + 'Ubuntu-10.04': {'version': [[1], 0], 'packages': ['package.bin']}, + 'Ubuntu-12.04': {'version': [[2], 0], 'packages': ['package-fake.bin']}, }}}) self.assertEqual({ - 'commands': {'activity': {'exec': 'true'}}, - 'files': {'dep': dep_file, 'activity': activity_file}, - 'packages': {'package': ['package.bin']}, + 'activity': {'blob': activity_file, 'command': 'true', 'version': [[1], 0]}, + 'dep': {'blob': dep_file, 'version': [[2], 0]}, + 'package': {'packages': ['package.bin'], 'version': [[1], 0]}, }, conn.get(['context', 'activity'], cmd='solve', stability='developer', lsb_id='Ubuntu', lsb_release='10.04', requires=['dep', 'package'])) diff --git a/tests/units/toolkit/spec.py b/tests/units/toolkit/spec.py index 89d04b3..7c7188e 100755 --- a/tests/units/toolkit/spec.py +++ b/tests/units/toolkit/spec.py @@ -10,58 +10,23 @@ from sugar_network.toolkit import spec class SpecTest(tests.Test): - def test_Dependency_versions_range(self): - self.assertEqual( - [], - [i for i in spec._Dependency().versions_range()]) - self.assertEqual( - [], - [i for i in spec._Dependency({'restrictions': []}).versions_range()]) - self.assertEqual( - [], - [i for i in spec._Dependency({'restrictions': [(None, '2')]}).versions_range()]) - self.assertEqual( - ['1'], - [i for i in spec._Dependency({'restrictions': [('1', None)]}).versions_range()]) - self.assertEqual( - ['1'], - [i for i in spec._Dependency({'restrictions': [('1', '2')]}).versions_range()]) - self.assertEqual( - ['1.2'], - [i for i in spec._Dependency({'restrictions': [('1.2', '1.2.999')]}).versions_range()]) - self.assertEqual( - ['1.2', '1.3'], - [i for i in spec._Dependency({'restrictions': [('1.2', '1.4')]}).versions_range()]) - self.assertEqual( - ['1.2.3', '1.3'], - [i for i in spec._Dependency({'restrictions': [('1.2.3', '1.4')]}).versions_range()]) - self.assertEqual( - ['1.2', '1.3', '1.4'], - [i for i in spec._Dependency({'restrictions': [('1.2', '1.4.5')]}).versions_range()]) - def test_parse_requires(self): - self.assertEqual( - {'a': {}, 'b': {}, 'c': {}}, - spec.parse_requires('a; b; c')) - - self.assertEqual( - { - 'a': {'restrictions': [('1', '2')]}, - 'b': {'restrictions': [('1.2', '1.3')]}, - 'c': {'restrictions': [('2.2', None)]}, - 'd': {'restrictions': [(None, '3')]}, - 'e': {'restrictions': [('5', None)]}, - 'f': {'restrictions': [(None, '6')]}, - }, - spec.parse_requires('a = 1; b=1.2; c>= 2.2; d <3-3; e > 4; f<=5')) - - self.assertEqual( - { - 'a': {'importance': 'recommended'}, - 'b': {}, - 'c': {'importance': 'recommended', 'restrictions': [(None, '1')]}, - }, - spec.parse_requires('[a]; b; [c<1]')) + self.assertEqual({ + 'a': [], + 'b': [], + 'c': [], + }, + spec.parse_requires('a; b; c')) + + self.assertEqual({ + 'a': [([0], [[1], 0])], + 'b': [([0], [[1, 2], 0])], + 'c': [([1, 0], [[2, 2, 2], 0])], + 'd': [([-1], [[3], 0])], + 'e': [([1], [[4], 0])], + 'f': [([-1, 0], [[5], 0])], + }, + spec.parse_requires('a = 1; b==1.2; c>= 2.2.2; d <3-rc1; e > 4; f<=5')) def test_parse_bindings(self): self.assertEqual( @@ -114,19 +79,12 @@ class SpecTest(tests.Test): self.assertEqual(['terminal', 'console'], recipe['tags']) self.assertEqual(['image/png', 'image/svg+xml'], recipe['mime_types']) self.assertEqual( - { - 'activity': { - 'exec': 'sugar-activity terminal.TerminalActivity', - }, - }, - recipe.commands) - self.assertEqual( - { - 'sugar': { - 'restrictions': [('0.94', '0.95')], - }, - }, - recipe.requires) + 'sugar-activity terminal.TerminalActivity', + recipe.command) + self.assertEqual({ + 'sugar': [([0], [[0, 94], 0])], + }, + recipe.requires) def test_parse_version(self): @@ -179,39 +137,41 @@ class SpecTest(tests.Test): def test_parse_version_IgnoreErrors(self): self.assertEqual([[1, 2], 0], spec.parse_version('1.2foo', ignore_errors=True)) - def test_ensure_requires(self): - assert spec.ensure_requires(spec.parse_requires(''), spec.parse_requires('')) - - assert not spec.ensure_requires(spec.parse_requires(''), spec.parse_requires('d1')) - assert spec.ensure_requires(spec.parse_requires('d1'), spec.parse_requires('')) - assert spec.ensure_requires(spec.parse_requires('d1'), spec.parse_requires('d1')) - - assert not spec.ensure_requires(spec.parse_requires(''), spec.parse_requires('d1; d2')) - assert spec.ensure_requires(spec.parse_requires('d1; d2'), spec.parse_requires('')) - assert not spec.ensure_requires(spec.parse_requires('d1'), spec.parse_requires('d1; d2')) - assert spec.ensure_requires(spec.parse_requires('d1; d2'), spec.parse_requires('d1')) - assert spec.ensure_requires(spec.parse_requires('d1; d2'), spec.parse_requires('d1; d2')) - - assert spec.ensure_requires(spec.parse_requires('d1'), spec.parse_requires('d1 < 1')) - assert spec.ensure_requires(spec.parse_requires('d1 < 1'), spec.parse_requires('d1')) - assert spec.ensure_requires(spec.parse_requires('d1 < 1'), spec.parse_requires('d1 < 2')) - assert spec.ensure_requires(spec.parse_requires('d1 < 2'), spec.parse_requires('d1 < 1')) - - assert spec.ensure_requires(spec.parse_requires('d1'), spec.parse_requires('d1 > 1')) - assert spec.ensure_requires(spec.parse_requires('d1 > 1'), spec.parse_requires('d1')) - assert spec.ensure_requires(spec.parse_requires('d1 > 1'), spec.parse_requires('d1 > 2')) - assert spec.ensure_requires(spec.parse_requires('d1 > 2'), spec.parse_requires('d1 > 1')) - - assert spec.ensure_requires(spec.parse_requires('d1'), spec.parse_requires('d1 > 1; d1 < 2')) - assert spec.ensure_requires(spec.parse_requires('d1 > 1; d1 < 2'), spec.parse_requires('d1')) - # Commented until implementing precice version comparation - #assert spec.ensure_requires(spec.parse_requires('d1 > 1; d1 < 2'), spec.parse_requires('d1 > 0; d1 < 3')) - #assert spec.ensure_requires(spec.parse_requires('d1 > 0; d1 < 3'), spec.parse_requires('d1 > 1; d1 < 2')) - - assert spec.ensure_requires(spec.parse_requires('d1 > 1; d1 <= 2'), spec.parse_requires('d1 >= 2; d1 < 3')) - assert spec.ensure_requires(spec.parse_requires('d1 >= 1; d1 < 2'), spec.parse_requires('d1 > 0; d1 <= 1')) - assert not spec.ensure_requires(spec.parse_requires('d1 > 1; d1 < 2'), spec.parse_requires('d1 > 2; d1 < 3')) - assert not spec.ensure_requires(spec.parse_requires('d1 > 1; d1 < 2'), spec.parse_requires('d1 > 0; d1 < 1')) + def test_ensure(self): + assert spec.ensure(spec.parse_version('1'), spec.parse_requires('dep')['dep']) + + assert spec.ensure(spec.parse_version('1'), spec.parse_requires('dep=1')['dep']) + assert not spec.ensure(spec.parse_version('2'), spec.parse_requires('dep=1')['dep']) + + assert spec.ensure(spec.parse_version('1'), spec.parse_requires('dep<2')['dep']) + assert not spec.ensure(spec.parse_version('2'), spec.parse_requires('dep<2')['dep']) + assert not spec.ensure(spec.parse_version('3'), spec.parse_requires('dep<2')['dep']) + + assert spec.ensure(spec.parse_version('3'), spec.parse_requires('dep>2')['dep']) + assert not spec.ensure(spec.parse_version('2'), spec.parse_requires('dep>2')['dep']) + assert not spec.ensure(spec.parse_version('1'), spec.parse_requires('dep>2')['dep']) + + assert spec.ensure(spec.parse_version('1'), spec.parse_requires('dep<=2')['dep']) + assert spec.ensure(spec.parse_version('2'), spec.parse_requires('dep<=2')['dep']) + assert not spec.ensure(spec.parse_version('3'), spec.parse_requires('dep<=2')['dep']) + + assert spec.ensure(spec.parse_version('3'), spec.parse_requires('dep>=2')['dep']) + assert spec.ensure(spec.parse_version('2'), spec.parse_requires('dep>=2')['dep']) + assert not spec.ensure(spec.parse_version('1'), spec.parse_requires('dep>=2')['dep']) + + def test_ensure_StripVersionsForEQ(self): + assert spec.ensure(spec.parse_version('1.2'), spec.parse_requires('dep=1')['dep']) + assert not spec.ensure(spec.parse_version('1'), spec.parse_requires('dep=1.2')['dep']) + assert spec.ensure(spec.parse_version('1.2.3'), spec.parse_requires('dep=1.2')['dep']) + + assert spec.ensure(spec.parse_version('1-pre2'), spec.parse_requires('dep=1')['dep']) + assert spec.ensure(spec.parse_version('1-post2'), spec.parse_requires('dep=1')['dep']) + + assert spec.ensure(spec.parse_version('1.2-pre3'), spec.parse_requires('dep=1')['dep']) + assert spec.ensure(spec.parse_version('1.2-post3'), spec.parse_requires('dep=1')['dep']) + + assert not spec.ensure(spec.parse_version('1-pre3'), spec.parse_requires('dep=1.2')['dep']) + assert not spec.ensure(spec.parse_version('1-post3'), spec.parse_requires('dep=1.2')['dep']) if __name__ == '__main__': |