diff --git a/acceptance_tests/inputs-format-auto.sh b/acceptance_tests/inputs-format-auto.sh new file mode 100755 index 0000000000..4732eb8124 --- /dev/null +++ b/acceptance_tests/inputs-format-auto.sh @@ -0,0 +1,221 @@ +#!/bin/bash + +setUp() { + rm test*.yml 2>/dev/null || true + rm test*.json 2>/dev/null || true + rm test*.properties 2>/dev/null || true + rm test*.csv 2>/dev/null || true + rm test*.tsv 2>/dev/null || true + rm test*.xml 2>/dev/null || true +} + +testInputJson() { + cat >test.json <test.properties <test.properties <test.csv <test.tsv <test.xml <BiBi +EOL + + read -r -d '' expected << EOM +cat: + +content: BiBi + +@legs: "4" +EOM + + X=$(./yq e test.xml) + assertEquals "$expected" "$X" + + X=$(./yq ea test.xml) + assertEquals "$expected" "$X" +} + +testInputXmlNamespaces() { + cat >test.xml < + + +EOL + + read -r -d '' expected << EOM ++p_xml: version="1.0" +map: + +@xmlns: some-namespace + +@xmlns:xsi: some-instance + +@xsi:schemaLocation: some-url +EOM + + X=$(./yq e test.xml) + assertEquals "$expected" "$X" + + X=$(./yq ea test.xml) + assertEquals "$expected" "$X" +} + +testInputXmlRoundtrip() { + cat >test.xml < + +Meow +EOL + + read -r -d '' expected << EOM + + +Meow +EOM + + X=$(./yq -o=xml test.xml) + assertEquals "$expected" "$X" + + X=$(./yq ea -o=xml test.xml) + assertEquals "$expected" "$X" +} + + +testInputXmlStrict() { + cat >test.xml < + + +]> + + &writer;©right; + +EOL + + X=$(./yq --xml-strict-mode test.xml -o=xml 2>&1) + assertEquals 1 $? + assertEquals "Error: bad file 'test.xml': XML syntax error on line 7: invalid character entity &writer;" "$X" + + X=$(./yq ea --xml-strict-mode test.xml -o=xml 2>&1) + assertEquals "Error: bad file 'test.xml': XML syntax error on line 7: invalid character entity &writer;" "$X" +} + +testInputXmlGithubAction() { + cat >test.xml <BiBi +EOL + + read -r -d '' expected << EOM +cat: + +content: BiBi + +@legs: "4" +EOM + + X=$(cat /dev/null | ./yq e test.xml) + assertEquals "$expected" "$X" + + X=$(cat /dev/null | ./yq ea test.xml) + assertEquals "$expected" "$X" +} + +source ./scripts/shunit2