2014-02-25 11:17:48 -05:00
package main
import (
2016-06-01 16:38:14 -04:00
"fmt"
2014-02-25 11:17:48 -05:00
"strings"
2015-04-18 12:46:47 -04:00
2016-12-30 12:23:00 -05:00
"github.com/docker/docker/integration-cli/checker"
2015-04-18 12:46:47 -04:00
"github.com/go-check/check"
2014-02-25 11:17:48 -05:00
)
// search for repos named "registry" on the central registry
2015-04-18 12:46:47 -04:00
func ( s * DockerSuite ) TestSearchOnCentralRegistry ( c * check . C ) {
2015-08-28 13:36:42 -04:00
testRequires ( c , Network , DaemonIsLinux )
2015-07-21 14:01:24 -04:00
2015-10-05 00:01:58 -04:00
out , _ := dockerCmd ( c , "search" , "busybox" )
c . Assert ( out , checker . Contains , "Busybox base image." , check . Commentf ( "couldn't find any repository named (or containing) 'Busybox base image.'" ) )
2014-02-25 11:17:48 -05:00
}
2015-04-02 20:55:08 -04:00
2015-04-18 12:46:47 -04:00
func ( s * DockerSuite ) TestSearchStarsOptionWithWrongParameter ( c * check . C ) {
2016-05-20 07:41:28 -04:00
out , _ , err := dockerCmdWithError ( "search" , "--filter" , "stars=a" , "busybox" )
2018-08-14 03:45:39 -04:00
c . Assert ( err , check . NotNil , check . Commentf ( "%s" , out ) )
2016-05-20 07:41:28 -04:00
c . Assert ( out , checker . Contains , "Invalid filter" , check . Commentf ( "couldn't find the invalid filter warning" ) )
out , _ , err = dockerCmdWithError ( "search" , "-f" , "stars=a" , "busybox" )
2018-08-14 03:45:39 -04:00
c . Assert ( err , check . NotNil , check . Commentf ( "%s" , out ) )
2016-05-20 07:41:28 -04:00
c . Assert ( out , checker . Contains , "Invalid filter" , check . Commentf ( "couldn't find the invalid filter warning" ) )
out , _ , err = dockerCmdWithError ( "search" , "-f" , "is-automated=a" , "busybox" )
2018-08-14 03:45:39 -04:00
c . Assert ( err , check . NotNil , check . Commentf ( "%s" , out ) )
2016-05-20 07:41:28 -04:00
c . Assert ( out , checker . Contains , "Invalid filter" , check . Commentf ( "couldn't find the invalid filter warning" ) )
out , _ , err = dockerCmdWithError ( "search" , "-f" , "is-official=a" , "busybox" )
2018-08-14 03:45:39 -04:00
c . Assert ( err , check . NotNil , check . Commentf ( "%s" , out ) )
2016-05-20 07:41:28 -04:00
c . Assert ( out , checker . Contains , "Invalid filter" , check . Commentf ( "couldn't find the invalid filter warning" ) )
// -s --stars deprecated since Docker 1.13
out , _ , err = dockerCmdWithError ( "search" , "--stars=a" , "busybox" )
2018-08-14 03:45:39 -04:00
c . Assert ( err , check . NotNil , check . Commentf ( "%s" , out ) )
2016-06-03 13:50:01 -04:00
c . Assert ( out , checker . Contains , "invalid syntax" , check . Commentf ( "couldn't find the invalid value warning" ) )
2015-04-02 20:55:08 -04:00
2016-05-20 07:41:28 -04:00
// -s --stars deprecated since Docker 1.13
2015-10-05 00:01:58 -04:00
out , _ , err = dockerCmdWithError ( "search" , "-s=-1" , "busybox" )
2018-08-14 03:45:39 -04:00
c . Assert ( err , check . NotNil , check . Commentf ( "%s" , out ) )
2016-06-03 13:50:01 -04:00
c . Assert ( out , checker . Contains , "invalid syntax" , check . Commentf ( "couldn't find the invalid value warning" ) )
2015-04-02 20:55:08 -04:00
}
2015-04-13 21:23:26 -04:00
2015-04-18 12:46:47 -04:00
func ( s * DockerSuite ) TestSearchCmdOptions ( c * check . C ) {
2016-05-20 07:41:28 -04:00
testRequires ( c , Network , DaemonIsLinux )
2015-07-21 14:01:24 -04:00
2015-10-05 00:01:58 -04:00
out , _ := dockerCmd ( c , "search" , "--help" )
c . Assert ( out , checker . Contains , "Usage:\tdocker search [OPTIONS] TERM" )
2015-04-13 21:23:26 -04:00
2015-10-05 00:01:58 -04:00
outSearchCmd , _ := dockerCmd ( c , "search" , "busybox" )
2015-07-21 14:01:24 -04:00
outSearchCmdNotrunc , _ := dockerCmd ( c , "search" , "--no-trunc=true" , "busybox" )
2016-05-20 07:41:28 -04:00
2015-10-05 00:01:58 -04:00
c . Assert ( len ( outSearchCmd ) > len ( outSearchCmdNotrunc ) , check . Equals , false , check . Commentf ( "The no-trunc option can't take effect." ) )
2015-05-04 20:51:13 -04:00
2016-05-20 07:41:28 -04:00
outSearchCmdautomated , _ := dockerCmd ( c , "search" , "--filter" , "is-automated=true" , "busybox" ) //The busybox is a busybox base image, not an AUTOMATED image.
2015-04-13 21:23:26 -04:00
outSearchCmdautomatedSlice := strings . Split ( outSearchCmdautomated , "\n" )
for i := range outSearchCmdautomatedSlice {
2016-05-20 07:41:28 -04:00
c . Assert ( strings . HasPrefix ( outSearchCmdautomatedSlice [ i ] , "busybox " ) , check . Equals , false , check . Commentf ( "The busybox is not an AUTOMATED image: %s" , outSearchCmdautomated ) )
}
outSearchCmdNotOfficial , _ := dockerCmd ( c , "search" , "--filter" , "is-official=false" , "busybox" ) //The busybox is a busybox base image, official image.
outSearchCmdNotOfficialSlice := strings . Split ( outSearchCmdNotOfficial , "\n" )
for i := range outSearchCmdNotOfficialSlice {
c . Assert ( strings . HasPrefix ( outSearchCmdNotOfficialSlice [ i ] , "busybox " ) , check . Equals , false , check . Commentf ( "The busybox is not an OFFICIAL image: %s" , outSearchCmdNotOfficial ) )
2015-04-13 21:23:26 -04:00
}
2016-05-20 07:41:28 -04:00
outSearchCmdOfficial , _ := dockerCmd ( c , "search" , "--filter" , "is-official=true" , "busybox" ) //The busybox is a busybox base image, official image.
outSearchCmdOfficialSlice := strings . Split ( outSearchCmdOfficial , "\n" )
c . Assert ( outSearchCmdOfficialSlice , checker . HasLen , 3 ) // 1 header, 1 line, 1 carriage return
c . Assert ( strings . HasPrefix ( outSearchCmdOfficialSlice [ 1 ] , "busybox " ) , check . Equals , true , check . Commentf ( "The busybox is an OFFICIAL image: %s" , outSearchCmdNotOfficial ) )
outSearchCmdStars , _ := dockerCmd ( c , "search" , "--filter" , "stars=2" , "busybox" )
2015-10-05 00:01:58 -04:00
c . Assert ( strings . Count ( outSearchCmdStars , "[OK]" ) > strings . Count ( outSearchCmd , "[OK]" ) , check . Equals , false , check . Commentf ( "The quantity of images with stars should be less than that of all images: %s" , outSearchCmdStars ) )
2015-04-13 21:23:26 -04:00
2016-05-20 07:41:28 -04:00
dockerCmd ( c , "search" , "--filter" , "is-automated=true" , "--filter" , "stars=2" , "--no-trunc=true" , "busybox" )
// --automated deprecated since Docker 1.13
outSearchCmdautomated1 , _ := dockerCmd ( c , "search" , "--automated=true" , "busybox" ) //The busybox is a busybox base image, not an AUTOMATED image.
outSearchCmdautomatedSlice1 := strings . Split ( outSearchCmdautomated1 , "\n" )
for i := range outSearchCmdautomatedSlice1 {
c . Assert ( strings . HasPrefix ( outSearchCmdautomatedSlice1 [ i ] , "busybox " ) , check . Equals , false , check . Commentf ( "The busybox is not an AUTOMATED image: %s" , outSearchCmdautomated ) )
}
// -s --stars deprecated since Docker 1.13
outSearchCmdStars1 , _ := dockerCmd ( c , "search" , "--stars=2" , "busybox" )
c . Assert ( strings . Count ( outSearchCmdStars1 , "[OK]" ) > strings . Count ( outSearchCmd , "[OK]" ) , check . Equals , false , check . Commentf ( "The quantity of images with stars should be less than that of all images: %s" , outSearchCmdStars1 ) )
// -s --stars deprecated since Docker 1.13
2015-10-05 00:01:58 -04:00
dockerCmd ( c , "search" , "--stars=2" , "--automated=true" , "--no-trunc=true" , "busybox" )
2015-04-13 21:23:26 -04:00
}
2015-09-22 07:44:40 -04:00
// search for repos which start with "ubuntu-" on the central registry
func ( s * DockerSuite ) TestSearchOnCentralRegistryWithDash ( c * check . C ) {
testRequires ( c , Network , DaemonIsLinux )
2015-10-05 00:01:58 -04:00
dockerCmd ( c , "search" , "ubuntu-" )
2015-09-22 07:44:40 -04:00
}
2016-06-01 16:38:14 -04:00
// test case for #23055
func ( s * DockerSuite ) TestSearchWithLimit ( c * check . C ) {
testRequires ( c , Network , DaemonIsLinux )
limit := 10
out , _ , err := dockerCmdWithError ( "search" , fmt . Sprintf ( "--limit=%d" , limit ) , "docker" )
c . Assert ( err , checker . IsNil )
outSlice := strings . Split ( out , "\n" )
c . Assert ( outSlice , checker . HasLen , limit + 2 ) // 1 header, 1 carriage return
limit = 50
out , _ , err = dockerCmdWithError ( "search" , fmt . Sprintf ( "--limit=%d" , limit ) , "docker" )
c . Assert ( err , checker . IsNil )
outSlice = strings . Split ( out , "\n" )
c . Assert ( outSlice , checker . HasLen , limit + 2 ) // 1 header, 1 carriage return
limit = 100
out , _ , err = dockerCmdWithError ( "search" , fmt . Sprintf ( "--limit=%d" , limit ) , "docker" )
c . Assert ( err , checker . IsNil )
outSlice = strings . Split ( out , "\n" )
c . Assert ( outSlice , checker . HasLen , limit + 2 ) // 1 header, 1 carriage return
limit = 0
2017-01-17 21:08:31 -05:00
_ , _ , err = dockerCmdWithError ( "search" , fmt . Sprintf ( "--limit=%d" , limit ) , "docker" )
2016-06-01 16:38:14 -04:00
c . Assert ( err , checker . Not ( checker . IsNil ) )
limit = 200
2017-01-17 21:08:31 -05:00
_ , _ , err = dockerCmdWithError ( "search" , fmt . Sprintf ( "--limit=%d" , limit ) , "docker" )
2016-06-01 16:38:14 -04:00
c . Assert ( err , checker . Not ( checker . IsNil ) )
}