@@ -487,3 +487,77 @@ func TestMainFnIncPatchRollsBackRemoteTagOnPublishError(t *testing.T) {
487487 t .Fatalf ("unexpected remote tag v1.0.1: %q" , remoteTags )
488488 }
489489}
490+
491+ func TestMainFnNoFetchDoesNotRunAnyFetch (t * testing.T ) {
492+ flag .Parse ()
493+ oldWD , err := os .Getwd ()
494+ if err != nil {
495+ t .Fatal (err )
496+ }
497+ defer func () { _ = os .Chdir (oldWD ) }()
498+
499+ origGit , origOut , origName := * flagGit , * flagOut , * flagName
500+ origDebug , origGoPackage := * flagDebug , * flagGoPackage
501+ origNoFetch , origNoNewline := * flagNoFetch , * flagNoNewline
502+ origIncPatch , origBranch := * flagIncPatch , * flagBranch
503+ origTestMode := testMode
504+ defer func () {
505+ * flagGit , * flagOut , * flagName = origGit , origOut , origName
506+ * flagDebug , * flagGoPackage = origDebug , origGoPackage
507+ * flagNoFetch , * flagNoNewline = origNoFetch , origNoNewline
508+ * flagIncPatch , * flagBranch = origIncPatch , origBranch
509+ testMode = origTestMode
510+ }()
511+
512+ work := t .TempDir ()
513+ runGit (t , work , "init" , "-q" )
514+ runGit (t , work , "config" , "user.email" , "test@example.com" )
515+ runGit (t , work , "config" , "user.name" , "Test" )
516+ if err := os .WriteFile (filepath .Join (work , "a.txt" ), []byte ("a\n " ), 0o644 ); err != nil {
517+ t .Fatal (err )
518+ }
519+ runGit (t , work , "add" , "a.txt" )
520+ runGit (t , work , "commit" , "-q" , "-m" , "c1" )
521+ runGit (t , work , "tag" , "v1.0.0" )
522+ if err := os .WriteFile (filepath .Join (work , "a.txt" ), []byte ("a\n b\n " ), 0o644 ); err != nil {
523+ t .Fatal (err )
524+ }
525+ runGit (t , work , "commit" , "-qam" , "c2" )
526+
527+ if err := os .Chdir (work ); err != nil {
528+ t .Fatal (err )
529+ }
530+
531+ * flagGit = "git"
532+ * flagOut = "out.txt"
533+ * flagName = ""
534+ * flagDebug = true
535+ * flagGoPackage = false
536+ * flagNoFetch = true
537+ * flagNoNewline = false
538+ * flagIncPatch = false
539+ * flagBranch = false
540+ testMode = true
541+
542+ origStderr := os .Stderr
543+ r , w , err := os .Pipe ()
544+ if err != nil {
545+ t .Fatal (err )
546+ }
547+ os .Stderr = w
548+ code := mainfn ()
549+ os .Stderr = origStderr
550+ _ = w .Close ()
551+ logBytes , readErr := io .ReadAll (r )
552+ _ = r .Close ()
553+ if readErr != nil {
554+ t .Fatal (readErr )
555+ }
556+ if code != 0 {
557+ t .Fatalf ("mainfn failed with code %d, debug log:\n %s" , code , string (logBytes ))
558+ }
559+ logText := string (logBytes )
560+ if strings .Contains (logText , " fetch --" ) {
561+ t .Fatalf ("unexpected git fetch while -nofetch is set:\n %s" , logText )
562+ }
563+ }
0 commit comments