addressing issue #39427 adding a flag --output to allow for either json or yaml.
updating with PR changes requested. latest changes to having short for human readable only, and error cases moved a bit to the end. rebase fixes latest pr. changes. small change moving return nil out of switch. updated the nil check for the error in the humanreadable case. more optimization in humanreadable code. pushed up current test changes, this is purely temporary finished writing tests updated test and function names. changed output extensions from .sh to output. updated version, version struct now just called Version and not VersionObj. made a few changes to testing. fixed testing issues, created better test and cleanup go format change.
This commit is contained in:
@@ -303,3 +303,100 @@ kube::test::if_supports_resource() {
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
|
||||
kube::test::version::object_to_file() {
|
||||
name=$1
|
||||
flags=${2:-""}
|
||||
file=$3
|
||||
kubectl version $flags | grep "$name Version:" | sed -e s/"$name Version: version.Info{"/'/' -e s/'}'/'/' -e s/', '/','/g -e s/':'/'=/g' -e s/'"'/""/g | tr , '\n' > "${file}"
|
||||
}
|
||||
|
||||
kube::test::version::json_object_to_file() {
|
||||
flags=$1
|
||||
file=$2
|
||||
kubectl version $flags --output json | sed -e s/'\"'/''/g -e s/'}'/''/g -e s/'{'/''/g -e s/'clientVersion:'/'clientVersion:,'/ -e s/'serverVersion:'/'serverVersion:,'/ | tr , '\n' > "${file}"
|
||||
}
|
||||
|
||||
kube::test::version::json_client_server_object_to_file() {
|
||||
flags=$1
|
||||
name=$2
|
||||
file=$3
|
||||
kubectl version $flags --output json | jq -r ".${name}" | sed -e s/'\"'/''/g -e s/'}'/''/g -e s/'{'/''/g -e /^$/d -e s/','/''/g -e s/':'/'='/g > "${file}"
|
||||
}
|
||||
|
||||
kube::test::version::yaml_object_to_file() {
|
||||
flags=$1
|
||||
file=$2
|
||||
kubectl version $flags --output yaml | sed -e s/' '/''/g -e s/'\"'/''/g -e /^$/d > "${file}"
|
||||
}
|
||||
|
||||
kube::test::version::diff_assert() {
|
||||
local original=$1
|
||||
local comparator=${2:-"eq"}
|
||||
local latest=$3
|
||||
local diff_msg=${4:-""}
|
||||
local res=""
|
||||
|
||||
if [ ! -f $original ]; then
|
||||
echo ${bold}${red}
|
||||
echo "FAIL! ${diff_msg}"
|
||||
echo "the file '${original}' does not exit"
|
||||
echo ${reset}${red}
|
||||
caller
|
||||
echo ${reset}
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ ! -f $latest ]; then
|
||||
echo ${bold}${red}
|
||||
echo "FAIL! ${diff_msg}"
|
||||
echo "the file '${latest}' does not exit"
|
||||
echo ${reset}${red}
|
||||
caller
|
||||
echo ${reset}
|
||||
return 1
|
||||
fi
|
||||
|
||||
sort ${original} > "${original}.sorted"
|
||||
sort ${latest} > "${latest}.sorted"
|
||||
|
||||
if [ "$comparator" == "eq" ]; then
|
||||
if [ "$(diff -iwB ${original}.sorted ${latest}.sorted)" == "" ] ; then
|
||||
echo -n ${green}
|
||||
echo "Successful: ${diff_msg}"
|
||||
echo -n ${reset}
|
||||
return 0
|
||||
else
|
||||
echo ${bold}${red}
|
||||
echo "FAIL! ${diff_msg}"
|
||||
echo " Expected: "
|
||||
echo "$(cat ${original})"
|
||||
echo " Got: "
|
||||
echo "$(cat ${latest})"
|
||||
echo ${reset}${red}
|
||||
caller
|
||||
echo ${reset}
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
if [ ! -z "$(diff -iwB ${original}.sorted ${latest}.sorted)" ] ; then
|
||||
echo -n ${green}
|
||||
echo "Successful: ${diff_msg}"
|
||||
echo -n ${reset}
|
||||
return 0
|
||||
else
|
||||
echo ${bold}${red}
|
||||
echo "FAIL! ${diff_msg}"
|
||||
echo " Expected: "
|
||||
echo "$(cat ${original})"
|
||||
echo " Got: "
|
||||
echo "$(cat ${latest})"
|
||||
echo ${reset}${red}
|
||||
caller
|
||||
echo ${reset}
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user