2014-02-25 16:17:48 +00:00
package main
import (
2016-06-01 20:38:14 +00:00
"fmt"
2014-02-25 16:17:48 +00:00
"strings"
2015-04-18 16:46:47 +00:00
2016-12-30 17:23:00 +00:00
"github.com/docker/docker/integration-cli/checker"
2015-04-18 16:46:47 +00:00
"github.com/go-check/check"
2014-02-25 16:17:48 +00:00
)
// search for repos named "registry" on the central registry
2015-04-18 16:46:47 +00:00
func ( s * DockerSuite ) TestSearchOnCentralRegistry ( c * check . C ) {
2015-08-28 17:36:42 +00:00
testRequires ( c , Network , DaemonIsLinux )
2015-07-21 18:01:24 +00:00
2015-10-05 04:01:58 +00: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 16:17:48 +00:00
}
2015-04-03 00:55:08 +00:00
2015-04-18 16:46:47 +00:00
func ( s * DockerSuite ) TestSearchStarsOptionWithWrongParameter ( c * check . C ) {
2016-05-20 11:41:28 +00:00
out , _ , err := dockerCmdWithError ( "search" , "--filter" , "stars=a" , "busybox" )
c . Assert ( err , check . NotNil , check . Commentf ( out ) )
c . Assert ( out , checker . Contains , "Invalid filter" , check . Commentf ( "couldn't find the invalid filter warning" ) )
out , _ , err = dockerCmdWithError ( "search" , "-f" , "stars=a" , "busybox" )
c . Assert ( err , check . NotNil , check . Commentf ( out ) )
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" )
c . Assert ( err , check . NotNil , check . Commentf ( out ) )
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" )
c . Assert ( err , check . NotNil , check . Commentf ( out ) )
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" )
2015-10-05 04:01:58 +00:00
c . Assert ( err , check . NotNil , check . Commentf ( out ) )
2016-06-03 17:50:01 +00:00
c . Assert ( out , checker . Contains , "invalid syntax" , check . Commentf ( "couldn't find the invalid value warning" ) )
2015-04-03 00:55:08 +00:00
2016-05-20 11:41:28 +00:00
// -s --stars deprecated since Docker 1.13
2015-10-05 04:01:58 +00:00
out , _ , err = dockerCmdWithError ( "search" , "-s=-1" , "busybox" )
c . Assert ( err , check . NotNil , check . Commentf ( out ) )
2016-06-03 17:50:01 +00:00
c . Assert ( out , checker . Contains , "invalid syntax" , check . Commentf ( "couldn't find the invalid value warning" ) )
2015-04-03 00:55:08 +00:00
}
2015-04-14 01:23:26 +00:00
2015-04-18 16:46:47 +00:00
func ( s * DockerSuite ) TestSearchCmdOptions ( c * check . C ) {
2016-05-20 11:41:28 +00:00
testRequires ( c , Network , DaemonIsLinux )
2015-07-21 18:01:24 +00:00
2015-10-05 04:01:58 +00:00
out , _ := dockerCmd ( c , "search" , "--help" )
c . Assert ( out , checker . Contains , "Usage:\tdocker search [OPTIONS] TERM" )
2015-04-14 01:23:26 +00:00
2015-10-05 04:01:58 +00:00
outSearchCmd , _ := dockerCmd ( c , "search" , "busybox" )
2015-07-21 18:01:24 +00:00
outSearchCmdNotrunc , _ := dockerCmd ( c , "search" , "--no-trunc=true" , "busybox" )
2016-05-20 11:41:28 +00:00
2015-10-05 04:01:58 +00:00
c . Assert ( len ( outSearchCmd ) > len ( outSearchCmdNotrunc ) , check . Equals , false , check . Commentf ( "The no-trunc option can't take effect." ) )
2015-05-05 00:51:13 +00:00
2016-05-20 11:41:28 +00:00
outSearchCmdautomated , _ := dockerCmd ( c , "search" , "--filter" , "is-automated=true" , "busybox" ) //The busybox is a busybox base image, not an AUTOMATED image.
2015-04-14 01:23:26 +00:00
outSearchCmdautomatedSlice := strings . Split ( outSearchCmdautomated , "\n" )
for i := range outSearchCmdautomatedSlice {
2016-05-20 11:41:28 +00: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-14 01:23:26 +00:00
}
2016-05-20 11:41:28 +00: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 04:01:58 +00: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-14 01:23:26 +00:00
2016-05-20 11:41:28 +00: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 04:01:58 +00:00
dockerCmd ( c , "search" , "--stars=2" , "--automated=true" , "--no-trunc=true" , "busybox" )
2015-04-14 01:23:26 +00:00
}
2015-09-22 11:44:40 +00: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 04:01:58 +00:00
dockerCmd ( c , "search" , "ubuntu-" )
2015-09-22 11:44:40 +00:00
}
2016-06-01 20:38:14 +00: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-18 02:08:31 +00:00
_ , _ , err = dockerCmdWithError ( "search" , fmt . Sprintf ( "--limit=%d" , limit ) , "docker" )
2016-06-01 20:38:14 +00:00
c . Assert ( err , checker . Not ( checker . IsNil ) )
limit = 200
2017-01-18 02:08:31 +00:00
_ , _ , err = dockerCmdWithError ( "search" , fmt . Sprintf ( "--limit=%d" , limit ) , "docker" )
2016-06-01 20:38:14 +00:00
c . Assert ( err , checker . Not ( checker . IsNil ) )
}