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"
2019-09-09 21:06:12 +00:00
"testing"
2015-04-18 16:46:47 +00:00
2020-02-07 13:39:24 +00:00
"gotest.tools/v3/assert"
2014-02-25 16:17:48 +00:00
)
// search for repos named "registry" on the central registry
2019-09-09 21:05:55 +00:00
func ( s * DockerSuite ) TestSearchOnCentralRegistry ( c * testing . T ) {
2015-10-05 04:01:58 +00:00
out , _ := dockerCmd ( c , "search" , "busybox" )
2019-04-04 13:23:19 +00:00
assert . Assert ( c , strings . Contains ( out , "Busybox base image." ) , "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
2019-09-09 21:05:55 +00:00
func ( s * DockerSuite ) TestSearchStarsOptionWithWrongParameter ( c * testing . T ) {
2016-05-20 11:41:28 +00:00
out , _ , err := dockerCmdWithError ( "search" , "--filter" , "stars=a" , "busybox" )
2019-04-04 13:23:19 +00:00
assert . ErrorContains ( c , err , "" , out )
assert . Assert ( c , strings . Contains ( out , "Invalid filter" ) , "couldn't find the invalid filter warning" )
2016-05-20 11:41:28 +00:00
out , _ , err = dockerCmdWithError ( "search" , "-f" , "stars=a" , "busybox" )
2019-04-04 13:23:19 +00:00
assert . ErrorContains ( c , err , "" , out )
assert . Assert ( c , strings . Contains ( out , "Invalid filter" ) , "couldn't find the invalid filter warning" )
2016-05-20 11:41:28 +00:00
out , _ , err = dockerCmdWithError ( "search" , "-f" , "is-automated=a" , "busybox" )
2019-04-04 13:23:19 +00:00
assert . ErrorContains ( c , err , "" , out )
assert . Assert ( c , strings . Contains ( out , "Invalid filter" ) , "couldn't find the invalid filter warning" )
2016-05-20 11:41:28 +00:00
out , _ , err = dockerCmdWithError ( "search" , "-f" , "is-official=a" , "busybox" )
2019-04-04 13:23:19 +00:00
assert . ErrorContains ( c , err , "" , out )
assert . Assert ( c , strings . Contains ( out , "Invalid filter" ) , "couldn't find the invalid filter warning" )
2015-04-03 00:55:08 +00:00
}
2015-04-14 01:23:26 +00:00
2019-09-09 21:05:55 +00:00
func ( s * DockerSuite ) TestSearchCmdOptions ( c * testing . T ) {
2019-05-22 12:55:14 +00:00
outSearchCmd , _ := dockerCmd ( c , "search" , "busybox" )
assert . Assert ( c , strings . Count ( outSearchCmd , "\n" ) > 3 , outSearchCmd )
2019-11-27 14:36:45 +00:00
outSearchCmdautomated , _ := dockerCmd ( c , "search" , "--filter" , "is-automated=true" , "busybox" ) // The busybox is a busybox base image, not an AUTOMATED image.
2019-05-22 12:55:14 +00:00
outSearchCmdautomatedSlice := strings . Split ( outSearchCmdautomated , "\n" )
for i := range outSearchCmdautomatedSlice {
assert . Assert ( c , ! strings . HasPrefix ( outSearchCmdautomatedSlice [ i ] , "busybox " ) , "The busybox is not an AUTOMATED image: %s" , outSearchCmdautomated )
}
2019-11-27 14:36:45 +00:00
outSearchCmdNotOfficial , _ := dockerCmd ( c , "search" , "--filter" , "is-official=false" , "busybox" ) // The busybox is a busybox base image, official image.
2019-05-22 12:55:14 +00:00
outSearchCmdNotOfficialSlice := strings . Split ( outSearchCmdNotOfficial , "\n" )
for i := range outSearchCmdNotOfficialSlice {
assert . Assert ( c , ! strings . HasPrefix ( outSearchCmdNotOfficialSlice [ i ] , "busybox " ) , "The busybox is not an OFFICIAL image: %s" , outSearchCmdNotOfficial )
}
2019-11-27 14:36:45 +00:00
outSearchCmdOfficial , _ := dockerCmd ( c , "search" , "--filter" , "is-official=true" , "busybox" ) // The busybox is a busybox base image, official image.
2019-05-22 12:55:14 +00:00
outSearchCmdOfficialSlice := strings . Split ( outSearchCmdOfficial , "\n" )
assert . Equal ( c , len ( outSearchCmdOfficialSlice ) , 3 ) // 1 header, 1 line, 1 carriage return
assert . Assert ( c , strings . HasPrefix ( outSearchCmdOfficialSlice [ 1 ] , "busybox " ) , "The busybox is an OFFICIAL image: %s" , outSearchCmdOfficial )
outSearchCmdStars , _ := dockerCmd ( c , "search" , "--filter" , "stars=10" , "busybox" )
assert . Assert ( c , strings . Count ( outSearchCmdStars , "\n" ) <= strings . Count ( outSearchCmd , "\n" ) , "Number of images with 10+ stars should be less than that of all images:\noutSearchCmdStars: %s\noutSearch: %s\n" , outSearchCmdStars , outSearchCmd )
dockerCmd ( c , "search" , "--filter" , "is-automated=true" , "--filter" , "stars=2" , "--no-trunc=true" , "busybox" )
}
2015-09-22 11:44:40 +00:00
// search for repos which start with "ubuntu-" on the central registry
2019-09-09 21:05:55 +00:00
func ( s * DockerSuite ) TestSearchOnCentralRegistryWithDash ( c * testing . T ) {
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
2019-09-09 21:05:55 +00:00
func ( s * DockerSuite ) TestSearchWithLimit ( c * testing . T ) {
2019-07-17 11:09:17 +00:00
for _ , limit := range [ ] int { 10 , 50 , 100 } {
out , _ , err := dockerCmdWithError ( "search" , fmt . Sprintf ( "--limit=%d" , limit ) , "docker" )
assert . NilError ( c , err )
outSlice := strings . Split ( out , "\n" )
assert . Equal ( c , len ( outSlice ) , limit + 2 ) // 1 header, 1 carriage return
}
for _ , limit := range [ ] int { - 1 , 0 , 101 } {
_ , _ , err := dockerCmdWithError ( "search" , fmt . Sprintf ( "--limit=%d" , limit ) , "docker" )
assert . ErrorContains ( c , err , "" )
}
2016-06-01 20:38:14 +00:00
}