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"
2019-09-09 17:06:12 -04:00
"testing"
2015-04-18 12:46:47 -04:00
2020-02-07 08:39:24 -05:00
"gotest.tools/v3/assert"
2014-02-25 11:17:48 -05:00
)
2022-06-16 17:32:10 -04:00
type DockerCLISearchSuite struct {
ds * DockerSuite
}
func ( s * DockerCLISearchSuite ) TearDownTest ( c * testing . T ) {
s . ds . TearDownTest ( c )
}
func ( s * DockerCLISearchSuite ) OnTimeout ( c * testing . T ) {
s . ds . OnTimeout ( c )
}
2014-02-25 11:17:48 -05:00
// search for repos named "registry" on the central registry
2022-06-16 17:32:10 -04:00
func ( s * DockerCLISearchSuite ) TestSearchOnCentralRegistry ( c * testing . T ) {
2015-10-05 00:01:58 -04:00
out , _ := dockerCmd ( c , "search" , "busybox" )
2019-04-04 09:23:19 -04:00
assert . Assert ( c , strings . Contains ( out , "Busybox base image." ) , "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
2022-06-16 17:32:10 -04:00
func ( s * DockerCLISearchSuite ) TestSearchStarsOptionWithWrongParameter ( c * testing . T ) {
2016-05-20 07:41:28 -04:00
out , _ , err := dockerCmdWithError ( "search" , "--filter" , "stars=a" , "busybox" )
2019-04-04 09:23:19 -04:00
assert . ErrorContains ( c , err , "" , out )
2022-03-02 12:56:06 -05:00
assert . Assert ( c , strings . Contains ( out , "invalid filter" ) , "couldn't find the invalid filter warning" )
2016-05-20 07:41:28 -04:00
out , _ , err = dockerCmdWithError ( "search" , "-f" , "stars=a" , "busybox" )
2019-04-04 09:23:19 -04:00
assert . ErrorContains ( c , err , "" , out )
2022-03-02 12:56:06 -05:00
assert . Assert ( c , strings . Contains ( out , "invalid filter" ) , "couldn't find the invalid filter warning" )
2016-05-20 07:41:28 -04:00
out , _ , err = dockerCmdWithError ( "search" , "-f" , "is-automated=a" , "busybox" )
2019-04-04 09:23:19 -04:00
assert . ErrorContains ( c , err , "" , out )
2022-03-02 12:56:06 -05:00
assert . Assert ( c , strings . Contains ( out , "invalid filter" ) , "couldn't find the invalid filter warning" )
2016-05-20 07:41:28 -04:00
out , _ , err = dockerCmdWithError ( "search" , "-f" , "is-official=a" , "busybox" )
2019-04-04 09:23:19 -04:00
assert . ErrorContains ( c , err , "" , out )
2022-03-02 12:56:06 -05:00
assert . Assert ( c , strings . Contains ( out , "invalid filter" ) , "couldn't find the invalid filter warning" )
2015-04-02 20:55:08 -04:00
}
2015-04-13 21:23:26 -04:00
2022-06-16 17:32:10 -04:00
func ( s * DockerCLISearchSuite ) TestSearchCmdOptions ( c * testing . T ) {
2019-05-22 08:55:14 -04:00
outSearchCmd , _ := dockerCmd ( c , "search" , "busybox" )
assert . Assert ( c , strings . Count ( outSearchCmd , "\n" ) > 3 , outSearchCmd )
2019-11-27 09:36:45 -05:00
outSearchCmdautomated , _ := dockerCmd ( c , "search" , "--filter" , "is-automated=true" , "busybox" ) // The busybox is a busybox base image, not an AUTOMATED image.
2019-05-22 08:55:14 -04: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 09:36:45 -05:00
outSearchCmdNotOfficial , _ := dockerCmd ( c , "search" , "--filter" , "is-official=false" , "busybox" ) // The busybox is a busybox base image, official image.
2019-05-22 08:55:14 -04: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 09:36:45 -05:00
outSearchCmdOfficial , _ := dockerCmd ( c , "search" , "--filter" , "is-official=true" , "busybox" ) // The busybox is a busybox base image, official image.
2019-05-22 08:55:14 -04: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 07:44:40 -04:00
// search for repos which start with "ubuntu-" on the central registry
2022-06-16 17:32:10 -04:00
func ( s * DockerCLISearchSuite ) TestSearchOnCentralRegistryWithDash ( c * testing . T ) {
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
2022-06-16 17:32:10 -04:00
func ( s * DockerCLISearchSuite ) TestSearchWithLimit ( c * testing . T ) {
2019-07-17 07:09:17 -04: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
}
2022-03-02 07:29:47 -05:00
for _ , limit := range [ ] int { - 1 , 101 } {
2019-07-17 07:09:17 -04:00
_ , _ , err := dockerCmdWithError ( "search" , fmt . Sprintf ( "--limit=%d" , limit ) , "docker" )
assert . ErrorContains ( c , err , "" )
}
2016-06-01 16:38:14 -04:00
}