mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 08:18:15 +03:00
297c6ce041
Summary: This was unneeded. We can just populate the dict directly. Note that now we catch any errors in the expected data format gracefully and no longer stack trace with bad inputs. Reviewed By: DurhamG Differential Revision: D6826455 fbshipit-source-id: adc9cc1fc4895f3c67b112d914f566601336ce3b
108 lines
3.1 KiB
Perl
108 lines
3.1 KiB
Perl
Load extensions
|
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
> [extensions]
|
|
> arcconfig=$TESTDIR/../hgext/extlib/phabricator/arcconfig.py
|
|
> arcdiff=
|
|
> EOF
|
|
|
|
Diff with no revision
|
|
|
|
$ hg init repo
|
|
$ cd repo
|
|
$ touch foo
|
|
$ hg add foo
|
|
$ hg ci -qm 'No rev'
|
|
$ hg diff --since-last-arc-diff
|
|
abort: local changeset is not associated with a differential revision
|
|
[255]
|
|
|
|
Fake a diff
|
|
|
|
$ echo bleet > foo
|
|
$ hg ci -qm 'Differential Revision: https://phabricator.fb.com/D1'
|
|
$ hg diff --since-last-arc-diff
|
|
abort: no .arcconfig found
|
|
[255]
|
|
|
|
Prep configuration
|
|
|
|
$ echo '{}' > .arcrc
|
|
$ echo '{"config" : {"default" : "https://a.com/api"}, "hosts" : {"https://a.com/api/" : { "user" : "testuser", "cert" : "garbage_cert"}}}' > .arcconfig
|
|
|
|
Now progressively test the response handling for variations of missing data
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg diff --since-last-arc-diff
|
|
Error calling graphql: Unexpected graphql response format
|
|
abort: unable to determine previous changeset hash
|
|
[255]
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": {"nodes": [{
|
|
> "number": 1,
|
|
> "diff_status_name": "Needs Review",
|
|
> "differential_diffs": {"count": 3}
|
|
> }]}}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg diff --since-last-arc-diff
|
|
abort: unable to determine previous changeset hash
|
|
[255]
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": {"nodes": [{
|
|
> "number": 1,
|
|
> "diff_status_name": "Needs Review"
|
|
> }]}}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg diff --since-last-arc-diff
|
|
abort: unable to determine previous changeset hash
|
|
[255]
|
|
|
|
This is the case when the diff is up to date with the current commit;
|
|
there is no diff since what was landed.
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": {"nodes": [{
|
|
> "number": 1,
|
|
> "diff_status_name": "Needs Review",
|
|
> "latest_active_diff": {
|
|
> "local_commit_info": {
|
|
> "nodes": [
|
|
> {"property_value": "{\"lolwut\": {\"time\": 0, \"commit\": \"2e6531b7dada2a3e5638e136de05f51e94a427f4\"}}"}
|
|
> ]
|
|
> }
|
|
> },
|
|
> "differential_diffs": {"count": 1}
|
|
> }]}}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg diff --since-last-arc-diff
|
|
|
|
This is the case when the diff points at our parent commit, we expect to
|
|
see the bleet text show up. There's a fake hash that I've injected into
|
|
the commit list returned from our mocked phabricator; it is present to
|
|
assert that we order the commits consistently based on the time field.
|
|
|
|
$ cat > $TESTTMP/mockduit << EOF
|
|
> [{"data": {"query": [{"results": {"nodes": [{
|
|
> "number": 1,
|
|
> "diff_status_name": "Needs Review",
|
|
> "latest_active_diff": {
|
|
> "local_commit_info": {
|
|
> "nodes": [
|
|
> {"property_value": "{\"lolwut\": {\"time\": 0, \"commit\": \"88dd5a13bf28b99853a24bddfc93d4c44e07c6bd\"}}"}
|
|
> ]
|
|
> }
|
|
> },
|
|
> "differential_diffs": {"count": 1}
|
|
> }]}}]}}]
|
|
> EOF
|
|
$ HG_ARC_CONDUIT_MOCK=$TESTTMP/mockduit hg diff --since-last-arc-diff --nodates
|
|
diff -r 88dd5a13bf28 foo
|
|
--- a/foo
|
|
+++ b/foo
|
|
@@ -0,0 +1,1 @@
|
|
+bleet
|