#!/bin/bash setUp() { rm test*.yml || true cat >test.yml <<EOL --- a: test EOL } testLeadingSeperatorWithDoc() { cat >test.yml <<EOL # hi peeps # cool --- a: test --- b: cool EOL read -r -d '' expected << EOM # hi peeps # cool --- a: thing --- b: cool EOM X=$(./yq e '(select(di == 0) | .a) = "thing"' - < test.yml) assertEquals "$expected" "$X" } testLeadingSeperatorPipeIntoEvalSeq() { X=$(./yq e - < test.yml) expected=$(cat test.yml) assertEquals "$expected" "$X" } testLeadingSeperatorExtractField() { X=$(./yq e '.a' - < test.yml) assertEquals "test" "$X" } testLeadingSeperatorExtractFieldWithCommentsAfterSep() { cat >test.yml <<EOL --- # hi peeps # cool a: test EOL X=$(./yq e '.a' test.yml) assertEquals "test" "$X" } testLeadingSeperatorExtractFieldWithCommentsBeforeSep() { cat >test.yml <<EOL # hi peeps # cool --- a: test EOL X=$(./yq e '.a' test.yml) assertEquals "test" "$X" } testLeadingSeperatorExtractFieldMultiDoc() { cat >test.yml <<EOL --- a: test --- a: test2 EOL read -r -d '' expected << EOM test --- test2 EOM X=$(./yq e '.a' test.yml) assertEquals "$expected" "$X" } testLeadingSeperatorExtractFieldMultiDocWithComments() { cat >test.yml <<EOL # here --- # there a: test # whereever --- # you are a: test2 # woop EOL read -r -d '' expected << EOM test --- test2 EOM X=$(./yq e '.a' test.yml) assertEquals "$expected" "$X" } testLeadingSeperatorEvalSeq() { X=$(./yq e test.yml) expected=$(cat test.yml) assertEquals "$expected" "$X" } testLeadingSeperatorPipeIntoEvalAll() { X=$(./yq ea - < test.yml) expected=$(cat test.yml) assertEquals "$expected" "$X" } testLeadingSeperatorEvalAll() { X=$(./yq ea test.yml) expected=$(cat test.yml) assertEquals "$expected" "$X" } testLeadingSeperatorMultiDocEvalSimple() { read -r -d '' expected << EOM --- a: test --- version: 3 application: MyApp EOM X=$(./yq e '.' test.yml examples/order.yaml) assertEquals "$expected" "$X" } testLeadingSeperatorMultiDocInOneFile() { cat >test.yml <<EOL --- # hi peeps # cool a: test --- b: things EOL expected=$(cat test.yml) X=$(./yq e '.' test.yml) assertEquals "$expected" "$X" } testLeadingSeperatorMultiDocInOneFileEvalAll() { cat >test.yml <<EOL --- # hi peeps # cool a: test --- b: things EOL expected=$(cat test.yml) X=$(./yq ea '.' test.yml) assertEquals "$expected" "$X" } testLeadingSeperatorMultiDocEvalComments() { cat >test.yml <<EOL # hi peeps # cool a: test EOL cat >test2.yml <<EOL # this is another doc # great b: sane EOL read -r -d '' expected << EOM # hi peeps # cool a: test --- # this is another doc # great b: sane EOM X=$(./yq e '.' test.yml test2.yml) assertEquals "$expected" "$X" } testLeadingSeperatorMultiDocEvalCommentsTrailingSep() { cat >test.yml <<EOL # hi peeps # cool --- a: test EOL cat >test2.yml <<EOL # this is another doc # great --- b: sane EOL read -r -d '' expected << EOM # hi peeps # cool --- a: test --- # this is another doc # great --- b: sane EOM X=$(./yq e '.' test.yml test2.yml) assertEquals "$expected" "$X" } testLeadingSeperatorMultiMultiDocEvalCommentsTrailingSep() { cat >test.yml <<EOL # hi peeps # cool --- a: test --- a1: test2 EOL cat >test2.yml <<EOL # this is another doc # great --- b: sane --- b2: cool EOL read -r -d '' expected << EOM # hi peeps # cool --- a: test --- a1: test2 --- # this is another doc # great --- b: sane --- b2: cool EOM X=$(./yq e '.' test.yml test2.yml) assertEquals "$expected" "$X" } testLeadingSeperatorMultiDocEvalCommentsLeadingSep() { cat >test.yml <<EOL --- # hi peeps # cool a: test EOL cat >test2.yml <<EOL --- # this is another doc # great b: sane EOL read -r -d '' expected << EOM --- # hi peeps # cool a: test --- # this is another doc # great b: sane EOM X=$(./yq e '.' test.yml test2.yml) assertEquals "$expected" "$X" } # https://github.com/mikefarah/yq/issues/919 testLeadingSeparatorDoesNotBreakCommentsOnOtherFiles() { cat >test.yml <<EOL # a1 a: 1 # a2 EOL cat >test2.yml <<EOL # b1 b: 2 # b2 EOL read -r -d '' expected << EOM # a1 a: 1 # a2 # b1 b: 2 # b2 EOM X=$(./yq ea 'select(fi == 0) * select(fi == 1)' test.yml test2.yml) assertEquals "$expected" "$X" } testLeadingSeperatorMultiDocEvalCommentsStripComments() { cat >test.yml <<EOL --- # hi peeps # cool a: test --- # this is another doc # great b: sane EOL # it will be hard to remove that top level separator read -r -d '' expected << EOM a: test --- b: sane EOM X=$(./yq e '... comments=""' test.yml) assertEquals "$expected" "$X" } testLeadingSeperatorMultiDocEvalCommentsLeadingSepNoDocFlag() { cat >test.yml <<EOL --- # hi peeps # cool a: test --- # this is another doc # great b: sane EOL read -r -d '' expected << EOM # hi peeps # cool a: test # this is another doc # great b: sane EOM X=$(./yq e '.' --no-doc test.yml) assertEquals "$expected" "$X" } testLeadingSeperatorMultiDocEvalJsonFlag() { cat >test.yml <<EOL --- # hi peeps # cool a: test EOL cat >test2.yml <<EOL --- # this is another doc # great b: sane EOL read -r -d '' expected << EOM { "a": "test" } { "b": "sane" } EOM X=$(./yq e '.' -j test.yml test2.yml) assertEquals "$expected" "$X" } testLeadingSeperatorMultiDocEvalAllJsonFlag() { cat >test.yml <<EOL --- # hi peeps # cool a: test EOL cat >test2.yml <<EOL --- # this is another doc # great b: sane EOL read -r -d '' expected << EOM { "a": "test" } { "b": "sane" } EOM X=$(./yq ea '.' -j test.yml test2.yml) assertEquals "$expected" "$X" } testLeadingSeperatorMultiDocEvalAll() { read -r -d '' expected << EOM --- a: test --- version: 3 application: MyApp EOM X=$(./yq ea '.' test.yml examples/order.yaml) assertEquals "$expected" "$X" } source ./scripts/shunit2