Example #1
0
 def testClone(self):
     self._make_testapp()
     self.app.push("couchapp-test", "my-app")
     design_doc = self.db['_design/my-app']
     
     app_dir =  os.path.join(self.tempdir, "test_couchapp2")
     capp = CouchApp(app_dir, self.ui)
     capp.clone("http://127.0.0.1:5984/couchapp-test/_design/my-app")
     
     # 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)
     
     capp.clone("http://127.0.0.1:5984/couchapp-test/_design/my-app")
     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)
     capp.clone("http://127.0.0.1:5984/couchapp-test/_design/my-app")
     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)
     capp.clone("http://127.0.0.1:5984/couchapp-test/_design/my-app")
     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')))
Example #2
0
 def clone(self, app_uri, appdir):
     cmd = CouchApp(appdir, self.ui)
     try:
         cmd.clone(app_uri)
     except (AppError, MacroError), e:
         self.ui.logger.critical(str(e))