changeset 2437:a5117a5becf8 stable

ui: Fix hg stack json output Previously 'hg stack -Tjson' generated invalid output like: [ { "isentry": true, "topic.stack.desc": "...", "topic.stack.index": 1, "topic.stack.state": "current", "topic.stack.state.symbol": "@" } ] , { "isentry": true, "topic.stack.desc": "...", "topic.stack.index": 1, "topic.stack.state": "current", "topic.stack.state.symbol": "@" }, { "isentry": false, "topic.stack.desc": "...", "topic.stack.state": "base", "topic.stack.state.symbol": "^" } ] I de-indented the fmt.end() to generate this output: [ { "isentry": true, "topic.stack.desc": "...", "topic.stack.index": 1, "topic.stack.state": "current", "topic.stack.state.symbol": "@" }, { "isentry": false, "topic.stack.desc": "...", "topic.stack.state": "base", "topic.stack.state.symbol": "^" } ] I've also added a test case.
author Boris Feld <boris.feld@octobus.net>
date Wed, 10 May 2017 09:55:22 +0200
parents d49f376598f8
children 5737e0680f10
files README hgext3rd/topic/stack.py tests/test-topic-stack.t
diffstat 3 files changed, 39 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/README
+++ b/README
@@ -116,6 +116,7 @@
 -------------------
 
  - also enable the new cache (from 6.1.0) for 'evolve.server-only',
+ - fix hg stack json output to be valid json
 
 6.1.0 -- 2017-05-03
 -------------------
--- a/hgext3rd/topic/stack.py
+++ b/hgext3rd/topic/stack.py
@@ -87,7 +87,7 @@
                      ' (%s)', state,
                      label='topic.stack.state topic.stack.state.%s' % state)
         fm.plain('\n')
-        fm.end()
+    fm.end()
 
 def stackdata(repo, topic):
     """get various data about a stack
--- a/tests/test-topic-stack.t
+++ b/tests/test-topic-stack.t
@@ -77,6 +77,43 @@
   t2: c_d
   t1: c_c
     ^ c_b
+  $ hg stack -Tjson | python -m json.tool
+  [
+      {
+          "isentry": true,
+          "topic.stack.desc": "c_f",
+          "topic.stack.index": 4,
+          "topic.stack.state": "current",
+          "topic.stack.state.symbol": "@"
+      },
+      {
+          "isentry": true,
+          "topic.stack.desc": "c_e",
+          "topic.stack.index": 3,
+          "topic.stack.state": "clean",
+          "topic.stack.state.symbol": ":"
+      },
+      {
+          "isentry": true,
+          "topic.stack.desc": "c_d",
+          "topic.stack.index": 2,
+          "topic.stack.state": "clean",
+          "topic.stack.state.symbol": ":"
+      },
+      {
+          "isentry": true,
+          "topic.stack.desc": "c_c",
+          "topic.stack.index": 1,
+          "topic.stack.state": "clean",
+          "topic.stack.state.symbol": ":"
+      },
+      {
+          "isentry": false,
+          "topic.stack.desc": "c_b",
+          "topic.stack.state": "base",
+          "topic.stack.state.symbol": "^"
+      }
+  ]
 
 error case, nothing to list