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')))
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))