@@ -2,6 +2,7 @@ var assert = require("assert");
22var path = require ( "path" ) ;
33var local = path . join . bind ( path , __dirname ) ;
44var _ = require ( "lodash" ) ;
5+ var fp = require ( "lodash/fp" ) ;
56
67var garbageCollect = require ( "../utils/garbage_collect.js" ) ;
78
@@ -444,4 +445,87 @@ describe("Remote", function() {
444445 Remote . getSelfFreeingInstanceCount ( ) ) ;
445446 } ) ;
446447 } ) ;
448+
449+ it ( "can retrieve the list of references advertised by a remote" , function ( ) {
450+ var expectedRemoteHeads = {
451+ HEAD : {
452+ local : 0 ,
453+ oid : "32789a79e71fbc9e04d3eff7425e1771eb595150" ,
454+ loid : "0000000000000000000000000000000000000000" ,
455+ name : "HEAD" ,
456+ symrefTarget : "refs/heads/master"
457+ } ,
458+ "refs/heads/checkout-test" : {
459+ local : 0 ,
460+ oid : "1729c73906bb8467f4095c2f4044083016b4dfde" ,
461+ loid : "0000000000000000000000000000000000000000" ,
462+ name : "refs/heads/checkout-test" ,
463+ symrefTarget : null
464+ } ,
465+ "refs/heads/master" : {
466+ local : 0 ,
467+ oid : "32789a79e71fbc9e04d3eff7425e1771eb595150" ,
468+ loid : "0000000000000000000000000000000000000000" ,
469+ name : "refs/heads/master" ,
470+ symrefTarget : null
471+ } ,
472+ "refs/heads/rev-walk" : {
473+ local : 0 ,
474+ oid : "32789a79e71fbc9e04d3eff7425e1771eb595150" ,
475+ loid : "0000000000000000000000000000000000000000" ,
476+ name : "refs/heads/rev-walk" ,
477+ symrefTarget : null
478+ } ,
479+ "refs/tags/annotated-tag" : {
480+ local : 0 ,
481+ oid : "dc800017566123ff3c746b37284a24a66546667e" ,
482+ loid : "0000000000000000000000000000000000000000" ,
483+ name : "refs/tags/annotated-tag" ,
484+ symrefTarget : null
485+ } ,
486+ "refs/tags/annotated-tag^{}" : {
487+ local : 0 ,
488+ oid : "32789a79e71fbc9e04d3eff7425e1771eb595150" ,
489+ loid : "0000000000000000000000000000000000000000" ,
490+ name : "refs/tags/annotated-tag^{}" ,
491+ symrefTarget : null
492+ } ,
493+ "refs/tags/light-weight-tag" : {
494+ local : 0 ,
495+ oid : "32789a79e71fbc9e04d3eff7425e1771eb595150" ,
496+ loid : "0000000000000000000000000000000000000000" ,
497+ name : "refs/tags/light-weight-tag" ,
498+ symrefTarget : null
499+ }
500+ } ;
501+
502+ return this . repository . getRemote ( "origin" )
503+ . then ( function ( remote ) {
504+ return remote . referenceList ( ) ;
505+ } )
506+ . then ( function ( remoteHeads ) {
507+ var remoteHeadsBySha = fp . flow ( [
508+ fp . map ( function ( remoteHead ) {
509+ return {
510+ local : remoteHead . local ( ) ,
511+ oid : remoteHead . oid ( ) . toString ( ) ,
512+ loid : remoteHead . loid ( ) . toString ( ) ,
513+ name : remoteHead . name ( ) ,
514+ symrefTarget : remoteHead . symrefTarget ( )
515+ } ;
516+ } ) ,
517+ fp . keyBy ( "name" )
518+ ] ) ( remoteHeads ) ;
519+
520+ fp . flow ( [
521+ fp . keys ,
522+ fp . forEach ( function ( remoteHeadName ) {
523+ assert ( fp . isEqual (
524+ expectedRemoteHeads [ remoteHeadName ] ,
525+ remoteHeadsBySha [ remoteHeadName ]
526+ ) , "Expectations for head " + remoteHeadName + " were not met." ) ;
527+ } )
528+ ] ) ( expectedRemoteHeads ) ;
529+ } ) ;
530+ } ) ;
447531} ) ;
0 commit comments