11var assert = require ( "assert" ) ;
22var path = require ( "path" ) ;
3+ var fse = require ( "fs-extra" ) ;
34var local = path . join . bind ( path , __dirname ) ;
45
56describe ( "Checkout" , function ( ) {
67 var NodeGit = require ( "../../" ) ;
78 var Repository = NodeGit . Repository ;
89 var Checkout = NodeGit . Checkout ;
910
11+ var readMeName = "README.md" ;
12+ var packageJsonName = "package.json" ;
1013 var packageJsonOid = "0fa56e90e096a4c24c785206b826ab914ea3de1e" ;
1114 var reposPath = local ( "../repos/workdir" ) ;
15+ var readMePath = local ( "../repos/workdir/" + readMeName ) ;
16+ var packageJsonPath = local ( "../repos/workdir/" + packageJsonName ) ;
1217
1318 beforeEach ( function ( ) {
1419 var test = this ;
@@ -33,6 +38,42 @@ describe("Checkout", function() {
3338 } ) ;
3439 } ) ;
3540
41+ it ( "can force checkout a single file" , function ( ) {
42+ var test = this ;
43+
44+ var packageContent = fse . readFileSync ( packageJsonPath , "utf-8" ) ;
45+ var readmeContent = fse . readFileSync ( readMePath , "utf-8" ) ;
46+
47+ assert . notEqual ( packageContent , "" ) ;
48+ assert . notEqual ( readmeContent , "" ) ;
49+
50+ fse . outputFileSync ( readMePath , "" ) ;
51+ fse . outputFileSync ( packageJsonPath , "" ) ;
52+
53+ var opts = {
54+ checkoutStrategy : Checkout . STRATEGY . FORCE ,
55+ paths : packageJsonName
56+ } ;
57+
58+ return Checkout . head ( test . repository , opts )
59+ . then ( function ( ) {
60+ var resetPackageContent = fse . readFileSync ( packageJsonPath , "utf-8" ) ;
61+ var resetReadmeContent = fse . readFileSync ( readMePath , "utf-8" ) ;
62+
63+ assert . equal ( resetPackageContent , packageContent ) ;
64+ assert . equal ( resetReadmeContent , "" ) ;
65+
66+ var resetOpts = {
67+ checkoutStrategy : Checkout . STRATEGY . FORCE
68+ } ;
69+
70+ return Checkout . head ( test . repository , resetOpts ) ;
71+ } ) . then ( function ( ) {
72+ var resetContent = fse . readFileSync ( readMePath , "utf-8" ) ;
73+ assert . equal ( resetContent , readmeContent ) ;
74+ } ) ;
75+ } ) ;
76+
3677 it ( "can checkout by tree" , function ( ) {
3778 var test = this ;
3879
0 commit comments