@@ -855,3 +855,55 @@ func (s *DockerRegistriesSuite) TestPushNeedsAuth(c *check.C) {
855855 c .Fatalf ("Wanted %s, got %s" , expected , out )
856856 }
857857}
858+
859+ func (s * DockerRegistrySuite ) TestPushWithSkipSchema2 (c * check.C ) {
860+ c .Assert (s .d .StartWithBusybox ("--skip-schema2-push=false" ), check .IsNil )
861+
862+ repo := fmt .Sprintf ("%s/runcom/busybox" , s .reg .url )
863+ out , err := s .d .Cmd ("tag" , "busybox" , repo )
864+ c .Assert (err , check .IsNil , check .Commentf (out ))
865+
866+ out , err = s .d .Cmd ("push" , repo )
867+ c .Assert (err , check .IsNil , check .Commentf (out ))
868+
869+ digest1 := reference .DigestRegexp .FindString (out )
870+ c .Assert (len (digest1 ), checker .GreaterThan , 0 , check .Commentf ("no digest found for pushed manifest" ))
871+
872+ out , err = s .d .Cmd ("pull" , repo + "@" + digest1 )
873+ c .Assert (err , check .IsNil , check .Commentf (out ))
874+
875+ out , err = s .d .Cmd ("rmi" , "-f" , repo + "@" + digest1 )
876+ c .Assert (err , check .IsNil , check .Commentf (out ))
877+
878+ c .Assert (s .d .Restart ("--skip-schema2-push=true" ), check .IsNil )
879+
880+ out , err = s .d .Cmd ("push" , repo )
881+ c .Assert (err , check .IsNil , check .Commentf (out ))
882+
883+ digest2 := reference .DigestRegexp .FindString (out )
884+ c .Assert (len (digest2 ), checker .GreaterThan , 0 , check .Commentf ("no digest found for pushed manifest" ))
885+
886+ out , err = s .d .Cmd ("pull" , repo + "@" + digest2 )
887+ c .Assert (err , check .IsNil , check .Commentf (out ))
888+
889+ out , err = s .d .Cmd ("rmi" , "-f" , repo + "@" + digest2 )
890+ c .Assert (err , check .IsNil , check .Commentf (out ))
891+
892+ c .Assert (digest1 , check .Not (checker .Equals ), digest2 )
893+
894+ c .Assert (s .d .Restart (), check .IsNil )
895+
896+ out , err = s .d .Cmd ("push" , repo )
897+ c .Assert (err , check .IsNil , check .Commentf (out ))
898+
899+ digest3 := reference .DigestRegexp .FindString (out )
900+ c .Assert (len (digest3 ), checker .GreaterThan , 0 , check .Commentf ("no digest found for pushed manifest" ))
901+
902+ out , err = s .d .Cmd ("pull" , repo + "@" + digest3 )
903+ c .Assert (err , check .IsNil , check .Commentf (out ))
904+
905+ out , err = s .d .Cmd ("rmi" , "-f" , repo + "@" + digest3 )
906+ c .Assert (err , check .IsNil , check .Commentf (out ))
907+
908+ c .Assert (digest1 , checker .Equals , digest3 )
909+ }
0 commit comments