##// END OF EJS Templates
hgweb: expose raw line numbers to templates...
hgweb: expose raw line numbers to templates Surpringly, the templates didn't receive an unmodified version of the line numbers. Expose it to make implementing the JSON templates easier. In theory, we could post-process an existing template variable. But extra string manipulation seems quite wasteful, especially on items that could occur hundreds or even thousands of times in output.

File last commit:

r24591:517f3e19 default
r24712:bbf1ae6b default
Show More
test-hgweb-json.t
1009 lines | 21.9 KiB | text/troff | Tads3Lexer
/ tests / test-hgweb-json.t
Gregory Szorc
templates: add a stub template for json...
r24544 #require json
#require serve
$ request() {
> $TESTDIR/get-with-headers.py --json localhost:$HGPORT "$1"
> }
$ hg init test
$ cd test
$ mkdir da
$ echo foo > da/foo
$ echo foo > foo
$ hg -q ci -A -m initial
$ echo bar > foo
$ hg ci -m 'modify foo'
$ echo bar > da/foo
$ hg ci -m 'modify da/foo'
$ hg bookmark bookmark1
$ hg up default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark bookmark1)
$ hg mv foo foo-new
$ hg commit -m 'move foo'
$ hg tag -m 'create tag' tag1
Gregory Szorc
hgweb: add phase to {changeset} template...
r24564 $ hg phase --public -r .
Gregory Szorc
templates: add a stub template for json...
r24544 $ echo baz > da/foo
$ hg commit -m 'another commit to da/foo'
$ hg tag -m 'create tag2' tag2
$ hg bookmark bookmark2
$ hg -q up -r 0
$ hg -q branch test-branch
$ echo branch > foo
$ hg commit -m 'create test branch'
Gregory Szorc
json: implement {changeset} template...
r24563 $ echo branch_commit_2 > foo
$ hg commit -m 'another commit in test-branch'
$ hg -q up default
$ hg merge --tool :local test-branch
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg commit -m 'merge test-branch into default'
Gregory Szorc
templates: add a stub template for json...
r24544
$ hg log -G
Gregory Szorc
json: implement {changeset} template...
r24563 @ changeset: 9:cc725e08502a
|\ tag: tip
| | parent: 6:ceed296fe500
| | parent: 8:ed66c30e87eb
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: merge test-branch into default
| |
| o changeset: 8:ed66c30e87eb
| | branch: test-branch
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: another commit in test-branch
| |
| o changeset: 7:6ab967a8ab34
| | branch: test-branch
| | parent: 0:06e557f3edf6
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: create test branch
| |
o | changeset: 6:ceed296fe500
Gregory Szorc
templates: add a stub template for json...
r24544 | | bookmark: bookmark2
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: create tag2
| |
Gregory Szorc
json: implement {changeset} template...
r24563 o | changeset: 5:f2890a05fea4
Gregory Szorc
templates: add a stub template for json...
r24544 | | tag: tag2
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: another commit to da/foo
| |
Gregory Szorc
json: implement {changeset} template...
r24563 o | changeset: 4:93a8ce14f891
Gregory Szorc
templates: add a stub template for json...
r24544 | | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: create tag
| |
Gregory Szorc
json: implement {changeset} template...
r24563 o | changeset: 3:78896eb0e102
Gregory Szorc
templates: add a stub template for json...
r24544 | | tag: tag1
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: move foo
| |
Gregory Szorc
json: implement {changeset} template...
r24563 o | changeset: 2:8d7c456572ac
Gregory Szorc
templates: add a stub template for json...
r24544 | | bookmark: bookmark1
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: modify da/foo
| |
Gregory Szorc
json: implement {changeset} template...
r24563 o | changeset: 1:f8bbb9024b10
Gregory Szorc
templates: add a stub template for json...
r24544 |/ user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: modify foo
|
o changeset: 0:06e557f3edf6
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: initial
$ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E error.log
$ cat hg.pid >> $DAEMON_PIDS
(Try to keep these in roughly the order they are defined in webcommands.py)
(log is handled by filelog/ and changelog/ - ignore it)
(rawfile/ doesn't use templating - nothing to test)
file/{revision}/{path} shows file revision
Gregory Szorc
test-hgweb-json: fix URL for file revision tests...
r24562 $ request json-file/06e557f3edf6/foo
Gregory Szorc
templates: add a stub template for json...
r24544 200 Script output follows
"not yet implemented"
file/{revision} shows root directory info
Gregory Szorc
json: implement {manifest} template...
r24589 $ request json-file/cc725e08502a
Gregory Szorc
templates: add a stub template for json...
r24544 200 Script output follows
Gregory Szorc
json: implement {manifest} template...
r24589 {
"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"
]
}
Gregory Szorc
templates: add a stub template for json...
r24544
changelog/ shows information about several changesets
$ request json-changelog
200 Script output follows
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 {
"changeset_count": 10,
"changesets": [
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "merge test-branch into default",
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"tags": [
"tip"
],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "another commit in test-branch",
"node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "create test branch",
"node": "6ab967a8ab3489227a83f80e920faa039a71819f",
"tags": [],
"user": "test"
},
{
"bookmarks": [
"bookmark2"
],
"date": [
0.0,
0
],
"desc": "create tag2",
"node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "another commit to da/foo",
"node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
"tags": [
"tag2"
],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "create tag",
"node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "move foo",
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
"tags": [
"tag1"
],
"user": "test"
},
{
"bookmarks": [
"bookmark1"
],
"date": [
0.0,
0
],
"desc": "modify da/foo",
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "modify foo",
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "initial",
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
"tags": [],
"user": "test"
}
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
}
Gregory Szorc
templates: add a stub template for json...
r24544
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 changelog/{revision} shows information starting at a specific changeset
Gregory Szorc
templates: add a stub template for json...
r24544
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 $ request json-changelog/f8bbb9024b10
Gregory Szorc
templates: add a stub template for json...
r24544 200 Script output follows
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 {
"changeset_count": 10,
"changesets": [
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "modify foo",
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "initial",
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
"tags": [],
"user": "test"
}
],
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8"
}
Gregory Szorc
templates: add a stub template for json...
r24544
shortlog/ shows information about a set of changesets
$ request json-shortlog
200 Script output follows
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 {
"changeset_count": 10,
"changesets": [
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "merge test-branch into default",
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"tags": [
"tip"
],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "another commit in test-branch",
"node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "create test branch",
"node": "6ab967a8ab3489227a83f80e920faa039a71819f",
"tags": [],
"user": "test"
},
{
"bookmarks": [
"bookmark2"
],
"date": [
0.0,
0
],
"desc": "create tag2",
"node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "another commit to da/foo",
"node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
"tags": [
"tag2"
],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "create tag",
"node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "move foo",
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
"tags": [
"tag1"
],
"user": "test"
},
{
"bookmarks": [
"bookmark1"
],
"date": [
0.0,
0
],
"desc": "modify da/foo",
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "modify foo",
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"date": [
0.0,
0
],
"desc": "initial",
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
"tags": [],
"user": "test"
}
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
}
Gregory Szorc
templates: add a stub template for json...
r24544
changeset/ renders the tip changeset
$ request json-rev
200 Script output follows
Gregory Szorc
json: implement {changeset} template...
r24563 {
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "merge test-branch into default",
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"parents": [
"ceed296fe500c3fac9541e31dad860cb49c89e45",
"ed66c30e87eb65337c05a4229efaa5f1d5285a90"
],
Gregory Szorc
hgweb: add phase to {changeset} template...
r24564 "phase": "draft",
Gregory Szorc
json: implement {changeset} template...
r24563 "tags": [
"tip"
],
"user": "test"
}
Gregory Szorc
templates: add a stub template for json...
r24544
changeset/{revision} shows tags
$ request json-rev/78896eb0e102
200 Script output follows
Gregory Szorc
json: implement {changeset} template...
r24563 {
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "move foo",
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
"parents": [
"8d7c456572acf3557e8ed8a07286b10c408bcec5"
],
Gregory Szorc
hgweb: add phase to {changeset} template...
r24564 "phase": "public",
Gregory Szorc
json: implement {changeset} template...
r24563 "tags": [
"tag1"
],
"user": "test"
}
Gregory Szorc
templates: add a stub template for json...
r24544
changeset/{revision} shows bookmarks
$ request json-rev/8d7c456572ac
200 Script output follows
Gregory Szorc
json: implement {changeset} template...
r24563 {
"bookmarks": [
"bookmark1"
],
"branch": "default",
"date": [
0.0,
0
],
"desc": "modify da/foo",
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
"parents": [
"f8bbb9024b10f93cdbb8d940337398291d40dea8"
],
Gregory Szorc
hgweb: add phase to {changeset} template...
r24564 "phase": "public",
Gregory Szorc
json: implement {changeset} template...
r24563 "tags": [],
"user": "test"
}
Gregory Szorc
templates: add a stub template for json...
r24544
changeset/{revision} shows branches
$ request json-rev/6ab967a8ab34
200 Script output follows
Gregory Szorc
json: implement {changeset} template...
r24563 {
"bookmarks": [],
"branch": "test-branch",
"date": [
0.0,
0
],
"desc": "create test branch",
"node": "6ab967a8ab3489227a83f80e920faa039a71819f",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
Gregory Szorc
hgweb: add phase to {changeset} template...
r24564 "phase": "draft",
Gregory Szorc
json: implement {changeset} template...
r24563 "tags": [],
"user": "test"
}
Gregory Szorc
templates: add a stub template for json...
r24544
manifest/{revision}/{path} shows info about a directory at a revision
$ request json-manifest/06e557f3edf6/
200 Script output follows
Gregory Szorc
json: implement {manifest} template...
r24589 {
"abspath": "/",
"bookmarks": [],
"directories": [
{
"abspath": "/da",
"basename": "da",
"emptydirs": ""
}
],
"files": [
{
"abspath": "foo",
"basename": "foo",
"date": [
0.0,
0
],
"flags": "",
"size": 4
}
],
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
"tags": []
}
Gregory Szorc
templates: add a stub template for json...
r24544
tags/ shows tags info
$ request json-tags
200 Script output follows
Gregory Szorc
json: implement {tags} template...
r24545 {
Gregory Szorc
json: implement {changeset} template...
r24563 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
Gregory Szorc
json: implement {tags} template...
r24545 "tags": [
{
"date": [
0.0,
0
],
"node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
"tag": "tag2"
},
{
"date": [
0.0,
0
],
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
"tag": "tag1"
}
]
}
Gregory Szorc
templates: add a stub template for json...
r24544
bookmarks/ shows bookmarks info
$ request json-bookmarks
200 Script output follows
Gregory Szorc
json: implement {bookmarks} template
r24546 {
"bookmarks": [
{
"bookmark": "bookmark1",
"date": [
0.0,
0
],
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5"
},
{
"bookmark": "bookmark2",
"date": [
0.0,
0
],
"node": "ceed296fe500c3fac9541e31dad860cb49c89e45"
}
],
Gregory Szorc
json: implement {changeset} template...
r24563 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
Gregory Szorc
json: implement {bookmarks} template
r24546 }
Gregory Szorc
templates: add a stub template for json...
r24544
branches/ shows branches info
$ request json-branches
200 Script output follows
Gregory Szorc
json: implement {branches} template
r24547 {
"branches": [
{
Gregory Szorc
json: implement {changeset} template...
r24563 "branch": "default",
"date": [
0.0,
0
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"status": "open"
},
{
Gregory Szorc
json: implement {branches} template
r24547 "branch": "test-branch",
"date": [
0.0,
0
],
Gregory Szorc
json: implement {changeset} template...
r24563 "node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
"status": "inactive"
Gregory Szorc
json: implement {branches} template
r24547 }
]
}
Gregory Szorc
templates: add a stub template for json...
r24544
summary/ shows a summary of repository state
$ request json-summary
200 Script output follows
"not yet implemented"
filediff/{revision}/{path} shows changes to a file in a revision
$ request json-diff/f8bbb9024b10/foo
200 Script output follows
"not yet implemented"
comparison/{revision}/{path} shows information about before and after for a file
$ request json-comparison/f8bbb9024b10/foo
200 Script output follows
"not yet implemented"
annotate/{revision}/{path} shows annotations for each line
$ request json-annotate/f8bbb9024b10/foo
200 Script output follows
"not yet implemented"
filelog/{revision}/{path} shows history of a single file
$ request json-filelog/f8bbb9024b10/foo
200 Script output follows
"not yet implemented"
(archive/ doesn't use templating, so ignore it)
(static/ doesn't use templating, so ignore it)
graph/ shows information that can be used to render a graph of the DAG
$ request json-graph
200 Script output follows
"not yet implemented"
help/ shows help topics
$ request json-help
200 Script output follows
Gregory Szorc
json: implement {helptopics} template
r24590 {
"earlycommands": [
{
"summary": "add the specified files on the next commit",
"topic": "add"
},
{
"summary": "show changeset information by line for each file",
"topic": "annotate"
},
{
"summary": "make a copy of an existing repository",
"topic": "clone"
},
{
"summary": "commit the specified files or all outstanding changes",
"topic": "commit"
},
{
"summary": "diff repository (or selected files)",
"topic": "diff"
},
{
"summary": "dump the header and diffs for one or more changesets",
"topic": "export"
},
{
"summary": "forget the specified files on the next commit",
"topic": "forget"
},
{
"summary": "create a new repository in the given directory",
"topic": "init"
},
{
"summary": "show revision history of entire repository or files",
"topic": "log"
},
{
"summary": "merge another revision into working directory",
"topic": "merge"
},
{
"summary": "pull changes from the specified source",
"topic": "pull"
},
{
"summary": "push changes to the specified destination",
"topic": "push"
},
{
"summary": "remove the specified files on the next commit",
"topic": "remove"
},
{
"summary": "start stand-alone webserver",
"topic": "serve"
},
{
"summary": "show changed files in the working directory",
"topic": "status"
},
{
"summary": "summarize working directory state",
"topic": "summary"
},
{
"summary": "update working directory (or switch revisions)",
"topic": "update"
}
],
"othercommands": [
{
"summary": "add all new files, delete all missing files",
"topic": "addremove"
},
{
"summary": "create an unversioned archive of a repository revision",
"topic": "archive"
},
{
"summary": "reverse effect of earlier changeset",
"topic": "backout"
},
{
"summary": "subdivision search of changesets",
"topic": "bisect"
},
{
"summary": "create a new bookmark or list existing bookmarks",
"topic": "bookmarks"
},
{
"summary": "set or show the current branch name",
"topic": "branch"
},
{
"summary": "list repository named branches",
"topic": "branches"
},
{
"summary": "create a changegroup file",
"topic": "bundle"
},
{
"summary": "output the current or given revision of files",
"topic": "cat"
},
{
"summary": "show combined config settings from all hgrc files",
"topic": "config"
},
{
"summary": "mark files as copied for the next commit",
"topic": "copy"
},
{
"summary": "list tracked files",
"topic": "files"
},
{
"summary": "copy changes from other branches onto the current branch",
"topic": "graft"
},
{
"summary": "search for a pattern in specified files and revisions",
"topic": "grep"
},
{
"summary": "show branch heads",
"topic": "heads"
},
{
"summary": "show help for a given topic or a help overview",
"topic": "help"
},
{
"summary": "identify the working directory or specified revision",
"topic": "identify"
},
{
"summary": "import an ordered set of patches",
"topic": "import"
},
{
"summary": "show new changesets found in source",
"topic": "incoming"
},
{
"summary": "output the current or given revision of the project manifest",
"topic": "manifest"
},
{
"summary": "show changesets not found in the destination",
"topic": "outgoing"
},
{
"summary": "show aliases for remote repositories",
"topic": "paths"
},
{
"summary": "set or show the current phase name",
"topic": "phase"
},
{
"summary": "roll back an interrupted transaction",
"topic": "recover"
},
{
"summary": "rename files; equivalent of copy + remove",
"topic": "rename"
},
{
"summary": "redo merges or set/view the merge status of files",
"topic": "resolve"
},
{
"summary": "restore files to their checkout state",
"topic": "revert"
},
{
"summary": "print the root (top) of the current working directory",
"topic": "root"
},
{
"summary": "add one or more tags for the current or given revision",
"topic": "tag"
},
{
"summary": "list repository tags",
"topic": "tags"
},
{
"summary": "apply one or more changegroup files",
"topic": "unbundle"
},
{
"summary": "verify the integrity of the repository",
"topic": "verify"
},
{
"summary": "output version and copyright information",
"topic": "version"
}
],
"topics": [
{
"summary": "Configuration Files",
"topic": "config"
},
{
"summary": "Date Formats",
"topic": "dates"
},
{
"summary": "Diff Formats",
"topic": "diffs"
},
{
"summary": "Environment Variables",
"topic": "environment"
},
{
"summary": "Using Additional Features",
"topic": "extensions"
},
{
"summary": "Specifying File Sets",
"topic": "filesets"
},
{
"summary": "Glossary",
"topic": "glossary"
},
{
"summary": "Syntax for Mercurial Ignore Files",
"topic": "hgignore"
},
{
"summary": "Configuring hgweb",
"topic": "hgweb"
},
{
"summary": "Merge Tools",
"topic": "merge-tools"
},
{
"summary": "Specifying Multiple Revisions",
"topic": "multirevs"
},
{
"summary": "File Name Patterns",
"topic": "patterns"
},
{
"summary": "Working with Phases",
"topic": "phases"
},
{
"summary": "Specifying Single Revisions",
"topic": "revisions"
},
{
"summary": "Specifying Revision Sets",
"topic": "revsets"
},
{
"summary": "Subrepositories",
"topic": "subrepos"
},
{
"summary": "Template Usage",
"topic": "templating"
},
{
"summary": "URL Paths",
"topic": "urls"
}
]
}
Gregory Szorc
templates: add a stub template for json...
r24544
help/{topic} shows an individual help topic
$ request json-help/phases
200 Script output follows
Gregory Szorc
json: implement {help} template...
r24591 {
"rawdoc": "Working with Phases\n*", (glob)
"topic": "phases"
}