From 07ed8ac3e32c02f875c8c896541f91c1269f110c Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Wed, 29 Mar 2017 16:53:06 +0200 Subject: [PATCH] new correctif andor --- 42sh/42ShellTester/logmini | 2929 +------------------------------ 42sh/another_file | 972 ++++++++++ 42sh/file | 20 +- 42sh/includes/types.h | 4 +- 42sh/sample/again.sh | 1 + 42sh/src/parser/aggregate_sym.c | 37 +- 42sh/src/parser/eval_sym.c | 130 +- 42sh/src/parser/produce_sym.c | 12 +- 42sh/src/parser/read_stack.c | 6 +- 9 files changed, 1106 insertions(+), 3005 deletions(-) diff --git a/42sh/42ShellTester/logmini b/42sh/42ShellTester/logmini index c03edd7c..b8c05d8a 100644 --- a/42sh/42ShellTester/logmini +++ b/42sh/42ShellTester/logmini @@ -1,2911 +1,4 @@ -............................xx....x....x............xxx......xxxxx...xxxxxxxxxx.......xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxx....xxx.x........x..xxxxxx...xxx............xxxxxx.................xx......xxx...~x.........~~..xxxxxxxx...x...~......xx........~...........~.....~........... - ----------------------------------------------------------------- - -21sh/redirections/outputs/truncating/multiple/004-together (FAILED) - - Description: - A right redirection can be associated to the twice outputs by using `&>...`, that means `redirect stdout and stderr to ...`. - - Before test: - 01: rm -f "new_file_stderr_and_stdout" - - STDIN: - 01: ./write_on_stdout_and_stderr TOKEN201703291601_1 TOKEN201703291601_2 &>new_file_stderr_and_stdout - - STDOUT: - FAILURE expected_to_not match_regex `TOKEN201703291601_1` - SUCCESS expected_to_not match_regex `TOKEN201703291601_2` - 01: TOKEN201703291601_1 - - STDERR: - SUCCESS expected_to_not match_regex `TOKEN201703291601_1` - FAILURE expected_to_not match_regex `TOKEN201703291601_2` - 01: TOKEN201703291601_2 - - MISC: - FAILURE expected_to create_file `new_file_stderr_and_stdout` matching_regex `TOKEN201703291601_1$` - FAILURE expected_to create_file `new_file_stderr_and_stdout` matching_regex `TOKEN201703291601_2$` - ----------------------------------------------------------------- - -21sh/redirections/outputs/truncating/multiple/005-together-with-whitespaces (FAILED) - - Description: - A right redirection can be associated to the twice outputs by using `&>...`, that means `redirect stdout and stderr to ...`. - In this test, we specify the file name in a separate field. - - Before test: - 01: rm -f new_file_stderr_and_stdout - - STDIN: - 01: ./write_on_stdout_and_stderr TOKEN201703291601_1 TOKEN201703291601_2 &> new_file_stderr_and_stdout - - STDOUT: - FAILURE expected_to_not match_regex `TOKEN201703291601_1` - SUCCESS expected_to_not match_regex `TOKEN201703291601_2` - 01: TOKEN201703291601_1 - - STDERR: - SUCCESS expected_to_not match_regex `TOKEN201703291601_1` - FAILURE expected_to_not match_regex `TOKEN201703291601_2` - 01: TOKEN201703291601_2 - - MISC: - FAILURE expected_to create_file `new_file_stderr_and_stdout` matching_regex `TOKEN201703291601_1$` - FAILURE expected_to create_file `new_file_stderr_and_stdout` matching_regex `TOKEN201703291601_2$` - ----------------------------------------------------------------- - -21sh/separators/semicolon/003-parse-error-empty-inline-command (FAILED) - - Description: - The purpose of this test is to check that using the simicolon separator `;` with empty commands results in error. - - STDIN: - 01: ./write_on_stdout TOKEN201703291601 ; ; ./exit_with_status 42 - - STDOUT: - SUCCESS expected_to be_empty - (no output) - - STDERR: - SUCCESS expected_to_not be_empty - SUCCESS might match_regex `([Ss]yntax|[Pp]arse) error` - 01: syntax error near unexpected token `;' - - MISC: - SUCCESS expected_to_not exit_with_status `42` - FAILURE expected_to_not exit_with_status `0` - ----------------------------------------------------------------- - -42sh/builtins/export/004-export-empty-variable-1 (FAILED) - - Description: - The purpose of this test is to check that exporting an empty variable does not add it to the environment. - - Before test: - 01: unset "TOKEN201703291601" - - STDIN: - 01: export TOKEN201703291601 - 02: ./display_env - - STDOUT: - FAILURE expected_to_not match_regex `TOKEN201703291601` - 01: ------------------------------ - 02: TERM_PROGRAM=iTerm.app - 03: TERM=screen-256color - 04: SHELL=/bin/zsh - 05: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 06: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 07: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 08: TERM_PROGRAM_VERSION=3.0.10 - 09: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 10: ZSH=/Users/ariard/.oh-my-zsh - 11: USER=ariard - 12: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 13: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 14: PAGER=less - 15: TMUX=/private/tmp/tmux-18965/default,460,2 - 16: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 17: LSCOLORS=Gxfxcxdxbxegedabagacad - 18: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 19: MAIL=ariard@student.42.fr - 20: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 21: LANG=en_US.UTF-8 - 22: ITERM_PROFILE=Default - 23: XPC_FLAGS=0x0 - 24: TMUX_PANE=%19 - 25: XPC_SERVICE_NAME=0 - 26: SHLVL=5 - 27: HOME=/Users/ariard - 28: COLORFGBG=7;0 - 29: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 30: LOGNAME=ariard - 31: LESS=-R - 32: LC_CTYPE=en_US.UTF-8 - 33: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 34: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 35: _=../../42sh - 36: ?=0 - 37: TOKEN201703291601= - 38: ------------------------------ - 39: TOTAL ENVIRONMENT VARIABLES: 36 - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/builtins/export/options/002-export-p-param-and-token-should-add-local-var-only-part1 (FAILED) - - Description: - The purpose of this test is to check if export with -p option + token , add the variable into export list but not in env list. And don't display the export variable on stdout. - - Before test: - 01: rm -f "./stored_env" - 02: unset "TOKEN201703291601_NAME" - 03: export | awk 'BEGIN {FS="="} $0 !~ /^(OLDPWD|_)/ {print $1"="}' > "./stored_env" - - STDIN: - 01: export -p TOKEN201703291601_NAME - 02: export - - STDOUT: - FAILURE expected_to_not match_each_regex_of_file `./stored_env` - FAILURE expected_to match_regex `TOKEN201703291601_NAME` - 01: export TERM_PROGRAM=iTerm.app - 02: export TERM=screen-256color - 03: export SHELL=/bin/zsh - 04: export HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 05: export TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 06: export Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 07: export TERM_PROGRAM_VERSION=3.0.10 - 08: export TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 09: export ZSH=/Users/ariard/.oh-my-zsh - 10: export USER=ariard - 11: export SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 12: export __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 13: export PAGER=less - 14: export TMUX=/private/tmp/tmux-18965/default,460,2 - 15: export HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 16: export LSCOLORS=Gxfxcxdxbxegedabagacad - 17: export PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 18: export MAIL=ariard@student.42.fr - 19: export PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 20: export LANG=en_US.UTF-8 - 21: export ITERM_PROFILE=Default - 22: export XPC_FLAGS=0x0 - 23: export TMUX_PANE=%19 - 24: export XPC_SERVICE_NAME=0 - 25: export SHLVL=5 - 26: export HOME=/Users/ariard - 27: export COLORFGBG=7;0 - 28: export ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 29: export LOGNAME=ariard - 30: export LESS=-R - 31: export LC_CTYPE=en_US.UTF-8 - 32: export TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 33: export OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 34: export _=../../42sh - 35: export ?=0 - 36: export TERM_PROGRAM=iTerm.app - 37: export TERM=screen-256color - 38: export SHELL=/bin/zsh - 39: export HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 40: export TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 41: export Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 42: export TERM_PROGRAM_VERSION=3.0.10 - 43: export TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 44: export ZSH=/Users/ariard/.oh-my-zsh - 45: export USER=ariard - 46: export SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 47: export __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 48: export PAGER=less - 49: export TMUX=/private/tmp/tmux-18965/default,460,2 - 50: export HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 51: export LSCOLORS=Gxfxcxdxbxegedabagacad - 52: export PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 53: export MAIL=ariard@student.42.fr - 54: export PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 55: export LANG=en_US.UTF-8 - 56: export ITERM_PROFILE=Default - 57: export XPC_FLAGS=0x0 - 58: export TMUX_PANE=%19 - 59: export XPC_SERVICE_NAME=0 - 60: export SHLVL=5 - 61: export HOME=/Users/ariard - 62: export COLORFGBG=7;0 - 63: export ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 64: export LOGNAME=ariard - 65: export LESS=-R - 66: export LC_CTYPE=en_US.UTF-8 - 67: export TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 68: export OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 69: export _=../../42sh - 70: export ?=0 - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/builtins/export/options/003-export-p-param-and-token-should-add-local-var-only-part2 (FAILED) - - Description: - The purpose of this test is to check that the builtin `export` with option `-p` results in an added variable into the export list but not from the environment. - - Before test: - 01: rm -f "./stored_env" - 02: unset "TOKEN201703291601_NAME" - 03: export | awk 'BEGIN {FS="="} $0 !~ /^(OLDPWD|_)/ {print $1"="}' > "./stored_env" - - STDIN: - 01: export -p TOKEN201703291601_NAME - 02: ./display_env - - STDOUT: - FAILURE expected_to_not match_each_regex_of_file `./stored_env` - SUCCESS expected_to_not match_regex `TOKEN201703291601_NAME` - 01: export TERM_PROGRAM=iTerm.app - 02: export TERM=screen-256color - 03: export SHELL=/bin/zsh - 04: export HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 05: export TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 06: export Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 07: export TERM_PROGRAM_VERSION=3.0.10 - 08: export TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 09: export ZSH=/Users/ariard/.oh-my-zsh - 10: export USER=ariard - 11: export SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 12: export __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 13: export PAGER=less - 14: export TMUX=/private/tmp/tmux-18965/default,460,2 - 15: export HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 16: export LSCOLORS=Gxfxcxdxbxegedabagacad - 17: export PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 18: export MAIL=ariard@student.42.fr - 19: export PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 20: export LANG=en_US.UTF-8 - 21: export ITERM_PROFILE=Default - 22: export XPC_FLAGS=0x0 - 23: export TMUX_PANE=%19 - 24: export XPC_SERVICE_NAME=0 - 25: export SHLVL=5 - 26: export HOME=/Users/ariard - 27: export COLORFGBG=7;0 - 28: export ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 29: export LOGNAME=ariard - 30: export LESS=-R - 31: export LC_CTYPE=en_US.UTF-8 - 32: export TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 33: export OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 34: export _=../../42sh - 35: export ?=0 - 36: ------------------------------ - 37: TERM_PROGRAM=iTerm.app - 38: TERM=screen-256color - 39: SHELL=/bin/zsh - 40: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 41: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 42: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 43: TERM_PROGRAM_VERSION=3.0.10 - 44: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 45: ZSH=/Users/ariard/.oh-my-zsh - 46: USER=ariard - 47: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 48: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 49: PAGER=less - 50: TMUX=/private/tmp/tmux-18965/default,460,2 - 51: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 52: LSCOLORS=Gxfxcxdxbxegedabagacad - 53: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 54: MAIL=ariard@student.42.fr - 55: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 56: LANG=en_US.UTF-8 - 57: ITERM_PROFILE=Default - 58: XPC_FLAGS=0x0 - 59: TMUX_PANE=%19 - 60: XPC_SERVICE_NAME=0 - 61: SHLVL=5 - 62: HOME=/Users/ariard - 63: COLORFGBG=7;0 - 64: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 65: LOGNAME=ariard - 66: LESS=-R - 67: LC_CTYPE=en_US.UTF-8 - 68: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 69: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 70: _=../../42sh - 71: ?=0 - 72: ------------------------------ - 73: TOTAL ENVIRONMENT VARIABLES: 35 - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/builtins/export/options/004-export-n-param (FAILED) - - Description: - The purpose of this test is to check that using the builtin `export` with option `-n` results in a removed environment variable. - - Before test: - 01: export TOKEN201703291601_NAME=TOKEN201703291601_VALUE - - STDIN: - 01: export -n TOKEN201703291601_NAME - 02: export - 03: ./display_env - - STDOUT: - FAILURE expected_to_not match_regex `TOKEN201703291601_NAME` - 01: export TERM_PROGRAM=iTerm.app - 02: export TERM=screen-256color - 03: export SHELL=/bin/zsh - 04: export HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 05: export TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 06: export Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 07: export TERM_PROGRAM_VERSION=3.0.10 - 08: export OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 09: export TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 10: export ZSH=/Users/ariard/.oh-my-zsh - 11: export USER=ariard - 12: export SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 13: export __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 14: export PAGER=less - 15: export TMUX=/private/tmp/tmux-18965/default,460,2 - 16: export HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 17: export LSCOLORS=Gxfxcxdxbxegedabagacad - 18: export TOKEN201703291601_NAME=TOKEN201703291601_VALUE - 19: export PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 20: export MAIL=ariard@student.42.fr - 21: export PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 22: export LANG=en_US.UTF-8 - 23: export ITERM_PROFILE=Default - 24: export XPC_FLAGS=0x0 - 25: export TMUX_PANE=%19 - 26: export XPC_SERVICE_NAME=0 - 27: export SHLVL=5 - 28: export HOME=/Users/ariard - 29: export COLORFGBG=7;0 - 30: export ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 31: export LOGNAME=ariard - 32: export LESS=-R - 33: export LC_CTYPE=en_US.UTF-8 - 34: export TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 35: export _=../../42sh - 36: export ?=1 - 37: ------------------------------ - 38: TERM_PROGRAM=iTerm.app - 39: TERM=screen-256color - 40: SHELL=/bin/zsh - 41: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 42: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 43: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 44: TERM_PROGRAM_VERSION=3.0.10 - 45: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 46: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 47: ZSH=/Users/ariard/.oh-my-zsh - 48: USER=ariard - 49: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 50: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 51: PAGER=less - 52: TMUX=/private/tmp/tmux-18965/default,460,2 - 53: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 54: LSCOLORS=Gxfxcxdxbxegedabagacad - 55: TOKEN201703291601_NAME=TOKEN201703291601_VALUE - 56: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 57: MAIL=ariard@student.42.fr - 58: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 59: LANG=en_US.UTF-8 - 60: ITERM_PROFILE=Default - 61: XPC_FLAGS=0x0 - 62: TMUX_PANE=%19 - 63: XPC_SERVICE_NAME=0 - 64: SHLVL=5 - 65: HOME=/Users/ariard - 66: COLORFGBG=7;0 - 67: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 68: LOGNAME=ariard - 69: LESS=-R - 70: LC_CTYPE=en_US.UTF-8 - 71: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 72: _=../../42sh - 73: ?=0 - 74: ------------------------------ - 75: TOTAL ENVIRONMENT VARIABLES: 36 - - STDERR: - FAILURE expected_to be_empty - 01: export: invalid option -n - 02: ../../42sh: usage: export [name[=value] ...] or export -p - ----------------------------------------------------------------- - -42sh/escaping/mixed/globbing/brace-expansion/002-it-expands-braces-1 (FAILED) - - Description: - The purpose of this test is to check that using multiple escape characters `\\` results in a good behavior with the brace expansion. - - STDIN: - 01: ./write_all_arguments_on_stdout \\{1..2} - - STDOUT: - FAILURE expected_to match_regex `^\1@\2@$` - 01: \{1..2}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/escaping/mixed/globbing/brace-expansion/003-it-expands-braces-2 (FAILED) - - Description: - The purpose of this test is to check that using multiple escape characters `\\` results in a good behavior with the brace expansion. - - STDIN: - 01: ./write_all_arguments_on_stdout \\\{1..2} \\\\{1..2} \\\\\{1..2} \\\\\\{1..2} - - STDOUT: - FAILURE expected_to match_regex `^\[{]1..2}@\\1@\\2@\\[{]1..2}@\\\1@\\\2@$` - 01: \{1..2}@\\{1..2}@\\{1..2}@\\\{1..2}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/escaping/mixed/globbing/bracket-expansion/001-it-does-not-expand-brackets (FAILED) - - Description: - The purpose of this test is to check that escaping brackets does not result in an expansion process. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' 'b' 'c' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout \[abc] [abc\] \[abc\] - - STDOUT: - FAILURE expected_to match_regex `^[[]abc]@[[]abc]@[[]abc]@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/escaping/mixed/globbing/bracket-expansion/002-escaped-inversion-mark (FAILED) - - Description: - The purpose of this test is to check that the brackets expansion works with an inversion mark `!` or `^` as pattern. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' 'b' 'c' 'd' 'e' 'f' '!' '^' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [\!abc] - 02: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [\^abc] - - STDOUT: - FAILURE expected_to match_regex `!@` - FAILURE expected_to match_regex `[\^]@` - FAILURE expected_to match_regex `a@` - FAILURE expected_to match_regex `b@` - FAILURE expected_to match_regex `c@` - SUCCESS expected_to_not match_regex `d@` - SUCCESS expected_to_not match_regex `e@` - SUCCESS expected_to_not match_regex `f@` - WARNING might match_regex `^!@a@b@c@$` - WARNING might match_regex `^[\^]@a@b@c@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/escaping/mixed/globbing/bracket-expansion/003-it-takes-escaped-bracket-as-pattern-character (FAILED) - - Description: - The purpose of this test is to check that a closing bracket ']' may be escaped in a backet expansion pattern. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' 'b' 'c' 'd' 'e' 'f' ']' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [abc\]def] - 02: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [abc\\\]def] - 03: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [abc\\\\\]def] - 04: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [abc\\\\\\\]def] - - STDOUT: - FAILURE expected_to match_regex `a@` 4 times - FAILURE expected_to match_regex `b@` 4 times - FAILURE expected_to match_regex `c@` 4 times - FAILURE expected_to match_regex `]@` 4 times - FAILURE expected_to match_regex `d@` 4 times - FAILURE expected_to match_regex `e@` 4 times - FAILURE expected_to match_regex `f@` 4 times - SUCCESS expected_to_not match_regex `def` - WARNING might match_regex `^]@a@b@c@d@e@f@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/ascii-range/001-simple-ascending-1 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with an ASCII range in ascending order. - - STDIN: - 01: ./write_all_arguments_on_stdout {a..e} - - STDOUT: - FAILURE expected_to match_regex `^a@b@c@d@e@$` - 01: {a..e}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/ascii-range/002-simple-ascending-2 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with an ASCII range in ascending order. - - STDIN: - 01: ./write_all_arguments_on_stdout TOKEN201703291601{a..e}TOKEN201703291601 - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601aTOKEN201703291601@TOKEN201703291601bTOKEN201703291601@TOKEN201703291601cTOKEN201703291601@TOKEN201703291601dTOKEN201703291601@TOKEN201703291601eTOKEN201703291601@$` - 01: TOKEN201703291601{a..e}TOKEN201703291601@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/ascii-range/003-simple-ascending-3 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with an ASCII range in ascending order. - - STDIN: - 01: ./write_all_arguments_on_stdout {A..E} - - STDOUT: - FAILURE expected_to match_regex `^A@B@C@D@E@$` - 01: {A..E}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/ascii-range/004-simple-descending-1 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with an ASCII range in descending order. - - STDIN: - 01: ./write_all_arguments_on_stdout {E..A} - - STDOUT: - FAILURE expected_to match_regex `^E@D@C@B@A@$` - 01: {E..A}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/ascii-range/005-simple-descending-2 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with an ASCII range in descending order. - - STDIN: - 01: ./write_all_arguments_on_stdout TOKEN201703291601{E..A}TOKEN201703291601 - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601ETOKEN201703291601@TOKEN201703291601DTOKEN201703291601@TOKEN201703291601CTOKEN201703291601@TOKEN201703291601BTOKEN201703291601@TOKEN201703291601ATOKEN201703291601@$` - 01: TOKEN201703291601{E..A}TOKEN201703291601@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/ascii-range/006-simple-descending-3 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with an ASCII range in descending order. - - STDIN: - 01: ./write_all_arguments_on_stdout TOKEN201703291601{e..a} - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601e@TOKEN201703291601d@TOKEN201703291601c@TOKEN201703291601b@TOKEN201703291601a@$` - 01: TOKEN201703291601{e..a}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/ascii-range/007-identical-start-and-end (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a range of single ASCII value. - - STDIN: - 01: ./write_all_arguments_on_stdout {f..f} - - STDOUT: - FAILURE expected_to match_regex `^f@$` - 01: {f..f}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/ascii-range/008-multiple-1 (FAILED) - - Description: - The purpose of this test is to check that brace expansion may be performed with multiple brace patterns. - - STDIN: - 01: ./write_all_arguments_on_stdout {a..b}{c..d}{e..f} - - STDOUT: - FAILURE expected_to match_regex `^ace@acf@ade@adf@bce@bcf@bde@bdf@$` - 01: {a..b}{c..d}{e..f}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/ascii-range/009-multiple-2 (FAILED) - - Description: - The purpose of this test is to check that brace expansion may be performed with multiple brace patterns. - - STDIN: - 01: ./write_all_arguments_on_stdout TOKEN201703291601{a..b}abc{Z..X}def{s..s} - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601aabcZdefs@TOKEN201703291601aabcYdefs@TOKEN201703291601aabcXdefs@TOKEN201703291601babcZdefs@TOKEN201703291601babcYdefs@TOKEN201703291601babcXdefs@$` - 01: TOKEN201703291601{a..b}abc{Z..X}def{s..s}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/ascii-range/010-big-range (FAILED) - - Description: - The purpose of this test is to check that brace expansion may be performed with a big numeric range. - - STDIN: - 01: ./write_all_arguments_on_stdout {A..z} - - STDOUT: - FAILURE expected_to match_regex `^A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@.+@.?@.+@.+@_@.+@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@$` - 01: {A..z}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/001-simple-ascending-1 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a numeric range in ascending order. - - STDIN: - 01: ./write_all_arguments_on_stdout {1..5} - - STDOUT: - FAILURE expected_to match_regex `^1@2@3@4@5@$` - 01: {1..5}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/002-simple-ascending-2 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a numeric range in ascending order. - - STDIN: - 01: ./write_all_arguments_on_stdout TOKEN201703291601{1..5}TOKEN201703291601 - - STDOUT: - FAILURE expected_to match_regex `^TOKEN2017032916011TOKEN201703291601@TOKEN2017032916012TOKEN201703291601@TOKEN2017032916013TOKEN201703291601@TOKEN2017032916014TOKEN201703291601@TOKEN2017032916015TOKEN201703291601@$` - 01: TOKEN201703291601{1..5}TOKEN201703291601@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/003-simple-ascending-3 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a numeric range in ascending order. - - STDIN: - 01: ./write_all_arguments_on_stdout TOKEN201703291601{1..+5} - - STDOUT: - FAILURE expected_to match_regex `^TOKEN2017032916011@TOKEN2017032916012@TOKEN2017032916013@TOKEN2017032916014@TOKEN2017032916015@$` - 01: TOKEN201703291601{1..+5}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/004-simple-ascending-4 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a numeric range in ascending order. - - STDIN: - 01: ./write_all_arguments_on_stdout {-5..0}TOKEN201703291601 - - STDOUT: - FAILURE expected_to match_regex `^-5TOKEN201703291601@-4TOKEN201703291601@-3TOKEN201703291601@-2TOKEN201703291601@-1TOKEN201703291601@0TOKEN201703291601@$` - 01: {-5..0}TOKEN201703291601@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/005-simple-ascending-5 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a numeric range in ascending order. - - STDIN: - 01: ./write_all_arguments_on_stdout {-100..-98}TOKEN201703291601 - - STDOUT: - FAILURE expected_to match_regex `^-100TOKEN201703291601@-99TOKEN201703291601@-98TOKEN201703291601@$` - 01: {-100..-98}TOKEN201703291601@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/006-simple-descending-1 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a numeric range in descending order. - - STDIN: - 01: ./write_all_arguments_on_stdout {5..1} - - STDOUT: - FAILURE expected_to match_regex `^5@4@3@2@1@$` - 01: {5..1}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/007-simple-descending-2 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a numeric range in descending order. - - STDIN: - 01: ./write_all_arguments_on_stdout TOKEN201703291601{5..1}TOKEN201703291601 - - STDOUT: - FAILURE expected_to match_regex `^TOKEN2017032916015TOKEN201703291601@TOKEN2017032916014TOKEN201703291601@TOKEN2017032916013TOKEN201703291601@TOKEN2017032916012TOKEN201703291601@TOKEN2017032916011TOKEN201703291601@$` - 01: TOKEN201703291601{5..1}TOKEN201703291601@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/008-simple-descending-3 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a numeric range in descending order. - - STDIN: - 01: ./write_all_arguments_on_stdout TOKEN201703291601{5..+1} - - STDOUT: - FAILURE expected_to match_regex `^TOKEN2017032916015@TOKEN2017032916014@TOKEN2017032916013@TOKEN2017032916012@TOKEN2017032916011@$` - 01: TOKEN201703291601{5..+1}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/009-simple-descending-4 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a numeric range in descending order. - - STDIN: - 01: ./write_all_arguments_on_stdout {0..-5}TOKEN201703291601 - - STDOUT: - FAILURE expected_to match_regex `^0TOKEN201703291601@-1TOKEN201703291601@-2TOKEN201703291601@-3TOKEN201703291601@-4TOKEN201703291601@-5TOKEN201703291601@$` - 01: {0..-5}TOKEN201703291601@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/010-simple-descending-5 (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a numeric range in descending order. - - STDIN: - 01: ./write_all_arguments_on_stdout {-98..-100}TOKEN201703291601 - - STDOUT: - FAILURE expected_to match_regex `^-98TOKEN201703291601@-99TOKEN201703291601@-100TOKEN201703291601@$` - 01: {-98..-100}TOKEN201703291601@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/011-identical-positive-start-and-end (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a range of single value. - - STDIN: - 01: ./write_all_arguments_on_stdout {42..42} - - STDOUT: - FAILURE expected_to match_regex `^42@$` - 01: {42..42}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/012-identical-negative-start-and-end (FAILED) - - Description: - The purpose of this test is to check that the brace expansion does work with a range of single value. - - STDIN: - 01: ./write_all_arguments_on_stdout {-42..-42} - - STDOUT: - FAILURE expected_to match_regex `^-42@$` - 01: {-42..-42}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/013-multiple-1 (FAILED) - - Description: - The purpose of this test is to check that brace expansion may be performed with multiple brace patterns. - - STDIN: - 01: ./write_all_arguments_on_stdout {1..2}{3..4}{5..6} - - STDOUT: - FAILURE expected_to match_regex `^135@136@145@146@235@236@245@246@$` - 01: {1..2}{3..4}{5..6}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/014-multiple-2 (FAILED) - - Description: - The purpose of this test is to check that brace expansion may be performed with multiple brace patterns. - - STDIN: - 01: ./write_all_arguments_on_stdout TOKEN201703291601{1..2}abc{-50..-53}def{0..0} - - STDOUT: - FAILURE expected_to match_regex `^TOKEN2017032916011abc-50def0@TOKEN2017032916011abc-51def0@TOKEN2017032916011abc-52def0@TOKEN2017032916011abc-53def0@TOKEN2017032916012abc-50def0@TOKEN2017032916012abc-51def0@TOKEN2017032916012abc-52def0@TOKEN2017032916012abc-53def0@$` - 01: TOKEN201703291601{1..2}abc{-50..-53}def{0..0}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/brace-expansion/numeric-range/015-big-range (FAILED) - - Description: - The purpose of this test is to check that brace expansion may be performed with a big numeric range. - - STDIN: - 01: ./write_all_arguments_on_stdout {-100..100} - - STDOUT: - FAILURE expected_to match_regex `^-100@-99@-98@-97@-96@-95@-94@-93@-92@-91@-90@-89@-88@-87@-86@-85@-84@-83@-82@-81@-80@-79@-78@-77@-76@-75@-74@-73@-72@-71@-70@-69@-68@-67@-66@-65@-64@-63@-62@-61@-60@-59@-58@-57@-56@-55@-54@-53@-52@-51@-50@-49@-48@-47@-46@-45@-44@-43@-42@-41@-40@-39@-38@-37@-36@-35@-34@-33@-32@-31@-30@-29@-28@-27@-26@-25@-24@-23@-22@-21@-20@-19@-18@-17@-16@-15@-14@-13@-12@-11@-10@-9@-8@-7@-6@-5@-4@-3@-2@-1@0@1@2@3@4@5@6@7@8@9@10@11@12@13@14@15@16@17@18@19@20@21@22@23@24@25@26@27@28@29@30@31@32@33@34@35@36@37@38@39@40@41@42@43@44@45@46@47@48@49@50@51@52@53@54@55@56@57@58@59@60@61@62@63@64@65@66@67@68@69@70@71@72@73@74@75@76@77@78@79@80@81@82@83@84@85@86@87@88@89@90@91@92@93@94@95@96@97@98@99@100@$` - 01: {-100..100}@ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/multi/001-range-and-char (FAILED) - - Description: - The purpose of this test is to check that brackets expansion works with a range and 2 characters as pattern. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch '1' '2' '3' 'a' 'b' 'z' 'C' '-' '[a-z-2]' 'a-z-2' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [a-z-2] - - STDOUT: - FAILURE expected_to match_regex `-@` - FAILURE expected_to match_regex `2@` - FAILURE expected_to match_regex `a@` - FAILURE expected_to match_regex `b@` - FAILURE expected_to match_regex `z@` - SUCCESS expected_to_not match_regex `1@` - SUCCESS expected_to_not match_regex `3@` - SUCCESS expected_to_not match_regex `C@` - SUCCESS expected_to_not match_regex `[[]a-z-2]@` - SUCCESS expected_to_not match_regex `a-z-2@` - WARNING might match_regex `^-@2@a@b@z@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/multi/002-reverse-range-and-chars (FAILED) - - Description: - The purpose of this test is to check that brackets expansion works with 2 patterns. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a4' 'a3' 'a2' 'a42' 'a[42]' 'z4' 'z3' 'z2' 'z42' 'z[42]' '42' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [!a-y][42] - 02: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [^a-y][42] - - STDOUT: - FAILURE expected_to match_regex `42@` - FAILURE expected_to match_regex `z4@` - FAILURE expected_to match_regex `z2@` - SUCCESS expected_to_not match_regex `z3@` - SUCCESS expected_to_not match_regex `z42@` - SUCCESS expected_to_not match_regex `z[[]42]@` - SUCCESS expected_to_not match_regex `a3@` - SUCCESS expected_to_not match_regex `a42@` - SUCCESS expected_to_not match_regex `a[[]42]@` - WARNING might match_regex `^42@z2@z4@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/multi/003-reverse-multi-hard (FAILED) - - Description: - The purpose of this test is to check how the value inside multiple brackets are parsed with bracket as pattern. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch '][' 'a[' '1[' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [!]az][[] - 02: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [^]az][[] - - STDOUT: - FAILURE expected_to match_regex `1[[]@` - SUCCESS expected_to_not match_regex `][[]@` - SUCCESS expected_to_not match_regex `a[[]@` - WARNING might match_regex `^1[[]@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/multi/004-simple-bracket+char+range (FAILED) - - Description: - The purpose of this test is to control if 2 patterns splited by a minus characters can be match. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a-0' 'a-1' 'a-2' 'b-0' 'b-1' 'b-2' 'Z-0' 'Z-1' 'Z-2' 'a1' 'Z9' 'D4' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [aZ]-[1-9] - - STDOUT: - FAILURE expected_to match_regex `a-1@` - FAILURE expected_to match_regex `a-2@` - FAILURE expected_to match_regex `Z-1@` - FAILURE expected_to match_regex `Z-2@` - SUCCESS expected_to_not match_regex `a-0@` - SUCCESS expected_to_not match_regex `b-0@` - SUCCESS expected_to_not match_regex `b-1@` - SUCCESS expected_to_not match_regex `b-2@` - SUCCESS expected_to_not match_regex `a1@` - SUCCESS expected_to_not match_regex `Z9@` - SUCCESS expected_to_not match_regex `D4@` - WARNING might match_regex `^Z-1@Z-2@a-1@a-2@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/not/001-simple-opposit-match (FAILED) - - Description: - The purpose of this test is to check that the brackets expansion works with the inversion mark `!` or `^`. The expected behavior is the reversion of the following pattern. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' '1' 'Z' 'd' 'e' 'f' 'def' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [!a1Z] - 02: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [^a1Z] - - STDOUT: - FAILURE expected_to match_regex `d@` - FAILURE expected_to match_regex `e@` - FAILURE expected_to match_regex `f@` - SUCCESS expected_to_not match_regex `def@` - WARNING might match_regex `^d@e@f@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/not/002-simple-opposite-range (FAILED) - - Description: - The purpose of this test is to check that the brackets expansion works with the inversion mark `!` or `^`. The expected behavior is the reversion of the following pattern. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' 'b' 'c' 'z' '1' '2' '3' '42' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [!a-z] - 02: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [^a-z] - - STDOUT: - FAILURE expected_to match_regex `1@` - FAILURE expected_to match_regex `2@` - FAILURE expected_to match_regex `3@` - SUCCESS expected_to_not match_regex `42@` - WARNING might match_regex `^1@2@3@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/range-pattern/001-alpha-range (FAILED) - - Description: - The purpose of this test is to check that the brackets expansion works with the following pattern `[a-z]`. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' 'f' 'z' 'A' '1' '[a-z]' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [a-z] - - STDOUT: - FAILURE expected_to match_regex `a@` - FAILURE expected_to match_regex `f@` - FAILURE expected_to match_regex `z@` - SUCCESS expected_to_not match_regex `A@` - SUCCESS expected_to_not match_regex `1@` - SUCCESS expected_to_not match_regex `[[]a-z]@` - WARNING might match_regex `^a@f@z@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/range-pattern/002-numeric-range (FAILED) - - Description: - The purpose of this test is to check that the brackets expansion works with the following pattern `[0-9]`. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch '4' '2' '1' '9' 'a' 'C' '[0-9]' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [0-9] - - STDOUT: - FAILURE expected_to match_regex `1@` - FAILURE expected_to match_regex `2@` - FAILURE expected_to match_regex `4@` - FAILURE expected_to match_regex `9@` - SUCCESS expected_to_not match_regex `a@` - SUCCESS expected_to_not match_regex `C@` - SUCCESS expected_to_not match_regex `[[]0-9]@` - WARNING might match_regex `^1@2@4@9@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/range-pattern/003-ascii-range-1 (FAILED) - - Description: - The purpose of this test is to check if the bracket expansion works with the following pattern []-z]. - One test use the following range which is the default range for bash: - < > , ; : ! ' " ( ) [ ] { } @ $ \ # % 1 2 3 4 5 6 7 8 9 a A b B c C d D e E f F g G h H i I j J k K l L m M n N o O p P q Q r R s S t T u U v V w W x X y Y z - The other use the ascii value, which does make more sense. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch '2' 'a' 'B' 'c' 'Z' '[' ']' '[]-z]' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout []-z] - - STDOUT: - FAILURE expected_to match_regex `a@` - FAILURE expected_to match_regex `c@` - FAILURE expected_to match_regex `]@` - SUCCESS expected_to_not match_regex `2@` - SUCCESS expected_to_not match_regex `B@` - SUCCESS expected_to_not match_regex `Z@` - SUCCESS expected_to_not match_regex `[[]@` - SUCCESS expected_to_not match_regex `[[]]-z]@` - WARNING might match_regex `^]@a@c@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/range-pattern/004-ascii-range-2 (FAILED) - - Description: - The purpose of this test is to check that the brackets expansion works with the following pattern `[1-z]`. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch '2' 'a' 'B' 'c' 'Z' ']' '[' '[1-z]' '1-z' '-' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [1-z] - - STDOUT: - FAILURE expected_to match_regex `2@` - FAILURE expected_to match_regex `a@` - FAILURE expected_to match_regex `B@` - FAILURE expected_to match_regex `c@` - FAILURE expected_to match_regex `Z@` - FAILURE expected_to match_regex `]@` - FAILURE expected_to match_regex `[[]@` - SUCCESS expected_to_not match_regex `-@` - SUCCESS expected_to_not match_regex `1-z@` - SUCCESS expected_to_not match_regex `[[]1-z]@` - WARNING might match_regex `^2@B@Z@[[]@]@a@c@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/simple-pattern/001-simple-list (FAILED) - - Description: - The purpose of this test is to check that the brackets expansion works with a simple list of characters as pattern. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' 'b' 'c' 'd' 'e' 'f' '[bca]' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [bca] - - STDOUT: - FAILURE expected_to match_regex `a@` - FAILURE expected_to match_regex `b@` - FAILURE expected_to match_regex `c@` - SUCCESS expected_to_not match_regex `d@` - SUCCESS expected_to_not match_regex `e@` - SUCCESS expected_to_not match_regex `f@` - SUCCESS expected_to_not match_regex `[[]bca]@` - WARNING might match_regex `^a@b@c@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/simple-pattern/002-multi-bracket (FAILED) - - Description: - The purpose of this test is to check that the brackets expansion works with multiple brackets patterns. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch "TOKEN201703291601abcd" "TOKEN201703291601abc" "TOKEN201703291601abdc" "TOKEN201703291601b" "TOKEN201703291601" "TOKEN201703291601\[a]b\[c]\[d]" - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout TOKEN201703291601[a]b[c][d] - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601abcd@$` - SUCCESS expected_to_not match_regex `TOKEN201703291601abc@` - SUCCESS expected_to_not match_regex `TOKEN201703291601abdc@` - SUCCESS expected_to_not match_regex `TOKEN201703291601b@` - SUCCESS expected_to_not match_regex `TOKEN201703291601@` - SUCCESS expected_to_not match_regex `TOKEN201703291601[[]a]b[[]c][[]d]@` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/simple-pattern/003-brackets-as-pattern (FAILED) - - Description: - The purpose of this test is to check that the brackets expansion works with an opening bracket `[` and a closing bracket `]` as pattern. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch '[' ']' 'a' 'Z' '[][]' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [][] - - STDOUT: - FAILURE expected_to match_regex `[[]@` - FAILURE expected_to match_regex `]@` - SUCCESS expected_to_not match_regex `a@` - SUCCESS expected_to_not match_regex `Z@` - SUCCESS expected_to_not match_regex `[[]][[]]@` - WARNING might match_regex `^[[]@]@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/simple-pattern/004-multi-bracket-multi-char (FAILED) - - Description: - The purpose of this test is to match a file name which contain a bracket as first character. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 21 23 24 25 26 27 28 29 ']' '[' '[12][34]' '1234' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [12][34] - - STDOUT: - FAILURE expected_to match_regex `13@` - FAILURE expected_to match_regex `14@` - FAILURE expected_to match_regex `23@` - FAILURE expected_to match_regex `24@` - SUCCESS expected_to_not match_regex `0[0-9]@` - SUCCESS expected_to_not match_regex `1[0-2]@` - SUCCESS expected_to_not match_regex `1[5-9]@` - SUCCESS expected_to_not match_regex `2[0-2]@` - SUCCESS expected_to_not match_regex `2[5-9]@` - SUCCESS expected_to_not match_regex `[[]@` - SUCCESS expected_to_not match_regex `]@` - SUCCESS expected_to_not match_regex `[[]12][[]34]@` - SUCCESS expected_to_not match_regex `1234@` - WARNING might match_regex `^13@14@23@24@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/single-char-pattern/001-single-char (FAILED) - - Description: - The purpose of this test is to check that the brackets expansion works with a single character as pattern. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' 'b' '[a]' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [a] - - STDOUT: - FAILURE expected_to match_regex `a@` - SUCCESS expected_to_not match_regex `b@` - SUCCESS expected_to_not match_regex `[[]a]@` - WARNING might match_regex `^a@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/single-char-pattern/002-closing-bracket-char (FAILED) - - Description: - The purpose of this test is to check that the brackets expansion works with a closing bracket `]` as pattern. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch ']' '[]]' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout []] - - STDOUT: - FAILURE expected_to match_regex `]@` - SUCCESS expected_to_not match_regex `[[]]]@` - WARNING might match_regex `^]@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/globbing/bracket-expansion/single-char-pattern/003-opening-bracket-char (FAILED) - - Description: - The purpose of this test is to check that the brackets expansion works with an opening bracket `[` as pattern. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch '[' '[[]' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [[] - - STDOUT: - FAILURE expected_to match_regex `[[]@` - SUCCESS expected_to_not match_regex `[[][[]]@` - WARNING might match_regex `^[[]@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/local-variable/002-declare-and-expand-2 (FAILED) - - Description: - The purpose of this test is to check that an empty variable is not expanded as an empty string and results in any new argument in the command line. - - STDIN: - 01: TOKEN201703291601_NAME= - 02: ./write_on_stdout_and_stderr $TOKEN201703291601_NAME $TOKEN201703291601_NAME - - STDOUT: - FAILURE expected_to match_regex `write on stdout` - 01:  - - STDERR: - FAILURE expected_to match_regex `write on stderr` - 01:  - ----------------------------------------------------------------- - -42sh/local-variable/003-unknown-variable-does-not-result-in-new-argument (FAILED) - - Description: - The purpose of this test is to check that an unknown variable is not expanded as an empty string and results in any new argument in the command line. - - Before test: - 01: unset "TOKEN201703291601_UNKNOWN" - - STDIN: - 01: ./write_on_stdout $TOKEN201703291601_UNKNOWN TOKEN201703291601_DISPLAYED - - STDOUT: - FAILURE expected_to match_regex `TOKEN201703291601_DISPLAYED` - 01: write on stdout - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/local-variable/004-existing-variable-in-environment-1 (FAILED) - - Description: - The purpose of this test is initialize a local variable named as an environment variable and check if it's update the existing environment variable. - - Before test: - 01: export "TOKEN201703291601_NAME=TOKEN201703291601_VALUE_OLD" - - STDIN: - 01: TOKEN201703291601_NAME=TOKEN201703291601_VALUE_NEW - 02: ./display_env - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601_NAME=TOKEN201703291601_VALUE_NEW$` - FAILURE expected_to_not match_regex `^TOKEN201703291601_NAME=TOKEN201703291601_VALUE_OLD$` - 01: ------------------------------ - 02: TERM_PROGRAM=iTerm.app - 03: TERM=screen-256color - 04: SHELL=/bin/zsh - 05: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 06: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 07: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 08: TERM_PROGRAM_VERSION=3.0.10 - 09: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 10: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 11: ZSH=/Users/ariard/.oh-my-zsh - 12: USER=ariard - 13: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 14: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 15: PAGER=less - 16: TMUX=/private/tmp/tmux-18965/default,460,2 - 17: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 18: LSCOLORS=Gxfxcxdxbxegedabagacad - 19: TOKEN201703291601_NAME=TOKEN201703291601_VALUE_OLD - 20: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 21: MAIL=ariard@student.42.fr - 22: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 23: LANG=en_US.UTF-8 - 24: ITERM_PROFILE=Default - 25: XPC_FLAGS=0x0 - 26: TMUX_PANE=%19 - 27: XPC_SERVICE_NAME=0 - 28: SHLVL=5 - 29: HOME=/Users/ariard - 30: COLORFGBG=7;0 - 31: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 32: LOGNAME=ariard - 33: LESS=-R - 34: LC_CTYPE=en_US.UTF-8 - 35: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 36: _=../../42sh - 37: ?=0 - 38: ------------------------------ - 39: TOTAL ENVIRONMENT VARIABLES: 36 - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/local-variable/005-existing-variable-in-environment-2 (FAILED) - - Description: - The purpose of this test is initialize a local variable named as an environment variable and check if it's update the existing environment variable. - - Before test: - 01: export "TOKEN201703291601_NAME=TOKEN201703291601_VALUE" - - STDIN: - 01: TOKEN201703291601_NAME= - 02: ./display_env - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601_NAME=$` - FAILURE expected_to_not match_regex `^TOKEN201703291601_NAME=TOKEN201703291601_VALUE$` - 01: ------------------------------ - 02: TERM_PROGRAM=iTerm.app - 03: TERM=screen-256color - 04: SHELL=/bin/zsh - 05: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 06: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 07: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 08: TERM_PROGRAM_VERSION=3.0.10 - 09: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 10: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 11: ZSH=/Users/ariard/.oh-my-zsh - 12: USER=ariard - 13: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 14: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 15: PAGER=less - 16: TMUX=/private/tmp/tmux-18965/default,460,2 - 17: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 18: LSCOLORS=Gxfxcxdxbxegedabagacad - 19: TOKEN201703291601_NAME=TOKEN201703291601_VALUE - 20: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 21: MAIL=ariard@student.42.fr - 22: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 23: LANG=en_US.UTF-8 - 24: ITERM_PROFILE=Default - 25: XPC_FLAGS=0x0 - 26: TMUX_PANE=%19 - 27: XPC_SERVICE_NAME=0 - 28: SHLVL=5 - 29: HOME=/Users/ariard - 30: COLORFGBG=7;0 - 31: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 32: LOGNAME=ariard - 33: LESS=-R - 34: LC_CTYPE=en_US.UTF-8 - 35: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 36: _=../../42sh - 37: ?=0 - 38: ------------------------------ - 39: TOTAL ENVIRONMENT VARIABLES: 36 - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/local-variable/mixed/inline-environment-variable/001-local-variable-shouldnt-be-set (FAILED) - - Description: - The purpose of this test is to check that declaring a variable and specifying a binary does not result in local variable declaration but a modified environment for the command. - - STDIN: - 01: TOKEN201703291601_NAME=TOKEN201703291601_VALUE ./display_env - 02: ./write_on_stderr $TOKEN201703291601 - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601_NAME=TOKEN201703291601_VALUE$` - 01: ------------------------------ - 02: TERM_PROGRAM=iTerm.app - 03: TERM=screen-256color - 04: SHELL=/bin/zsh - 05: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 06: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 07: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 08: TERM_PROGRAM_VERSION=3.0.10 - 09: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 10: ZSH=/Users/ariard/.oh-my-zsh - 11: USER=ariard - 12: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 13: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 14: PAGER=less - 15: TMUX=/private/tmp/tmux-18965/default,460,2 - 16: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 17: LSCOLORS=Gxfxcxdxbxegedabagacad - 18: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 19: MAIL=ariard@student.42.fr - 20: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 21: LANG=en_US.UTF-8 - 22: ITERM_PROFILE=Default - 23: XPC_FLAGS=0x0 - 24: TMUX_PANE=%19 - 25: XPC_SERVICE_NAME=0 - 26: SHLVL=5 - 27: HOME=/Users/ariard - 28: COLORFGBG=7;0 - 29: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 30: LOGNAME=ariard - 31: LESS=-R - 32: LC_CTYPE=en_US.UTF-8 - 33: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 34: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 35: _=../../42sh - 36: ?=0 - 37: ------------------------------ - 38: TOTAL ENVIRONMENT VARIABLES: 35 - - STDERR: - SUCCESS expected_to_not match_regex `TOKEN201703291601_VALUE` - FAILURE expected_to match_regex `write on stderr` - 01:  - ----------------------------------------------------------------- - -42sh/local-variable/mixed/redirections/001-truncating (FAILED) - - Description: - The purpose of this test is to check that a redirection can be set with a local variable as file name. - - Before test: - 01: rm -f "TOKEN201703291601_FILENAME" - - STDIN: - 01: TOKEN201703291601_NAME=TOKEN201703291601_FILENAME - 02: ./write_on_stdout TOKEN201703291601_VALUE > $TOKEN201703291601_NAME - - STDOUT: - SUCCESS expected_to be_empty - (no output) - - STDERR: - SUCCESS expected_to be_empty - (no output) - - MISC: - FAILURE expected_to create_file `TOKEN201703291601_FILENAME` matching_regex `^TOKEN201703291601_VALUE$` - SUCCESS expected_to exit_with_status `0` - ----------------------------------------------------------------- - -42sh/local-variable/mixed/redirections/002-appending (FAILED) - - Description: - The purpose of this test is to check that a redirection can be set with a local variable as file name. - - Before test: - 01: rm -f "TOKEN201703291601_FILENAME" - - STDIN: - 01: TOKEN201703291601_NAME=TOKEN201703291601_FILENAME - 02: ./write_on_stdout TOKEN201703291601_VALUE1 >> $TOKEN201703291601_NAME - 03: ./write_on_stdout TOKEN201703291601_VALUE2 >> $TOKEN201703291601_NAME - - STDOUT: - SUCCESS expected_to be_empty - (no output) - - STDERR: - SUCCESS expected_to be_empty - (no output) - - MISC: - FAILURE expected_to create_file `TOKEN201703291601_FILENAME` matching_regex `^TOKEN201703291601_VALUE1$` - FAILURE expected_to create_file `TOKEN201703291601_FILENAME` matching_regex `^TOKEN201703291601_VALUE2$` - SUCCESS expected_to exit_with_status `0` - ----------------------------------------------------------------- - -42sh/local-variable/mixed/tilde-expansion/001-process-tilde-expansion (FAILED) - - Description: - The purpose of this test is to check that the tilde expansion `~` in variable declaration. - - Before test: - 01: export "HOME=/TOKEN201703291601" - - STDIN: - 01: TOKEN201703291601=~ - 02: ./write_on_stdout TILDE:$TOKEN201703291601 - - STDOUT: - FAILURE expected_to_not match_regex `TILDE:~` - WARNING might match_regex `TILDE:/TOKEN201703291601` - 01: TILDE:~ - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/quoting/double-quotes/mixed/escaping/004-it-results-in-error (FAILED) - - Description: - The purpose of this test is to check that using backslash `\\` before the closing double-quote `"` does result in syntax error. - - STDIN: - 01: ./write_on_stdout "TOKEN201703291601\" - - STDOUT: - SUCCESS expected_to_not match_regex `^TOKEN201703291601$` - (no output) - - STDERR: - FAILURE expected_to_not be_empty - WARNING might match_regex `([Ss]yntax|[Pp]arse) error` - (no output) - ----------------------------------------------------------------- - -42sh/quoting/double-quotes/mixed/globbing/brace-expansion/002-it-does-not-expand-braces-2 (FAILED) - - Description: - The purpose of this test is to check that braces expansion is not processed within quoted part of the command line. - - STDIN: - 01: ./write_all_arguments_on_stdout {1..2}"{1..2}" - - STDOUT: - FAILURE expected_to match_regex `1[{]1..2}@2[{]1..2}@` - 01: {1..2}{1..2}@ - - STDERR: - (no output) - ----------------------------------------------------------------- - -42sh/quoting/double-quotes/mixed/globbing/brace-expansion/003-it-does-not-expand-braces-3 (FAILED) - - Description: - The purpose of this test is to check that braces expansion is not processed within quoted part of the command line. - - STDIN: - 01: ./write_all_arguments_on_stdout "{1..2}"{1..2} - - STDOUT: - FAILURE expected_to match_regex `[{]1..2}1@[{]1..2}2@` - 01: {1..2}{1..2}@ - - STDERR: - (no output) - ----------------------------------------------------------------- - -42sh/quoting/double-quotes/mixed/globbing/brace-expansion/004-it-does-not-expand-braces-4 (FAILED) - - Description: - The purpose of this test is to check that braces expansion is not processed within quoted part of the command line. - - STDIN: - 01: ./write_all_arguments_on_stdout "{1..2}"{1..2}"{1..2}"{1..2}"{1..2}"{1..2} - - STDOUT: - FAILURE expected_to match_regex `[{]1..2}1[{]1..2}1[{]1..2}1@[{]1..2}1[{]1..2}1[{]1..2}2@[{]1..2}1[{]1..2}2[{]1..2}1@[{]1..2}1[{]1..2}2[{]1..2}2@[{]1..2}2[{]1..2}1[{]1..2}1@[{]1..2}2[{]1..2}1[{]1..2}2@[{]1..2}2[{]1..2}2[{]1..2}1@[{]1..2}2[{]1..2}2[{]1..2}2@` - 01: {1..2}{1..2}{1..2}{1..2}{1..2}{1..2}@ - - STDERR: - (no output) - ----------------------------------------------------------------- - -42sh/quoting/double-quotes/mixed/globbing/brace-expansion/005-it-does-not-expand-braces-5 (FAILED) - - Description: - The purpose of this test is to check that braces expansion is not processed within quoted part of the command line. - - STDIN: - 01: ./write_all_arguments_on_stdout "{1..2}" {1..2} "{1..2}" "{1..2}" - - STDOUT: - FAILURE expected_to match_regex `[{]1..2}@1@2@[{]1..2}@[{]1..2}@` - 01: {1..2}@{1..2}@{1..2}@{1..2}@ - - STDERR: - (no output) - ----------------------------------------------------------------- - -42sh/quoting/double-quotes/mixed/globbing/bracket-expansion/001-it-works-1 (FAILED) - - Description: - The purpose of this test is to check that an argument made with quoted and unquoted parts results in bracket pattern expansion. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout ["a"] - - STDOUT: - SUCCESS expected_to_not match_regex `[[]a]@` - FAILURE expected_to match_regex `^a@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/quoting/double-quotes/mixed/globbing/bracket-expansion/002-it-works-2 (FAILED) - - Description: - The purpose of this test is to check that an argument made with quoted and unquoted parts results in bracket pattern expansion. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout ["a"bc"def"gh] - - STDOUT: - FAILURE expected_to match_regex `a@` - FAILURE expected_to match_regex `b@` - FAILURE expected_to match_regex `c@` - FAILURE expected_to match_regex `d@` - FAILURE expected_to match_regex `e@` - FAILURE expected_to match_regex `f@` - FAILURE expected_to match_regex `g@` - FAILURE expected_to match_regex `h@` - SUCCESS expected_to_not match_regex `bc` - SUCCESS expected_to_not match_regex `def` - SUCCESS expected_to_not match_regex `gh` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/quoting/mixed/globbing/brace-expansion/001-it-does-not-expand-braces-1 (FAILED) - - Description: - The purpose of this test is to check that braces expansion is not processed within quoted part of the command line. - - STDIN: - 01: ./write_all_arguments_on_stdout "{1..2}"{1..2}'{1..2}'{1..2}"{1..2}"{1..2} - - STDOUT: - FAILURE expected_to match_regex `[{]1..2}1[{]1..2}1[{]1..2}1@[{]1..2}1[{]1..2}1[{]1..2}2@[{]1..2}1[{]1..2}2[{]1..2}1@[{]1..2}1[{]1..2}2[{]1..2}2@[{]1..2}2[{]1..2}1[{]1..2}1@[{]1..2}2[{]1..2}1[{]1..2}2@[{]1..2}2[{]1..2}2[{]1..2}1@[{]1..2}2[{]1..2}2[{]1..2}2@` - 01: {1..2}{1..2}{1..2}{1..2}{1..2}{1..2}@ - - STDERR: - (no output) - ----------------------------------------------------------------- - -42sh/quoting/mixed/globbing/bracket-expansion/001-it-works-1 (FAILED) - - Description: - The purpose of this test is to check that an argument made with quoted and unquoted parts results in bracket pattern expansion. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout [""'a'""] - - STDOUT: - SUCCESS expected_to_not match_regex `[[]a]@` - FAILURE expected_to match_regex `^a@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/quoting/mixed/globbing/bracket-expansion/002-it-works-2 (FAILED) - - Description: - The purpose of this test is to check that an argument made with quoted and unquoted parts results in bracket pattern expansion. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout ["a"bc'def'gh] - - STDOUT: - FAILURE expected_to match_regex `a@` - FAILURE expected_to match_regex `b@` - FAILURE expected_to match_regex `c@` - FAILURE expected_to match_regex `d@` - FAILURE expected_to match_regex `e@` - FAILURE expected_to match_regex `f@` - FAILURE expected_to match_regex `g@` - FAILURE expected_to match_regex `h@` - SUCCESS expected_to_not match_regex `bc` - SUCCESS expected_to_not match_regex `def` - SUCCESS expected_to_not match_regex `gh` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/quoting/simple-quotes/mixed/globbing/brace-expansion/002-it-does-not-expand-braces-2 (FAILED) - - Description: - The purpose of this test is to check that braces expansion is not processed within quoted part of the command line. - - STDIN: - 01: ./write_all_arguments_on_stdout {1..2}'{1..2}' - - STDOUT: - FAILURE expected_to match_regex `1[{]1..2}@2[{]1..2}@` - 01: {1..2}{1..2}@ - - STDERR: - (no output) - ----------------------------------------------------------------- - -42sh/quoting/simple-quotes/mixed/globbing/brace-expansion/003-it-does-not-expand-braces-3 (FAILED) - - Description: - The purpose of this test is to check that braces expansion is not processed within quoted part of the command line. - - STDIN: - 01: ./write_all_arguments_on_stdout '{1..2}'{1..2} - - STDOUT: - FAILURE expected_to match_regex `[{]1..2}1@[{]1..2}2@` - 01: {1..2}{1..2}@ - - STDERR: - (no output) - ----------------------------------------------------------------- - -42sh/quoting/simple-quotes/mixed/globbing/brace-expansion/004-it-does-not-expand-braces-4 (FAILED) - - Description: - The purpose of this test is to check that braces expansion is not processed within quoted part of the command line. - - STDIN: - 01: ./write_all_arguments_on_stdout '{1..2}'{1..2}'{1..2}'{1..2}'{1..2}'{1..2} - - STDOUT: - FAILURE expected_to match_regex `[{]1..2}1[{]1..2}1[{]1..2}1@[{]1..2}1[{]1..2}1[{]1..2}2@[{]1..2}1[{]1..2}2[{]1..2}1@[{]1..2}1[{]1..2}2[{]1..2}2@[{]1..2}2[{]1..2}1[{]1..2}1@[{]1..2}2[{]1..2}1[{]1..2}2@[{]1..2}2[{]1..2}2[{]1..2}1@[{]1..2}2[{]1..2}2[{]1..2}2@` - 01: {1..2}{1..2}{1..2}{1..2}{1..2}{1..2}@ - - STDERR: - (no output) - ----------------------------------------------------------------- - -42sh/quoting/simple-quotes/mixed/globbing/brace-expansion/005-it-does-not-expand-braces-5 (FAILED) - - Description: - The purpose of this test is to check that braces expansion is not processed within quoted part of the command line. - - STDIN: - 01: ./write_all_arguments_on_stdout '{1..2}' {1..2} '{1..2}' '{1..2}' - - STDOUT: - FAILURE expected_to match_regex `[{]1..2}@1@2@[{]1..2}@[{]1..2}@` - 01: {1..2}@{1..2}@{1..2}@{1..2}@ - - STDERR: - (no output) - ----------------------------------------------------------------- - -42sh/quoting/simple-quotes/mixed/globbing/bracket-expansion/001-it-works-1 (FAILED) - - Description: - The purpose of this test is to check that an argument made with quoted and unquoted parts results in bracket pattern expansion. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout ['a'] - - STDOUT: - SUCCESS expected_to_not match_regex `[[]a]@` - FAILURE expected_to match_regex `^a@$` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/quoting/simple-quotes/mixed/globbing/bracket-expansion/002-it-works-2 (FAILED) - - Description: - The purpose of this test is to check that an argument made with quoted and unquoted parts results in bracket pattern expansion. - - Before test: - 01: rm -rf "./test_globbing" - 02: mkdir "./test_globbing" - 03: cd "./test_globbing" - 04: touch 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' - - STDIN: - 01: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_all_arguments_on_stdout ['a'bc'def'gh] - - STDOUT: - FAILURE expected_to match_regex `a@` - FAILURE expected_to match_regex `b@` - FAILURE expected_to match_regex `c@` - FAILURE expected_to match_regex `d@` - FAILURE expected_to match_regex `e@` - FAILURE expected_to match_regex `f@` - FAILURE expected_to match_regex `g@` - FAILURE expected_to match_regex `h@` - SUCCESS expected_to_not match_regex `bc` - SUCCESS expected_to_not match_regex `def` - SUCCESS expected_to_not match_regex `gh` - (no output) - - STDERR: - FAILURE expected_to be_empty - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - ----------------------------------------------------------------- - -42sh/subshell/mixed/inline-environment-variable/001-modifies-the-child-environment-only-1 (FAILED) - - Description: - The purpose of this test is to check that declaring a variable and specifying a binary in a subshell does not result in local variable declaration or a modified parent shell's environment, but only a modified child's environment. - - STDIN: - 01: (TOKEN201703291601_NAME=TOKEN201703291601_VALUE ./display_env) - 02: ./display_env - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601_NAME=TOKEN201703291601_VALUE$` once - 01: ------------------------------ - 02: TERM_PROGRAM=iTerm.app - 03: TERM=screen-256color - 04: SHELL=/bin/zsh - 05: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 06: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 07: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 08: TERM_PROGRAM_VERSION=3.0.10 - 09: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 10: ZSH=/Users/ariard/.oh-my-zsh - 11: USER=ariard - 12: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 13: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 14: PAGER=less - 15: TMUX=/private/tmp/tmux-18965/default,460,2 - 16: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 17: LSCOLORS=Gxfxcxdxbxegedabagacad - 18: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 19: MAIL=ariard@student.42.fr - 20: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 21: LANG=en_US.UTF-8 - 22: ITERM_PROFILE=Default - 23: XPC_FLAGS=0x0 - 24: TMUX_PANE=%19 - 25: XPC_SERVICE_NAME=0 - 26: SHLVL=5 - 27: HOME=/Users/ariard - 28: COLORFGBG=7;0 - 29: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 30: LOGNAME=ariard - 31: LESS=-R - 32: LC_CTYPE=en_US.UTF-8 - 33: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 34: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 35: _=../../42sh - 36: ?=0 - 37: ------------------------------ - 38: TOTAL ENVIRONMENT VARIABLES: 35 - 39: ------------------------------ - 40: TERM_PROGRAM=iTerm.app - 41: TERM=screen-256color - 42: SHELL=/bin/zsh - 43: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 44: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 45: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 46: TERM_PROGRAM_VERSION=3.0.10 - 47: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 48: ZSH=/Users/ariard/.oh-my-zsh - 49: USER=ariard - 50: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 51: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 52: PAGER=less - 53: TMUX=/private/tmp/tmux-18965/default,460,2 - 54: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 55: LSCOLORS=Gxfxcxdxbxegedabagacad - 56: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 57: MAIL=ariard@student.42.fr - 58: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 59: LANG=en_US.UTF-8 - 60: ITERM_PROFILE=Default - 61: XPC_FLAGS=0x0 - 62: TMUX_PANE=%19 - 63: XPC_SERVICE_NAME=0 - 64: SHLVL=5 - 65: HOME=/Users/ariard - 66: COLORFGBG=7;0 - 67: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 68: LOGNAME=ariard - 69: LESS=-R - 70: LC_CTYPE=en_US.UTF-8 - 71: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 72: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 73: _=../../42sh - 74: ?=0 - 75: ------------------------------ - 76: TOTAL ENVIRONMENT VARIABLES: 35 - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -42sh/subshell/mixed/inline-environment-variable/002-modifies-the-child-environment-only-2 (FAILED) - - Description: - The purpose of this test is to check that declaring a variable and specifying a binary in a subshell does not result in local variable declaration or a modified parent shell's environment, but only a modified child's environment. - - STDIN: - 01: ( (TOKEN201703291601_NAME=TOKEN201703291601_VALUE ./display_env) ; ./display_env) ; ./display_env - 02:  - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601_NAME=TOKEN201703291601_VALUE$` once - 01: ------------------------------ - 02: TERM_PROGRAM=iTerm.app - 03: TERM=screen-256color - 04: SHELL=/bin/zsh - 05: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 06: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 07: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 08: TERM_PROGRAM_VERSION=3.0.10 - 09: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 10: ZSH=/Users/ariard/.oh-my-zsh - 11: USER=ariard - 12: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 13: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 14: PAGER=less - 15: TMUX=/private/tmp/tmux-18965/default,460,2 - 16: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 17: LSCOLORS=Gxfxcxdxbxegedabagacad - 18: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 19: MAIL=ariard@student.42.fr - 20: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 21: LANG=en_US.UTF-8 - 22: ITERM_PROFILE=Default - 23: XPC_FLAGS=0x0 - 24: TMUX_PANE=%19 - 25: XPC_SERVICE_NAME=0 - 26: SHLVL=5 - 27: HOME=/Users/ariard - 28: COLORFGBG=7;0 - 29: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 30: LOGNAME=ariard - 31: LESS=-R - 32: LC_CTYPE=en_US.UTF-8 - 33: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 34: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 35: _=../../42sh - 36: ?=0 - 37: ------------------------------ - 38: TOTAL ENVIRONMENT VARIABLES: 35 - 39: ------------------------------ - 40: TERM_PROGRAM=iTerm.app - 41: TERM=screen-256color - 42: SHELL=/bin/zsh - 43: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 44: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 45: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 46: TERM_PROGRAM_VERSION=3.0.10 - 47: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 48: ZSH=/Users/ariard/.oh-my-zsh - 49: USER=ariard - 50: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 51: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 52: PAGER=less - 53: TMUX=/private/tmp/tmux-18965/default,460,2 - 54: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 55: LSCOLORS=Gxfxcxdxbxegedabagacad - 56: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 57: MAIL=ariard@student.42.fr - 58: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 59: LANG=en_US.UTF-8 - 60: ITERM_PROFILE=Default - 61: XPC_FLAGS=0x0 - 62: TMUX_PANE=%19 - 63: XPC_SERVICE_NAME=0 - 64: SHLVL=5 - 65: HOME=/Users/ariard - 66: COLORFGBG=7;0 - 67: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 68: LOGNAME=ariard - 69: LESS=-R - 70: LC_CTYPE=en_US.UTF-8 - 71: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 72: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 73: _=../../42sh - 74: ?=0 - 75: ------------------------------ - 76: TOTAL ENVIRONMENT VARIABLES: 35 - 77: ------------------------------ - 78: TERM_PROGRAM=iTerm.app - 79: TERM=screen-256color - 80: SHELL=/bin/zsh - 81: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 82: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 83: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 84: TERM_PROGRAM_VERSION=3.0.10 - 85: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 86: ZSH=/Users/ariard/.oh-my-zsh - 87: USER=ariard - 88: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 89: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 90: PAGER=less - 91: TMUX=/private/tmp/tmux-18965/default,460,2 - 92: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 93: LSCOLORS=Gxfxcxdxbxegedabagacad - 94: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 95: MAIL=ariard@student.42.fr - 96: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 97: LANG=en_US.UTF-8 - 98: ITERM_PROFILE=Default - 99: XPC_FLAGS=0x0 - 100: TMUX_PANE=%19 - 101: XPC_SERVICE_NAME=0 - 102: SHLVL=5 - 103: HOME=/Users/ariard - 104: COLORFGBG=7;0 - 105: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 106: LOGNAME=ariard - 107: LESS=-R - 108: LC_CTYPE=en_US.UTF-8 - 109: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 110: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 111: _=../../42sh - 112: ?=0 - 113: ------------------------------ - 114: TOTAL ENVIRONMENT VARIABLES: 35 - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -bonuses/inline-environment-variable/001-modifies-child-environment-1 (FAILED) - - Description: - The purpose of this test is to check that a binary may have its environment to be modified by appending variables inline. - - Before test: - 01: unset "TOKEN201703291601_VARIABLE" - - STDIN: - 01: TOKEN201703291601_VARIABLE=TOKEN201703291601_VALUE ./display_env - 02: ./display_env - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601_VARIABLE=TOKEN201703291601_VALUE$` once - 01: ------------------------------ - 02: TERM_PROGRAM=iTerm.app - 03: TERM=screen-256color - 04: SHELL=/bin/zsh - 05: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 06: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 07: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 08: TERM_PROGRAM_VERSION=3.0.10 - 09: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 10: ZSH=/Users/ariard/.oh-my-zsh - 11: USER=ariard - 12: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 13: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 14: PAGER=less - 15: TMUX=/private/tmp/tmux-18965/default,460,2 - 16: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 17: LSCOLORS=Gxfxcxdxbxegedabagacad - 18: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 19: MAIL=ariard@student.42.fr - 20: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 21: LANG=en_US.UTF-8 - 22: ITERM_PROFILE=Default - 23: XPC_FLAGS=0x0 - 24: TMUX_PANE=%19 - 25: XPC_SERVICE_NAME=0 - 26: SHLVL=5 - 27: HOME=/Users/ariard - 28: COLORFGBG=7;0 - 29: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 30: LOGNAME=ariard - 31: LESS=-R - 32: LC_CTYPE=en_US.UTF-8 - 33: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 34: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 35: _=../../42sh - 36: ?=0 - 37: ------------------------------ - 38: TOTAL ENVIRONMENT VARIABLES: 35 - 39: ------------------------------ - 40: TERM_PROGRAM=iTerm.app - 41: TERM=screen-256color - 42: SHELL=/bin/zsh - 43: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 44: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 45: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 46: TERM_PROGRAM_VERSION=3.0.10 - 47: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 48: ZSH=/Users/ariard/.oh-my-zsh - 49: USER=ariard - 50: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 51: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 52: PAGER=less - 53: TMUX=/private/tmp/tmux-18965/default,460,2 - 54: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 55: LSCOLORS=Gxfxcxdxbxegedabagacad - 56: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 57: MAIL=ariard@student.42.fr - 58: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 59: LANG=en_US.UTF-8 - 60: ITERM_PROFILE=Default - 61: XPC_FLAGS=0x0 - 62: TMUX_PANE=%19 - 63: XPC_SERVICE_NAME=0 - 64: SHLVL=5 - 65: HOME=/Users/ariard - 66: COLORFGBG=7;0 - 67: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 68: LOGNAME=ariard - 69: LESS=-R - 70: LC_CTYPE=en_US.UTF-8 - 71: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 72: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 73: _=../../42sh - 74: ?=0 - 75: ------------------------------ - 76: TOTAL ENVIRONMENT VARIABLES: 35 - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -bonuses/inline-environment-variable/002-modifies-child-environment-2 (FAILED) - - Description: - The purpose of this test is to check that a binary may have its environment to be modified by appending variables inline. - - Before test: - 01: unset "TOKEN201703291601_VARIABLE" - - STDIN: - 01: TOKEN201703291601_VARIABLE1=TOKEN201703291601_VALUE1 TOKEN201703291601_VARIABLE2=TOKEN201703291601_VALUE2 TOKEN201703291601_VARIABLE3=TOKEN201703291601_VALUE3 ./display_env - 02: ./display_env - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601_VARIABLE1=TOKEN201703291601_VALUE1$` once - FAILURE expected_to match_regex `^TOKEN201703291601_VARIABLE2=TOKEN201703291601_VALUE2$` once - FAILURE expected_to match_regex `^TOKEN201703291601_VARIABLE3=TOKEN201703291601_VALUE3$` once - 01: ------------------------------ - 02: TERM_PROGRAM=iTerm.app - 03: TERM=screen-256color - 04: SHELL=/bin/zsh - 05: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 06: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 07: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 08: TERM_PROGRAM_VERSION=3.0.10 - 09: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 10: ZSH=/Users/ariard/.oh-my-zsh - 11: USER=ariard - 12: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 13: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 14: PAGER=less - 15: TMUX=/private/tmp/tmux-18965/default,460,2 - 16: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 17: LSCOLORS=Gxfxcxdxbxegedabagacad - 18: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 19: MAIL=ariard@student.42.fr - 20: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 21: LANG=en_US.UTF-8 - 22: ITERM_PROFILE=Default - 23: XPC_FLAGS=0x0 - 24: TMUX_PANE=%19 - 25: XPC_SERVICE_NAME=0 - 26: SHLVL=5 - 27: HOME=/Users/ariard - 28: COLORFGBG=7;0 - 29: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 30: LOGNAME=ariard - 31: LESS=-R - 32: LC_CTYPE=en_US.UTF-8 - 33: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 34: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 35: _=../../42sh - 36: ?=0 - 37: ------------------------------ - 38: TOTAL ENVIRONMENT VARIABLES: 35 - 39: ------------------------------ - 40: TERM_PROGRAM=iTerm.app - 41: TERM=screen-256color - 42: SHELL=/bin/zsh - 43: HOMEBREW_TEMP=/tmp/ariard/Homebrew/Temp - 44: TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n0002_2m000khn/T/ - 45: Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.4f2AkmTXni/Render - 46: TERM_PROGRAM_VERSION=3.0.10 - 47: TERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 48: ZSH=/Users/ariard/.oh-my-zsh - 49: USER=ariard - 50: SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VotSnLjyD2/Listeners - 51: __CF_USER_TEXT_ENCODING=0x4A15:0x0:0x0 - 52: PAGER=less - 53: TMUX=/private/tmp/tmux-18965/default,460,2 - 54: HOMEBREW_CACHE=/tmp/ariard/Homebrew/Caches - 55: LSCOLORS=Gxfxcxdxbxegedabagacad - 56: PATH=/Users/ariard/.brew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki://Users/ariard/local/bin - 57: MAIL=ariard@student.42.fr - 58: PWD=/Users/ariard/Projects/42sh/42ShellTester/tmp - 59: LANG=en_US.UTF-8 - 60: ITERM_PROFILE=Default - 61: XPC_FLAGS=0x0 - 62: TMUX_PANE=%19 - 63: XPC_SERVICE_NAME=0 - 64: SHLVL=5 - 65: HOME=/Users/ariard - 66: COLORFGBG=7;0 - 67: ITERM_SESSION_ID=w0t0p0:27D68FBB-A085-467A-8F02-568DA11416F0 - 68: LOGNAME=ariard - 69: LESS=-R - 70: LC_CTYPE=en_US.UTF-8 - 71: TMUX_PLUGIN_MANAGER_PATH=/Users/ariard/.tmux/plugins/ - 72: OLDPWD=/Users/ariard/Projects/42sh/42ShellTester - 73: _=../../42sh - 74: ?=0 - 75: ------------------------------ - 76: TOTAL ENVIRONMENT VARIABLES: 35 - - STDERR: - SUCCESS expected_to be_empty - (no output) - ----------------------------------------------------------------- - -bonuses/inline-environment-variable/003-modifies-PATH-only (FAILED) - - Description: - The purpose of this test is to check that a binary may have its environment to be modified by appending variables inline. - - Before test: - 01: rm -rf "temporary_directory" - 02: mkdir -p "temporary_directory" - 03: cd "temporary_directory" - - STDIN: - 01: PATH=.. write_on_stdout TOKEN201703291601 - 02: exit_with_status 42 - - STDOUT: - FAILURE expected_to match_regex `^TOKEN201703291601$` - (no output) - - STDERR: - SUCCESS expected_to_not be_empty - WARNING might match_regex `[Cc]ommand not found` - 01: ./lib/main.sh: line 102: ../../42sh: No such file or directory - - MISC: - SUCCESS expected_to_not exit_with_status `42` - SUCCESS expected_to_not exit_with_status `0` - ----------------------------------------------------------------- - -bonuses/separators/and/errors/001-parse-error-at-beginning (WARNING) - - Description: - Parsing test. - The purpose of this test is to check that the AND operator `&&` must be placed after a valid command. - If not, the Shell should display an error and exit with an error status code. - - STDIN: - 01: && ./write_on_stdout TOKEN201703291601 - - STDOUT: - WARNING might_not match_regex `TOKEN201703291601` - WARNING might be_empty - 01: TOKEN201703291601 - - STDERR: - WARNING might_not be_empty - WARNING might match_regex `([Ss]yntax|[Pp]arse) error` - (no output) - - MISC: - WARNING might_not exit_with_status `0` - ----------------------------------------------------------------- - -bonuses/separators/and/errors/002-parse-error-too-much-symbol (FAILED) - - Description: - Parsing test. - The purpose of this test is to check that more than two '&' operators are detected as a syntax error. - It should not execute the two commands `write_on_stdout` but display an error and exit with an error status code. - - STDIN: - 01: ./write_on_stdout TOKEN201703291601 &&& ./write_on_stdout TOKEN201703291601 - - STDOUT: - SUCCESS might_not match_regex `TOKEN201703291601` - SUCCESS might be_empty - (no output) - - STDERR: - SUCCESS might_not be_empty - SUCCESS might match_regex `([Ss]yntax|[Pp]arse) error` - 01: syntax error near unexpected token `&' - - MISC: - FAILURE expected_to_not exit_with_status `0` - ----------------------------------------------------------------- - -bonuses/separators/or/errors/001-parse-error-at-beginning (WARNING) - - Description: - Parsing test. - The purpose of this test is to check that the OR operator `||` must be placed after a valid command. - If not, the Shell should display an error and exit with an error status code. - - STDIN: - 01: || ./write_on_stdout TOKEN201703291601 - - STDOUT: - SUCCESS might be_empty - (no output) - - STDERR: - WARNING might_not be_empty - WARNING might match_regex `([Ss]yntax|[Pp]arse) error` - (no output) - - MISC: - WARNING might_not exit_with_status `0` - ----------------------------------------------------------------- - -bonuses/separators/or/errors/002-parse-error-too-much-symbol (WARNING) - - Description: - Parsing test. - The purpose of this test is to check that using more than two pipe symbols `|` is detected as an error. - The Shell should display an error and exit with a error status code. - - STDIN: - 01: ./write_on_stdout TOKEN201703291601 ||| ./write_on_stdout TOKEN201703291601 - - STDOUT: - SUCCESS might be_empty - (no output) - - STDERR: - SUCCESS might_not be_empty - SUCCESS might match_regex `([Ss]yntax|[Pp]arse) error` - 01: syntax error near unexpected token `|' - - MISC: - WARNING might_not exit_with_status `0` - ----------------------------------------------------------------- - -bonuses/tilde-expansion/003-expanded-with-PWD-1 (FAILED) - - Description: - The purpose of this test is to check that the symbol tilde `~` may be expanded with the environment variable PWD when followed by the symbol `+`. - - Before test: - 01: export "HOME=/TOKEN201703291601" - - STDIN: - 01: ./write_on_stdout ~+ - - STDOUT: - SUCCESS expected_to_not match_regex `~[+]` - FAILURE expected_to_not match_regex `/TOKEN201703291601[+]` - FAILURE expected_to match_regex `^/Users/ariard/Projects/42sh/42ShellTester/tmp$` - 01: /TOKEN201703291601+ - - STDERR: - (no output) - ----------------------------------------------------------------- - -bonuses/tilde-expansion/004-expanded-with-PWD-2 (FAILED) - - Description: - The purpose of this test is to check that the symbol tilde `~` may be expanded with the environment variable PWD when followed by the symbol `+`. - - Before test: - 01: export "HOME=/TOKEN201703291601" - - STDIN: - 01: ./write_on_stdout ~+/TOKEN201703291601_SUBDIRECTORY - - STDOUT: - SUCCESS expected_to_not match_regex `~+/TOKEN201703291601_SUBDIRECTORY` - FAILURE expected_to_not match_regex `/TOKEN201703291601[+]/TOKEN201703291601_SUBDIRECTORY` - FAILURE expected_to match_regex `^/Users/ariard/Projects/42sh/42ShellTester/tmp/TOKEN201703291601_SUBDIRECTORY$` - 01: /TOKEN201703291601+/TOKEN201703291601_SUBDIRECTORY - - STDERR: - (no output) - ----------------------------------------------------------------- - -bonuses/tilde-expansion/005-expanded-with-OLDPWD-1 (FAILED) - - Description: - The purpose of this test is to check that the symbol tilde `~` may be expanded with the environment variable OLDPWD when followed by the symbol `+`. - - Before test: - 01: rm -rf "./TOKEN201703291601_SUBDIRECTORY" - 02: mkdir "./TOKEN201703291601_SUBDIRECTORY" - 03: export "HOME=/TOKEN201703291601" - - STDIN: - 01: cd ./TOKEN201703291601_SUBDIRECTORY - 02: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_on_stdout ~- - - STDOUT: - SUCCESS expected_to_not match_regex `~-` - FAILURE expected_to_not match_regex `/TOKEN201703291601-` - FAILURE expected_to match_regex `^/Users/ariard/Projects/42sh/42ShellTester/tmp$` - 01: /TOKEN201703291601- - - STDERR: - (no output) - ----------------------------------------------------------------- - -bonuses/tilde-expansion/006-expanded-with-OLDPWD-2 (FAILED) - - Description: - The purpose of this test is to check that the symbol tilde `~` may be expanded with the environment variable OLDPWD when followed by the symbol `+`. - - Before test: - 01: rm -rf "./TOKEN201703291601_SUBDIRECTORY" - 02: mkdir "./TOKEN201703291601_SUBDIRECTORY" - 03: export "HOME=/TOKEN201703291601" - - STDIN: - 01: cd ./TOKEN201703291601_SUBDIRECTORY - 02: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_on_stdout ~-/TOKEN201703291601_OTHERDIRECTORY - - STDOUT: - SUCCESS expected_to_not match_regex `~-/TOKEN201703291601_OTHERDIRECTORY` - FAILURE expected_to_not match_regex `/TOKEN201703291601-/TOKEN201703291601_OTHERDIRECTORY` - FAILURE expected_to match_regex `^/Users/ariard/Projects/42sh/42ShellTester/tmp/TOKEN201703291601_OTHERDIRECTORY$` - 01: /TOKEN201703291601-/TOKEN201703291601_OTHERDIRECTORY - - STDERR: - (no output) - ----------------------------------------------------------------- - -bonuses/tilde-expansion/not-expanded/001-not-expanded-with-HOME-1 (FAILED) - - Description: - The purpose of this test is to check that the symbol tilde `~` may be not expanded when not followed by an authorized symbol or user name. - - Before test: - 01: export "HOME=/TOKEN201703291601" - - STDIN: - 01: ./write_on_stdout ~~ - - STDOUT: - FAILURE expected_to match_regex `^~~$` - FAILURE expected_to_not match_regex `/TOKEN201703291601` - 01: /TOKEN201703291601~ - - STDERR: - (no output) - ----------------------------------------------------------------- - -bonuses/tilde-expansion/not-expanded/002-not-expanded-with-HOME-2 (FAILED) - - Description: - The purpose of this test is to check that the symbol tilde `~` may be not expanded when not followed by an authorized symbol or user name. - - Before test: - 01: export "HOME=/TOKEN201703291601" - - STDIN: - 01: ./write_on_stdout ~TOKEN201703291601_UNKNOWNUSER - - STDOUT: - FAILURE expected_to match_regex `^~TOKEN201703291601_UNKNOWNUSER$` - FAILURE expected_to_not match_regex `/TOKEN201703291601TOKEN201703291601_UNKNOWNUSER` - 01: /TOKEN201703291601TOKEN201703291601_UNKNOWNUSER - - STDERR: - (no output) - ----------------------------------------------------------------- - -bonuses/tilde-expansion/not-expanded/003-not-expanded-with-PWD (FAILED) - - Description: - The purpose of this test is to check that the symbol tilde `~` is not expanded with the environment variable PWD when not followed by the symbol `/`. - - Before test: - 01: export "HOME=/TOKEN201703291601" - - STDIN: - 01: ./write_on_stdout ~+TOKEN201703291601_SUBDIRECTORY - - STDOUT: - FAILURE expected_to match_regex `^~[+]TOKEN201703291601_SUBDIRECTORY$` - FAILURE expected_to_not match_regex `/TOKEN201703291601[+]TOKEN201703291601_SUBDIRECTORY` - SUCCESS expected_to_not match_regex `/Users/ariard/Projects/42sh/42ShellTester/tmpTOKEN201703291601_SUBDIRECTORY` - 01: /TOKEN201703291601+TOKEN201703291601_SUBDIRECTORY - - STDERR: - (no output) - ----------------------------------------------------------------- - -bonuses/tilde-expansion/not-expanded/004-not-expanded-with-OLDPWD (FAILED) - - Description: - The purpose of this test is to check that the symbol tilde `~` is not expanded with the environment variable OLDPWD when not followed by the symbol `/`. - - Before test: - 01: rm -rf "./TOKEN201703291601_SUBDIRECTORY" - 02: mkdir "./TOKEN201703291601_SUBDIRECTORY" - 03: export "HOME=/TOKEN201703291601" - - STDIN: - 01: cd ./TOKEN201703291601_SUBDIRECTORY - 02: /Users/ariard/Projects/42sh/42ShellTester/tmp/write_on_stdout ~-TOKEN201703291601_OTHERDIRECTORY - - STDOUT: - FAILURE expected_to match_regex `^~-TOKEN201703291601_OTHERDIRECTORY$` - SUCCESS expected_to_not match_regex `/TOKEN201703291601-/TOKEN201703291601_OTHERDIRECTORY` - SUCCESS expected_to_not match_regex `/Users/ariard/Projects/42sh/42ShellTester/tmp/TOKEN201703291601_OTHERDIRECTORY` - 01: /TOKEN201703291601-TOKEN201703291601_OTHERDIRECTORY - - STDERR: - (no output) +...x...~......xx........~...........~.....~........... ---------------------------------------------------------------- @@ -2918,10 +11,10 @@  01: export PATH="" STDIN: - 01: write_on_stdout "TOKEN201703291601" + 01: write_on_stdout "TOKEN201703291625" STDOUT: - FAILURE expected_to match_regex `TOKEN201703291601` + FAILURE expected_to match_regex `TOKEN201703291625`  (no output) STDERR: @@ -3003,7 +96,7 @@ 22: LANG=en_US.UTF-8 23: ITERM_PROFILE=Default 24: XPC_FLAGS=0x0 - 25: TMUX_PANE=%19 + 25: TMUX_PANE=%22 26: XPC_SERVICE_NAME=0 27: SHLVL=5 28: HOME=/Users/ariard @@ -3068,7 +161,7 @@ 22: LANG=en_US.UTF-8 23: ITERM_PROFILE=Default 24: XPC_FLAGS=0x0 - 25: TMUX_PANE=%19 + 25: TMUX_PANE=%22 26: XPC_SERVICE_NAME=0 27: SHLVL=5 28: HOME=/Users/ariard @@ -3147,11 +240,11 @@ STDIN:  01: exit 21 42 - 02: ./write_on_stdout TOKEN201703291601 + 02: ./write_on_stdout TOKEN201703291625 STDOUT: - SUCCESS expected_to match_regex `TOKEN201703291601` - 01: TOKEN201703291601 + SUCCESS expected_to match_regex `TOKEN201703291625` + 01: TOKEN201703291625 STDERR:  SUCCESS expected_to_not be_empty @@ -3161,6 +254,6 @@ MISC:  SUCCESS expected_to exit_with_status `0` -Total tests: 281 -Total failed tests: 95 -Total pending tests: 3 +Total tests: 54 +Total failed tests: 3 +Total pending tests: 0 diff --git a/42sh/another_file b/42sh/another_file index abf47cb8..8152dc4e 100644 --- a/42sh/another_file +++ b/42sh/another_file @@ -484,3 +484,975 @@ src/parser/stack_init.c$$ src/parser/sym_free.c$$ src/parser/tree_func_free.c$$ src/parser/tree_wrapper.c$$ +src/builtin/bt_env_opt.c$$ +src/builtin/bt_read_get.c$$ +src/builtin/bt_read_term.c$$ +src/builtin/builtin_cd.c$$ +src/builtin/builtin_echo.c$$ +src/builtin/builtin_env.c$$ +src/builtin/builtin_exit.c$$ +src/builtin/builtin_export.c$$ +src/builtin/builtin_func.c$$ +src/builtin/builtin_hash.c$$ +src/builtin/builtin_history.c$$ +src/builtin/builtin_math.c$$ +src/builtin/builtin_read.c$$ +src/builtin/builtin_setenv.c$$ +src/builtin/builtin_unset.c$$ +src/builtin/builtin_unsetenv.c$$ +src/builtin/is_builtin.c$$ +src/completion/c_arrow.c$$ +src/completion/c_clear.c$$ +src/completion/c_find_abspath.c$$ +src/completion/c_find_binary.c$$ +src/completion/c_find_env.c$$ +src/completion/c_find_files.c$$ +src/completion/c_init.c$$ +src/completion/c_match.c$$ +src/completion/c_match_glob.c$$ +src/completion/c_match_update.c$$ +src/completion/c_misc.c$$ +src/completion/c_output.c$$ +src/completion/c_parser.c$$ +src/completion/c_pathsolver.c$$ +src/completion/c_printer.c$$ +src/completion/c_sizing.c$$ +src/completion/c_terminal.c$$ +src/completion/completion.c$$ +src/exec/ast_free.c$$ +src/exec/bad_fd.c$$ +src/exec/exec_ampersand.c$$ +src/exec/exec_and_if.c$$ +src/exec/exec_bang.c$$ +src/exec/exec_case_branch.c$$ +src/exec/exec_destroy.c$$ +src/exec/exec_elif.c$$ +src/exec/exec_else.c$$ +src/exec/exec_func.c$$ +src/exec/exec_init.c$$ +src/exec/exec_leaf.c$$ +src/exec/exec_or_if.c$$ +src/exec/exec_pipe.c$$ +src/exec/exec_semi.c$$ +src/exec/exec_var.c$$ +src/exec/fd_is_valid.c$$ +src/exec/ft_exec.c$$ +src/exec/ft_findexec.c$$ +src/exec/is_function.c$$ +src/exec/mark_process_status.c$$ +src/exec/node_copy.c$$ +src/exec/pfree_cmd.c$$ +src/exec/pfree_cond.c$$ +src/exec/pfree_func.c$$ +src/exec/pfree_list.c$$ +src/exec/pfree_subshell.c$$ +src/exec/plaunch_brace.c$$ +src/exec/plaunch_builtin.c$$ +src/exec/plaunch_case.c$$ +src/exec/plaunch_empty.c$$ +src/exec/plaunch_file.c$$ +src/exec/plaunch_for.c$$ +src/exec/plaunch_function.c$$ +src/exec/plaunch_if.c$$ +src/exec/plaunch_subshell.c$$ +src/exec/plaunch_until.c$$ +src/exec/plaunch_while.c$$ +src/exec/process_launch.c$$ +src/exec/process_redirect.c$$ +src/exec/process_set.c$$ +src/exec/process_setgroup.c$$ +src/exec/process_setsig.c$$ +src/exec/pset_brace.c$$ +src/exec/pset_case.c$$ +src/exec/pset_cmd.c$$ +src/exec/pset_for.c$$ +src/exec/pset_if.c$$ +src/exec/pset_subshell.c$$ +src/exec/pset_until.c$$ +src/exec/pset_while.c$$ +src/exec/redir_copy.c$$ +src/exec/redir_free.c$$ +src/exec/redirect_dgreat.c$$ +src/exec/redirect_dless.c$$ +src/exec/redirect_great.c$$ +src/exec/redirect_greatand.c$$ +src/exec/redirect_less.c$$ +src/exec/redirect_lessand.c$$ +src/exec/set_exitstatus.c$$ +src/exec/token_to_argv.c$$ +src/glob/command_getoutput.c$$ +src/glob/dir_glob.c$$ +src/glob/esc_print.c$$ +src/glob/expand_bquote.c$$ +src/glob/expand_brace.c$$ +src/glob/expand_esc.c$$ +src/glob/expand_home.c$$ +src/glob/expand_var.c$$ +src/glob/ft_strsplit_esc.c$$ +src/glob/ft_strsplit_spe.c$$ +src/glob/gen_tab_esc.c$$ +src/glob/glob.c$$ +src/glob/is_char_esc.c$$ +src/glob/match_pattern.c$$ +src/glob/tab_esc_copy.c$$ +src/glob/word_is_assignment.c$$ +src/hash_table/ft_add_hash.c$$ +src/hash_table/hash.c$$ +src/hash_table/hash_free.c$$ +src/hash_table/hash_str.c$$ +src/hash_table/is_hash.c$$ +src/history/add_str_in_history.c$$ +src/history/history.c$$ +src/history/history_parsing.c$$ +src/history/history_parsing_toolz.c$$ +src/history/history_parsing_toolz_2.c$$ +src/history/list_toolz.c$$ +src/history/surch_in_history.c$$ +src/job_control/builtin_bg.c$$ +src/job_control/builtin_fg.c$$ +src/job_control/builtin_jobs.c$$ +src/job_control/do_job_notification.c$$ +src/job_control/has_running_job.c$$ +src/job_control/has_stopped_job.c$$ +src/job_control/job_addprocess.c$$ +src/job_control/job_cmp_id.c$$ +src/job_control/job_format.c$$ +src/job_control/job_format_head.c$$ +src/job_control/job_free.c$$ +src/job_control/job_getprocess.c$$ +src/job_control/job_getrank.c$$ +src/job_control/job_hup_all.c$$ +src/job_control/job_is_completed.c$$ +src/job_control/job_is_stopped.c$$ +src/job_control/job_notify_change.c$$ +src/job_control/job_notify_new.c$$ +src/job_control/job_remove.c$$ +src/job_control/job_run.c$$ +src/job_control/job_update_id.c$$ +src/job_control/job_update_status.c$$ +src/job_control/job_wait.c$$ +src/job_control/jobc_destroy.c$$ +src/job_control/jobc_init.c$$ +src/job_control/mark_job_as_running.c$$ +src/job_control/pprint_brace.c$$ +src/job_control/pprint_case.c$$ +src/job_control/pprint_cmd.c$$ +src/job_control/pprint_for.c$$ +src/job_control/pprint_function.c$$ +src/job_control/pprint_if.c$$ +src/job_control/pprint_subshell.c$$ +src/job_control/pprint_until.c$$ +src/job_control/pprint_while.c$$ +src/job_control/process_cmp_pid.c$$ +src/job_control/process_format.c$$ +src/job_control/process_free.c$$ +src/job_control/put_job_in_background.c$$ +src/job_control/put_job_in_foreground.c$$ +src/job_control/sigchld_handler.c$$ +src/job_control/sigint_handler.c$$ +src/job_control/sigtstp_handler.c$$ +src/job_control/sigttin_handler.c$$ +src/job_control/sigttou_handler.c$$ +src/lexer/do_lexer_routine.c$$ +src/lexer/get_lexer_stack.c$$ +src/lexer/get_lexer_stack2.c$$ +src/lexer/get_reserved_words.c$$ +src/lexer/get_state_global.c$$ +src/lexer/get_state_redir.c$$ +src/lexer/insert_newline.c$$ +src/lexer/isrw_delim.c$$ +src/lexer/keep_last_type.c$$ +src/lexer/lexer_backslash.c$$ +src/lexer/lexer_bquote.c$$ +src/lexer/lexer_curly_braces.c$$ +src/lexer/lexer_default.c$$ +src/lexer/lexer_delim.c$$ +src/lexer/lexer_destroy.c$$ +src/lexer/lexer_dquote.c$$ +src/lexer/lexer_end.c$$ +src/lexer/lexer_great.c$$ +src/lexer/lexer_heredoc.c$$ +src/lexer/lexer_init.c$$ +src/lexer/lexer_less.c$$ +src/lexer/lexer_lex.c$$ +src/lexer/lexer_newline.c$$ +src/lexer/lexer_number.c$$ +src/lexer/lexer_paren.c$$ +src/lexer/lexer_quote.c$$ +src/lexer/lexer_sep.c$$ +src/lexer/lexer_word.c$$ +src/lexer/token_append.c$$ +src/lexer/token_cmp_type.c$$ +src/lexer/token_free.c$$ +src/lexer/token_init.c$$ +src/lexer/token_print.c$$ +src/line_editing/control_features.c$$ +src/line_editing/ft_prompt.c$$ +src/line_editing/get_key.c$$ +src/line_editing/readline.c$$ +src/line_editing/resize.c$$ +src/main/data_exit.c$$ +src/main/data_init.c$$ +src/main/data_singleton.c$$ +src/main/ft_putast.c$$ +src/main/main.c$$ +src/main/shell_fds.c$$ +src/main/shell_init.c$$ +src/main/shell_sig.c$$ +src/parser/add_bang.c$$ +src/parser/add_case.c$$ +src/parser/add_cmd.c$$ +src/parser/add_condition.c$$ +src/parser/add_func.c$$ +src/parser/add_loop.c$$ +src/parser/add_number.c$$ +src/parser/add_redir.c$$ +src/parser/add_sep.c$$ +src/parser/add_subshell.c$$ +src/parser/aggregate_sym.c$$ +src/parser/build_tree.c$$ +src/parser/do_parser_routine.c$$ +src/parser/error_syntax.c$$ +src/parser/eval_sym.c$$ +src/parser/ft_parse.c$$ +src/parser/heredoc_parser.c$$ +src/parser/parser_destroy.c$$ +src/parser/parser_init.c$$ +src/parser/pop_stack.c$$ +src/parser/produce_sym.c$$ +src/parser/push_stack.c$$ +src/parser/read_stack.c$$ +src/parser/redir_init.c$$ +src/parser/stack_init.c$$ +src/parser/sym_free.c$$ +src/parser/tree_func_free.c$$ +src/parser/tree_wrapper.c$$ +src/builtin/bt_env_opt.c$$ +src/builtin/bt_read_get.c$$ +src/builtin/bt_read_term.c$$ +src/builtin/builtin_cd.c$$ +src/builtin/builtin_echo.c$$ +src/builtin/builtin_env.c$$ +src/builtin/builtin_exit.c$$ +src/builtin/builtin_export.c$$ +src/builtin/builtin_func.c$$ +src/builtin/builtin_hash.c$$ +src/builtin/builtin_history.c$$ +src/builtin/builtin_math.c$$ +src/builtin/builtin_read.c$$ +src/builtin/builtin_setenv.c$$ +src/builtin/builtin_unset.c$$ +src/builtin/builtin_unsetenv.c$$ +src/builtin/is_builtin.c$$ +src/completion/c_arrow.c$$ +src/completion/c_clear.c$$ +src/completion/c_find_abspath.c$$ +src/completion/c_find_binary.c$$ +src/completion/c_find_env.c$$ +src/completion/c_find_files.c$$ +src/completion/c_init.c$$ +src/completion/c_match.c$$ +src/completion/c_match_glob.c$$ +src/completion/c_match_update.c$$ +src/completion/c_misc.c$$ +src/completion/c_output.c$$ +src/completion/c_parser.c$$ +src/completion/c_pathsolver.c$$ +src/completion/c_printer.c$$ +src/completion/c_sizing.c$$ +src/completion/c_terminal.c$$ +src/completion/completion.c$$ +src/exec/ast_free.c$$ +src/exec/bad_fd.c$$ +src/exec/exec_ampersand.c$$ +src/exec/exec_and_if.c$$ +src/exec/exec_bang.c$$ +src/exec/exec_case_branch.c$$ +src/exec/exec_destroy.c$$ +src/exec/exec_elif.c$$ +src/exec/exec_else.c$$ +src/exec/exec_func.c$$ +src/exec/exec_init.c$$ +src/exec/exec_leaf.c$$ +src/exec/exec_or_if.c$$ +src/exec/exec_pipe.c$$ +src/exec/exec_semi.c$$ +src/exec/exec_var.c$$ +src/exec/fd_is_valid.c$$ +src/exec/ft_exec.c$$ +src/exec/ft_findexec.c$$ +src/exec/is_function.c$$ +src/exec/mark_process_status.c$$ +src/exec/node_copy.c$$ +src/exec/pfree_cmd.c$$ +src/exec/pfree_cond.c$$ +src/exec/pfree_func.c$$ +src/exec/pfree_list.c$$ +src/exec/pfree_subshell.c$$ +src/exec/plaunch_brace.c$$ +src/exec/plaunch_builtin.c$$ +src/exec/plaunch_case.c$$ +src/exec/plaunch_empty.c$$ +src/exec/plaunch_file.c$$ +src/exec/plaunch_for.c$$ +src/exec/plaunch_function.c$$ +src/exec/plaunch_if.c$$ +src/exec/plaunch_subshell.c$$ +src/exec/plaunch_until.c$$ +src/exec/plaunch_while.c$$ +src/exec/process_launch.c$$ +src/exec/process_redirect.c$$ +src/exec/process_set.c$$ +src/exec/process_setgroup.c$$ +src/exec/process_setsig.c$$ +src/exec/pset_brace.c$$ +src/exec/pset_case.c$$ +src/exec/pset_cmd.c$$ +src/exec/pset_for.c$$ +src/exec/pset_if.c$$ +src/exec/pset_subshell.c$$ +src/exec/pset_until.c$$ +src/exec/pset_while.c$$ +src/exec/redir_copy.c$$ +src/exec/redir_free.c$$ +src/exec/redirect_dgreat.c$$ +src/exec/redirect_dless.c$$ +src/exec/redirect_great.c$$ +src/exec/redirect_greatand.c$$ +src/exec/redirect_less.c$$ +src/exec/redirect_lessand.c$$ +src/exec/set_exitstatus.c$$ +src/exec/token_to_argv.c$$ +src/glob/command_getoutput.c$$ +src/glob/dir_glob.c$$ +src/glob/esc_print.c$$ +src/glob/expand_bquote.c$$ +src/glob/expand_brace.c$$ +src/glob/expand_esc.c$$ +src/glob/expand_home.c$$ +src/glob/expand_var.c$$ +src/glob/ft_strsplit_esc.c$$ +src/glob/ft_strsplit_spe.c$$ +src/glob/gen_tab_esc.c$$ +src/glob/glob.c$$ +src/glob/is_char_esc.c$$ +src/glob/match_pattern.c$$ +src/glob/tab_esc_copy.c$$ +src/glob/word_is_assignment.c$$ +src/hash_table/ft_add_hash.c$$ +src/hash_table/hash.c$$ +src/hash_table/hash_free.c$$ +src/hash_table/hash_str.c$$ +src/hash_table/is_hash.c$$ +src/history/add_str_in_history.c$$ +src/history/history.c$$ +src/history/history_parsing.c$$ +src/history/history_parsing_toolz.c$$ +src/history/history_parsing_toolz_2.c$$ +src/history/list_toolz.c$$ +src/history/surch_in_history.c$$ +src/job_control/builtin_bg.c$$ +src/job_control/builtin_fg.c$$ +src/job_control/builtin_jobs.c$$ +src/job_control/do_job_notification.c$$ +src/job_control/has_running_job.c$$ +src/job_control/has_stopped_job.c$$ +src/job_control/job_addprocess.c$$ +src/job_control/job_cmp_id.c$$ +src/job_control/job_format.c$$ +src/job_control/job_format_head.c$$ +src/job_control/job_free.c$$ +src/job_control/job_getprocess.c$$ +src/job_control/job_getrank.c$$ +src/job_control/job_hup_all.c$$ +src/job_control/job_is_completed.c$$ +src/job_control/job_is_stopped.c$$ +src/job_control/job_notify_change.c$$ +src/job_control/job_notify_new.c$$ +src/job_control/job_remove.c$$ +src/job_control/job_run.c$$ +src/job_control/job_update_id.c$$ +src/job_control/job_update_status.c$$ +src/job_control/job_wait.c$$ +src/job_control/jobc_destroy.c$$ +src/job_control/jobc_init.c$$ +src/job_control/mark_job_as_running.c$$ +src/job_control/pprint_brace.c$$ +src/job_control/pprint_case.c$$ +src/job_control/pprint_cmd.c$$ +src/job_control/pprint_for.c$$ +src/job_control/pprint_function.c$$ +src/job_control/pprint_if.c$$ +src/job_control/pprint_subshell.c$$ +src/job_control/pprint_until.c$$ +src/job_control/pprint_while.c$$ +src/job_control/process_cmp_pid.c$$ +src/job_control/process_format.c$$ +src/job_control/process_free.c$$ +src/job_control/put_job_in_background.c$$ +src/job_control/put_job_in_foreground.c$$ +src/job_control/sigchld_handler.c$$ +src/job_control/sigint_handler.c$$ +src/job_control/sigtstp_handler.c$$ +src/job_control/sigttin_handler.c$$ +src/job_control/sigttou_handler.c$$ +src/lexer/do_lexer_routine.c$$ +src/lexer/get_lexer_stack.c$$ +src/lexer/get_lexer_stack2.c$$ +src/lexer/get_reserved_words.c$$ +src/lexer/get_state_global.c$$ +src/lexer/get_state_redir.c$$ +src/lexer/insert_newline.c$$ +src/lexer/isrw_delim.c$$ +src/lexer/keep_last_type.c$$ +src/lexer/lexer_backslash.c$$ +src/lexer/lexer_bquote.c$$ +src/lexer/lexer_curly_braces.c$$ +src/lexer/lexer_default.c$$ +src/lexer/lexer_delim.c$$ +src/lexer/lexer_destroy.c$$ +src/lexer/lexer_dquote.c$$ +src/lexer/lexer_end.c$$ +src/lexer/lexer_great.c$$ +src/lexer/lexer_heredoc.c$$ +src/lexer/lexer_init.c$$ +src/lexer/lexer_less.c$$ +src/lexer/lexer_lex.c$$ +src/lexer/lexer_newline.c$$ +src/lexer/lexer_number.c$$ +src/lexer/lexer_paren.c$$ +src/lexer/lexer_quote.c$$ +src/lexer/lexer_sep.c$$ +src/lexer/lexer_word.c$$ +src/lexer/token_append.c$$ +src/lexer/token_cmp_type.c$$ +src/lexer/token_free.c$$ +src/lexer/token_init.c$$ +src/lexer/token_print.c$$ +src/line_editing/control_features.c$$ +src/line_editing/ft_prompt.c$$ +src/line_editing/get_key.c$$ +src/line_editing/readline.c$$ +src/line_editing/resize.c$$ +src/main/data_exit.c$$ +src/main/data_init.c$$ +src/main/data_singleton.c$$ +src/main/ft_putast.c$$ +src/main/main.c$$ +src/main/shell_fds.c$$ +src/main/shell_init.c$$ +src/main/shell_sig.c$$ +src/parser/add_bang.c$$ +src/parser/add_case.c$$ +src/parser/add_cmd.c$$ +src/parser/add_condition.c$$ +src/parser/add_func.c$$ +src/parser/add_loop.c$$ +src/parser/add_number.c$$ +src/parser/add_redir.c$$ +src/parser/add_sep.c$$ +src/parser/add_subshell.c$$ +src/parser/aggregate_sym.c$$ +src/parser/build_tree.c$$ +src/parser/do_parser_routine.c$$ +src/parser/error_syntax.c$$ +src/parser/eval_sym.c$$ +src/parser/ft_parse.c$$ +src/parser/heredoc_parser.c$$ +src/parser/parser_destroy.c$$ +src/parser/parser_init.c$$ +src/parser/pop_stack.c$$ +src/parser/produce_sym.c$$ +src/parser/push_stack.c$$ +src/parser/read_stack.c$$ +src/parser/redir_init.c$$ +src/parser/stack_init.c$$ +src/parser/sym_free.c$$ +src/parser/tree_func_free.c$$ +src/parser/tree_wrapper.c$$ +src/builtin/bt_env_opt.c$$ +src/builtin/bt_read_get.c$$ +src/builtin/bt_read_term.c$$ +src/builtin/builtin_cd.c$$ +src/builtin/builtin_echo.c$$ +src/builtin/builtin_env.c$$ +src/builtin/builtin_exit.c$$ +src/builtin/builtin_export.c$$ +src/builtin/builtin_func.c$$ +src/builtin/builtin_hash.c$$ +src/builtin/builtin_history.c$$ +src/builtin/builtin_math.c$$ +src/builtin/builtin_read.c$$ +src/builtin/builtin_setenv.c$$ +src/builtin/builtin_unset.c$$ +src/builtin/builtin_unsetenv.c$$ +src/builtin/is_builtin.c$$ +src/completion/c_arrow.c$$ +src/completion/c_clear.c$$ +src/completion/c_find_abspath.c$$ +src/completion/c_find_binary.c$$ +src/completion/c_find_env.c$$ +src/completion/c_find_files.c$$ +src/completion/c_init.c$$ +src/completion/c_match.c$$ +src/completion/c_match_glob.c$$ +src/completion/c_match_update.c$$ +src/completion/c_misc.c$$ +src/completion/c_output.c$$ +src/completion/c_parser.c$$ +src/completion/c_pathsolver.c$$ +src/completion/c_printer.c$$ +src/completion/c_sizing.c$$ +src/completion/c_terminal.c$$ +src/completion/completion.c$$ +src/exec/ast_free.c$$ +src/exec/bad_fd.c$$ +src/exec/exec_ampersand.c$$ +src/exec/exec_and_if.c$$ +src/exec/exec_bang.c$$ +src/exec/exec_case_branch.c$$ +src/exec/exec_destroy.c$$ +src/exec/exec_elif.c$$ +src/exec/exec_else.c$$ +src/exec/exec_func.c$$ +src/exec/exec_init.c$$ +src/exec/exec_leaf.c$$ +src/exec/exec_or_if.c$$ +src/exec/exec_pipe.c$$ +src/exec/exec_semi.c$$ +src/exec/exec_var.c$$ +src/exec/fd_is_valid.c$$ +src/exec/ft_exec.c$$ +src/exec/ft_findexec.c$$ +src/exec/is_function.c$$ +src/exec/mark_process_status.c$$ +src/exec/node_copy.c$$ +src/exec/pfree_cmd.c$$ +src/exec/pfree_cond.c$$ +src/exec/pfree_func.c$$ +src/exec/pfree_list.c$$ +src/exec/pfree_subshell.c$$ +src/exec/plaunch_brace.c$$ +src/exec/plaunch_builtin.c$$ +src/exec/plaunch_case.c$$ +src/exec/plaunch_empty.c$$ +src/exec/plaunch_file.c$$ +src/exec/plaunch_for.c$$ +src/exec/plaunch_function.c$$ +src/exec/plaunch_if.c$$ +src/exec/plaunch_subshell.c$$ +src/exec/plaunch_until.c$$ +src/exec/plaunch_while.c$$ +src/exec/process_launch.c$$ +src/exec/process_redirect.c$$ +src/exec/process_set.c$$ +src/exec/process_setgroup.c$$ +src/exec/process_setsig.c$$ +src/exec/pset_brace.c$$ +src/exec/pset_case.c$$ +src/exec/pset_cmd.c$$ +src/exec/pset_for.c$$ +src/exec/pset_if.c$$ +src/exec/pset_subshell.c$$ +src/exec/pset_until.c$$ +src/exec/pset_while.c$$ +src/exec/redir_copy.c$$ +src/exec/redir_free.c$$ +src/exec/redirect_dgreat.c$$ +src/exec/redirect_dless.c$$ +src/exec/redirect_great.c$$ +src/exec/redirect_greatand.c$$ +src/exec/redirect_less.c$$ +src/exec/redirect_lessand.c$$ +src/exec/set_exitstatus.c$$ +src/exec/token_to_argv.c$$ +src/glob/command_getoutput.c$$ +src/glob/dir_glob.c$$ +src/glob/esc_print.c$$ +src/glob/expand_bquote.c$$ +src/glob/expand_brace.c$$ +src/glob/expand_esc.c$$ +src/glob/expand_home.c$$ +src/glob/expand_var.c$$ +src/glob/ft_strsplit_esc.c$$ +src/glob/ft_strsplit_spe.c$$ +src/glob/gen_tab_esc.c$$ +src/glob/glob.c$$ +src/glob/is_char_esc.c$$ +src/glob/match_pattern.c$$ +src/glob/tab_esc_copy.c$$ +src/glob/word_is_assignment.c$$ +src/hash_table/ft_add_hash.c$$ +src/hash_table/hash.c$$ +src/hash_table/hash_free.c$$ +src/hash_table/hash_str.c$$ +src/hash_table/is_hash.c$$ +src/history/add_str_in_history.c$$ +src/history/history.c$$ +src/history/history_parsing.c$$ +src/history/history_parsing_toolz.c$$ +src/history/history_parsing_toolz_2.c$$ +src/history/list_toolz.c$$ +src/history/surch_in_history.c$$ +src/job_control/builtin_bg.c$$ +src/job_control/builtin_fg.c$$ +src/job_control/builtin_jobs.c$$ +src/job_control/do_job_notification.c$$ +src/job_control/has_running_job.c$$ +src/job_control/has_stopped_job.c$$ +src/job_control/job_addprocess.c$$ +src/job_control/job_cmp_id.c$$ +src/job_control/job_format.c$$ +src/job_control/job_format_head.c$$ +src/job_control/job_free.c$$ +src/job_control/job_getprocess.c$$ +src/job_control/job_getrank.c$$ +src/job_control/job_hup_all.c$$ +src/job_control/job_is_completed.c$$ +src/job_control/job_is_stopped.c$$ +src/job_control/job_notify_change.c$$ +src/job_control/job_notify_new.c$$ +src/job_control/job_remove.c$$ +src/job_control/job_run.c$$ +src/job_control/job_update_id.c$$ +src/job_control/job_update_status.c$$ +src/job_control/job_wait.c$$ +src/job_control/jobc_destroy.c$$ +src/job_control/jobc_init.c$$ +src/job_control/mark_job_as_running.c$$ +src/job_control/pprint_brace.c$$ +src/job_control/pprint_case.c$$ +src/job_control/pprint_cmd.c$$ +src/job_control/pprint_for.c$$ +src/job_control/pprint_function.c$$ +src/job_control/pprint_if.c$$ +src/job_control/pprint_subshell.c$$ +src/job_control/pprint_until.c$$ +src/job_control/pprint_while.c$$ +src/job_control/process_cmp_pid.c$$ +src/job_control/process_format.c$$ +src/job_control/process_free.c$$ +src/job_control/put_job_in_background.c$$ +src/job_control/put_job_in_foreground.c$$ +src/job_control/sigchld_handler.c$$ +src/job_control/sigint_handler.c$$ +src/job_control/sigtstp_handler.c$$ +src/job_control/sigttin_handler.c$$ +src/job_control/sigttou_handler.c$$ +src/lexer/do_lexer_routine.c$$ +src/lexer/get_lexer_stack.c$$ +src/lexer/get_lexer_stack2.c$$ +src/lexer/get_reserved_words.c$$ +src/lexer/get_state_global.c$$ +src/lexer/get_state_redir.c$$ +src/lexer/insert_newline.c$$ +src/lexer/isrw_delim.c$$ +src/lexer/keep_last_type.c$$ +src/lexer/lexer_backslash.c$$ +src/lexer/lexer_bquote.c$$ +src/lexer/lexer_curly_braces.c$$ +src/lexer/lexer_default.c$$ +src/lexer/lexer_delim.c$$ +src/lexer/lexer_destroy.c$$ +src/lexer/lexer_dquote.c$$ +src/lexer/lexer_end.c$$ +src/lexer/lexer_great.c$$ +src/lexer/lexer_heredoc.c$$ +src/lexer/lexer_init.c$$ +src/lexer/lexer_less.c$$ +src/lexer/lexer_lex.c$$ +src/lexer/lexer_newline.c$$ +src/lexer/lexer_number.c$$ +src/lexer/lexer_paren.c$$ +src/lexer/lexer_quote.c$$ +src/lexer/lexer_sep.c$$ +src/lexer/lexer_word.c$$ +src/lexer/token_append.c$$ +src/lexer/token_cmp_type.c$$ +src/lexer/token_free.c$$ +src/lexer/token_init.c$$ +src/lexer/token_print.c$$ +src/line_editing/control_features.c$$ +src/line_editing/ft_prompt.c$$ +src/line_editing/get_key.c$$ +src/line_editing/readline.c$$ +src/line_editing/resize.c$$ +src/main/data_exit.c$$ +src/main/data_init.c$$ +src/main/data_singleton.c$$ +src/main/ft_putast.c$$ +src/main/main.c$$ +src/main/shell_fds.c$$ +src/main/shell_init.c$$ +src/main/shell_sig.c$$ +src/parser/add_bang.c$$ +src/parser/add_case.c$$ +src/parser/add_cmd.c$$ +src/parser/add_condition.c$$ +src/parser/add_func.c$$ +src/parser/add_loop.c$$ +src/parser/add_number.c$$ +src/parser/add_redir.c$$ +src/parser/add_sep.c$$ +src/parser/add_subshell.c$$ +src/parser/aggregate_sym.c$$ +src/parser/build_tree.c$$ +src/parser/do_parser_routine.c$$ +src/parser/error_syntax.c$$ +src/parser/eval_sym.c$$ +src/parser/ft_parse.c$$ +src/parser/heredoc_parser.c$$ +src/parser/parser_destroy.c$$ +src/parser/parser_init.c$$ +src/parser/pop_stack.c$$ +src/parser/produce_sym.c$$ +src/parser/push_stack.c$$ +src/parser/read_stack.c$$ +src/parser/redir_init.c$$ +src/parser/stack_init.c$$ +src/parser/sym_free.c$$ +src/parser/tree_func_free.c$$ +src/parser/tree_wrapper.c$$ +src/builtin/bt_env_opt.c$$ +src/builtin/bt_read_get.c$$ +src/builtin/bt_read_term.c$$ +src/builtin/builtin_cd.c$$ +src/builtin/builtin_echo.c$$ +src/builtin/builtin_env.c$$ +src/builtin/builtin_exit.c$$ +src/builtin/builtin_export.c$$ +src/builtin/builtin_func.c$$ +src/builtin/builtin_hash.c$$ +src/builtin/builtin_history.c$$ +src/builtin/builtin_math.c$$ +src/builtin/builtin_read.c$$ +src/builtin/builtin_setenv.c$$ +src/builtin/builtin_unset.c$$ +src/builtin/builtin_unsetenv.c$$ +src/builtin/is_builtin.c$$ +src/completion/c_arrow.c$$ +src/completion/c_clear.c$$ +src/completion/c_find_abspath.c$$ +src/completion/c_find_binary.c$$ +src/completion/c_find_env.c$$ +src/completion/c_find_files.c$$ +src/completion/c_init.c$$ +src/completion/c_match.c$$ +src/completion/c_match_glob.c$$ +src/completion/c_match_update.c$$ +src/completion/c_misc.c$$ +src/completion/c_output.c$$ +src/completion/c_parser.c$$ +src/completion/c_pathsolver.c$$ +src/completion/c_printer.c$$ +src/completion/c_sizing.c$$ +src/completion/c_terminal.c$$ +src/completion/completion.c$$ +src/exec/ast_free.c$$ +src/exec/bad_fd.c$$ +src/exec/exec_ampersand.c$$ +src/exec/exec_and_if.c$$ +src/exec/exec_bang.c$$ +src/exec/exec_case_branch.c$$ +src/exec/exec_destroy.c$$ +src/exec/exec_elif.c$$ +src/exec/exec_else.c$$ +src/exec/exec_func.c$$ +src/exec/exec_init.c$$ +src/exec/exec_leaf.c$$ +src/exec/exec_or_if.c$$ +src/exec/exec_pipe.c$$ +src/exec/exec_semi.c$$ +src/exec/exec_var.c$$ +src/exec/fd_is_valid.c$$ +src/exec/ft_exec.c$$ +src/exec/ft_findexec.c$$ +src/exec/is_function.c$$ +src/exec/mark_process_status.c$$ +src/exec/node_copy.c$$ +src/exec/pfree_cmd.c$$ +src/exec/pfree_cond.c$$ +src/exec/pfree_func.c$$ +src/exec/pfree_list.c$$ +src/exec/pfree_subshell.c$$ +src/exec/plaunch_brace.c$$ +src/exec/plaunch_builtin.c$$ +src/exec/plaunch_case.c$$ +src/exec/plaunch_empty.c$$ +src/exec/plaunch_file.c$$ +src/exec/plaunch_for.c$$ +src/exec/plaunch_function.c$$ +src/exec/plaunch_if.c$$ +src/exec/plaunch_subshell.c$$ +src/exec/plaunch_until.c$$ +src/exec/plaunch_while.c$$ +src/exec/process_launch.c$$ +src/exec/process_redirect.c$$ +src/exec/process_set.c$$ +src/exec/process_setgroup.c$$ +src/exec/process_setsig.c$$ +src/exec/pset_brace.c$$ +src/exec/pset_case.c$$ +src/exec/pset_cmd.c$$ +src/exec/pset_for.c$$ +src/exec/pset_if.c$$ +src/exec/pset_subshell.c$$ +src/exec/pset_until.c$$ +src/exec/pset_while.c$$ +src/exec/redir_copy.c$$ +src/exec/redir_free.c$$ +src/exec/redirect_dgreat.c$$ +src/exec/redirect_dless.c$$ +src/exec/redirect_great.c$$ +src/exec/redirect_greatand.c$$ +src/exec/redirect_less.c$$ +src/exec/redirect_lessand.c$$ +src/exec/set_exitstatus.c$$ +src/exec/token_to_argv.c$$ +src/glob/command_getoutput.c$$ +src/glob/dir_glob.c$$ +src/glob/esc_print.c$$ +src/glob/expand_bquote.c$$ +src/glob/expand_brace.c$$ +src/glob/expand_esc.c$$ +src/glob/expand_home.c$$ +src/glob/expand_var.c$$ +src/glob/ft_strsplit_esc.c$$ +src/glob/ft_strsplit_spe.c$$ +src/glob/gen_tab_esc.c$$ +src/glob/glob.c$$ +src/glob/is_char_esc.c$$ +src/glob/match_pattern.c$$ +src/glob/tab_esc_copy.c$$ +src/glob/word_is_assignment.c$$ +src/hash_table/ft_add_hash.c$$ +src/hash_table/hash.c$$ +src/hash_table/hash_free.c$$ +src/hash_table/hash_str.c$$ +src/hash_table/is_hash.c$$ +src/history/add_str_in_history.c$$ +src/history/history.c$$ +src/history/history_parsing.c$$ +src/history/history_parsing_toolz.c$$ +src/history/history_parsing_toolz_2.c$$ +src/history/list_toolz.c$$ +src/history/surch_in_history.c$$ +src/job_control/builtin_bg.c$$ +src/job_control/builtin_fg.c$$ +src/job_control/builtin_jobs.c$$ +src/job_control/do_job_notification.c$$ +src/job_control/has_running_job.c$$ +src/job_control/has_stopped_job.c$$ +src/job_control/job_addprocess.c$$ +src/job_control/job_cmp_id.c$$ +src/job_control/job_format.c$$ +src/job_control/job_format_head.c$$ +src/job_control/job_free.c$$ +src/job_control/job_getprocess.c$$ +src/job_control/job_getrank.c$$ +src/job_control/job_hup_all.c$$ +src/job_control/job_is_completed.c$$ +src/job_control/job_is_stopped.c$$ +src/job_control/job_notify_change.c$$ +src/job_control/job_notify_new.c$$ +src/job_control/job_remove.c$$ +src/job_control/job_run.c$$ +src/job_control/job_update_id.c$$ +src/job_control/job_update_status.c$$ +src/job_control/job_wait.c$$ +src/job_control/jobc_destroy.c$$ +src/job_control/jobc_init.c$$ +src/job_control/mark_job_as_running.c$$ +src/job_control/pprint_brace.c$$ +src/job_control/pprint_case.c$$ +src/job_control/pprint_cmd.c$$ +src/job_control/pprint_for.c$$ +src/job_control/pprint_function.c$$ +src/job_control/pprint_if.c$$ +src/job_control/pprint_subshell.c$$ +src/job_control/pprint_until.c$$ +src/job_control/pprint_while.c$$ +src/job_control/process_cmp_pid.c$$ +src/job_control/process_format.c$$ +src/job_control/process_free.c$$ +src/job_control/put_job_in_background.c$$ +src/job_control/put_job_in_foreground.c$$ +src/job_control/sigchld_handler.c$$ +src/job_control/sigint_handler.c$$ +src/job_control/sigtstp_handler.c$$ +src/job_control/sigttin_handler.c$$ +src/job_control/sigttou_handler.c$$ +src/lexer/do_lexer_routine.c$$ +src/lexer/get_lexer_stack.c$$ +src/lexer/get_lexer_stack2.c$$ +src/lexer/get_reserved_words.c$$ +src/lexer/get_state_global.c$$ +src/lexer/get_state_redir.c$$ +src/lexer/insert_newline.c$$ +src/lexer/isrw_delim.c$$ +src/lexer/keep_last_type.c$$ +src/lexer/lexer_backslash.c$$ +src/lexer/lexer_bquote.c$$ +src/lexer/lexer_curly_braces.c$$ +src/lexer/lexer_default.c$$ +src/lexer/lexer_delim.c$$ +src/lexer/lexer_destroy.c$$ +src/lexer/lexer_dquote.c$$ +src/lexer/lexer_end.c$$ +src/lexer/lexer_great.c$$ +src/lexer/lexer_heredoc.c$$ +src/lexer/lexer_init.c$$ +src/lexer/lexer_less.c$$ +src/lexer/lexer_lex.c$$ +src/lexer/lexer_newline.c$$ +src/lexer/lexer_number.c$$ +src/lexer/lexer_paren.c$$ +src/lexer/lexer_quote.c$$ +src/lexer/lexer_sep.c$$ +src/lexer/lexer_word.c$$ +src/lexer/token_append.c$$ +src/lexer/token_cmp_type.c$$ +src/lexer/token_free.c$$ +src/lexer/token_init.c$$ +src/lexer/token_print.c$$ +src/line_editing/control_features.c$$ +src/line_editing/ft_prompt.c$$ +src/line_editing/get_key.c$$ +src/line_editing/readline.c$$ +src/line_editing/resize.c$$ +src/main/data_exit.c$$ +src/main/data_init.c$$ +src/main/data_singleton.c$$ +src/main/ft_putast.c$$ +src/main/main.c$$ +src/main/shell_fds.c$$ +src/main/shell_init.c$$ +src/main/shell_sig.c$$ +src/parser/add_bang.c$$ +src/parser/add_case.c$$ +src/parser/add_cmd.c$$ +src/parser/add_condition.c$$ +src/parser/add_func.c$$ +src/parser/add_loop.c$$ +src/parser/add_number.c$$ +src/parser/add_redir.c$$ +src/parser/add_sep.c$$ +src/parser/add_subshell.c$$ +src/parser/aggregate_sym.c$$ +src/parser/build_tree.c$$ +src/parser/do_parser_routine.c$$ +src/parser/error_syntax.c$$ +src/parser/eval_sym.c$$ +src/parser/ft_parse.c$$ +src/parser/heredoc_parser.c$$ +src/parser/parser_destroy.c$$ +src/parser/parser_init.c$$ +src/parser/pop_stack.c$$ +src/parser/produce_sym.c$$ +src/parser/push_stack.c$$ +src/parser/read_stack.c$$ +src/parser/redir_init.c$$ +src/parser/stack_init.c$$ +src/parser/sym_free.c$$ +src/parser/tree_func_free.c$$ +src/parser/tree_wrapper.c$$ diff --git a/42sh/file b/42sh/file index 8bccba03..72a3d290 100644 --- a/42sh/file +++ b/42sh/file @@ -1 +1,19 @@ -GAGNE +/Users/ariard/Projects/42sh +/Users/ariard/Projects/42sh +42ShellTester +42sh +Makefile +README.md +STDBUG +another_file +auteur +donovan_segaults_06-02 +file +includes +libft +objs +pdf +sample +scriptheader.sh +src +update_makefile.sh diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 26937100..bc69aa24 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/29 13:59:26 by ariard ### ########.fr */ +/* Updated: 2017/03/29 16:40:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -194,6 +194,8 @@ enum e_sym OTHER, REDIR, CMD, + AND_OR_MAJOR, + AND_OR_MINOR, HEREDOCDATA, HEREDOC_DELIM, ALL = 200, diff --git a/42sh/sample/again.sh b/42sh/sample/again.sh index 7cc4e562..466a4c55 100644 --- a/42sh/sample/again.sh +++ b/42sh/sample/again.sh @@ -2,3 +2,4 @@ echo "echo hello" >> sample/again.sh echo hello echo hello echo hello +echo hello diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index b0467423..72356ed2 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/11 15:58:38 by ariard #+# #+# */ -/* Updated: 2017/03/29 16:19:14 by ariard ### ########.fr */ +/* Updated: 2017/03/29 16:52:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,8 +22,6 @@ static t_aggrematch g_aggrematch[] = {TK_DSEMI, CMD_SUPERIOR, CLOSE_LIST, TK_PAREN_CLOSE}, {TK_DSEMI, PIPE_SEMI_SEQUENCE, CLOSE_LIST, TK_PAREN_CLOSE}, {TK_DSEMI, PIPE_CLOSE_SEQUENCE, CLOSE_LIST, TK_PAREN_CLOSE}, - {TK_DSEMI, COMPOUND_LIST, CLOSE_LIST, TK_PAREN_CLOSE}, - {TK_DSEMI, COMPLETE_COMMANDS, CLOSE_LIST, TK_PAREN_CLOSE}, {TK_PAREN_OPEN, TK_IN, PATTERN_CASE, 0}, {TK_PAREN_OPEN, CASE_LIST_NS, PATTERN_CASE, 0}, {TK_PAREN_OPEN, CMD_SUPERIOR, OPEN_FUNC, 0}, @@ -33,13 +31,11 @@ static t_aggrematch g_aggrematch[] = {TK_PIPE, PIPE_CLOSE_SEQUENCE, SEQUENCE, PIPE_CLOSE_SEQUENCE}, {TK_FI, ELSE_PART, IF_CLAUSE, TK_IF}, {TK_FI, COMPOUND_LIST, IF_CLAUSE, COMPLETE_CONDITION}, - {TK_FI, COMPLETE_COMMANDS, IF_CLAUSE, COMPLETE_CONDITION}, {TK_FI, COMPLETE_CONDITION, IF_CLAUSE, COMPLETE_CONDITION}, {TK_FI, CONDITION, IF_CLAUSE, COMPLETE_CONDITION}, {TK_THEN, CONDITION, COMPLETE_CONDITION, CONDITION}, {TK_DONE, CMD_SUPERIOR, DO_GROUP, TK_DO}, {TK_DONE, COMPOUND_LIST, DO_GROUP, TK_DO}, - {TK_DONE, COMPLETE_COMMANDS, DO_GROUP, TK_DO}, {TK_ESAC, TK_IN, CASE_CLAUSE, TK_CASE}, {TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, TK_CASE}, {TK_PAREN_CLOSE, SUBSHELL, SUBSHELL, TK_PAREN_OPEN}, @@ -55,6 +51,12 @@ static t_aggrematch g_aggrematch[] = {TK_RBRACE, PIPE_CLOSE_SEQUENCE, BRACE_CLAUSE, TK_LBRACE}, {TK_RBRACE, COMPOUND_LIST, BRACE_CLAUSE, TK_LBRACE}, {TK_RBRACE, CMD_SUPERIOR, BRACE_CLAUSE, TK_LBRACE}, + {TK_AND_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, + {TK_AND_IF, PIPE_CLOSE_SEQUENCE, AND_OR_MINOR, PIPE_CLOSE_SEQUENCE}, + {TK_AND_IF, PIPE_SEMI_SEQUENCE, AND_OR_MINOR, PIPE_SEMI_SEQUENCE}, + {TK_OR_IF, PIPE_SEMI_SEQUENCE, AND_OR_MINOR, PIPE_SEMI_SEQUENCE}, + {TK_OR_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, + {TK_OR_IF, PIPE_CLOSE_SEQUENCE, AND_OR_MINOR, PIPE_CLOSE_SEQUENCE}, {SEPARATOR_OP, CMD_SUPERIOR, SEPARATOR, 0}, {SEPARATOR_OP, COMPOUND_LIST, SEPARATOR, 0}, {SEPARATOR_OP, CASE_LIST_NS, SEPARATOR, 0}, @@ -101,7 +103,6 @@ static t_aggrematch g_aggrematch[] = {NEWLINE_LIST, CASE_LIST_NS, SEPARATOR, 0}, {NEWLINE_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION}, {NEWLINE_LIST, CONDITION, CONDITION, CONDITION}, - {NEWLINE_LIST, AND_OR, AND_OR, AND_OR}, {NEWLINE_LIST, COMPLETE_COMMANDS, LINEBREAK, 0}, {NEWLINE_LIST, LINEBREAK, PROGRAM, LINEBREAK}, {NEWLINE_LIST, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, @@ -194,7 +195,7 @@ static t_aggrematch g_aggrematch[] = {CMD_NAME, CONDITION, CMD_SUPERIOR, 0}, {CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0}, {CMD_NAME, SEQUENCE, CMD_SUPERIOR, 0}, - {CMD_NAME, AND_OR, CMD_SUPERIOR, 0}, + {CMD_NAME, AND_OR_MAJOR, CMD_SUPERIOR, 0}, {CMD_SUPERIOR, SEQUENCE, PIPE_SEMI_SEQUENCE, SEQUENCE}, {SIMPLE_COMMAND, ALL, COMMAND, 0}, {DO_GROUP, NAME, FOR_CLAUSE, TK_FOR}, @@ -225,6 +226,15 @@ static t_aggrematch g_aggrematch[] = {SUBSHELL, ALL, COMPOUND_COMMAND, 0}, {BRACE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {COMPOUND_COMMAND, FUNC_NAME, COMMAND, FUNC_NAME}, + {AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE}, + {AND_OR_MINOR, PIPE_CLOSE_SEQUENCE, AND_OR_MAJOR, PIPE_CLOSE_SEQUENCE}, + {AND_OR_MINOR, LINEBREAK, AND_OR_MAJOR, 0}, + {AND_OR_MINOR, TK_PAREN_OPEN, AND_OR_MAJOR, 0}, + {AND_OR_MINOR, TK_LBRACE, AND_OR_MAJOR, 0}, + {AND_OR_MINOR, COMPOUND_LIST, AND_OR_MAJOR, 0}, + {AND_OR_MINOR, COMPLETE_COMMANDS, AND_OR_MAJOR, 0}, + {AND_OR_MINOR, AND_OR_MAJOR, AND_OR_MAJOR, 0}, + {AND_OR_MINOR, TK_BANG, AND_OR_MAJOR, TK_BANG}, {COMMAND, SEQUENCE, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPOUND_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, CASE_LIST_NS, PIPE_SEMI_SEQUENCE, 0}, @@ -244,7 +254,7 @@ static t_aggrematch g_aggrematch[] = {COMMAND, TK_PAREN_OPEN, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_LBRACE, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPLETE_COMMANDS, PIPE_SEMI_SEQUENCE, 0}, - {COMMAND, AND_OR, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPLETE_CONDITION, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, CONDITION, PIPE_SEMI_SEQUENCE, 0}, {COMPOUND_COMMAND, SEQUENCE, PIPE_CLOSE_SEQUENCE, 0}, @@ -266,11 +276,12 @@ static t_aggrematch g_aggrematch[] = {COMPOUND_COMMAND, TK_PAREN_OPEN, PIPE_CLOSE_SEQUENCE, 0}, {COMPOUND_COMMAND, TK_LBRACE, PIPE_CLOSE_SEQUENCE, 0}, {COMPOUND_COMMAND, COMPLETE_COMMANDS, PIPE_CLOSE_SEQUENCE, 0}, - {COMPOUND_COMMAND, AND_OR, PIPE_CLOSE_SEQUENCE, 0}, + {COMPOUND_COMMAND, AND_OR_MAJOR, PIPE_CLOSE_SEQUENCE, 0}, {COMPOUND_COMMAND, COMPLETE_CONDITION, PIPE_CLOSE_SEQUENCE, 0}, {COMPOUND_COMMAND, CONDITION, PIPE_CLOSE_SEQUENCE, 0}, {END_COMMAND, SEQUENCE, PIPE_SEQUENCE, SEQUENCE}, {END_COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {END_COMMAND, AND_OR_MAJOR, AND_OR, AND_OR_MAJOR}, {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_UNTIL, PIPE_SEQUENCE, 0}, @@ -289,7 +300,6 @@ static t_aggrematch g_aggrematch[] = {END_COMMAND, CONDITION, PIPE_SEQUENCE, 0}, {END_COMMAND, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {END_COMMAND, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS}, - {END_COMMAND, AND_OR, COMPLETE_COMMANDS, 0}, {PIPE_SEMI_SEQUENCE, SEQUENCE, PIPE_SEMI_SEQUENCE, SEQUENCE}, {PIPE_CLOSE_SEQUENCE, SEQUENCE, PIPE_CLOSE_SEQUENCE, SEQUENCE}, {PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0}, @@ -301,7 +311,7 @@ static t_aggrematch g_aggrematch[] = {PIPE_SEQUENCE, TK_PAREN_OPEN, PIPELINE, 0}, {PIPE_SEQUENCE, TK_LBRACE, PIPELINE, 0}, {PIPE_SEQUENCE, COMPLETE_COMMANDS, PIPELINE, 0}, - {PIPE_SEQUENCE, AND_OR, PIPELINE, 0}, + {PIPE_SEQUENCE, AND_OR_MAJOR, PIPELINE, 0}, {PIPE_SEQUENCE, TK_DO, PIPELINE, 0}, {PIPE_SEQUENCE, TK_PAREN_CLOSE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_IF, PIPELINE, 0}, @@ -331,8 +341,8 @@ static t_aggrematch g_aggrematch[] = {PIPELINE, SEPARATOR_OP, AND_OR, 0}, {PIPELINE, COMPLETE_CONDITION, AND_OR, 0}, {PIPELINE, CONDITION, AND_OR, 0}, - {PIPELINE, AND_OR, COMPLETE_COMMANDS, 0}, - {AND_OR, AND_OR, AND_OR, AND_OR}, + {PIPELINE, AND_OR_MAJOR, AND_OR, AND_OR_MAJOR}, + {AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR, TK_DO, COMPOUND_LIST, 0}, {AND_OR, TK_PAREN_CLOSE, COMPOUND_LIST, 0}, {AND_OR, TK_WHILE, COMPOUND_LIST, 0}, @@ -347,7 +357,6 @@ static t_aggrematch g_aggrematch[] = {AND_OR, CASE_LIST_NS, CASE_LIST_NS, 0}, {AND_OR, COMPLETE_CONDITION, COMPOUND_LIST, 0}, {AND_OR, CONDITION, COMPOUND_LIST, 0}, - {AND_OR, COMPLETE_CONDITION, COMPOUND_LIST, 0}, {AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, NEWLINE_LIST, LIST, 0}, {AND_OR, LINEBREAK, LIST, 0}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index accde374..610add75 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/11 16:11:21 by ariard #+# #+# */ -/* Updated: 2017/03/29 16:19:59 by ariard ### ########.fr */ +/* Updated: 2017/03/29 16:49:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,6 @@ static t_stackmatch g_stackmatch[] = { {TK_WORD, CMD_SUFFIX}, {TK_WORD, TK_PIPE}, - {TK_WORD, AND_OR}, {TK_WORD, TK_CASE}, {TK_WORD, WORDLIST}, {TK_WORD, LINEBREAK}, @@ -38,12 +37,12 @@ static t_stackmatch g_stackmatch[] = {TK_IO_NUMBER, TK_LBRACE}, {TK_IO_NUMBER, COMPLETE_COMMANDS}, {TK_IO_NUMBER, SEPARATOR_OP}, - {TK_IO_NUMBER, AND_OR}, {TK_IO_NUMBER, NEWLINE_LIST}, {TK_IO_NUMBER, PIPE_SEMI_SEQUENCE}, {TK_IO_NUMBER, PIPE_CLOSE_SEQUENCE}, {TK_IO_NUMBER, SEQUENCE}, {TK_IO_NUMBER, CMD_SUPERIOR}, + {TK_IO_NUMBER, AND_OR_MAJOR}, {TK_IO_NUMBER, TK_WHILE}, {TK_IO_NUMBER, TK_UNTIL}, {TK_IO_NUMBER, TK_IF}, @@ -84,12 +83,12 @@ static t_stackmatch g_stackmatch[] = {TK_LESS, COMPLETE_COMMANDS}, {TK_LESS, TK_BANG}, {TK_LESS, SEPARATOR_OP}, - {TK_LESS, AND_OR}, {TK_LESS, NEWLINE_LIST}, {TK_LESS, PIPE_SEMI_SEQUENCE}, {TK_LESS, PIPE_CLOSE_SEQUENCE}, {TK_LESS, SEQUENCE}, {TK_LESS, CMD_SUPERIOR}, + {TK_LESS, AND_OR_MAJOR}, {TK_LESS, TK_WHILE}, {TK_LESS, TK_UNTIL}, {TK_LESS, TK_IF}, @@ -101,6 +100,7 @@ static t_stackmatch g_stackmatch[] = {TK_LESS, CONDITION}, {TK_LESS, COMPOUND_LIST}, {TK_LESS, CMD_SUPERIOR}, + {TK_LESS, AND_OR_MAJOR}, {TK_GREAT, TK_IO_NUMBER}, {TK_GREAT, REDIRECT_LIST}, {TK_GREAT, CMD_SUFFIX}, @@ -113,12 +113,12 @@ static t_stackmatch g_stackmatch[] = {TK_GREAT, TK_LBRACE}, {TK_GREAT, COMPLETE_COMMANDS}, {TK_GREAT, SEPARATOR_OP}, - {TK_GREAT, AND_OR}, {TK_GREAT, NEWLINE_LIST}, {TK_GREAT, PIPE_SEMI_SEQUENCE}, {TK_GREAT, PIPE_CLOSE_SEQUENCE}, {TK_GREAT, SEQUENCE}, {TK_GREAT, CMD_SUPERIOR}, + {TK_GREAT, AND_OR_MAJOR}, {TK_GREAT, TK_WHILE}, {TK_GREAT, TK_UNTIL}, {TK_GREAT, TK_IF}, @@ -130,6 +130,7 @@ static t_stackmatch g_stackmatch[] = {TK_GREAT, CONDITION}, {TK_GREAT, COMPOUND_LIST}, {TK_GREAT, CMD_SUPERIOR}, + {TK_GREAT, AND_OR_MAJOR}, {TK_DLESS, TK_IO_NUMBER}, {TK_DLESS, REDIRECT_LIST}, {TK_DLESS, CMD_SUFFIX}, @@ -142,12 +143,12 @@ static t_stackmatch g_stackmatch[] = {TK_DLESS, COMPLETE_COMMANDS}, {TK_DLESS, TK_BANG}, {TK_DLESS, SEPARATOR_OP}, - {TK_DLESS, AND_OR}, {TK_DLESS, NEWLINE_LIST}, {TK_DLESS, PIPE_SEMI_SEQUENCE}, {TK_DLESS, PIPE_CLOSE_SEQUENCE}, {TK_DLESS, SEQUENCE}, {TK_DLESS, CMD_SUPERIOR}, + {TK_DLESS, AND_OR_MAJOR}, {TK_DLESS, TK_WHILE}, {TK_DLESS, TK_UNTIL}, {TK_DLESS, TK_IF}, @@ -159,6 +160,7 @@ static t_stackmatch g_stackmatch[] = {TK_DLESS, CONDITION}, {TK_DLESS, COMPOUND_LIST}, {TK_DLESS, CMD_SUPERIOR}, + {TK_DLESS, AND_OR_MAJOR}, {TK_DGREAT, TK_IO_NUMBER}, {TK_DGREAT, REDIRECT_LIST}, {TK_DGREAT, CMD_SUFFIX}, @@ -171,12 +173,12 @@ static t_stackmatch g_stackmatch[] = {TK_DGREAT, TK_LBRACE}, {TK_DGREAT, COMPLETE_COMMANDS}, {TK_DGREAT, SEPARATOR_OP}, - {TK_DGREAT, AND_OR}, {TK_DGREAT, NEWLINE_LIST}, {TK_DGREAT, PIPE_SEMI_SEQUENCE}, {TK_DGREAT, PIPE_CLOSE_SEQUENCE}, {TK_DGREAT, SEQUENCE}, {TK_DGREAT, CMD_SUPERIOR}, + {TK_DGREAT, AND_OR_MAJOR}, {TK_DGREAT, TK_WHILE}, {TK_DGREAT, TK_UNTIL}, {TK_DGREAT, TK_IF}, @@ -188,6 +190,7 @@ static t_stackmatch g_stackmatch[] = {TK_DGREAT, CONDITION}, {TK_DGREAT, COMPOUND_LIST}, {TK_DGREAT, CMD_SUPERIOR}, + {TK_DGREAT, AND_OR_MAJOR}, {TK_LESSAND, TK_IO_NUMBER}, {TK_LESSAND, REDIRECT_LIST}, {TK_LESSAND, CMD_SUFFIX}, @@ -200,12 +203,12 @@ static t_stackmatch g_stackmatch[] = {TK_LESSAND, TK_LBRACE}, {TK_LESSAND, COMPLETE_COMMANDS}, {TK_LESSAND, SEPARATOR_OP}, - {TK_LESSAND, AND_OR}, {TK_LESSAND, NEWLINE_LIST}, {TK_LESSAND, PIPE_SEMI_SEQUENCE}, {TK_LESSAND, PIPE_CLOSE_SEQUENCE}, {TK_LESSAND, SEQUENCE}, {TK_LESSAND, CMD_SUPERIOR}, + {TK_LESSAND, AND_OR_MAJOR}, {TK_LESSAND, TK_WHILE}, {TK_LESSAND, TK_UNTIL}, {TK_LESSAND, TK_IF}, @@ -217,6 +220,7 @@ static t_stackmatch g_stackmatch[] = {TK_LESSAND, CONDITION}, {TK_LESSAND, COMPOUND_LIST}, {TK_LESSAND, CMD_SUPERIOR}, + {TK_LESSAND, AND_OR_MAJOR}, {TK_GREATAND, TK_IO_NUMBER}, {TK_GREATAND, REDIRECT_LIST}, {TK_GREATAND, CMD_SUFFIX}, @@ -229,12 +233,12 @@ static t_stackmatch g_stackmatch[] = {TK_GREATAND, TK_LBRACE}, {TK_GREATAND, COMPLETE_COMMANDS}, {TK_GREATAND, SEPARATOR_OP}, - {TK_GREATAND, AND_OR}, {TK_GREATAND, NEWLINE_LIST}, {TK_GREATAND, PIPE_SEMI_SEQUENCE}, {TK_GREATAND, PIPE_CLOSE_SEQUENCE}, {TK_GREATAND, SEQUENCE}, {TK_GREATAND, CMD_SUPERIOR}, + {TK_GREATAND, AND_OR_MAJOR}, {TK_GREATAND, TK_WHILE}, {TK_GREATAND, TK_UNTIL}, {TK_GREATAND, TK_IF}, @@ -246,6 +250,7 @@ static t_stackmatch g_stackmatch[] = {TK_GREATAND, CONDITION}, {TK_GREATAND, COMPOUND_LIST}, {TK_GREATAND, CMD_SUPERIOR}, + {TK_GREATAND, AND_OR_MAJOR}, {TK_IF, LINEBREAK}, {TK_IF, TK_BANG}, {TK_IF, TK_PAREN_OPEN}, @@ -253,7 +258,6 @@ static t_stackmatch g_stackmatch[] = {TK_IF, FUNC_NAME}, {TK_IF, COMPLETE_COMMANDS}, {TK_IF, SEPARATOR_OP}, - {TK_IF, AND_OR}, {TK_IF, NEWLINE_LIST}, {TK_IF, SEQUENCE}, {TK_IF, TK_WHILE}, @@ -282,15 +286,13 @@ static t_stackmatch g_stackmatch[] = {TK_FI, CMD_SUPERIOR}, {TK_FI, END_COMMAND}, {TK_FI, CONDITION}, - {TK_FI, COMPLETE_CONDITION}, - {TK_FI, COMPLETE_COMMANDS}, {TK_DO, CMD_SUPERIOR}, + {TK_FI, COMPLETE_CONDITION}, {TK_DO, COMPOUND_LIST}, {TK_DO, NAME}, {TK_DO, SEQUENTIAL_SEP}, {TK_DONE, CMD_SUPERIOR}, {TK_DONE, COMPOUND_LIST}, - {TK_DONE, COMPLETE_COMMANDS}, {TK_DONE, END_COMMAND}, {TK_CASE, LINEBREAK}, {TK_CASE, TK_BANG}, @@ -313,7 +315,6 @@ static t_stackmatch g_stackmatch[] = {TK_CASE, COMPOUND_LIST}, {TK_CASE, NEWLINE_LIST}, {TK_CASE, SEPARATOR_OP}, - {TK_CASE, AND_OR}, {TK_CASE, SEQUENCE}, {TK_IN, TK_WORD}, {TK_IN, NAME}, @@ -327,7 +328,6 @@ static t_stackmatch g_stackmatch[] = {TK_WHILE, COMPLETE_COMMANDS}, {TK_WHILE, TK_BANG}, {TK_WHILE, SEPARATOR_OP}, - {TK_WHILE, AND_OR}, {TK_WHILE, NEWLINE_LIST}, {TK_WHILE, SEQUENCE}, {TK_WHILE, TK_DO}, @@ -350,7 +350,6 @@ static t_stackmatch g_stackmatch[] = {TK_UNTIL, COMPLETE_COMMANDS}, {TK_UNTIL, TK_BANG}, {TK_UNTIL, SEPARATOR_OP}, - {TK_UNTIL, AND_OR}, {TK_UNTIL, NEWLINE_LIST}, {TK_UNTIL, SEQUENCE}, {TK_UNTIL, TK_DO}, @@ -373,7 +372,6 @@ static t_stackmatch g_stackmatch[] = {FUNC_NAME, FUNC_NAME}, {FUNC_NAME, COMPLETE_COMMANDS}, {FUNC_NAME, SEPARATOR_OP}, - {FUNC_NAME, AND_OR}, {FUNC_NAME, NEWLINE_LIST}, {FUNC_NAME, SEQUENCE}, {FUNC_NAME, TK_WHILE}, @@ -396,7 +394,6 @@ static t_stackmatch g_stackmatch[] = {TK_FOR, FUNC_NAME}, {TK_FOR, COMPLETE_COMMANDS}, {TK_FOR, SEPARATOR_OP}, - {TK_FOR, AND_OR}, {TK_FOR, NEWLINE_LIST}, {TK_FOR, SEQUENCE}, {TK_FOR, TK_DO}, @@ -418,9 +415,9 @@ static t_stackmatch g_stackmatch[] = {TK_LBRACE, TK_LBRACE}, {TK_LBRACE, TK_PAREN_OPEN}, {TK_LBRACE, SEPARATOR_OP}, - {TK_LBRACE, AND_OR}, {TK_LBRACE, NEWLINE_LIST}, {TK_LBRACE, SEQUENCE}, + {TK_LBRACE, AND_OR_MAJOR}, {TK_LBRACE, TK_WHILE}, {TK_LBRACE, FUNC_NAME}, {TK_LBRACE, TK_UNTIL}, @@ -436,11 +433,9 @@ static t_stackmatch g_stackmatch[] = {TK_LBRACE, CONDITION}, {TK_LBRACE, TK_IN}, {TK_LBRACE, TK_PIPE}, - {TK_LBRACE, AND_OR}, {TK_RBRACE, TK_SEMI}, {TK_RBRACE, END_COMMAND}, {TK_RBRACE, SEPARATOR_OP}, - {TK_RBRACE, AND_OR}, {TK_RBRACE, WORD}, {TK_RBRACE, IN}, {TK_RBRACE, TK_AND_IF}, @@ -463,20 +458,18 @@ static t_stackmatch g_stackmatch[] = {TK_BANG, TK_LBRACE}, {TK_BANG, COMPLETE_COMMANDS}, {TK_BANG, SEPARATOR_OP}, - {TK_BANG, AND_OR}, {TK_BANG, NEWLINE_LIST}, {TK_IN, LINEBREAK}, {TK_SEMI, NAME}, {TK_SEMI, IN}, {TK_SEMI, WORDLIST}, {TK_SEMI, LIST}, + {TK_SEMI, TERM}, {TK_SEMI, CMD_NAME}, {TK_SEMI, PROGRAM}, {TK_SEMI, FOR_WORDLIST}, {TK_AMP, LIST}, {TK_AMP, TERM}, - {TK_AMP, PROGRAM}, - {TK_AMP, CMD_NAME}, {TK_PIPE, PATTERN}, {TK_PIPE, CMD_SUPERIOR}, {TK_PIPE, PIPE_SEMI_SEQUENCE}, @@ -488,10 +481,10 @@ static t_stackmatch g_stackmatch[] = {TK_PAREN_OPEN, TK_BANG}, {TK_PAREN_OPEN, TK_PAREN_OPEN}, {TK_PAREN_OPEN, SEPARATOR_OP}, - {TK_PAREN_OPEN, AND_OR}, {TK_PAREN_OPEN, NEWLINE_LIST}, {TK_PAREN_OPEN, SEQUENCE}, {TK_PAREN_OPEN, FUNC_NAME}, + {TK_PAREN_OPEN, AND_OR_MAJOR}, {TK_PAREN_OPEN, TK_WHILE}, {TK_PAREN_OPEN, TK_LBRACE}, {TK_PAREN_OPEN, FUNC_NAME}, @@ -515,6 +508,7 @@ static t_stackmatch g_stackmatch[] = {SEQUENTIAL_SEP, FOR_WORDLIST}, {END_COMMAND, SEQUENCE}, {END_COMMAND, PIPE_SEMI_SEQUENCE}, + {END_COMMAND, AND_OR_MAJOR}, {END_COMMAND, TK_WHILE}, {END_COMMAND, FUNC_NAME}, {END_COMMAND, TK_UNTIL}, @@ -533,7 +527,6 @@ static t_stackmatch g_stackmatch[] = {END_COMMAND, CASE_LIST_NS}, {END_COMMAND, COMPLETE_CONDITION}, {END_COMMAND, CONDITION}, - {END_COMMAND, AND_OR}, {SEPARATOR, CMD_SUPERIOR}, {SEPARATOR, TERM}, {SEPARATOR, COMPOUND_LIST}, @@ -542,6 +535,7 @@ static t_stackmatch g_stackmatch[] = {SEPARATOR, PIPE_CLOSE_SEQUENCE}, {SEPARATOR_OP, CMD_SUPERIOR}, {SEPARATOR_OP, LIST}, + {SEPARATOR_OP, TERM}, {SEPARATOR_OP, CASE_LIST_NS}, {SEPARATOR_OP, COMPOUND_LIST}, {SEPARATOR_OP, PIPE_SEMI_SEQUENCE}, @@ -549,12 +543,12 @@ static t_stackmatch g_stackmatch[] = {LINEBREAK, TK_SEMI}, {LINEBREAK, END_COMMAND}, {LINEBREAK, SEPARATOR_OP}, - {LINEBREAK, AND_OR}, {LINEBREAK, TK_PAREN_CLOSE}, {LINEBREAK, WORD}, {LINEBREAK, IN}, + {LINEBREAK, TK_AND_IF}, + {LINEBREAK, TK_OR_IF}, {LINEBREAK, TK_PIPE}, - {LINEBREAK, AND_OR}, {LINEBREAK, LINEBREAK}, {LINEBREAK, TK_BANG}, {LINEBREAK, COMPLETE_COMMANDS}, @@ -569,7 +563,6 @@ static t_stackmatch g_stackmatch[] = {TK_PAREN_CLOSE, TK_SEMI}, {TK_PAREN_CLOSE, END_COMMAND}, {TK_PAREN_CLOSE, SEPARATOR_OP}, - {TK_PAREN_CLOSE, AND_OR}, {TK_PAREN_CLOSE, WORD}, {TK_PAREN_CLOSE, IN}, {TK_PAREN_CLOSE, TK_PIPE}, @@ -589,7 +582,6 @@ static t_stackmatch g_stackmatch[] = {TK_RBRACE, TK_SEMI}, {TK_RBRACE, END_COMMAND}, {TK_RBRACE, SEPARATOR_OP}, - {TK_RBRACE, AND_OR}, {TK_RBRACE, WORD}, {TK_RBRACE, IN}, {TK_RBRACE, TK_PIPE}, @@ -622,7 +614,6 @@ static t_stackmatch g_stackmatch[] = {NEWLINE_LIST, TK_ELSE}, {NEWLINE_LIST, CMD_NAME}, {NEWLINE_LIST, NEWLINE_LIST}, - {NEWLINE_LIST, AND_OR}, {NEWLINE_LIST, NAME}, {NEWLINE_LIST, IN}, {NEWLINE_LIST, WORDLIST}, @@ -654,12 +645,12 @@ static t_stackmatch g_stackmatch[] = {IO_HERE, TK_LBRACE}, {IO_HERE, COMPLETE_COMMANDS}, {IO_HERE, SEPARATOR_OP}, - {IO_HERE, AND_OR}, {IO_HERE, NEWLINE_LIST}, {IO_HERE, PIPE_SEMI_SEQUENCE}, {IO_HERE, PIPE_CLOSE_SEQUENCE}, {IO_HERE, SEQUENCE}, {IO_HERE, CMD_SUPERIOR}, + {IO_HERE, AND_OR_MAJOR}, {IO_HERE, TK_WHILE}, {IO_HERE, TK_UNTIL}, {IO_HERE, TK_IF}, @@ -688,12 +679,12 @@ static t_stackmatch g_stackmatch[] = {IO_FILE, TK_BANG}, {IO_FILE, COMPLETE_COMMANDS}, {IO_FILE, SEPARATOR_OP}, - {IO_FILE, AND_OR}, {IO_FILE, NEWLINE_LIST}, {IO_FILE, PIPE_SEMI_SEQUENCE}, {IO_FILE, PIPE_CLOSE_SEQUENCE}, {IO_FILE, SEQUENCE}, {IO_FILE, CMD_SUPERIOR}, + {IO_FILE, AND_OR_MAJOR}, {IO_FILE, TK_WHILE}, {IO_FILE, TK_UNTIL}, {IO_FILE, TK_IF}, @@ -716,12 +707,12 @@ static t_stackmatch g_stackmatch[] = {IO_REDIRECT, TK_LBRACE}, {IO_REDIRECT, COMPLETE_COMMANDS}, {IO_REDIRECT, SEPARATOR_OP}, - {IO_REDIRECT, AND_OR}, {IO_REDIRECT, NEWLINE_LIST}, {IO_REDIRECT, PIPE_SEMI_SEQUENCE}, {IO_REDIRECT, PIPE_CLOSE_SEQUENCE}, {IO_REDIRECT, SEQUENCE}, {IO_REDIRECT, CMD_SUPERIOR}, + {IO_REDIRECT, AND_OR_MAJOR}, {IO_REDIRECT, TK_WHILE}, {IO_REDIRECT, TK_UNTIL}, {IO_REDIRECT, TK_IF}, @@ -744,10 +735,10 @@ static t_stackmatch g_stackmatch[] = {CMD_PREFIX, COMPLETE_COMMANDS}, {CMD_PREFIX, TK_BANG}, {CMD_PREFIX, SEPARATOR_OP}, - {CMD_PREFIX, AND_OR}, {CMD_PREFIX, NEWLINE_LIST}, {CMD_PREFIX, SEQUENCE}, {CMD_PREFIX, CMD_SUPERIOR}, + {CMD_PREFIX, AND_OR_MAJOR}, {CMD_PREFIX, TK_WHILE}, {CMD_PREFIX, TK_UNTIL}, {CMD_PREFIX, TK_IF}, @@ -765,12 +756,13 @@ static t_stackmatch g_stackmatch[] = {CMD_NAME, TK_LBRACE}, {CMD_NAME, TK_BANG}, {CMD_NAME, SEPARATOR_OP}, - {CMD_NAME, AND_OR}, {CMD_NAME, NEWLINE_LIST}, {CMD_NAME, SEQUENCE}, {CMD_NAME, CMD_SUPERIOR}, + {CMD_NAME, AND_OR_MAJOR}, {CMD_NAME, CONDITION}, {CMD_NAME, COMPOUND_LIST}, + {CMD_NAME, AND_OR_MAJOR}, {CMD_NAME, TK_WHILE}, {CMD_NAME, FUNC_NAME}, {CMD_NAME, TK_UNTIL}, @@ -803,10 +795,10 @@ static t_stackmatch g_stackmatch[] = {CMD_SUPERIOR, COMPLETE_COMMANDS}, {CMD_SUPERIOR, TK_BANG}, {CMD_SUPERIOR, SEPARATOR_OP}, - {CMD_SUPERIOR, AND_OR}, {CMD_SUPERIOR, NEWLINE_LIST}, {CMD_SUPERIOR, TK_PIPE}, {CMD_SUPERIOR, SEQUENCE}, + {CMD_SUPERIOR, AND_OR_MAJOR}, {CLOSE_FUNC, CMD_SUPERIOR}, {CLOSE_FUNC, OPEN_FUNC}, {SIMPLE_COMMAND, TK_WHILE}, @@ -827,9 +819,9 @@ static t_stackmatch g_stackmatch[] = {SIMPLE_COMMAND, COMPLETE_COMMANDS}, {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, SEPARATOR_OP}, - {SIMPLE_COMMAND, AND_OR}, {SIMPLE_COMMAND, NEWLINE_LIST}, {SIMPLE_COMMAND, SEQUENCE}, + {SIMPLE_COMMAND, AND_OR_MAJOR}, {DO_GROUP, CMD_SUPERIOR}, {DO_GROUP, COMPOUND_LIST}, {DO_GROUP, NAME}, @@ -862,8 +854,8 @@ static t_stackmatch g_stackmatch[] = {COMPLETE_CONDITION, CASE_LIST_NS}, {COMPLETE_CONDITION, TK_BANG}, {COMPLETE_CONDITION, SEPARATOR_OP}, - {COMPLETE_CONDITION, AND_OR}, {COMPLETE_CONDITION, NEWLINE_LIST}, + {COMPLETE_CONDITION, AND_OR_MAJOR}, {COMPLETE_CONDITION, CASE_LIST_NS}, {COMPLETE_CONDITION, FUNC_NAME}, {FNAME, LINEBREAK}, @@ -872,7 +864,6 @@ static t_stackmatch g_stackmatch[] = {FNAME, COMPLETE_COMMANDS}, {FNAME, TK_BANG}, {FNAME, SEPARATOR_OP}, - {FNAME, AND_OR}, {FNAME, NEWLINE_LIST}, {FNAME, SEQUENCE}, {FUNCTION_BODY, FUNC}, @@ -883,7 +874,6 @@ static t_stackmatch g_stackmatch[] = {FUNCTION_DEFINITION, COMPLETE_COMMANDS}, {FUNCTION_DEFINITION, TK_BANG}, {FUNCTION_DEFINITION, SEPARATOR_OP}, - {FUNCTION_DEFINITION, AND_OR}, {FUNCTION_DEFINITION, NEWLINE_LIST}, {FUNCTION_DEFINITION, SEQUENCE}, {UNTIL_CLAUSE, LINEBREAK}, @@ -893,7 +883,6 @@ static t_stackmatch g_stackmatch[] = {UNTIL_CLAUSE, COMPLETE_COMMANDS}, {UNTIL_CLAUSE, TK_BANG}, {UNTIL_CLAUSE, SEPARATOR_OP}, - {UNTIL_CLAUSE, AND_OR}, {UNTIL_CLAUSE, NEWLINE_LIST}, {UNTIL_CLAUSE, SEQUENCE}, {UNTIL_CLAUSE, TK_DO}, @@ -909,11 +898,11 @@ static t_stackmatch g_stackmatch[] = {UNTIL_CLAUSE, CASE_LIST_NS}, {UNTIL_CLAUSE, COMPLETE_CONDITION}, {UNTIL_CLAUSE, CONDITION}, + {UNTIL_CLAUSE, AND_OR_MAJOR}, {WHILE_CLAUSE, LINEBREAK}, {WHILE_CLAUSE, COMPLETE_COMMANDS}, {WHILE_CLAUSE, TK_BANG}, {WHILE_CLAUSE, SEPARATOR_OP}, - {WHILE_CLAUSE, AND_OR}, {WHILE_CLAUSE, NEWLINE_LIST}, {WHILE_CLAUSE, SEQUENCE}, {WHILE_CLAUSE, TK_DO}, @@ -931,6 +920,7 @@ static t_stackmatch g_stackmatch[] = {WHILE_CLAUSE, CASE_LIST_NS}, {WHILE_CLAUSE, COMPLETE_CONDITION}, {WHILE_CLAUSE, CONDITION}, + {WHILE_CLAUSE, AND_OR_MAJOR}, {IF_CLAUSE, LINEBREAK}, {IF_CLAUSE, TK_BANG}, {IF_CLAUSE, TK_PAREN_OPEN}, @@ -938,7 +928,6 @@ static t_stackmatch g_stackmatch[] = {IF_CLAUSE, FUNC_NAME}, {IF_CLAUSE, COMPLETE_COMMANDS}, {IF_CLAUSE, SEPARATOR_OP}, - {IF_CLAUSE, AND_OR}, {IF_CLAUSE, NEWLINE_LIST}, {IF_CLAUSE, SEQUENCE}, {IF_CLAUSE, TK_DO}, @@ -955,6 +944,7 @@ static t_stackmatch g_stackmatch[] = {IF_CLAUSE, COMPLETE_COMMAND}, {IF_CLAUSE, COMPLETE_CONDITION}, {IF_CLAUSE, CONDITION}, + {IF_CLAUSE, AND_OR_MAJOR}, {BRACE_CLAUSE, LINEBREAK}, {BRACE_CLAUSE, TK_PAREN_OPEN}, {BRACE_CLAUSE, TK_LBRACE}, @@ -962,7 +952,6 @@ static t_stackmatch g_stackmatch[] = {BRACE_CLAUSE, COMPLETE_COMMANDS}, {BRACE_CLAUSE, TK_BANG}, {BRACE_CLAUSE, SEPARATOR_OP}, - {BRACE_CLAUSE, AND_OR}, {BRACE_CLAUSE, NEWLINE_LIST}, {BRACE_CLAUSE, SEQUENCE}, {BRACE_CLAUSE, TK_DO}, @@ -979,6 +968,7 @@ static t_stackmatch g_stackmatch[] = {BRACE_CLAUSE, COMPLETE_COMMAND}, {BRACE_CLAUSE, COMPLETE_CONDITION}, {BRACE_CLAUSE, CONDITION}, + {BRACE_CLAUSE, AND_OR_MAJOR}, {PATTERN, PATTERN_CASE}, {PATTERN, CASE_LIST}, {PATTERN, TK_IN}, @@ -991,7 +981,6 @@ static t_stackmatch g_stackmatch[] = {CASE_CLAUSE, FUNC_NAME}, {CASE_CLAUSE, COMPLETE_COMMANDS}, {CASE_CLAUSE, SEPARATOR_OP}, - {CASE_CLAUSE, AND_OR}, {CASE_CLAUSE, NEWLINE_LIST}, {CASE_CLAUSE, SEQUENCE}, {CASE_CLAUSE, TK_PAREN_CLOSE}, @@ -1008,6 +997,7 @@ static t_stackmatch g_stackmatch[] = {CASE_CLAUSE, CASE_LIST_NS}, {CASE_CLAUSE, COMPLETE_CONDITION}, {CASE_CLAUSE, CONDITION}, + {CASE_CLAUSE, AND_OR_MAJOR}, {WORDLIST, IN}, {IN, LINEBREAK}, {NAME, TK_FOR}, @@ -1019,7 +1009,6 @@ static t_stackmatch g_stackmatch[] = {FOR_CLAUSE, FUNC_NAME}, {FOR_CLAUSE, COMPLETE_COMMANDS}, {FOR_CLAUSE, SEPARATOR_OP}, - {FOR_CLAUSE, AND_OR}, {FOR_CLAUSE, NEWLINE_LIST}, {FOR_CLAUSE, SEQUENCE}, {FOR_CLAUSE, TK_DO}, @@ -1035,6 +1024,7 @@ static t_stackmatch g_stackmatch[] = {FOR_CLAUSE, CASE_LIST_NS}, {FOR_CLAUSE, COMPLETE_CONDITION}, {FOR_CLAUSE, CONDITION}, + {FOR_CLAUSE, AND_OR_MAJOR}, {COMPOUND_LIST, TK_DO}, {COMPOUND_LIST, TK_PAREN_CLOSE}, {COMPOUND_LIST, TK_LBRACE}, @@ -1055,13 +1045,11 @@ static t_stackmatch g_stackmatch[] = {SUBSHELL, COMPLETE_COMMANDS}, {SUBSHELL, TK_BANG}, {SUBSHELL, SEPARATOR_OP}, - {SUBSHELL, AND_OR}, {SUBSHELL, NEWLINE_LIST}, {SUBSHELL, SEQUENCE}, {SUBSHELL, TK_LBRACE}, {SUBSHELL, TK_PAREN_OPEN}, {SUBSHELL, SEPARATOR_OP}, - {SUBSHELL, AND_OR}, {SUBSHELL, NEWLINE_LIST}, {SUBSHELL, TK_DO}, {SUBSHELL, TK_PAREN_CLOSE}, @@ -1076,13 +1064,13 @@ static t_stackmatch g_stackmatch[] = {SUBSHELL, CASE_LIST_NS}, {SUBSHELL, COMPLETE_CONDITION}, {SUBSHELL, CONDITION}, + {SUBSHELL, AND_OR_MAJOR}, {COMPOUND_COMMAND, LINEBREAK}, {COMPOUND_COMMAND, TK_PAREN_OPEN}, {COMPOUND_COMMAND, TK_LBRACE}, {COMPOUND_COMMAND, COMPLETE_COMMANDS}, {COMPOUND_COMMAND, TK_BANG}, {COMPOUND_COMMAND, SEPARATOR_OP}, - {COMPOUND_COMMAND, AND_OR}, {COMPOUND_COMMAND, NEWLINE_LIST}, {COMPOUND_COMMAND, SEQUENCE}, {COMPOUND_COMMAND, FUNC}, @@ -1099,6 +1087,7 @@ static t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, CASE_LIST_NS}, {COMPOUND_COMMAND, COMPLETE_CONDITION}, {COMPOUND_COMMAND, CONDITION}, + {COMPOUND_COMMAND, AND_OR_MAJOR}, {COMMAND, TK_WHILE}, {COMMAND, TK_UNTIL}, {COMMAND, LINEBREAK}, @@ -1117,9 +1106,17 @@ static t_stackmatch g_stackmatch[] = {COMMAND, COMPLETE_CONDITION}, {COMMAND, CONDITION}, {COMMAND, SEPARATOR_OP}, - {COMMAND, AND_OR}, {COMMAND, NEWLINE_LIST}, {COMMAND, SEQUENCE}, + {COMMAND, AND_OR_MAJOR}, + {AND_OR_MINOR, SEQUENCE}, + {AND_OR_MINOR, LINEBREAK}, + {AND_OR_MINOR, TK_BANG}, + {AND_OR_MINOR, TK_PAREN_OPEN}, + {AND_OR_MINOR, TK_LBRACE}, + {AND_OR_MINOR, COMPLETE_COMMANDS}, + {AND_OR_MINOR, COMPOUND_LIST}, + {AND_OR_MINOR, AND_OR_MAJOR}, {PIPE_SEQUENCE, TK_WHILE}, {PIPE_SEQUENCE, FUNC_NAME}, {PIPE_SEQUENCE, TK_UNTIL}, @@ -1139,8 +1136,8 @@ static t_stackmatch g_stackmatch[] = {PIPE_SEQUENCE, TK_LBRACE}, {PIPE_SEQUENCE, COMPLETE_COMMANDS}, {PIPE_SEQUENCE, SEPARATOR_OP}, - {PIPE_SEQUENCE, AND_OR}, {PIPE_SEQUENCE, NEWLINE_LIST}, + {PIPE_SEQUENCE, AND_OR_MAJOR}, {TK_BANG, TK_WHILE}, {TK_BANG, TK_UNTIL}, {TK_BANG, TK_DO}, @@ -1158,8 +1155,8 @@ static t_stackmatch g_stackmatch[] = {TK_BANG, TK_LBRACE}, {TK_BANG, COMPLETE_COMMANDS}, {TK_BANG, SEPARATOR_OP}, - {TK_BANG, AND_OR}, {TK_BANG, NEWLINE_LIST}, + {TK_BANG, AND_OR_MAJOR}, {PIPE_SEMI_SEQUENCE, TK_WHILE}, {PIPE_SEMI_SEQUENCE, TK_UNTIL}, {PIPE_SEMI_SEQUENCE, TK_DO}, @@ -1178,8 +1175,8 @@ static t_stackmatch g_stackmatch[] = {PIPE_SEMI_SEQUENCE, TK_LBRACE}, {PIPE_SEMI_SEQUENCE, COMPLETE_COMMANDS}, {PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, - {PIPE_SEMI_SEQUENCE, AND_OR}, {PIPE_SEMI_SEQUENCE, NEWLINE_LIST}, + {PIPE_SEMI_SEQUENCE, AND_OR_MAJOR}, {PIPE_SEMI_SEQUENCE, SEQUENCE}, {PIPE_CLOSE_SEQUENCE, TK_WHILE}, {PIPE_CLOSE_SEQUENCE, TK_UNTIL}, @@ -1199,8 +1196,8 @@ static t_stackmatch g_stackmatch[] = {PIPE_CLOSE_SEQUENCE, TK_LBRACE}, {PIPE_CLOSE_SEQUENCE, COMPLETE_COMMANDS}, {PIPE_CLOSE_SEQUENCE, SEPARATOR_OP}, - {PIPE_CLOSE_SEQUENCE, AND_OR}, {PIPE_CLOSE_SEQUENCE, NEWLINE_LIST}, + {PIPE_CLOSE_SEQUENCE, AND_OR_MAJOR}, {PIPE_CLOSE_SEQUENCE, SEQUENCE}, {SEQUENCE, PIPE_SEMI_SEQUENCE}, {SEQUENCE, PIPE_CLOSE_SEQUENCE}, @@ -1222,8 +1219,8 @@ static t_stackmatch g_stackmatch[] = {SEQUENCE, COMPLETE_COMMANDS}, {SEQUENCE, TK_BANG}, {SEQUENCE, SEPARATOR_OP}, - {SEQUENCE, AND_OR}, {SEQUENCE, NEWLINE_LIST}, + {SEQUENCE, AND_OR_MAJOR}, {SEQUENCE, SEQUENCE}, {PIPELINE, TK_WHILE}, {PIPELINE, TK_UNTIL}, @@ -1243,27 +1240,36 @@ static t_stackmatch g_stackmatch[] = {PIPELINE, TK_LBRACE}, {PIPELINE, COMPLETE_COMMANDS}, {PIPELINE, SEPARATOR_OP}, - {PIPELINE, AND_OR}, + {PIPELINE, SEPARATOR_OP}, {PIPELINE, NEWLINE_LIST}, + {PIPELINE, AND_OR_MAJOR}, + {AND_OR_MAJOR, LINEBREAK}, + {AND_OR_MAJOR, TK_BANG}, + {AND_OR_MAJOR, TK_PAREN_OPEN}, + {AND_OR_MAJOR, TK_LBRACE}, + {AND_OR_MAJOR, COMPOUND_LIST}, + {AND_OR_MAJOR, COMPLETE_COMMANDS}, + {AND_OR_MAJOR, AND_OR_MAJOR}, + {AND_OR_MAJOR, AND_OR_MAJOR}, + {AND_OR, TK_DO}, {AND_OR, TK_PAREN_CLOSE}, {AND_OR, TK_WHILE}, {AND_OR, TK_UNTIL}, {AND_OR, TK_IF}, - {AND_OR, TK_THEN}, {AND_OR, TK_ELIF}, + {AND_OR, TK_THEN}, {AND_OR, TK_ELSE}, - {AND_OR, CMD_SUPERIOR}, {AND_OR, COMPOUND_LIST}, - {AND_OR, PIPE_SEMI_SEQUENCE}, - {AND_OR, PIPE_CLOSE_SEQUENCE}, {AND_OR, CASE_LIST_NS}, - {AND_OR, CONDITION}, {AND_OR, COMPLETE_CONDITION}, + {AND_OR, CONDITION}, {AND_OR, LINEBREAK}, {AND_OR, TK_BANG}, {AND_OR, TK_PAREN_OPEN}, {AND_OR, TK_LBRACE}, {AND_OR, COMPLETE_COMMANDS}, + {AND_OR, SEPARATOR_OP}, + {AND_OR, SEPARATOR_OP}, {AND_OR, NEWLINE_LIST}, {LIST, LINEBREAK}, {LIST, COMPLETE_COMMANDS}, diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 0b1a248c..3a989fb5 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/03/29 16:20:29 by ariard ### ########.fr */ +/* Updated: 2017/03/27 17:22:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,6 +31,7 @@ static t_prodmatch g_prodmatch[] = {TK_WORD, TK_BANG, CMD_NAME}, {TK_WORD, TK_PIPE, CMD_NAME}, {TK_WORD, AND_OR, CMD_NAME}, + {TK_WORD, AND_OR_MAJOR, CMD_NAME}, {TK_WORD, TK_PAREN_CLOSE, CMD_NAME}, {TK_WORD, TK_WHILE, CMD_NAME}, {TK_WORD, TK_UNTIL, CMD_NAME}, @@ -74,6 +75,7 @@ static t_prodmatch g_prodmatch[] = {TK_ASSIGNMENT_WORD, COMPLETE_CONDITION, CMD_PREFIX}, {TK_ASSIGNMENT_WORD, CONDITION, CMD_PREFIX}, {TK_ASSIGNMENT_WORD, AND_OR, CMD_PREFIX}, + {TK_ASSIGNMENT_WORD, AND_OR_MAJOR, CMD_PREFIX}, {TK_ASSIGNMENT_WORD, PIPE_SEMI_SEQUENCE, CMD_SUFFIX}, {TK_ASSIGNMENT_WORD, SEQUENCE, CMD_PREFIX}, {TK_ASSIGNMENT_WORD, COMPLETE_COMMANDS, CMD_PREFIX}, @@ -117,7 +119,6 @@ static t_prodmatch g_prodmatch[] = {TK_NEWLINE, CONDITION, NEWLINE_LIST}, {TK_NEWLINE, FOR_WORDLIST, NEWLINE_LIST}, {TK_NEWLINE, SEQUENTIAL_SEP, NEWLINE_LIST}, - {TK_NEWLINE, AND_OR, NEWLINE_LIST}, {TK_NEWLINE, PROGRAM, NEWLINE_LIST}, {TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP}, {TK_SEMI, LIST, SEPARATOR_OP}, @@ -127,10 +128,6 @@ static t_prodmatch g_prodmatch[] = {TK_AMP, LIST, SEPARATOR_OP}, {TK_AMP, PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, {TK_AMP, PIPE_CLOSE_SEQUENCE, SEPARATOR_OP}, - {TK_AND_IF, ALL, AND_OR}, - {TK_OR_IF, ALL, AND_OR}, - {TK_AND_IF, COMPLETE_CONDITION, OTHER}, - {TK_OR_IF, COMPLETE_CONDITION, OTHER}, {0, 0, 0}, }; @@ -146,11 +143,10 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) head = (*stack)->content; i = 0; *new_sym = 0; - DG(); while (g_prodmatch[i].new_sym) { if (token->type == g_prodmatch[i].token - && (*head == g_prodmatch[i].stack || g_prodmatch[i].stack == ALL)) + && *head == g_prodmatch[i].stack) *new_sym = g_prodmatch[i].new_sym; i++; } diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 20494703..81b2df34 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/03/29 14:15:17 by ariard ### ########.fr */ +/* Updated: 2017/03/29 16:43:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,10 @@ char *read_state(t_sym current) { + if (current == AND_OR_MINOR) + return ("AND_OR_MINOR"); + if (current == AND_OR_MAJOR) + return ("AND_OR_MAJOR"); if (current == FNAME) return ("FNAME"); if (current == PIPE_CLOSE_SEQUENCE)