API changes: use Feed rather than Interface in many places
[zeroinstall/zeroinstall-afb.git] / tests / testwriter.py
blobfe44bd5033f2ef0b340cece87a2faa1fa0c6e289
1 #!/usr/bin/env python
2 from basetest import BaseTest
3 import sys, StringIO
4 import unittest
6 sys.path.insert(0, '..')
7 from zeroinstall.injector import writer, model, reader, qdom, iface_cache
9 test_feed = qdom.parse(StringIO.StringIO("""<interface xmlns='http://zero-install.sourceforge.net/2004/injector/interface'>
10 <name>Test</name>
11 <summary>for testing</summary>
12 <implementation id='sha1=3ce644dc725f1d21cfcf02562c76f375944b266a' version='1'/>
13 </interface>
14 """))
16 class TestWriter(BaseTest):
17 def testFeeds(self):
18 iface = model.Interface('http://test/test')
19 main_feed = model.ZeroInstallFeed(test_feed, local_path = '/Hello')
20 iface_cache.iface_cache._feeds[iface.uri] = main_feed
21 iface.stability_policy = model.developer
22 main_feed.last_checked = 100
23 iface.extra_feeds.append(model.Feed('http://sys-feed', None, False))
24 iface.extra_feeds.append(model.Feed('http://user-feed', 'Linux-*', True))
25 writer.save_interface(iface)
27 iface = model.Interface('http://test/test')
28 self.assertEquals(None, iface.stability_policy)
29 main_feed = model.ZeroInstallFeed(test_feed, local_path = '/Hello')
30 iface_cache.iface_cache._feeds[iface.uri] = main_feed
31 reader.update_user_overrides(iface, main_feed)
32 self.assertEquals(model.developer, iface.stability_policy)
33 self.assertEquals(100, main_feed.last_checked)
34 self.assertEquals("[<Feed from http://user-feed>]", str(iface.extra_feeds))
36 feed = iface.extra_feeds[0]
37 self.assertEquals('http://user-feed', feed.uri)
38 self.assertEquals('Linux', feed.os)
39 self.assertEquals(None, feed.machine)
41 def testStoreNothing(self):
42 iface = model.Interface('http://test/test')
43 writer.save_interface(iface)
45 iface = model.Interface('http://test/test')
46 self.assertEquals(None, iface.stability_policy)
47 reader.update_user_overrides(iface)
49 feed = iface_cache.iface_cache.get_feed(iface.uri)
50 self.assertEquals(None, feed)
52 def testStoreStability(self):
53 iface = model.Interface('http://example.com:8000/Hello.xml')
54 main_feed = model.ZeroInstallFeed(test_feed, local_path = '/Hello.xml')
55 iface_cache.iface_cache._feeds[iface.uri] = main_feed
56 impl = main_feed.implementations['sha1=3ce644dc725f1d21cfcf02562c76f375944b266a']
57 impl.user_stability = model.developer
58 writer.save_interface(iface)
60 iface = model.Interface('http://example.com:8000/Hello.xml')
61 self.assertEquals(None, iface.stability_policy)
62 reader.update_user_overrides(iface)
64 del iface_cache.iface_cache._feeds[iface.uri]
66 # Now visible
67 reader.update(iface, 'Hello.xml')
68 main_feed = iface_cache.iface_cache.get_feed(iface.uri)
69 reader.update_user_overrides(iface, main_feed)
70 self.assertEquals(1, len(main_feed.implementations))
72 impl = main_feed.implementations['sha1=3ce644dc725f1d21cfcf02562c76f375944b266a']
73 self.assertEquals(model.developer, impl.user_stability)
75 if __name__ == '__main__':
76 unittest.main()