Best JavaScript code snippet using unexpected
test_alias.py
Source:test_alias.py
...75 def test_init_args(self):76 class ClassicFoo:77 def __init__(self, foo, bar):78 pass79 class NewFoo(object):80 def __init__(self, foo, bar):81 pass82 self.assertRaises(TypeError, ClassAlias, ClassicFoo)83 ClassAlias(NewFoo)84 def test_createInstance(self):85 x = ClassAlias(Spam, 'org.example.spam.Spam')86 y = x.createInstance()87 self.assertTrue(isinstance(y, Spam))88 def test_str(self):89 class Eggs(object):90 pass91 x = ClassAlias(Eggs, 'org.example.eggs.Eggs')92 self.assertEqual(str(x), 'org.example.eggs.Eggs')93 def test_eq(self):94 class A(object):95 pass96 class B(object):97 pass98 x = ClassAlias(A, 'org.example.A')99 y = ClassAlias(A, 'org.example.A')100 z = ClassAlias(B, 'org.example.B')101 self.assertEqual(x, A)102 self.assertEqual(x, y)103 self.assertNotEquals(x, z)104class GetEncodableAttributesTestCase(unittest.TestCase):105 """106 Tests for L{ClassAlias.getEncodableAttributes}107 """108 def setUp(self):109 self.alias = ClassAlias(Spam, 'foo', defer=True)110 self.obj = Spam()111 def test_empty(self):112 attrs = self.alias.getEncodableAttributes(self.obj)113 self.assertEqual(attrs, {})114 def test_static(self):115 self.alias.static_attrs = ['foo', 'bar']116 self.alias.compile()117 self.obj.foo = 'bar'118 # leave self.obj.bar119 self.assertFalse(hasattr(self.obj, 'bar'))120 attrs = self.alias.getEncodableAttributes(self.obj)121 self.assertEqual(attrs, {'foo': 'bar', 'bar': pyamf.Undefined})122 def test_not_dynamic(self):123 self.alias.compile()124 self.alias.dynamic = False125 self.assertEqual(self.alias.getEncodableAttributes(self.obj), {})126 def test_dynamic(self):127 self.alias.compile()128 self.assertEqual(self.alias.encodable_properties, None)129 self.obj.foo = 'bar'130 self.obj.bar = 'foo'131 attrs = self.alias.getEncodableAttributes(self.obj)132 self.assertEqual(attrs, {'foo': 'bar', 'bar': 'foo'})133 def test_proxy(self):134 from pyamf import flex135 c = pyamf.get_encoder(pyamf.AMF3)136 self.alias.proxy_attrs = ('foo', 'bar')137 self.alias.compile()138 self.assertEqual(self.alias.proxy_attrs, ['bar', 'foo'])139 self.obj.foo = ['bar', 'baz']140 self.obj.bar = {'foo': 'gak'}141 attrs = self.alias.getEncodableAttributes(self.obj, c)142 k = attrs.keys()143 k.sort()144 self.assertEqual(k, ['bar', 'foo'])145 self.assertTrue(isinstance(attrs['foo'], flex.ArrayCollection))146 self.assertEqual(attrs['foo'], ['bar', 'baz'])147 self.assertTrue(isinstance(attrs['bar'], flex.ObjectProxy))148 self.assertEqual(attrs['bar']._amf_object, {'foo': 'gak'})149 def test_synonym(self):150 self.alias.synonym_attrs = {'foo': 'bar'}151 self.alias.compile()152 self.assertFalse(self.alias.shortcut_encode)153 self.assertFalse(self.alias.shortcut_decode)154 self.obj.foo = 'bar'155 self.obj.spam = 'eggs'156 ret = self.alias.getEncodableAttributes(self.obj)157 self.assertEquals(ret, {'bar': 'bar', 'spam': 'eggs'})158class GetDecodableAttributesTestCase(unittest.TestCase):159 """160 Tests for L{ClassAlias.getDecodableAttributes}161 """162 def setUp(self):163 self.alias = ClassAlias(Spam, 'foo', defer=True)164 self.obj = Spam()165 def test_compile(self):166 self.assertFalse(self.alias._compiled)167 self.alias.applyAttributes(self.obj, {})168 self.assertTrue(self.alias._compiled)169 def test_missing_static_property(self):170 self.alias.static_attrs = ['foo', 'bar']171 self.alias.compile()172 attrs = {'foo': None} # missing bar key ..173 self.assertRaises(AttributeError, self.alias.getDecodableAttributes,174 self.obj, attrs)175 def test_no_static(self):176 self.alias.compile()177 attrs = {'foo': None, 'bar': [1, 2, 3]}178 ret = self.alias.getDecodableAttributes(self.obj, attrs)179 self.assertEqual(ret, {'foo': None, 'bar': [1, 2, 3]})180 def test_readonly(self):181 self.alias.compile()182 self.alias.readonly_attrs = ['bar']183 attrs = {'foo': None, 'bar': [1, 2, 3]}184 ret = self.alias.getDecodableAttributes(self.obj, attrs)185 self.assertEqual(ret, {'foo': None})186 def test_not_dynamic(self):187 self.alias.compile()188 self.alias.decodable_properties = set(['bar'])189 self.alias.dynamic = False190 attrs = {'foo': None, 'bar': [1, 2, 3]}191 ret = self.alias.getDecodableAttributes(self.obj, attrs)192 self.assertEqual(ret, {'bar': [1, 2, 3]})193 def test_dynamic(self):194 self.alias.compile()195 self.alias.static_properties = ['bar']196 self.alias.dynamic = True197 attrs = {'foo': None, 'bar': [1, 2, 3]}198 ret = self.alias.getDecodableAttributes(self.obj, attrs)199 self.assertEqual(ret, {'foo': None, 'bar': [1, 2, 3]})200 def test_complex(self):201 self.alias.compile()202 self.alias.static_properties = ['foo', 'bar']203 self.alias.exclude_attrs = ['baz', 'gak']204 self.alias.readonly_attrs = ['spam', 'eggs']205 attrs = {206 'foo': 'foo',207 'bar': 'bar',208 'baz': 'baz',209 'gak': 'gak',210 'spam': 'spam',211 'eggs': 'eggs',212 'dyn1': 'dyn1',213 'dyn2': 'dyn2'214 }215 ret = self.alias.getDecodableAttributes(self.obj, attrs)216 self.assertEquals(ret, {217 'foo': 'foo',218 'bar': 'bar',219 'dyn2': 'dyn2',220 'dyn1': 'dyn1'221 })222 def test_complex_not_dynamic(self):223 self.alias.compile()224 self.alias.decodable_properties = ['foo', 'bar']225 self.alias.exclude_attrs = ['baz', 'gak']226 self.alias.readonly_attrs = ['spam', 'eggs']227 self.alias.dynamic = False228 attrs = {229 'foo': 'foo',230 'bar': 'bar',231 'baz': 'baz',232 'gak': 'gak',233 'spam': 'spam',234 'eggs': 'eggs',235 'dyn1': 'dyn1',236 'dyn2': 'dyn2'237 }238 ret = self.alias.getDecodableAttributes(self.obj, attrs)239 self.assertEqual(ret, {'foo': 'foo', 'bar': 'bar'})240 def test_static(self):241 self.alias.dynamic = False242 self.alias.compile()243 self.alias.decodable_properties = set(['foo', 'bar'])244 attrs = {245 'foo': 'foo',246 'bar': 'bar',247 'baz': 'baz',248 'gak': 'gak',249 }250 ret = self.alias.getDecodableAttributes(self.obj, attrs)251 self.assertEqual(ret, {'foo': 'foo', 'bar': 'bar'})252 def test_proxy(self):253 from pyamf import flex254 c = pyamf.get_encoder(pyamf.AMF3)255 self.alias.proxy_attrs = ('foo', 'bar')256 self.alias.compile()257 self.assertEqual(self.alias.proxy_attrs, ['bar', 'foo'])258 attrs = {259 'foo': flex.ArrayCollection(['bar', 'baz']),260 'bar': flex.ObjectProxy({'foo': 'gak'})261 }262 ret = self.alias.getDecodableAttributes(self.obj, attrs, c)263 self.assertEqual(ret, {264 'foo': ['bar', 'baz'],265 'bar': {'foo': 'gak'}266 })267 def test_synonym(self):268 self.alias.synonym_attrs = {'foo': 'bar'}269 self.alias.compile()270 self.assertFalse(self.alias.shortcut_encode)271 self.assertFalse(self.alias.shortcut_decode)272 attrs = {273 'foo': 'foo',274 'spam': 'eggs'275 }276 ret = self.alias.getDecodableAttributes(self.obj, attrs)277 self.assertEquals(ret, {'bar': 'foo', 'spam': 'eggs'})278class ApplyAttributesTestCase(unittest.TestCase):279 """280 Tests for L{ClassAlias.applyAttributes}281 """282 def setUp(self):283 self.alias = ClassAlias(Spam, 'foo', defer=True)284 self.obj = Spam()285 def test_object(self):286 class Foo(object):287 pass288 attrs = {'foo': 'spam', 'bar': 'eggs'}289 self.obj = Foo()290 self.alias = ClassAlias(Foo, 'foo', defer=True)291 self.assertEqual(self.obj.__dict__, {})292 self.alias.applyAttributes(self.obj, attrs)293 self.assertEqual(self.obj.__dict__, {'foo': 'spam', 'bar': 'eggs'})294 def test_classic(self):295 class Foo:296 pass297 attrs = {'foo': 'spam', 'bar': 'eggs'}298 self.obj = Foo()299 self.alias = ClassAlias(Foo, 'foo', defer=True)300 self.assertEqual(self.obj.__dict__, {})301 self.alias.applyAttributes(self.obj, attrs)302 self.assertEqual(self.obj.__dict__, {'foo': 'spam', 'bar': 'eggs'})303 def test_readonly(self):304 self.alias.readonly_attrs = ['foo', 'bar']305 attrs = {'foo': 'spam', 'bar': 'eggs'}306 self.assertEqual(self.obj.__dict__, {})307 self.alias.applyAttributes(self.obj, attrs)308 self.assertEqual(self.obj.__dict__, {})309 def test_exclude(self):310 self.alias.exclude_attrs = ['foo', 'bar']311 attrs = {'foo': 'spam', 'bar': 'eggs'}312 self.assertEqual(self.obj.__dict__, {})...
test_auth.py
Source:test_auth.py
1import py2from py.path import SvnAuth3import svntestbase4from threading import Thread5import time6from py.__.misc.killproc import killproc7from py.__.conftest import option8def make_repo_auth(repo, userdata):9 """ write config to repo10 11 user information in userdata is used for auth12 userdata has user names as keys, and a tuple (password, readwrite) as13 values, where 'readwrite' is either 'r' or 'rw'14 """15 confdir = py.path.local(repo).join('conf')16 confdir.join('svnserve.conf').write('''\17[general]18anon-access = none19password-db = passwd20authz-db = authz21realm = TestRepo22''')23 authzdata = '[/]\n'24 passwddata = '[users]\n'25 for user in userdata:26 authzdata += '%s = %s\n' % (user, userdata[user][1])27 passwddata += '%s = %s\n' % (user, userdata[user][0])28 confdir.join('authz').write(authzdata)29 confdir.join('passwd').write(passwddata)30def serve_bg(repopath):31 pidfile = py.path.local(repopath).join('pid')32 port = 1000033 e = None34 while port < 10010:35 cmd = 'svnserve -d -T --listen-port=%d --pid-file=%s -r %s' % (36 port, pidfile, repopath)37 try:38 py.process.cmdexec(cmd)39 except py.process.cmdexec.Error, e:40 pass41 else:42 # XXX we assume here that the pid file gets written somewhere, I43 # guess this should be relatively safe... (I hope, at least?)44 while True:45 pid = pidfile.read()46 if pid:47 break48 # needs a bit more time to boot49 time.sleep(0.1)50 return port, int(pid)51 port += 152 raise IOError('could not start svnserve: %s' % (e,))53class TestSvnAuth(object):54 def test_basic(self):55 auth = py.path.SvnAuth('foo', 'bar')56 assert auth.username == 'foo'57 assert auth.password == 'bar'58 assert str(auth)59 def test_makecmdoptions_uname_pw_makestr(self):60 auth = py.path.SvnAuth('foo', 'bar')61 assert auth.makecmdoptions() == '--username="foo" --password="bar"'62 def test_makecmdoptions_quote_escape(self):63 auth = py.path.SvnAuth('fo"o', '"ba\'r"')64 assert auth.makecmdoptions() == '--username="fo\\"o" --password="\\"ba\'r\\""'65 def test_makecmdoptions_no_cache_auth(self):66 auth = py.path.SvnAuth('foo', 'bar', cache_auth=False)67 assert auth.makecmdoptions() == ('--username="foo" --password="bar" '68 '--no-auth-cache')69 def test_makecmdoptions_no_interactive(self):70 auth = py.path.SvnAuth('foo', 'bar', interactive=False)71 assert auth.makecmdoptions() == ('--username="foo" --password="bar" '72 '--non-interactive')73 def test_makecmdoptions_no_interactive_no_cache_auth(self):74 auth = py.path.SvnAuth('foo', 'bar', cache_auth=False,75 interactive=False)76 assert auth.makecmdoptions() == ('--username="foo" --password="bar" '77 '--no-auth-cache --non-interactive')78class svnwc_no_svn(py.path.svnwc):79 def __init__(self, *args, **kwargs):80 self.commands = []81 super(svnwc_no_svn, self).__init__(*args, **kwargs)82 def _svn(self, *args):83 self.commands.append(args)84class TestSvnWCAuth(object):85 def setup_method(self, meth):86 self.auth = SvnAuth('user', 'pass', cache_auth=False)87 def test_checkout(self):88 wc = svnwc_no_svn('foo', auth=self.auth)89 wc.checkout('url')90 assert wc.commands[0][-1] == ('--username="user" --password="pass" '91 '--no-auth-cache')92 def test_commit(self):93 wc = svnwc_no_svn('foo', auth=self.auth)94 wc.commit('msg')95 assert wc.commands[0][-1] == ('--username="user" --password="pass" '96 '--no-auth-cache')97 def test_checkout_no_cache_auth(self):98 wc = svnwc_no_svn('foo', auth=self.auth)99 wc.checkout('url')100 assert wc.commands[0][-1] == ('--username="user" --password="pass" '101 '--no-auth-cache')102 def test_checkout_auth_from_constructor(self):103 wc = svnwc_no_svn('foo', auth=self.auth)104 wc.checkout('url')105 assert wc.commands[0][-1] == ('--username="user" --password="pass" '106 '--no-auth-cache')107class svnurl_no_svn(py.path.svnurl):108 cmdexec_output = 'test'109 popen_output = 'test'110 def _cmdexec(self, cmd):111 self.commands.append(cmd)112 return self.cmdexec_output113 def _popen(self, cmd):114 self.commands.append(cmd)115 return self.popen_output116class TestSvnURLAuth(object):117 def setup_method(self, meth):118 svnurl_no_svn.commands = []119 self.auth = SvnAuth('foo', 'bar')120 def test_init(self):121 u = svnurl_no_svn('http://foo.bar/svn')122 assert u.auth is None123 u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)124 assert u.auth is self.auth125 def test_new(self):126 u = svnurl_no_svn('http://foo.bar/svn/foo', auth=self.auth)127 new = u.new(basename='bar')128 assert new.auth is self.auth129 assert new.url == 'http://foo.bar/svn/bar'130 def test_join(self):131 u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)132 new = u.join('foo')133 assert new.auth is self.auth134 assert new.url == 'http://foo.bar/svn/foo'135 def test_listdir(self):136 u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)137 u.cmdexec_output = '''\138 1717 johnny 1529 Nov 04 14:32 LICENSE.txt139 1716 johnny 5352 Nov 04 14:28 README.txt140'''141 paths = u.listdir()142 assert paths[0].auth is self.auth143 assert paths[1].auth is self.auth144 assert paths[0].basename == 'LICENSE.txt'145 def test_info(self):146 u = svnurl_no_svn('http://foo.bar/svn/LICENSE.txt', auth=self.auth)147 def dirpath(self):148 return self149 u.cmdexec_output = '''\150 1717 johnny 1529 Nov 04 14:32 LICENSE.txt151 1716 johnny 5352 Nov 04 14:28 README.txt152'''153 org_dp = u.__class__.dirpath154 u.__class__.dirpath = dirpath155 try:156 info = u.info()157 finally:158 u.dirpath = org_dp159 assert info.size == 1529160 def test_open(self):161 u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)162 foo = u.join('foo')163 foo.check = lambda *args, **kwargs: True164 ret = foo.open()165 assert ret == 'test'166 assert '--username="foo" --password="bar"' in foo.commands[0]167 def test_dirpath(self):168 u = svnurl_no_svn('http://foo.bar/svn/foo', auth=self.auth)169 parent = u.dirpath()170 assert parent.auth is self.auth171 def test_mkdir(self):172 u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)173 u.mkdir('foo', msg='created dir foo')174 assert '--username="foo" --password="bar"' in u.commands[0]175 def test_copy(self):176 u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)177 u2 = svnurl_no_svn('http://foo.bar/svn2')178 u.copy(u2, 'copied dir')179 assert '--username="foo" --password="bar"' in u.commands[0]180 def test_rename(self):181 u = svnurl_no_svn('http://foo.bar/svn/foo', auth=self.auth)182 u.rename('http://foo.bar/svn/bar', 'moved foo to bar')183 assert '--username="foo" --password="bar"' in u.commands[0]184 def test_remove(self):185 u = svnurl_no_svn('http://foo.bar/svn/foo', auth=self.auth)186 u.remove(msg='removing foo')187 assert '--username="foo" --password="bar"' in u.commands[0]188 def test_export(self):189 u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)190 target = py.path.local('/foo')191 u.export(target)192 assert '--username="foo" --password="bar"' in u.commands[0]193 def test_log(self):194 u = svnurl_no_svn('http://foo.bar/svn/foo', auth=self.auth)195 u.popen_output = py.std.StringIO.StringIO('''\196<?xml version="1.0"?>197<log>198<logentry revision="51381">199<author>guido</author>200<date>2008-02-11T12:12:18.476481Z</date>201<msg>Creating branch to work on auth support for py.path.svn*.202</msg>203</logentry>204</log>205''')206 u.check = lambda *args, **kwargs: True207 ret = u.log(10, 20, verbose=True)208 assert '--username="foo" --password="bar"' in u.commands[0]209 assert len(ret) == 1210 assert int(ret[0].rev) == 51381211 assert ret[0].author == 'guido'212 def test_propget(self):213 u = svnurl_no_svn('http://foo.bar/svn', auth=self.auth)214 u.propget('foo')215 assert '--username="foo" --password="bar"' in u.commands[0]216class SvnAuthFunctionalTestBase(object):217 def setup_class(cls):218 if not option.runslowtests:219 py.test.skip('skipping slow functional tests - use --runslowtests '220 'to override')221 def setup_method(self, meth):222 func_name = meth.im_func.func_name223 self.repo = svntestbase.make_test_repo('TestSvnAuthFunctional.%s' % (224 func_name,))225 repodir = str(self.repo)[7:]226 if py.std.sys.platform == 'win32':227 # remove trailing slash...228 repodir = repodir[1:]229 self.repopath = py.path.local(repodir)230 self.temppath = py.test.ensuretemp('TestSvnAuthFunctional.%s' % (231 func_name))232 self.auth = py.path.SvnAuth('johnny', 'foo', cache_auth=False,233 interactive=False)234 def _start_svnserve(self):235 make_repo_auth(self.repopath, {'johnny': ('foo', 'rw')})236 try:237 return serve_bg(self.repopath.dirpath())238 except IOError, e:239 py.test.skip(str(e))240class TestSvnWCAuthFunctional(SvnAuthFunctionalTestBase):241 def test_checkout_constructor_arg(self):242 port, pid = self._start_svnserve()243 try:244 wc = py.path.svnwc(self.temppath, auth=self.auth)245 wc.checkout(246 'svn://localhost:%s/%s' % (port, self.repopath.basename))247 assert wc.join('.svn').check()248 finally:249 # XXX can we do this in a teardown_method too? not sure if that's250 # guaranteed to get called...251 killproc(pid)252 def test_checkout_function_arg(self):253 port, pid = self._start_svnserve()254 try:255 wc = py.path.svnwc(self.temppath, auth=self.auth)256 wc.checkout(257 'svn://localhost:%s/%s' % (port, self.repopath.basename))258 assert wc.join('.svn').check()259 finally:260 killproc(pid)261 def test_checkout_failing_non_interactive(self):262 port, pid = self._start_svnserve()263 try:264 auth = py.path.SvnAuth('johnny', 'bar', cache_auth=False,265 interactive=False)266 wc = py.path.svnwc(self.temppath, auth)267 py.test.raises(Exception,268 ("wc.checkout('svn://localhost:%s/%s' % "269 "(port, self.repopath.basename))"))270 finally:271 killproc(pid)272 def test_log(self):273 port, pid = self._start_svnserve()274 try:275 wc = py.path.svnwc(self.temppath, self.auth)276 wc.checkout(277 'svn://localhost:%s/%s' % (port, self.repopath.basename))278 foo = wc.ensure('foo.txt')279 wc.commit('added foo.txt')280 log = foo.log()281 assert len(log) == 1282 assert log[0].msg == 'added foo.txt'283 finally:284 killproc(pid)285 def test_switch(self):286 port, pid = self._start_svnserve()287 try:288 wc = py.path.svnwc(self.temppath, auth=self.auth)289 svnurl = 'svn://localhost:%s/%s' % (port, self.repopath.basename)290 wc.checkout(svnurl)291 wc.ensure('foo', dir=True).ensure('foo.txt').write('foo')292 wc.commit('added foo dir with foo.txt file')293 wc.ensure('bar', dir=True)294 wc.commit('added bar dir')295 bar = wc.join('bar')296 bar.switch(svnurl + '/foo')297 assert bar.join('foo.txt')298 finally:299 killproc(pid)300 def test_update(self):301 port, pid = self._start_svnserve()302 try:303 wc1 = py.path.svnwc(self.temppath.ensure('wc1', dir=True),304 auth=self.auth)305 wc2 = py.path.svnwc(self.temppath.ensure('wc2', dir=True),306 auth=self.auth)307 wc1.checkout(308 'svn://localhost:%s/%s' % (port, self.repopath.basename))309 wc2.checkout(310 'svn://localhost:%s/%s' % (port, self.repopath.basename))311 wc1.ensure('foo', dir=True)312 wc1.commit('added foo dir')313 wc2.update()314 assert wc2.join('foo').check()315 auth = py.path.SvnAuth('unknown', 'unknown', interactive=False)316 wc2.auth = auth317 py.test.raises(Exception, 'wc2.update()')318 finally:319 killproc(pid)320 def test_lock_unlock_status(self):321 port, pid = self._start_svnserve()322 try:323 wc = py.path.svnwc(self.temppath, auth=self.auth)324 wc.checkout(325 'svn://localhost:%s/%s' % (port, self.repopath.basename,))326 wc.ensure('foo', file=True)327 wc.commit('added foo file')328 foo = wc.join('foo')329 foo.lock()330 status = foo.status()331 assert status.locked332 foo.unlock()333 status = foo.status()334 assert not status.locked335 auth = py.path.SvnAuth('unknown', 'unknown', interactive=False)336 foo.auth = auth337 py.test.raises(Exception, 'foo.lock()')338 py.test.raises(Exception, 'foo.unlock()')339 finally:340 killproc(pid)341 def test_diff(self):342 port, pid = self._start_svnserve()343 try:344 wc = py.path.svnwc(self.temppath, auth=self.auth)345 wc.checkout(346 'svn://localhost:%s/%s' % (port, self.repopath.basename,))347 wc.ensure('foo', file=True)348 wc.commit('added foo file')349 wc.update()350 rev = int(wc.status().rev)351 foo = wc.join('foo')352 foo.write('bar')353 diff = foo.diff()354 assert '\n+bar\n' in diff355 foo.commit('added some content')356 diff = foo.diff()357 assert not diff358 diff = foo.diff(rev=rev)359 assert '\n+bar\n' in diff360 auth = py.path.SvnAuth('unknown', 'unknown', interactive=False)361 foo.auth = auth362 py.test.raises(Exception, 'foo.diff(rev=rev)')363 finally:364 killproc(pid)365class TestSvnURLAuthFunctional(SvnAuthFunctionalTestBase):366 def test_listdir(self):367 port, pid = self._start_svnserve()368 try:369 u = py.path.svnurl(370 'svn://localhost:%s/%s' % (port, self.repopath.basename),371 auth=self.auth)372 u.ensure('foo')373 paths = u.listdir()374 assert len(paths) == 1375 assert paths[0].auth is self.auth376 auth = SvnAuth('foo', 'bar', interactive=False)377 u = py.path.svnurl(378 'svn://localhost:%s/%s' % (port, self.repopath.basename),379 auth=auth)380 py.test.raises(Exception, 'u.listdir()')381 finally:382 killproc(pid)383 def test_copy(self):384 port, pid = self._start_svnserve()385 try:386 u = py.path.svnurl(387 'svn://localhost:%s/%s' % (port, self.repopath.basename),388 auth=self.auth)389 foo = u.ensure('foo')390 bar = u.join('bar')391 foo.copy(bar)392 assert bar.check()393 assert bar.auth is self.auth394 auth = SvnAuth('foo', 'bar', interactive=False)395 u = py.path.svnurl(396 'svn://localhost:%s/%s' % (port, self.repopath.basename),397 auth=auth)398 foo = u.join('foo')399 bar = u.join('bar')400 py.test.raises(Exception, 'foo.copy(bar)')401 finally:402 killproc(pid)403 def test_write_read(self):404 port, pid = self._start_svnserve()405 try:406 u = py.path.svnurl(407 'svn://localhost:%s/%s' % (port, self.repopath.basename),408 auth=self.auth)409 foo = u.ensure('foo')410 fp = foo.open()411 try:412 data = fp.read()413 finally:414 fp.close()415 assert data == ''416 auth = SvnAuth('foo', 'bar', interactive=False)417 u = py.path.svnurl(418 'svn://localhost:%s/%s' % (port, self.repopath.basename),419 auth=auth)420 foo = u.join('foo')421 py.test.raises(Exception, 'foo.open()')422 finally:423 killproc(pid)...
lint-format-strings.py
Source:lint-format-strings.py
1#!/usr/bin/env python32#3# Copyright (c) 2018-2019 The Bitcoin Core developers4# Distributed under the MIT software license, see the accompanying5# file COPYING or http://www.opensource.org/licenses/mit-license.php.6#7# Lint format strings: This program checks that the number of arguments passed8# to a variadic format string function matches the number of format specifiers9# in the format string.10import argparse11import re12import sys13FALSE_POSITIVES = [14 ("src/dbwrapper.cpp", "vsnprintf(p, limit - p, format, backup_ap)"),15 ("src/index/base.cpp", "FatalError(const char* fmt, const Args&... args)"),16 ("src/netbase.cpp", "LogConnectFailure(bool manual_connection, const char* fmt, const Args&... args)"),17 ("src/util/system.cpp", "strprintf(_(COPYRIGHT_HOLDERS).translated, COPYRIGHT_HOLDERS_SUBSTITUTION)"),18 ("src/validationinterface.cpp", "LogPrint(BCLog::VALIDATION, fmt \"\\n\", __VA_ARGS__)"),19 ("src/wallet/wallet.h", "WalletLogPrintf(std::string fmt, Params... parameters)"),20 ("src/wallet/wallet.h", "LogPrintf((\"%s \" + fmt).c_str(), GetDisplayName(), parameters...)"),21 ("src/wallet/scriptpubkeyman.h", "WalletLogPrintf(std::string fmt, Params... parameters)"),22 ("src/wallet/scriptpubkeyman.h", "LogPrintf((\"%s \" + fmt).c_str(), m_storage.GetDisplayName(), parameters...)"),23 ("src/logging.h", "LogPrintf(const char* fmt, const Args&... args)"),24 ("src/wallet/scriptpubkeyman.h", "WalletLogPrintf(const std::string& fmt, const Params&... parameters)"),25]26def parse_function_calls(function_name, source_code):27 """Return an array with all calls to function function_name in string source_code.28 Preprocessor directives and C++ style comments ("//") in source_code are removed.29 >>> len(parse_function_calls("foo", "foo();bar();foo();bar();"))30 231 >>> parse_function_calls("foo", "foo(1);bar(1);foo(2);bar(2);")[0].startswith("foo(1);")32 True33 >>> parse_function_calls("foo", "foo(1);bar(1);foo(2);bar(2);")[1].startswith("foo(2);")34 True35 >>> len(parse_function_calls("foo", "foo();bar();// foo();bar();"))36 137 >>> len(parse_function_calls("foo", "#define FOO foo();"))38 039 """40 assert type(function_name) is str and type(source_code) is str and function_name41 lines = [re.sub("// .*", " ", line).strip()42 for line in source_code.split("\n")43 if not line.strip().startswith("#")]44 return re.findall(r"[^a-zA-Z_](?=({}\(.*).*)".format(function_name), " " + " ".join(lines))45def normalize(s):46 """Return a normalized version of string s with newlines, tabs and C style comments ("/* ... */")47 replaced with spaces. Multiple spaces are replaced with a single space.48 >>> normalize(" /* nothing */ foo\tfoo /* bar */ foo ")49 'foo foo foo'50 """51 assert type(s) is str52 s = s.replace("\n", " ")53 s = s.replace("\t", " ")54 s = re.sub(r"/\*.*?\*/", " ", s)55 s = re.sub(" {2,}", " ", s)56 return s.strip()57ESCAPE_MAP = {58 r"\n": "[escaped-newline]",59 r"\t": "[escaped-tab]",60 r'\"': "[escaped-quote]",61}62def escape(s):63 """Return the escaped version of string s with "\\\"", "\\n" and "\\t" escaped as64 "[escaped-backslash]", "[escaped-newline]" and "[escaped-tab]".65 >>> unescape(escape("foo")) == "foo"66 True67 >>> escape(r'foo \\t foo \\n foo \\\\ foo \\ foo \\"bar\\"')68 'foo [escaped-tab] foo [escaped-newline] foo \\\\\\\\ foo \\\\ foo [escaped-quote]bar[escaped-quote]'69 """70 assert type(s) is str71 for raw_value, escaped_value in ESCAPE_MAP.items():72 s = s.replace(raw_value, escaped_value)73 return s74def unescape(s):75 """Return the unescaped version of escaped string s.76 Reverses the replacements made in function escape(s).77 >>> unescape(escape("bar"))78 'bar'79 >>> unescape("foo [escaped-tab] foo [escaped-newline] foo \\\\\\\\ foo \\\\ foo [escaped-quote]bar[escaped-quote]")80 'foo \\\\t foo \\\\n foo \\\\\\\\ foo \\\\ foo \\\\"bar\\\\"'81 """82 assert type(s) is str83 for raw_value, escaped_value in ESCAPE_MAP.items():84 s = s.replace(escaped_value, raw_value)85 return s86def parse_function_call_and_arguments(function_name, function_call):87 """Split string function_call into an array of strings consisting of:88 * the string function_call followed by "("89 * the function call argument #190 * ...91 * the function call argument #n92 * a trailing ");"93 The strings returned are in escaped form. See escape(...).94 >>> parse_function_call_and_arguments("foo", 'foo("%s", "foo");')95 ['foo(', '"%s",', ' "foo"', ')']96 >>> parse_function_call_and_arguments("foo", 'foo("%s", "foo");')97 ['foo(', '"%s",', ' "foo"', ')']98 >>> parse_function_call_and_arguments("foo", 'foo("%s %s", "foo", "bar");')99 ['foo(', '"%s %s",', ' "foo",', ' "bar"', ')']100 >>> parse_function_call_and_arguments("fooprintf", 'fooprintf("%050d", i);')101 ['fooprintf(', '"%050d",', ' i', ')']102 >>> parse_function_call_and_arguments("foo", 'foo(bar(foobar(barfoo("foo"))), foobar); barfoo')103 ['foo(', 'bar(foobar(barfoo("foo"))),', ' foobar', ')']104 >>> parse_function_call_and_arguments("foo", "foo()")105 ['foo(', '', ')']106 >>> parse_function_call_and_arguments("foo", "foo(123)")107 ['foo(', '123', ')']108 >>> parse_function_call_and_arguments("foo", 'foo("foo")')109 ['foo(', '"foo"', ')']110 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>,wchar_t>().to_bytes(buf), err);')111 ['strprintf(', '"%s (%d)",', ' std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>,wchar_t>().to_bytes(buf),', ' err', ')']112 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo<wchar_t>().to_bytes(buf), err);')113 ['strprintf(', '"%s (%d)",', ' foo<wchar_t>().to_bytes(buf),', ' err', ')']114 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo().to_bytes(buf), err);')115 ['strprintf(', '"%s (%d)",', ' foo().to_bytes(buf),', ' err', ')']116 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo << 1, err);')117 ['strprintf(', '"%s (%d)",', ' foo << 1,', ' err', ')']118 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo<bar>() >> 1, err);')119 ['strprintf(', '"%s (%d)",', ' foo<bar>() >> 1,', ' err', ')']120 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo < 1 ? bar : foobar, err);')121 ['strprintf(', '"%s (%d)",', ' foo < 1 ? bar : foobar,', ' err', ')']122 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo < 1, err);')123 ['strprintf(', '"%s (%d)",', ' foo < 1,', ' err', ')']124 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo > 1 ? bar : foobar, err);')125 ['strprintf(', '"%s (%d)",', ' foo > 1 ? bar : foobar,', ' err', ')']126 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo > 1, err);')127 ['strprintf(', '"%s (%d)",', ' foo > 1,', ' err', ')']128 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo <= 1, err);')129 ['strprintf(', '"%s (%d)",', ' foo <= 1,', ' err', ')']130 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo <= bar<1, 2>(1, 2), err);')131 ['strprintf(', '"%s (%d)",', ' foo <= bar<1, 2>(1, 2),', ' err', ')']132 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo>foo<1,2>(1,2)?bar:foobar,err)');133 ['strprintf(', '"%s (%d)",', ' foo>foo<1,2>(1,2)?bar:foobar,', 'err', ')']134 >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo>foo<1,2>(1,2),err)');135 ['strprintf(', '"%s (%d)",', ' foo>foo<1,2>(1,2),', 'err', ')']136 """137 assert type(function_name) is str and type(function_call) is str and function_name138 remaining = normalize(escape(function_call))139 expected_function_call = "{}(".format(function_name)140 assert remaining.startswith(expected_function_call)141 parts = [expected_function_call]142 remaining = remaining[len(expected_function_call):]143 open_parentheses = 1144 open_template_arguments = 0145 in_string = False146 parts.append("")147 for i, char in enumerate(remaining):148 parts.append(parts.pop() + char)149 if char == "\"":150 in_string = not in_string151 continue152 if in_string:153 continue154 if char == "(":155 open_parentheses += 1156 continue157 if char == ")":158 open_parentheses -= 1159 if open_parentheses > 1:160 continue161 if open_parentheses == 0:162 parts.append(parts.pop()[:-1])163 parts.append(char)164 break165 prev_char = remaining[i - 1] if i - 1 >= 0 else None166 next_char = remaining[i + 1] if i + 1 <= len(remaining) - 1 else None167 if char == "<" and next_char not in [" ", "<", "="] and prev_char not in [" ", "<"]:168 open_template_arguments += 1169 continue170 if char == ">" and next_char not in [" ", ">", "="] and prev_char not in [" ", ">"] and open_template_arguments > 0:171 open_template_arguments -= 1172 if open_template_arguments > 0:173 continue174 if char == ",":175 parts.append("")176 return parts177def parse_string_content(argument):178 """Return the text within quotes in string argument.179 >>> parse_string_content('1 "foo %d bar" 2')180 'foo %d bar'181 >>> parse_string_content('1 foobar 2')182 ''183 >>> parse_string_content('1 "bar" 2')184 'bar'185 >>> parse_string_content('1 "foo" 2 "bar" 3')186 'foobar'187 >>> parse_string_content('1 "foo" 2 " " "bar" 3')188 'foo bar'189 >>> parse_string_content('""')190 ''191 >>> parse_string_content('')192 ''193 >>> parse_string_content('1 2 3')194 ''195 """196 assert type(argument) is str197 string_content = ""198 in_string = False199 for char in normalize(escape(argument)):200 if char == "\"":201 in_string = not in_string202 elif in_string:203 string_content += char204 return string_content205def count_format_specifiers(format_string):206 """Return the number of format specifiers in string format_string.207 >>> count_format_specifiers("foo bar foo")208 0209 >>> count_format_specifiers("foo %d bar foo")210 1211 >>> count_format_specifiers("foo %d bar %i foo")212 2213 >>> count_format_specifiers("foo %d bar %i foo %% foo")214 2215 >>> count_format_specifiers("foo %d bar %i foo %% foo %d foo")216 3217 >>> count_format_specifiers("foo %d bar %i foo %% foo %*d foo")218 4219 """220 assert type(format_string) is str221 format_string = format_string.replace('%%', 'X')222 n = 0223 in_specifier = False224 for i, char in enumerate(format_string):225 if char == "%":226 in_specifier = True227 n += 1228 elif char in "aAcdeEfFgGinopsuxX":229 in_specifier = False230 elif in_specifier and char == "*":231 n += 1232 return n233def main():234 parser = argparse.ArgumentParser(description="This program checks that the number of arguments passed "235 "to a variadic format string function matches the number of format "236 "specifiers in the format string.")237 parser.add_argument("--skip-arguments", type=int, help="number of arguments before the format string "238 "argument (e.g. 1 in the case of fprintf)", default=0)239 parser.add_argument("function_name", help="function name (e.g. fprintf)", default=None)240 parser.add_argument("file", nargs="*", help="C++ source code file (e.g. foo.cpp)")241 args = parser.parse_args()242 exit_code = 0243 for filename in args.file:244 with open(filename, "r", encoding="utf-8") as f:245 for function_call_str in parse_function_calls(args.function_name, f.read()):246 parts = parse_function_call_and_arguments(args.function_name, function_call_str)247 relevant_function_call_str = unescape("".join(parts))[:512]248 if (f.name, relevant_function_call_str) in FALSE_POSITIVES:249 continue250 if len(parts) < 3 + args.skip_arguments:251 exit_code = 1252 print("{}: Could not parse function call string \"{}(...)\": {}".format(f.name, args.function_name, relevant_function_call_str))253 continue254 argument_count = len(parts) - 3 - args.skip_arguments255 format_str = parse_string_content(parts[1 + args.skip_arguments])256 format_specifier_count = count_format_specifiers(format_str)257 if format_specifier_count != argument_count:258 exit_code = 1259 print("{}: Expected {} argument(s) after format string but found {} argument(s): {}".format(f.name, format_specifier_count, argument_count, relevant_function_call_str))260 continue261 sys.exit(exit_code)262if __name__ == "__main__":...
test_shlex.py
Source:test_shlex.py
1# -*- coding: iso-8859-1 -*-2import unittest3import shlex4from test import test_support5try:6 from cStringIO import StringIO7except ImportError:8 from StringIO import StringIO9# The original test data set was from shellwords, by Hartmut Goebel.10data = r"""x|x|11foo bar|foo|bar|12 foo bar|foo|bar|13 foo bar |foo|bar|14foo bar bla fasel|foo|bar|bla|fasel|15x y z xxxx|x|y|z|xxxx|16\x bar|\|x|bar|17\ x bar|\|x|bar|18\ bar|\|bar|19foo \x bar|foo|\|x|bar|20foo \ x bar|foo|\|x|bar|21foo \ bar|foo|\|bar|22foo "bar" bla|foo|"bar"|bla|23"foo" "bar" "bla"|"foo"|"bar"|"bla"|24"foo" bar "bla"|"foo"|bar|"bla"|25"foo" bar bla|"foo"|bar|bla|26foo 'bar' bla|foo|'bar'|bla|27'foo' 'bar' 'bla'|'foo'|'bar'|'bla'|28'foo' bar 'bla'|'foo'|bar|'bla'|29'foo' bar bla|'foo'|bar|bla|30blurb foo"bar"bar"fasel" baz|blurb|foo"bar"bar"fasel"|baz|31blurb foo'bar'bar'fasel' baz|blurb|foo'bar'bar'fasel'|baz|32""|""|33''|''|34foo "" bar|foo|""|bar|35foo '' bar|foo|''|bar|36foo "" "" "" bar|foo|""|""|""|bar|37foo '' '' '' bar|foo|''|''|''|bar|38\""|\|""|39"\"|"\"|40"foo\ bar"|"foo\ bar"|41"foo\\ bar"|"foo\\ bar"|42"foo\\ bar\"|"foo\\ bar\"|43"foo\\" bar\""|"foo\\"|bar|\|""|44"foo\\ bar\" dfadf"|"foo\\ bar\"|dfadf"|45"foo\\\ bar\" dfadf"|"foo\\\ bar\"|dfadf"|46"foo\\\x bar\" dfadf"|"foo\\\x bar\"|dfadf"|47"foo\x bar\" dfadf"|"foo\x bar\"|dfadf"|48\''|\|''|49'foo\ bar'|'foo\ bar'|50'foo\\ bar'|'foo\\ bar'|51"foo\\\x bar\" df'a\ 'df'|"foo\\\x bar\"|df'a|\|'df'|52\"foo"|\|"foo"|53\"foo"\x|\|"foo"|\|x|54"foo\x"|"foo\x"|55"foo\ "|"foo\ "|56foo\ xx|foo|\|xx|57foo\ x\x|foo|\|x|\|x|58foo\ x\x\""|foo|\|x|\|x|\|""|59"foo\ x\x"|"foo\ x\x"|60"foo\ x\x\\"|"foo\ x\x\\"|61"foo\ x\x\\""foobar"|"foo\ x\x\\"|"foobar"|62"foo\ x\x\\"\''"foobar"|"foo\ x\x\\"|\|''|"foobar"|63"foo\ x\x\\"\'"fo'obar"|"foo\ x\x\\"|\|'"fo'|obar"|64"foo\ x\x\\"\'"fo'obar" 'don'\''t'|"foo\ x\x\\"|\|'"fo'|obar"|'don'|\|''|t'|65'foo\ bar'|'foo\ bar'|66'foo\\ bar'|'foo\\ bar'|67foo\ bar|foo|\|bar|68foo#bar\nbaz|foobaz|69:-) ;-)|:|-|)|;|-|)|70áéíóú|á|é|í|ó|ú|71"""72posix_data = r"""x|x|73foo bar|foo|bar|74 foo bar|foo|bar|75 foo bar |foo|bar|76foo bar bla fasel|foo|bar|bla|fasel|77x y z xxxx|x|y|z|xxxx|78\x bar|x|bar|79\ x bar| x|bar|80\ bar| bar|81foo \x bar|foo|x|bar|82foo \ x bar|foo| x|bar|83foo \ bar|foo| bar|84foo "bar" bla|foo|bar|bla|85"foo" "bar" "bla"|foo|bar|bla|86"foo" bar "bla"|foo|bar|bla|87"foo" bar bla|foo|bar|bla|88foo 'bar' bla|foo|bar|bla|89'foo' 'bar' 'bla'|foo|bar|bla|90'foo' bar 'bla'|foo|bar|bla|91'foo' bar bla|foo|bar|bla|92blurb foo"bar"bar"fasel" baz|blurb|foobarbarfasel|baz|93blurb foo'bar'bar'fasel' baz|blurb|foobarbarfasel|baz|94""||95''||96foo "" bar|foo||bar|97foo '' bar|foo||bar|98foo "" "" "" bar|foo||||bar|99foo '' '' '' bar|foo||||bar|100\"|"|101"\""|"|102"foo\ bar"|foo\ bar|103"foo\\ bar"|foo\ bar|104"foo\\ bar\""|foo\ bar"|105"foo\\" bar\"|foo\|bar"|106"foo\\ bar\" dfadf"|foo\ bar" dfadf|107"foo\\\ bar\" dfadf"|foo\\ bar" dfadf|108"foo\\\x bar\" dfadf"|foo\\x bar" dfadf|109"foo\x bar\" dfadf"|foo\x bar" dfadf|110\'|'|111'foo\ bar'|foo\ bar|112'foo\\ bar'|foo\\ bar|113"foo\\\x bar\" df'a\ 'df"|foo\\x bar" df'a\ 'df|114\"foo|"foo|115\"foo\x|"foox|116"foo\x"|foo\x|117"foo\ "|foo\ |118foo\ xx|foo xx|119foo\ x\x|foo xx|120foo\ x\x\"|foo xx"|121"foo\ x\x"|foo\ x\x|122"foo\ x\x\\"|foo\ x\x\|123"foo\ x\x\\""foobar"|foo\ x\x\foobar|124"foo\ x\x\\"\'"foobar"|foo\ x\x\'foobar|125"foo\ x\x\\"\'"fo'obar"|foo\ x\x\'fo'obar|126"foo\ x\x\\"\'"fo'obar" 'don'\''t'|foo\ x\x\'fo'obar|don't|127"foo\ x\x\\"\'"fo'obar" 'don'\''t' \\|foo\ x\x\'fo'obar|don't|\|128'foo\ bar'|foo\ bar|129'foo\\ bar'|foo\\ bar|130foo\ bar|foo bar|131foo#bar\nbaz|foo|baz|132:-) ;-)|:-)|;-)|133áéíóú|áéíóú|134"""135class ShlexTest(unittest.TestCase):136 def setUp(self):137 self.data = [x.split("|")[:-1]138 for x in data.splitlines()]139 self.posix_data = [x.split("|")[:-1]140 for x in posix_data.splitlines()]141 for item in self.data:142 item[0] = item[0].replace(r"\n", "\n")143 for item in self.posix_data:144 item[0] = item[0].replace(r"\n", "\n")145 def splitTest(self, data, comments):146 for i in range(len(data)):147 l = shlex.split(data[i][0], comments=comments)148 self.assertEqual(l, data[i][1:],149 "%s: %s != %s" %150 (data[i][0], l, data[i][1:]))151 def oldSplit(self, s):152 ret = []153 lex = shlex.shlex(StringIO(s))154 tok = lex.get_token()155 while tok:156 ret.append(tok)157 tok = lex.get_token()158 return ret159 def testSplitPosix(self):160 """Test data splitting with posix parser"""161 self.splitTest(self.posix_data, comments=True)162 def testCompat(self):163 """Test compatibility interface"""164 for i in range(len(self.data)):165 l = self.oldSplit(self.data[i][0])166 self.assertEqual(l, self.data[i][1:],167 "%s: %s != %s" %168 (self.data[i][0], l, self.data[i][1:]))169# Allow this test to be used with old shlex.py170if not getattr(shlex, "split", None):171 for methname in dir(ShlexTest):172 if methname.startswith("test") and methname != "testCompat":173 delattr(ShlexTest, methname)174def test_main():175 test_support.run_unittest(ShlexTest)176if __name__ == "__main__":...
test_virtual_fs.py
Source:test_virtual_fs.py
1from unittest.mock import patch2from zulip_bots.bots.virtual_fs.virtual_fs import sample_conversation3from zulip_bots.test_lib import BotTestCase, DefaultTests4class TestVirtualFsBot(BotTestCase, DefaultTests):5 bot_name = "virtual_fs"6 help_txt = (7 "foo@example.com:\n\nThis bot implements a virtual file system for a stream.\n"8 "The locations of text are persisted for the lifetime of the bot\n"9 "running, and if you rename a stream, you will lose the info.\n"10 "Example commands:\n\n```\n"11 "@mention-bot sample_conversation: sample conversation with the bot\n"12 "@mention-bot mkdir: create a directory\n"13 "@mention-bot ls: list a directory\n"14 "@mention-bot cd: change directory\n"15 "@mention-bot pwd: show current path\n"16 "@mention-bot write: write text\n"17 "@mention-bot read: read text\n"18 "@mention-bot rm: remove a file\n"19 "@mention-bot rmdir: remove a directory\n"20 "```\n"21 "Use commands like `@mention-bot help write` for more details on specific\ncommands.\n"22 )23 def test_multiple_recipient_conversation(self) -> None:24 expected = [25 ("mkdir home", "foo@example.com:\ndirectory created"),26 ]27 message = dict(28 display_recipient=[{"email": "foo@example.com"}, {"email": "boo@example.com"}],29 sender_email="foo@example.com",30 sender_full_name="Foo Test User",31 sender_id="123",32 content="mkdir home",33 )34 with patch("zulip_bots.test_lib.BotTestCase.make_request_message", return_value=message):35 self.verify_dialog(expected)36 def test_sample_conversation_help(self) -> None:37 # There's nothing terribly tricky about the "sample conversation,"38 # so we just do a quick sanity check.39 reply = self.get_reply_dict("sample_conversation")40 content = reply["content"]41 frag = "foo@example.com:\ncd /\nCurrent path: /\n\n"42 self.assertTrue(content.startswith(frag))43 frag = "read home/stuff/file1\nERROR: file does not exist\n\n"44 self.assertIn(frag, content)45 def test_sample_conversation(self) -> None:46 # The function sample_conversation is actually part of the47 # bot's implementation, because we render a sample conversation48 # for the user's benefit if they ask. But then we can also49 # use it to test that the bot works as advertised.50 expected = [51 (request, "foo@example.com:\n" + reply) for (request, reply) in sample_conversation()52 ]53 self.verify_dialog(expected)54 def test_commands_1(self) -> None:55 expected = [56 ("cd /home", "foo@example.com:\nERROR: invalid path"),57 ("mkdir home", "foo@example.com:\ndirectory created"),58 ("pwd", "foo@example.com:\n/"),59 ("help", self.help_txt),60 ("help ls", "foo@example.com:\nsyntax: ls <optional_path>"),61 ("", self.help_txt),62 ]63 self.verify_dialog(expected)64 def test_commands_2(self) -> None:65 expected = [66 ("help", self.help_txt),67 ("help ls", "foo@example.com:\nsyntax: ls <optional_path>"),68 ("help invalid", self.help_txt),69 ("", self.help_txt),70 ("write test hello world", "foo@example.com:\nfile written"),71 ("rmdir test", "foo@example.com:\nERROR: /*test* is a file, directory required"),72 ("cd test", "foo@example.com:\nERROR: /*test* is a file, directory required"),73 ("mkdir /foo/boo", "foo@example.com:\nERROR: /foo is not a directory"),74 ("pwd", "foo@example.com:\n/"),75 ("cd /home", "foo@example.com:\nERROR: invalid path"),76 ("mkdir etc", "foo@example.com:\ndirectory created"),77 ("mkdir home", "foo@example.com:\ndirectory created"),78 ("cd /home", "foo@example.com:\nCurrent path: /home/"),79 ("write test hello world", "foo@example.com:\nfile written"),80 ("rm test", "foo@example.com:\nremoved"),81 ("mkdir steve", "foo@example.com:\ndirectory created"),82 ("rmdir /home", "foo@example.com:\nremoved"),83 ("pwd", "foo@example.com:\nERROR: the current directory does not exist"),84 ("ls", "foo@example.com:\nERROR: file does not exist"),85 ("ls foo/", "foo@example.com:\nERROR: foo/ is not a valid name"),86 ("rm foo/", "foo@example.com:\nERROR: foo/ is not a valid name"),87 ("rmdir foo/", "foo@example.com:\nERROR: foo/ is not a valid name"),88 ("write foo/ a", "foo@example.com:\nERROR: foo/ is not a valid name"),89 ("read foo/", "foo@example.com:\nERROR: foo/ is not a valid name"),90 ("rmdir /foo", "foo@example.com:\nERROR: directory does not exist"),91 ]...
gc_test.py
Source:gc_test.py
1# Copyright 2016 The TensorFlow Authors. All Rights Reserved.2#3# Licensed under the Apache License, Version 2.0 (the "License");4# you may not use this file except in compliance with the License.5# You may obtain a copy of the License at6#7# http://www.apache.org/licenses/LICENSE-2.08#9# Unless required by applicable law or agreed to in writing, software10# distributed under the License is distributed on an "AS IS" BASIS,11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.12# See the License for the specific language governing permissions and13# limitations under the License.14# ==============================================================================15"""Tests for session_bundle.gc."""16from __future__ import absolute_import17from __future__ import division18from __future__ import print_function19import os20import re21from six.moves import xrange # pylint: disable=redefined-builtin22import tensorflow as tf23from tensorflow.contrib.session_bundle import gc24from tensorflow.python.framework import test_util25from tensorflow.python.platform import gfile26def tearDownModule():27 gfile.DeleteRecursively(tf.test.get_temp_dir())28class GcTest(test_util.TensorFlowTestCase):29 def testLargestExportVersions(self):30 paths = [gc.Path("/foo", 8), gc.Path("/foo", 9), gc.Path("/foo", 10)]31 newest = gc.largest_export_versions(2)32 n = newest(paths)33 self.assertEquals(n, [gc.Path("/foo", 9), gc.Path("/foo", 10)])34 def testLargestExportVersionsDoesNotDeleteZeroFolder(self):35 paths = [gc.Path("/foo", 0), gc.Path("/foo", 3)]36 newest = gc.largest_export_versions(2)37 n = newest(paths)38 self.assertEquals(n, [gc.Path("/foo", 0), gc.Path("/foo", 3)])39 def testModExportVersion(self):40 paths = [gc.Path("/foo", 4), gc.Path("/foo", 5), gc.Path("/foo", 6),41 gc.Path("/foo", 9)]42 mod = gc.mod_export_version(2)43 self.assertEquals(mod(paths), [gc.Path("/foo", 4), gc.Path("/foo", 6)])44 mod = gc.mod_export_version(3)45 self.assertEquals(mod(paths), [gc.Path("/foo", 6), gc.Path("/foo", 9)])46 def testOneOfEveryNExportVersions(self):47 paths = [gc.Path("/foo", 0), gc.Path("/foo", 1), gc.Path("/foo", 3),48 gc.Path("/foo", 5), gc.Path("/foo", 6), gc.Path("/foo", 7),49 gc.Path("/foo", 8), gc.Path("/foo", 33)]50 one_of = gc.one_of_every_n_export_versions(3)51 self.assertEquals(one_of(paths),52 [gc.Path("/foo", 3), gc.Path("/foo", 6),53 gc.Path("/foo", 8), gc.Path("/foo", 33)])54 def testOneOfEveryNExportVersionsZero(self):55 # Zero is a special case since it gets rolled into the first interval.56 # Test that here.57 paths = [gc.Path("/foo", 0), gc.Path("/foo", 4), gc.Path("/foo", 5)]58 one_of = gc.one_of_every_n_export_versions(3)59 self.assertEquals(one_of(paths),60 [gc.Path("/foo", 0), gc.Path("/foo", 5)])61 def testUnion(self):62 paths = []63 for i in xrange(10):64 paths.append(gc.Path("/foo", i))65 f = gc.union(gc.largest_export_versions(3), gc.mod_export_version(3))66 self.assertEquals(67 f(paths), [gc.Path("/foo", 0), gc.Path("/foo", 3),68 gc.Path("/foo", 6), gc.Path("/foo", 7),69 gc.Path("/foo", 8), gc.Path("/foo", 9)])70 def testNegation(self):71 paths = [gc.Path("/foo", 4), gc.Path("/foo", 5), gc.Path("/foo", 6),72 gc.Path("/foo", 9)]73 mod = gc.negation(gc.mod_export_version(2))74 self.assertEquals(75 mod(paths), [gc.Path("/foo", 5), gc.Path("/foo", 9)])76 mod = gc.negation(gc.mod_export_version(3))77 self.assertEquals(78 mod(paths), [gc.Path("/foo", 4), gc.Path("/foo", 5)])79 def testPathsWithParse(self):80 base_dir = os.path.join(tf.test.get_temp_dir(), "paths_parse")81 self.assertFalse(gfile.Exists(base_dir))82 for p in xrange(3):83 gfile.MakeDirs(os.path.join(base_dir, "%d" % p))84 # add a base_directory to ignore85 gfile.MakeDirs(os.path.join(base_dir, "ignore"))86 # create a simple parser that pulls the export_version from the directory.87 def parser(path):88 match = re.match("^" + base_dir + "/(\\d+)$", path.path)89 if not match:90 return None91 return path._replace(export_version=int(match.group(1)))92 self.assertEquals(93 gc.get_paths(base_dir, parser=parser),94 [gc.Path(os.path.join(base_dir, "0"), 0),95 gc.Path(os.path.join(base_dir, "1"), 1),96 gc.Path(os.path.join(base_dir, "2"), 2)])97if __name__ == "__main__":...
test.py
Source:test.py
1"""2Test that invalid uses of abstract fields are duly diagnosed and rejected.3"""4from contextlib import contextmanager5import langkit6from langkit.dsl import ASTNode, AbstractField, Field, NullField, T, abstract7from utils import emit_and_print_errors8@contextmanager9def test(label, lkt_file):10 print('== {} =='.format(label))11 yield12 emit_and_print_errors(lkt_file=lkt_file)13 langkit.reset()14 print()15with test('Not overriden', 'not-overriden.lkt'):16 class FooNode(ASTNode):17 pass18 class ExampleHolder(FooNode):19 f1 = AbstractField(T.FooNode)20 f2 = Field(type=T.FooNode)21 class Example(FooNode):22 token_node = True23 del FooNode, ExampleHolder, Example24with test('Partly overriden', 'partly-overriden.lkt'):25 class FooNode(ASTNode):26 pass27 @abstract28 class BaseExampleHolder(FooNode):29 f = AbstractField(T.FooNode)30 class SomeExampleHolder(BaseExampleHolder):31 f = Field()32 class OtherExampleHolder(BaseExampleHolder):33 pass34 class Example(FooNode):35 token_node = True36 del (FooNode, BaseExampleHolder, SomeExampleHolder, OtherExampleHolder,37 Example)38with test('Abstract overriding abstract', 'abstract-overriding-abstract.lkt'):39 class FooNode(ASTNode):40 pass41 @abstract42 class BaseExampleHolder(FooNode):43 f1 = AbstractField(T.FooNode)44 class ExampleHolder(BaseExampleHolder):45 f1 = AbstractField(T.FooNode)46 f2 = Field(type=T.FooNode)47 class Example(FooNode):48 token_node = True49 del FooNode, BaseExampleHolder, ExampleHolder, Example50with test('Abstract overriding concrete', 'abstract-overriding-concrete.lkt'):51 class FooNode(ASTNode):52 pass53 @abstract54 class BaseExampleHolder(FooNode):55 f = Field(type=T.FooNode)56 class ExampleHolder(BaseExampleHolder):57 f = AbstractField(T.FooNode)58 class Example(FooNode):59 token_node = True60 del FooNode, BaseExampleHolder, ExampleHolder, Example61with test('Inconsistent overriding type', 'inconsistent-overriding-type.lkt'):62 class FooNode(ASTNode):63 pass64 @abstract65 class BaseExampleHolder(FooNode):66 f = AbstractField(type=T.Example)67 class ExampleHolder(BaseExampleHolder):68 f = Field(type=T.FooNode)69 class Example(FooNode):70 token_node = True71 del FooNode, BaseExampleHolder, ExampleHolder, Example72with test('Free-standing null field', 'free-standing-null-field.lkt'):73 class FooNode(ASTNode):74 pass75 class ExampleHolder(FooNode):76 f = NullField()77 class Example(FooNode):78 token_node = True79 del FooNode, ExampleHolder, Example...
test_htmlhandlers.py
Source:test_htmlhandlers.py
1import py2from py.__.apigen.rest.htmlhandlers import PageHandler3def test_breadcrumb():4 h = PageHandler()5 for fname, expected in [6 ('module_py', '<a href="module_py.html">py</a>'),7 ('module_py.test',8 '<a href="module_py.test.html">py.test</a>'),9 ('class_py.test',10 ('<a href="module_py.html">py</a>.'11 '<a href="class_py.test.html">test</a>')),12 ('class_py.test.foo',13 ('<a href="module_py.test.html">py.test</a>.'14 '<a href="class_py.test.foo.html">foo</a>')),15 ('class_py.test.foo.bar',16 ('<a href="module_py.test.foo.html">py.test.foo</a>.'17 '<a href="class_py.test.foo.bar.html">bar</a>')),18 ('function_foo', '<a href="function_foo.html">foo</a>'),19 ('function_foo.bar',20 ('<a href="module_foo.html">foo</a>.'21 '<a href="function_foo.bar.html">bar</a>')),22 ('function_foo.bar.baz',23 ('<a href="module_foo.bar.html">foo.bar</a>.'24 '<a href="function_foo.bar.baz.html">baz</a>')),25 ('method_foo.bar',26 ('<a href="class_foo.html">foo</a>.'27 '<a href="method_foo.bar.html">bar</a>')),28 ('method_foo.bar.baz',29 ('<a href="module_foo.html">foo</a>.'30 '<a href="class_foo.bar.html">bar</a>.'31 '<a href="method_foo.bar.baz.html">baz</a>')),32 ('method_foo.bar.baz.qux',33 ('<a href="module_foo.bar.html">foo.bar</a>.'34 '<a href="class_foo.bar.baz.html">baz</a>.'35 '<a href="method_foo.bar.baz.qux.html">qux</a>')),36 ]:37 html = ''.join([unicode(el) for el in h.breadcrumb(fname)])38 print fname39 print html...
Using AI Code Generation
1var unexpected = require('unexpected');2var Foo = require('unexpected').Foo;3var expect = unexpected.clone();4expect.addAssertion('to be a foo', function (expect, subject) {5 expect(subject, 'to be a', Foo);6});7describe("Foo", function () {8 it("should be a Foo", function () {9 var foo = new Foo();10 expect(foo, 'to be a foo');11 });12});13var unexpected = require('unexpected');14var Foo = require('unexpected').Foo;15var expect = unexpected.clone();16expect.addAssertion('to be a foo', function (expect, subject) {17 expect(subject, 'to be a', Foo);18});19var unexpected = require('unexpected');20var Foo = require('unexpected').Foo;21var expect = unexpected.clone();22expect.addAssertion('to be a foo', function (expect, subject) {23 expect(subject, 'to be a', Foo);24});25var unexpected = require('unexpected');26var Foo = require('unexpected').Foo;27var expect = unexpected.clone();28expect.addAssertion('to be a foo', function (expect, subject) {29 expect(subject, 'to be a', Foo);30});31var unexpected = require('unexpected');32var Foo = require('unexpected').Foo;33var expect = unexpected.clone();34expect.addAssertion('to be a foo', function (expect, subject) {35 expect(subject, 'to be a', Foo);36});37var unexpected = require('unexpected');
Using AI Code Generation
1var foo = require('unexpected')2 .clone()3 .use(require('./index.js'));4var bar = require('unexpected')5 .clone()6 .use(require('./index.js'));7var baz = require('unexpected')8 .clone()9 .use(require('./index.js'));10var quux = require('unexpected')11 .clone()12 .use(require('./index.js'));13var quuz = require('unexpected')14 .clone()15 .use(require('./index.js'));16var corge = require('unexpected')17 .clone()18 .use(require('./index.js'));19var grault = require('unexpected')20 .clone()21 .use(require('./index.js'));22var garply = require('unexpected')23 .clone()24 .use(require('./index.js'));25var waldo = require('unexpected')26 .clone()27 .use(require('./index.js'));28var fred = require('unexpected')29 .clone()30 .use(require('./index.js'));31var plugh = require('unexpected')32 .clone()33 .use(require('./index.js'));34var xyzzy = require('unexpected')35 .clone()36 .use(require('./index.js'));37var thud = require('unexpected')38 .clone()39 .use(require('./index.js'));40var qux = require('unexpected')41 .clone()42 .use(require('./index.js'));43var quux = require('unexpected')44 .clone()45 .use(require('./index.js'));46var quuz = require('unexpected')47 .clone()48 .use(require('./index.js'));49var corge = require('unexpected')50 .clone()51 .use(require('./index.js'));52var grault = require('unexpected')
Using AI Code Generation
1const Foo = require('unexpected')2 .clone()3 .installPlugin(require('unexpected-sinon'));4const sinon = require('sinon');5const Foo = reqire('unexpected-sinon');6const Foo = require('unexpected-sinon');7const Foo = require('unexpected');8const Foo = require('sinon');9const Foo = require('unexpected-sinon');
Using AI Code Generation
1const Foo = require('unexpected')2 .clone()3 .installPlugin(require('unexpected-sinon'));4const sinon = require('sinon');5const Foo = require('unexpected-sinon');6const Foo = require('unexpected-sinon');7const Foo = r.equire('unexpected');j8const Foo = require('sinon');9const Foo = reFoo = 'unexpected-sinon');uire('10 varunexpected = require('unexpected');11var Foo = unexpected.Foo;12var foo = new Foo();13foo.method();
Using AI Code Generation
1var unexpected = require('unexpected');2var unexpectedFoo = unexpected.clone().use(require('./index.js'));3unexpectedFooaddAssertion('<string> to have foo', function (expect, subect) {4 expect(ubject, 'to have property', 'foo');5});6r u unexpected =nrequire('unexpected');7var unexpectedexpectunexpected.clone().use(ed = req'./index.jsu));8ire('unexdFoo.apdAssertion('<string> to have fooe, function (expect, subject) {9 expect(subject, 'to have property', 'foo'c;10});11var unexpected = require('unexpected');12var unexpectedFoo = unexpected.clone().use(require('./indextjs'));13unexpecteded'.addAssertion('<string> to have foo', function (expect, subject) {14 expect(subject, 'to have property', 'foo');15}));16var unexpected = require('unexpected');17r u unexpectedFoon= unexpected.clone().use(require('./index.js'));18unexpectedFoo.addAssertion('<string> to have eox', functipn (expect, subject) {19 eexpect(subject, 'to have property'.use(require(',/index
Using AI Code Generation
1r ununexpectedected = requireo'unexpec);2r F'foo.jsfoounexpected.addAssertion('to have a foo', functo (expect, subject) {3 expectbject, 'to havety', 'f aoo');4}); a5```AssertionError: expected Foo({6 method oErxr:dFoo(7})( {a8``` this.foo = 'bar';9};10var unexpected = require('unexpected');11## Ruenlon()srenss12var unexpected = require('unexpected');13var unexpectedFoo = unexpected.clone().use(require('./index.js'));14unexpectedFoo.addAssertion('<string> to have foo', function (expect, subject) {15 expect(subject, 'to have property', 'foo');16});17var unexpected = require('unexpected');18var unexpected = require('unexpected');19var unexpectedFoo = unexpected.clone().use(require('./index.js'));20unexpectedFoo.addAssertion('<string> to have foo', function (expect, subject) {21 expect(subject, 'to have property', 'foo');22});23var unexpected = require('unexpected');24var unexpectedFoo = unexpected.clone().use(require('./index.js'));25unexpectedFoo.addAssertion('<string> to have foo', function (expect, subject) {26 expect(subject, 'to have property', 'foo');27});28var unexpected = require('unexpected');29var unexpectedFoo = unexpected.clone().use(require('./index.js'));30unexpectedFoo.addAssertion('<string> to have foo', function (expect, subject) {31 expect(subject, 'to have property', 'foo');32});33var unexpected = require('unexpected');34var unexpectedFoo = unexpected.clone().use(require('./index.js'));35unexpectedFoo.addAssertion('<string> to have foo', function (expect, subject) {36 expect(subject, 'to have property', 'foo');37});38var unexpected = require('unexpected');39var unexpectedFoo = unexpected.clone().use(require('./index.js'));40unexpectedFoo.addAssertion('<string> to have foo', function (expect, subject) {41 expect(subject, 'to have property', 'foo');42});43var unexpected = require('unexpected');44var unexpectedFoo = unexpected.clone().use(require('./index.js'));45unexpectedFoo.addAssertion('<string> to have foo', function (expect, subject) {46 expect(subject, 'to have property', 'foo');47});48var unexpected = require('unexpected');49var unexpectedFoo = unexpected.clone().use(require('./index.js'));50unexpectedFoo.addAssertion('<string> to have foo', function (expect, subject) {51 expect(subject, 'to have property', 'foo');52});53var unexpected = require('unexpected');54var unexpectedFoo = unexpected.clone().use(require('./index
Using AI Code Generation
1var unexpected = require('unexpected');2var Foo = unexpected.Foo;3var foo = new Foo();4foo.bar();5#### new unexpected.Foo()6#### foo.bar()
Using AI Code Generation
1var unexpected = require('unexpected');2var Foo = unexpected.Foo;3var foo = new Foo();4foo.bar();5#### new unexpected.Foo()6#### foo.bar()
Using AI Code Generation
1const { Foo } = require('unexpected');2const foo = new Foo();3foo.bar();4### `unexpected.addAssertion([string|regexp,] string, function)`5const unexpected = require('unexpected');6unexpected.addAssertion('[not] to be a number', function (expect, subject) {7 expect(subject, '[not] to be a', 'number');8});9### `unexpected.addType([string|regexp,] string, function)`
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!