Ver Fonte

support yq prior to 4.18.1 (#1466)

mmetc há 3 anos atrás
pai
commit
6de175ad8a

+ 6 - 6
tests/bats/02_nolapi.bats

@@ -37,7 +37,7 @@ declare stderr
 
 @test "$FILE crowdsec should not run without LAPI (no api.server in configuration file)" {
     skip
-    yq 'del(.api.server)' -i "${CONFIG_YAML}"
+    yq e 'del(.api.server)' -i "${CONFIG_YAML}"
     run -1 --separate-stderr timeout 2s "${CROWDSEC}"
 
     run -0 echo "$stderr"
@@ -45,7 +45,7 @@ declare stderr
 }
 
 @test "$FILE capi status shouldn't be ok without api.server" {
-    yq 'del(.api.server)' -i "${CONFIG_YAML}"
+    yq e 'del(.api.server)' -i "${CONFIG_YAML}"
     run -1 --separate-stderr cscli capi status
 
     run -0 echo "$stderr"
@@ -53,7 +53,7 @@ declare stderr
 }
 
 @test "$FILE cscli config show -o human" {
-    yq 'del(.api.server)' -i "${CONFIG_YAML}"
+    yq e 'del(.api.server)' -i "${CONFIG_YAML}"
     run -0 cscli config show -o human
     assert_output --partial "Global:"
     assert_output --partial "Crowdsec:"
@@ -62,7 +62,7 @@ declare stderr
 }
 
 @test "$FILE cscli config backup" {
-    yq 'del(.api.server)' -i "${CONFIG_YAML}"
+    yq e 'del(.api.server)' -i "${CONFIG_YAML}"
     backupdir=$(TMPDIR="${BATS_TEST_TMPDIR}" mktemp -u)
     run -0 cscli config backup "${backupdir}"
     assert_output --partial "Starting configuration backup"
@@ -75,7 +75,7 @@ declare stderr
 }
 
 @test "$FILE lapi status shouldn't be ok without api.server" {
-    yq 'del(.api.server)' -i "${CONFIG_YAML}"
+    yq e 'del(.api.server)' -i "${CONFIG_YAML}"
     ./instance-crowdsec start || true 
     run -1 --separate-stderr cscli machines list
     run -0 echo "$stderr"
@@ -84,7 +84,7 @@ declare stderr
 
 @test "$FILE cscli metrics" {
     skip 'need to trigger metrics with a live parse'
-    yq 'del(.api.server)' -i "${CONFIG_YAML}"
+    yq e 'del(.api.server)' -i "${CONFIG_YAML}"
     ./instance-crowdsec start
     run -0 --separate-stderr cscli metrics
     assert_output --partial "ROUTE"

+ 1 - 1
tests/bats/03_noagent.bats

@@ -25,7 +25,7 @@ declare stderr
 #----------
 
 config_disable_agent() {
-    yq 'del(.crowdsec_service)' -i "${CONFIG_YAML}"
+    yq e 'del(.crowdsec_service)' -i "${CONFIG_YAML}"
 }
 
 @test "$FILE with agent: test without -no-cs flag" {

+ 1 - 1
tests/bats/04_nocapi.bats

@@ -25,7 +25,7 @@ declare stderr
 #----------
 
 config_disable_capi() {
-    yq 'del(.api.server.online_client)' -i "${CONFIG_YAML}"
+    yq e 'del(.api.server.online_client)' -i "${CONFIG_YAML}"
 }
 
 @test "$FILE without capi: crowdsec LAPI should still work" {

+ 3 - 3
tests/bats/70_http_plugin.bats

@@ -15,18 +15,18 @@ setup_file() {
     export MOCK_URL
 
     # https://mikefarah.gitbook.io/yq/operators/env-variable-operators
-    yq '
+    yq e '
         .url=strenv(MOCK_URL) |
         .group_wait="5s" |
         .group_threshold=2
     ' -i "$(config_yq '.config_paths.notification_dir')/http.yaml"
 
-    yq '
+    yq e '
         .notifications=["http_default"] |
         .filters=["Alert.GetScope() == \"Ip\""]
     ' -i "$(config_yq '.api.server.profiles_path')"
 
-    yq '
+    yq e '
         .plugin_config.user="" |
         .plugin_config.group=""
     ' -i "${CONFIG_YAML}"

+ 3 - 3
tests/bats/71_dummy_plugin.bats

@@ -12,18 +12,18 @@ setup_file() {
     tempfile=$(TMPDIR="${BATS_FILE_TMPDIR}" mktemp)
     export tempfile
 
-    yq '
+    yq e '
        .group_wait="5s" |
        .group_threshold=2 |
        .output_file=strenv(tempfile)
        ' -i "$(config_yq '.config_paths.notification_dir')/dummy.yaml"
 
-    yq '
+    yq e '
        .notifications=["dummy_default"] |
        .filters=["Alert.GetScope() == \"Ip\""]
        ' -i "$(config_yq '.api.server.profiles_path')"
 
-    yq '
+    yq e '
        .plugin_config.user="" |
        .plugin_config.group=""
        ' -i "${CONFIG_YAML}"

+ 10 - 3
tests/check-requirements

@@ -25,6 +25,13 @@ check_python3() {
     fi
 }
 
+check_jq() {
+    # shellcheck disable=SC2016
+    if ! command -v jq >/dev/null; then
+        die "Missing required program 'jq'"
+    fi
+}
+
 check_nc() {
     if ! command -v nc >/dev/null; then
         die "missing required program 'nc' (package 'netcat-openbsd')"
@@ -40,7 +47,6 @@ check_yq() {
     if ! (yq --version | grep mikefarah >/dev/null); then
         die "yq exists but it's not the one we need (mikefarah/yq). $howto_install"
     fi
-
 }
 
 check_daemonizer() {
@@ -69,10 +75,11 @@ check_gocovmerge() {
 }
 
 check_bats_core
-check_python3
+check_daemonizer
+check_jq
 check_nc
+check_python3
 check_yq
-check_daemonizer
 if [ -n "${TEST_COVERAGE}" ]; then
     check_gocovmerge
 fi

+ 2 - 2
tests/lib/config/config-local

@@ -56,7 +56,7 @@ config_generate() {
     cp ../plugins/notifications/*/{http,email,slack,splunk,dummy}.yaml \
        "${CONFIG_DIR}/notifications/"
 
-    yq '
+    yq e '
     .common.daemonize=true |
     del(.common.pid_dir) |
     .common.log_level="info" |
@@ -74,7 +74,7 @@ config_generate() {
     .api.server.profiles_path=strenv(CONFIG_DIR)+"/profiles.yaml" |
     .api.server.console_path=strenv(CONFIG_DIR)+"/console.yaml" |
     .api.server.online_client.credentials_path=strenv(CONFIG_DIR)+"/online_api_credentials.yaml"
-    ' <../config/config.yaml >"${CONFIG_DIR}/config.yaml"
+    ' - <../config/config.yaml >"${CONFIG_DIR}/config.yaml"
 }
 
 make_init_data() {

+ 1 - 1
tests/lib/db/instance-mysql

@@ -83,7 +83,7 @@ restore() {
 }
 
 config_yaml() {
-    MYSQL_PORT=${MYSQL_PORT} MYSQL_HOST=${MYSQL_HOST} yq '
+    MYSQL_PORT=${MYSQL_PORT} MYSQL_HOST=${MYSQL_HOST} yq e '
         .db_config.type=strenv(DB_BACKEND)|
         .db_config.user="crowdsec_test" |
         .db_config.password="crowdsec_test" |

+ 1 - 1
tests/lib/db/instance-postgres

@@ -60,7 +60,7 @@ restore() {
 }
 
 config_yaml() {
-    yq '
+    yq e '
         .db_config.type=strenv(DB_BACKEND)|
         .db_config.user="crowdsec_test" |
         .db_config.password="crowdsec_test" |

+ 2 - 2
tests/lib/db/instance-sqlite

@@ -49,12 +49,12 @@ restore() {
 # ---------------------------
 # In most cases this is called with setup argument, and it shouldn't fail for missing config file.
 if [ -f "${CONFIG_YAML}" ] ; then
-    DATA_DIR=$(yq '.config_paths.data_dir' <"${CONFIG_YAML}")
+    DATA_DIR=$(yq e '.config_paths.data_dir' - <"${CONFIG_YAML}")
     DB_FILE="${DATA_DIR}/crowdsec.db"
 fi
 
 config_yaml() {
-    yq '
+    yq e '
         .db_config.type=strenv(DB_BACKEND) |
         .db_config.db_path="${DB_FILE}"
     ' -i "${CONFIG_YAML}"

+ 1 - 1
tests/lib/setup_file.sh

@@ -34,7 +34,7 @@ cscli() {
 export -f cscli
 
 config_yq() {
-    yq <"${CONFIG_YAML}" "$@"
+    yq e "$@" - <"${CONFIG_YAML}"
 }
 export -f config_yq