mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 07:32:44 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/Shell
 | |
| 
 | |
| source $(dirname "$0")/test-commons.inc
 | |
| # go to a writable directory
 | |
| cd /tmp
 | |
| 
 | |
| # Simple usage, single doc
 | |
| echo <<-test > sh.doc.test
 | |
| this is a test
 | |
| test
 | |
| if test "$(cat sh.doc.test)" != "this is a test" {
 | |
|     fail "Could not use normal interpolated heredoc"
 | |
| }
 | |
| 
 | |
| echo <<-'test' > sh.doc.test
 | |
| this is a test
 | |
| test
 | |
| if test "$(cat sh.doc.test)" != "this is a test" {
 | |
|     fail "Could not use normal non-interpolated heredoc"
 | |
| }
 | |
| 
 | |
| echo <<~test > sh.doc.test
 | |
|     this is a test
 | |
| test
 | |
| if test "$(cat sh.doc.test)" != "this is a test" {
 | |
|     fail "Could not use normal dedented heredoc"
 | |
| }
 | |
| 
 | |
| echo <<~'test' > sh.doc.test
 | |
|     this is a test
 | |
| test
 | |
| if test "$(cat sh.doc.test)" != "this is a test" {
 | |
|     fail "Could not use normal non-interpolated dedented heredoc"
 | |
| }
 | |
| 
 | |
| var=test
 | |
| echo <<-test > sh.doc.test
 | |
| this is a $var
 | |
| test
 | |
| if test "$(cat sh.doc.test)" != "this is a test" {
 | |
|     fail "Could not use interpolated heredoc with interpolation"
 | |
| }
 | |
| 
 | |
| echo <<~test > sh.doc.test
 | |
|     this is a $var
 | |
| test
 | |
| if test "$(cat sh.doc.test)" != "this is a test" {
 | |
|     fail "Could not use dedented interpolated heredoc with interpolation"
 | |
| }
 | |
| 
 | |
| # Multiple heredocs
 | |
| echo <<-test <<-test2 > sh.doc.test
 | |
| contents for test
 | |
| test
 | |
| contents for test2
 | |
| test2
 | |
| if test "$(cat sh.doc.test)" != "contents for test contents for test2" {
 | |
|     fail "Could not use two heredocs"
 | |
| }
 | |
| 
 | |
| # Why would you do this you crazy person?
 | |
| if test "$(echo <<~text)" != "test" {
 | |
|                 test
 | |
|                 text
 | |
|     fail "Could not use heredocs in a weird place"
 | |
| }
 | |
| 
 | |
| # Now let's try something _really_ weird!
 | |
| if test "$(echo <<~test1)" != "$(echo <<~test2)" { fail "The parser forgot about heredocs after a block, oops" }
 | |
| test
 | |
| test1
 | |
| test
 | |
| test2
 | |
| 
 | |
| rm -f sh.doc.test
 | |
| # return to original directory
 | |
| cd -
 | |
| pass
 | 
