Changed Implementation.interface to Implementation.feed.
[zeroinstall/zeroinstall-rsl.git] / tests / testwriter.py
blob1b07f7fb257427ec1ef90068aa9f493dbea70cb5
1 #!/usr/bin/env python2.4
2 from basetest import BaseTest
3 import sys, tempfile, os, shutil, StringIO
4 import unittest
6 sys.path.insert(0, '..')
7 from zeroinstall.injector import writer, model, basedir, reader, qdom
9 test_feed = qdom.parse(StringIO.StringIO("""<interface xmlns='http://zero-install.sourceforge.net/2004/injector/interface'>
10 <implementation id='sha1=3ce644dc725f1d21cfcf02562c76f375944b266a' version='1'/>
11 </interface>
12 """))
14 class TestWriter(BaseTest):
15 def testFeeds(self):
16 iface = model.Interface('http://test/test')
17 iface.stability_policy = model.developer
18 iface.last_checked = 100
19 iface.extra_feeds.append(model.Feed('http://sys-feed', None, False))
20 iface.extra_feeds.append(model.Feed('http://user-feed', 'Linux-*', True))
21 writer.save_interface(iface)
23 iface = model.Interface('http://test/test')
24 self.assertEquals(None, iface.stability_policy)
25 reader.update_user_overrides(iface)
26 self.assertEquals(model.developer, iface.stability_policy)
27 self.assertEquals(100, iface.last_checked)
28 self.assertEquals(None, iface.get_feed('http://sys-feed'))
29 feed = iface.get_feed('http://user-feed')
30 self.assertEquals('http://user-feed', feed.uri)
31 self.assertEquals('Linux', feed.os)
32 self.assertEquals(None, feed.machine)
34 def testStoreNothing(self):
35 iface = model.Interface('http://test/test')
36 writer.save_interface(iface)
38 iface = model.Interface('http://test/test')
39 self.assertEquals(None, iface.stability_policy)
40 reader.update_user_overrides(iface)
41 self.assertEquals({}, iface.implementations)
43 def testStoreStability(self):
44 iface = model.Interface('http://localhost:8000/Hello')
45 iface._main_feed = model.ZeroInstallFeed(test_feed, local_path = '/Hello')
46 impl = iface.implementations['sha1=3ce644dc725f1d21cfcf02562c76f375944b266a']
47 impl.user_stability = model.developer
48 writer.save_interface(iface)
50 iface = model.Interface('http://localhost:8000/Hello')
51 self.assertEquals(None, iface.stability_policy)
52 reader.update_user_overrides(iface)
54 # Ignored because not in main interface
55 self.assertEquals(0, len(iface.implementations))
57 # Now visible
58 reader.update(iface, 'Hello.xml')
59 reader.update_user_overrides(iface)
60 self.assertEquals(1, len(iface.implementations))
62 impl = iface.implementations['sha1=3ce644dc725f1d21cfcf02562c76f375944b266a']
63 self.assertEquals(model.developer, impl.user_stability)
65 suite = unittest.makeSuite(TestWriter)
66 if __name__ == '__main__':
67 sys.argv.append('-v')
68 unittest.main()