json: implement {manifest} template
authorGregory Szorc <gregory.szorc@gmail.com>
Wed, 01 Apr 2015 22:04:03 -0700
changeset 24589 30a737ae9b7d
parent 24588 0bf54479a9eb
child 24590 0bb733dfcabe
json: implement {manifest} template Property naming was borrowed from `hg files -Tjson`. We omit branch because, again, representation of branches in this template is wonky.
mercurial/templates/json/map
tests/test-hgweb-json.t
--- a/mercurial/templates/json/map	Tue Mar 31 22:53:48 2015 -0700
+++ b/mercurial/templates/json/map	Wed Apr 01 22:04:03 2015 -0700
@@ -29,7 +29,27 @@
 changesetbookmark = '{bookmark|json}'
 changesettag = '{tag|json}'
 changesetparent = '{node|json}'
-manifest = '"not yet implemented"'
+manifest = '\{
+  "node": {node|json},
+  "abspath": {path|json},
+  "directories": [{join(dentries%direntry, ", ")}],
+  "files": [{join(fentries%fileentry, ", ")}],
+  "bookmarks": [{join(bookmarks%name, ", ")}],
+  "tags": [{join(tags%name, ", ")}]
+  }'
+name = '{name|json}'
+direntry = '\{
+  "abspath": {path|json},
+  "basename": {basename|json},
+  "emptydirs": {emptydirs|json}
+  }'
+fileentry = '\{
+  "abspath": {file|json},
+  "basename": {basename|json},
+  "date": {date|json},
+  "size": {size|json},
+  "flags": {permissions|json}
+  }'
 tags = '\{
   "node": {node|json},
   "tags": [{join(entriesnotip%tagentry, ", ")}]
--- a/tests/test-hgweb-json.t	Tue Mar 31 22:53:48 2015 -0700
+++ b/tests/test-hgweb-json.t	Wed Apr 01 22:04:03 2015 -0700
@@ -119,10 +119,46 @@
 
 file/{revision} shows root directory info
 
-  $ request json-file/06e557f3edf6
+  $ request json-file/cc725e08502a
   200 Script output follows
   
-  "not yet implemented"
+  {
+    "abspath": "/",
+    "bookmarks": [],
+    "directories": [
+      {
+        "abspath": "/da",
+        "basename": "da",
+        "emptydirs": ""
+      }
+    ],
+    "files": [
+      {
+        "abspath": ".hgtags",
+        "basename": ".hgtags",
+        "date": [
+          0.0,
+          0
+        ],
+        "flags": "",
+        "size": 92
+      },
+      {
+        "abspath": "foo-new",
+        "basename": "foo-new",
+        "date": [
+          0.0,
+          0
+        ],
+        "flags": "",
+        "size": 4
+      }
+    ],
+    "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
+    "tags": [
+      "tip"
+    ]
+  }
 
 changelog/ shows information about several changesets
 
@@ -522,7 +558,31 @@
   $ request json-manifest/06e557f3edf6/
   200 Script output follows
   
-  "not yet implemented"
+  {
+    "abspath": "/",
+    "bookmarks": [],
+    "directories": [
+      {
+        "abspath": "/da",
+        "basename": "da",
+        "emptydirs": ""
+      }
+    ],
+    "files": [
+      {
+        "abspath": "foo",
+        "basename": "foo",
+        "date": [
+          0.0,
+          0
+        ],
+        "flags": "",
+        "size": 4
+      }
+    ],
+    "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
+    "tags": []
+  }
 
 tags/ shows tags info