mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 08:18:15 +03:00
4cfb665650
Summary: Before this change `hg pullbackup` did not set correct markers on commits. This change make possible to see what changes already landed even when we are restoring repository from backup. Before the change `fbclone` + `hg pullbackup` of repo with `C1` commit landed would result in: ``` o o C2 | | o o C1 | / | o ``` after: ``` o o C2 | | o x C1 | / | o ``` Reviewed By: StanislavGlebik Differential Revision: D7032572 fbshipit-source-id: ffee3c7cc23c24a3df9a89c999c9dd2de226dbff
119 lines
4.0 KiB
Perl
119 lines
4.0 KiB
Perl
Setup
|
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
> [extensions]
|
|
> arcconfig=$TESTDIR/../hgext/extlib/phabricator/arcconfig.py
|
|
> phabstatus=
|
|
> smartlog=
|
|
> EOF
|
|
$ hg init repo
|
|
$ cd repo
|
|
$ touch foo
|
|
$ hg ci -qAm 'Differential Revision: https://phabricator.fb.com/D1'
|
|
|
|
With an invalid arc configuration
|
|
|
|
$ hg log -T '{phabstatus}\n' -r .
|
|
arcconfig configuration problem. No diff information can be provided.
|
|
Error info: no .arcconfig found
|
|
Error
|
|
|
|
Configure arc...
|
|
|
|
$ echo '{}' > .arcrc
|
|
$ echo '{"config" : {"default" : "https://a.com/api"}, "hosts" : {"https://a.com/api/" : { "user" : "testuser", "cert" : "garbage_cert"}}}' > .arcconfig
|
|
|
|
And now with bad responses:
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg log -T '{phabstatus}\n' -r .
|
|
Error talking to phabricator. No diff information can be provided.
|
|
Error info: Unexpected graphql response format
|
|
Error
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"errors": [{"message": "failed, yo"}]}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg log -T '{phabstatus}\n' -r .
|
|
Error talking to phabricator. No diff information can be provided.
|
|
Error info: failed, yo
|
|
Error
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": {"nodes": null}}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg log -T '{phabstatus}\n' -r .
|
|
Error talking to phabricator. No diff information can be provided.
|
|
Error info: Unexpected graphql response format
|
|
Error
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": null}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg log -T '{phabstatus}\n' -r .
|
|
Error talking to phabricator. No diff information can be provided.
|
|
Error info: Unexpected graphql response format
|
|
Error
|
|
|
|
Missing status field is treated as an error
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": {"nodes": [
|
|
> {"number": 1, "created_time": 0, "updated_time": 2}
|
|
> ]}}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg log -T '{phabstatus}\n' -r .
|
|
Error talking to phabricator. No diff information can be provided.
|
|
Error info: Unexpected graphql response format
|
|
Error
|
|
|
|
And finally, the success case
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": {"nodes": [
|
|
> {"number": 1, "diff_status_name": "Needs Review",
|
|
> "created_time": 0, "updated_time": 2}
|
|
> ]}}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg log -T '{phabstatus}\n' -r .
|
|
Needs Review
|
|
|
|
Make sure the code works without the smartlog extensions
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": {"nodes": [
|
|
> {"number": 1, "diff_status_name": "Needs Review",
|
|
> "created_time": 0, "updated_time": 2}
|
|
> ]}}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg --config 'extensions.smartlog=!' log -T '{phabstatus}\n' -r .
|
|
Needs Review
|
|
|
|
Make sure the template keywords are documented correctly
|
|
|
|
$ hg help templates | egrep 'phabstatus|syncstatus'
|
|
phabstatus String. Return the diff approval status for a given hg rev
|
|
syncstatus String. Return whether the local revision is in sync with
|
|
|
|
Make sure we get decent error messages when .arcrc is missing credential
|
|
information. We intentionally do not use HG_ARC_CONDUIT_MOCK for this test,
|
|
so it tries to parse the (empty) arc config files.
|
|
|
|
$ echo '{}' > .arcrc
|
|
$ echo '{}' > .arcconfig
|
|
$ hg log -T '{phabstatus}\n' -r .
|
|
arcconfig configuration problem. No diff information can be provided.
|
|
Error info: arcrc is missing user credentials for host None. use "arc install-certificate" to fix.
|
|
Error
|
|
|
|
Make sure we get an error message if .arcrc is not proper JSON (for example
|
|
due to trailing commas). We do not use HG_ARC_CONDUIT_MOCK for this test,
|
|
in order for it to parse the badly formatted arc config file.
|
|
|
|
$ echo '{,}' > ../.arcrc
|
|
$ hg log -T '{phabstatus}\n' -r .
|
|
arcconfig configuration problem. No diff information can be provided.
|
|
Error info: Configuration file $TESTTMP/.arcrc is not a proper JSON file.
|
|
Error
|