(List (Com {[LIT_CHARS set]} {[LIT_CHARS -eu]}) (= scope= flags=0 words=[] bindings=[('SCRIPT_DIR', {[ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]]}) (Com {[LIT_CHARS pwd]}) )]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS source]} {[VarSub SCRIPT_DIR] [LIT_CHARS /testenv.sh]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "testenv.sh not found!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS setup_git_repository]}) (AndOr OP_OR_IF (Com {[LIT_CHARS source]} {[VarSub SCRIPT_DIR] [LIT_CHARS /relnotes.sh]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "relnotes.sh not found!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef set_up [] (Com {[LIT_CHARS cd]} {[VarSub MASTER_ROOT]}) ) (FunctionDef test_format_release_notes [] (List (= scope= flags=0 words=[] bindings=[('expected', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('input', {[Array {[DQ [LIT_CHARS "Lorem ipsus I do not know more of latin "][LIT_CHARS "than that but I need to type random text that spans multiple line so we "][LIT_CHARS "can test that the wrapping of lines works as intended."]]} {OP_NEWLINE "\n"} {[DQ [LIT_CHARS "Another thing I must type."]]} {OP_NEWLINE "\n"} {[DQ [LIT_CHARS "Yet another test that spans across multiple lines so I must type "][LIT_CHARS "some random stuff to test wrapping."]]}]})]) (Com {[LIT_CHARS assert_equals]} {[DQ [VarSub expected]]} {[DQ [ComSub (Com {[LIT_CHARS format_release_notes]} {[DQ [VarSub input bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]})]]}) ) ) (FunctionDef test_get_release_notes_commits [] (List (= scope= flags=0 words=[] bindings=[('commits', {[DQ [LIT_CHARS "0188971 957934c 7a99c7f b5ba24a c9041bf 8232d9b 422c731 e9029d4 "][LIT_CHARS "cc44636 06b09ce 29b05c8 67944d8 e8f6647 6d9fb36 f7c9922 5c0e4b2 9e387dd "][LIT_CHARS "98c9274 db4d861 a689f29 db487ce 965c392 bb59d88 d3461db cef25c4 14d905b"]]})]) (Com {[LIT_CHARS assert_equals]} {[DQ [VarSub commits]]} {[DQ [ComSub (Pipeline (Com {[LIT_CHARS get_release_notes_commits]} {[LIT_CHARS 00d7223]}) (Com {[LIT_CHARS xargs]}) )]]}) (Com {[LIT_CHARS assert_equals]} {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub commits]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]]} {[DQ [ComSub (Pipeline (Com {[LIT_CHARS get_release_notes_commits]} {[LIT_CHARS 00d7223]} {[LIT_CHARS 957934c]}) (Com {[LIT_CHARS xargs]}) )]]}) ) ) (= scope= flags=0 words=[] bindings=[('TEST_INC_CHANGE', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('TEST_NEW_CHANGE', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('TEST_CHANGE', {[SQ ]})]) (FunctionDef test_release_notes [] (List (Com {[LIT_CHARS assert_equals]} {[DQ [VarSub TEST_INC_CHANGE][ComSub (Com {[LIT_CHARS echo]})][VarSub TEST_NEW_CHANGE][ComSub (Com {[LIT_CHARS echo]})][VarSub TEST_CHANGE]]} {[DQ [ComSub (Com {[LIT_CHARS release_notes]} {[LIT_CHARS 965c392ab1d68d5bc23fdef3d86d635ec9d2da8e]})]]}) (Com {[LIT_CHARS assert_equals]} {[DQ [VarSub TEST_NEW_CHANGE][ComSub (Com {[LIT_CHARS echo]})][VarSub TEST_CHANGE]]} {[DQ [ComSub (Com {[LIT_CHARS release_notes]} {[LIT_CHARS 965c392ab1d68d5bc23fdef3d86d635ec9d2da8e]} {[LIT_CHARS bb59d88]})]]}) ) ) (FunctionDef test_get_last_release [] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]}) (If (Subshell (Com {[LIT_CHARS get_last_release]} {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /CHANGELOG.md]]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Should have returned false for initial release"]]}) ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "## No release\n"]]} 0), (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} "> 1), > ) (If (Subshell (Com {[LIT_CHARS get_last_release]} {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /CHANGELOG.md]]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Should have returned false when no release exists"]]}) ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "## New release\n"][LIT_CHARS "\n"][LIT_CHARS "Baseline: 965c392\n"][LIT_CHARS "\n"][LIT_CHARS "Initial release without cherry-picks\n"][LIT_CHARS "\n"]]} 0), (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} "> 1), > ) (Com {[LIT_CHARS assert_equals]} {[DQ [LIT_CHARS 965c392]]} {[DQ [ComSub (Com {[LIT_CHARS get_last_release]} {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /CHANGELOG.md]]})]]}) (Com {[LIT_CHARS mv]} {[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} {[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md.bak]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "## Cherry-picking bb59d88\n"][LIT_CHARS "\n"][LIT_CHARS "Baseline: 965c392\n"][LIT_CHARS "\n"][LIT_CHARS "Cherry picks:\n"][LIT_CHARS " + bb59d88: RELNOTES[INC]: Remove deprecated "][RIGHT_D_QUOTE "\""][LIT_CHARS "make var"][RIGHT_D_QUOTE "\""][LIT_CHARS " INCDIR\n"][LIT_CHARS "\n"][VarSub TEST_INC_CHANGE][LIT_CHARS "\n"]]} 0), (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} "> 1), > ) (Com {[LIT_CHARS cat]} {[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md.bak]} < (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} >"> 1), > ) (Com {[LIT_CHARS rm]} {[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md.bak]}) (Com {[LIT_CHARS assert_equals]} {[DQ [LIT_CHARS "965c392 bb59d88"]]} {[DQ [ComSub (Com {[LIT_CHARS get_last_release]} {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /CHANGELOG.md]]})]]}) (Com {[LIT_CHARS mv]} {[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} {[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md.bak]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "## Cherry-picking bb59d88 and 14d905b\n"][LIT_CHARS "\n"][LIT_CHARS "Baseline: 965c392\n"][LIT_CHARS "\n"][LIT_CHARS "Cherry picks:\n"][LIT_CHARS " + bb59d88: RELNOTES[INC]: Remove deprecated "][RIGHT_D_QUOTE "\""][LIT_CHARS "make var"][RIGHT_D_QUOTE "\""][LIT_CHARS " INCDIR\n"][LIT_CHARS " + 14d905b: Add --with_aspect_deps flag to blaze query. This flag\n"][LIT_CHARS " should produce additional information about aspect\n"][LIT_CHARS " dependencies when --output is set to {xml, proto}.\n"][LIT_CHARS "\n"][VarSub TEST_INC_CHANGE][LIT_CHARS "\n"][VarSub TEST_NEW_CHANGE][LIT_CHARS "\n"]]} 0), (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} "> 1), > ) (Com {[LIT_CHARS cat]} {[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md.bak]} < (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} >"> 1), > ) (Com {[LIT_CHARS rm]} {[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md.bak]}) (Com {[LIT_CHARS assert_equals]} {[DQ [LIT_CHARS "965c392 bb59d88 14d905b"]]} {[DQ [ComSub (Com {[LIT_CHARS get_last_release]} {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /CHANGELOG.md]]})]]}) ) ) (FunctionDef test_create_release_notes [] (List (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "## New release\n"][LIT_CHARS "\n"][LIT_CHARS "Baseline: 965c392\n"][LIT_CHARS "\n"][LIT_CHARS "Initial release without cherry-picks\n"][LIT_CHARS "\n"]]} 0), (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} "> 1), > ) (Com {[LIT_CHARS assert_equals]} {[DQ [VarSub TEST_INC_CHANGE][ComSub (Com {[LIT_CHARS echo]})][VarSub TEST_NEW_CHANGE][ComSub (Com {[LIT_CHARS echo]})][VarSub TEST_CHANGE]]} {[DQ [ComSub (Com {[LIT_CHARS create_release_notes]} {[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]})]]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "## Cherry-picking bb59d88\n"] [LIT_CHARS "\n"] [LIT_CHARS "```\n"] [LIT_CHARS "Baseline: 965c392\n"] [LIT_CHARS "\n"] [LIT_CHARS "Cherry picks:\n"] [LIT_CHARS " + bb59d88: RELNOTES[INC]: Remove deprecated \"make var\" INCDIR\n"] [LIT_CHARS "```\n"] [LIT_CHARS "\n"]} 0), (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [VarSub TEST_INC_CHANGE][LIT_CHARS "\n"]]} 0), (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} >"> 1), > ) (Com {[LIT_CHARS assert_equals]} {[DQ [VarSub TEST_NEW_CHANGE][ComSub (Com {[LIT_CHARS echo]})][VarSub TEST_CHANGE]]} {[DQ [ComSub (Com {[LIT_CHARS create_release_notes]} {[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]})]]}) (Com {[LIT_CHARS assert_equals]} {[DQ [LIT_CHARS "965c392 bb59d88"]]} {[DQ [ComSub (Com {[LIT_CHARS get_last_release]} {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /CHANGELOG.md]]})]]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "## Cherry-picking bb59d88 and 14d905b\n"] [LIT_CHARS "\n"] [LIT_CHARS "```\n"] [LIT_CHARS "Baseline: 965c392\n"] [LIT_CHARS "\n"] [LIT_CHARS "Cherry picks:\n"] [LIT_CHARS " + bb59d88: RELNOTES[INC]: Remove deprecated \"make var\" INCDIR\n"] [LIT_CHARS " + 14d905b: Add --with_aspect_deps flag to blaze query. This flag\n"] [LIT_CHARS " should produce additional information about aspect\n"] [LIT_CHARS " dependencies when --output is set to {xml, proto}.\n"] [LIT_CHARS "```\n"] [LIT_CHARS "\n"]} 0), (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [VarSub TEST_INC_CHANGE][LIT_CHARS "\n"][VarSub TEST_NEW_CHANGE][LIT_CHARS "\n"]]} 0), (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]} >"> 1), > ) (Com {[LIT_CHARS assert_equals]} {[DQ [VarSub TEST_CHANGE]]} {[DQ [ComSub (Com {[LIT_CHARS create_release_notes]} {[VarSub TEST_TMPDIR] [LIT_CHARS /CHANGELOG.md]})]]}) ) ) (FunctionDef test_create_revision_information [] (List (= scope= flags=0 words=[] bindings=[('expected', {[SQ ]})]) (Com {[LIT_CHARS assert_equals]} {[DQ [VarSub expected]]} {[DQ [ComSub (Com {[LIT_CHARS create_revision_information]} {[LIT_CHARS 965c392ab1d68d5bc23fdef3d86d635ec9d2da8e]} {[LIT_CHARS bb59d88]} {[LIT_CHARS 14d905b5cce9a1bbc2911331809b03679b23dad1]})]]}) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS "Release notes generation tests"]]}) )