def testClone(self): self._make_testapp() (child_stdin, child_stdout, child_stderr) = popen3("%s push -v my-app couchapp-test" % self.cmd) design_doc = self.db['_design/my-app'] app_dir = os.path.join(self.tempdir, "couchapp-test") (child_stdin, child_stdout, child_stderr) = popen3("%s clone %s %s" % ( self.cmd, "http://127.0.0.1:5984/couchapp-test/_design/my-app", app_dir)) # should create .couchapprc self.assert_(os.path.isfile(os.path.join(app_dir, ".couchapprc"))) # should clone the views self.assert_(os.path.isdir(os.path.join(app_dir, "views"))) # should create foo/bar.txt file self.assert_(os.path.isfile(os.path.join(app_dir, 'foo/bar.txt'))) # should create lib/helpers/math.js file self.assert_(os.path.isfile(os.path.join(app_dir, 'lib/helpers/math.js'))) # should work when design doc is edited manually design_doc['test.txt'] = "essai" self.db['_design/my-app'] = design_doc deltree(app_dir) (child_stdin, child_stdout, child_stderr) = popen3("%s clone %s %s" % (self.cmd, "http://127.0.0.1:5984/couchapp-test/_design/my-app", app_dir)) self.assert_(os.path.isfile(os.path.join(app_dir, 'test.txt'))) # should work when a view is added manually design_doc["views"]["more"] = { "map": "function(doc) { emit(null, doc); }" } self.db['_design/my-app'] = design_doc deltree(app_dir) (child_stdin, child_stdout, child_stderr) = popen3("%s clone %s %s" % ( self.cmd, "http://127.0.0.1:5984/couchapp-test/_design/my-app", app_dir)) self.assert_(os.path.isfile(os.path.join(app_dir, 'views/example/map.js'))) # should work without manifest del design_doc['couchapp']['manifest'] self.db['_design/my-app'] = design_doc deltree(app_dir) (child_stdin, child_stdout, child_stderr) = popen3("%s clone %s %s" % ( self.cmd, "http://127.0.0.1:5984/couchapp-test/_design/my-app", app_dir)) self.assert_(os.path.isfile(os.path.join(app_dir, 'views/example/map.js'))) # should create foo/bar without manifest self.assert_(os.path.isfile(os.path.join(app_dir, 'foo/bar'))) # should create lib/helpers.json without manifest self.assert_(os.path.isfile(os.path.join(app_dir, 'lib/helpers.json')))
def testPushDocs(self): os.chdir(self.tempdir) docsdir = os.path.join(self.tempdir, 'docs') os.makedirs(docsdir) # create 2 apps (child_stdin, child_stdout, child_stderr) = popen3("%s generate docs/app1" % self.cmd) (child_stdin, child_stdout, child_stderr) = popen3("%s generate docs/app2" % self.cmd) (child_stdin, child_stdout, child_stderr) = popen3("%s pushdocs docs/ http://127.0.0.1:5984/couchapp-test" % self.cmd) alldocs = self.db.all_docs()['rows'] self.assert_(len(alldocs) == 2) self.assert_('_design/app1' == alldocs[0]['id'])
def testGenerate(self): (child_stdin, child_stdout, child_stderr) = popen3("%s generate my-app" % self.cmd) # should create application dir self.assert_(os.path.isdir(self.app_dir)) # should create view dir self.assert_(os.path.isdir(os.path.join(self.app_dir, 'views'))) # should create attachments dir self.assert_(os.path.isdir(os.path.join(self.app_dir, '_attachments'))) # should create show dir self.assert_(os.path.isdir(os.path.join(self.app_dir, 'shows'))) # should create vendor dir self.assert_(os.path.isdir(os.path.join(self.app_dir, 'vendor'))) # deep attachment test self.assert_(os.path.isfile(os.path.join(self.app_dir, '_attachments', 'style/main.css')))
def testGenerate(self): os.chdir(self.tempdir) (child_stdin, child_stdout, child_stderr) = popen3("%s generate my-app" % self.cmd) appdir = os.path.join(self.tempdir, 'my-app') self.assert_(os.path.isdir(appdir) == True) cfile = os.path.join(appdir, '.couchapprc') self.assert_(os.path.isfile(cfile) == True) self.assert_(os.path.isdir(os.path.join(appdir, '_attachments')) == True) self.assert_(os.path.isfile(os.path.join(appdir, '_attachments', 'index.html')) == True) self.assert_(os.path.isfile(os.path.join(self.app_dir, '_attachments', 'style', 'main.css'))) self.assert_(os.path.isdir(os.path.join(appdir, 'views')) == True) self.assert_(os.path.isdir(os.path.join(appdir, 'shows')) == True) self.assert_(os.path.isdir(os.path.join(appdir, 'lists')) == True)
def testPushNoAtomic(self): self._make_testapp() (child_stdin, child_stdout, child_stderr) = popen3("%s push --no-atomic my-app couchapp-test" % self.cmd) # any design doc created ? design_doc = None try: design_doc = self.db.open_doc('_design/my-app') except ResourceNotFound: pass self.assert_(design_doc is not None) # there are 3 revisions (1 doc creation + 2 attachments) self.assert_(design_doc['_rev'].startswith('3-')) # should create view self.assert_('function' in design_doc['views']['example']['map']) # should use macros self.assert_('stddev' in design_doc['views']['example']['map']) self.assert_('ejohn.org' in design_doc['shows']['example-show']) # should create index self.assert_(design_doc['_attachments']['index.html']['content_type'] == 'text/html') # should create manifest self.assert_('foo/' in design_doc['couchapp']['manifest']) # should push and macro the doc shows self.assert_('Generated CouchApp Form Template' in design_doc['shows']['example-show']) # should push and macro the view lists self.assert_('Test XML Feed' in design_doc['lists']['feed']) # should allow deeper includes self.assertFalse('"helpers"' in design_doc['shows']['example-show']) # deep require macros self.assertFalse('"template"' in design_doc['shows']['example-show']) self.assert_('Resig' in design_doc['shows']['example-show'])
__extension_name__ = "Mercurial vendor handler" __copyright__ = "Copyright 2008,2009 Benoit Chesneau <*****@*****.**>" __doc__ = "couchapp vendor install|update hg://somerepo (repo available via http, use http+ssh:// for ssh repos)" from couchapp.errors import VendorError from couchapp.utils import locate_program, popen3 def fetch(ui, url, path, *args, **opts): """ return git cmd path """ if url.startswith("hg+ssh://"): url = url[8:] else: url = url.replace("hg://", "http://") try: cmd = locate_program("hg", raise_error=True) except ValueError, e: raise VendorError(e) cmd += " clone %s %s" % (url, path) # exec cmd (child_stdin, child_stdout, child_stderr) = popen3(cmd) err = child_stderr.read() if ui.verbose >=2: ui.logger.info(child_stdout.read()) if err: raise VendorError(str(err)) return scheme = ['hg', 'hg+ssh']
def execute(cmd): return utils.popen3(cmd)
def testGenerateResource(self): cmd = "python %s" % self.couchapp_bin self._make_testapp(self.tempdir) (child_stdin, child_stdout, child_stderr) = popen3("%s generate --attributes title,author,body resource %s blog_post" % (cmd, self.tempdir)) self.assert_(os.path.isfile(os.path.join(self.tempdir, '_attachments', 'blog_posts', 'new.html')) == True)