[42서울] minishell 테스트 케이스

2024. 8. 11. 21:07·대외활동/42서울
728x90
반응형

서론

 

테스트 케이스

leaks

minishell 프롬프트에 각종 명령이나 동작 사용하고 leaks minishell 으로 확인해보자.

  1. 공백 입력 릭
  2. cd 릭
  3. << (히어독) 내부 릭
  4. 자식 프로세스 릭

 

exit status

각종 명령이나 동작 사용하고 echo $? 로 exit status 확인해보자.

bash 출력값과 미니쉘 출력값이 다를 경우(특히 오류 메시지) 대부분 exit status가 잘못됐을 수 있다. exit status 값을 strerror 인자로 넘겨서 오류 메시지를 출력하는 것이 좋다.

  1. 파이프라인 뒤에 exit status
    1. 항상 0
    2. 예시(앞의 명령이 올바른 경우): ls | echo $?
    3. 예시(앞의 명령이 잘못된 경우): aaaaa | echo $?
  2. 시그널 처리 후 exit status 확인
    1. cntl + c, cntl + d, cntl + \
    2. cat 도중에도 시그널 보내보고 exit status 확인
  3. exit에 인자 넣어서 미니쉘 종료 시 인자로 넣은 숫자가 매우 크다면 numeric argument required 뜨면서 종료 + 종료코드 255

 

redirection

  1. 최대 히어독 개수는 16개, 넘어가면 오류
  2. 리다이렉션 위치 상관 없음 (맨 처음 또는 맨 뒤, 심지어 명령과 인자 사이에도 올 수 있으며 단독으로 나올 수도 있음)
    ls > test1 -a < test2 -l

 

export 및 env

  1. 인자 없이 export 사용 시 환경변수 내역이 잘 나와야 한다. 또한 내용은 알파벳 순서로 정렬되어 있다.
  2. export 명령에 잘못된 인자를 넣어서 실패했을 경우 env에는 쉘 변수가 추가되지 않는데 export 출력 결과에는 존재하는 경우도 있음.
  3. env 없을 때 세그폴트 날 수 있음 env -i ./minishell
  4. export TEST="ls -a -l" 이후 $TEST 입력하면 ls -a -l 명령어의 결과 나옴

 

env

env는 인자가 없는 빌트인 함수이므로 뒤에 명령어가 오면 무시됨

 

quote

  1. 명령어 중간에 quote 들어갈 수 있음. e''""c'h'"o" hi 이런 거 잘 작동함.
  2. 리다이렉션이나 파이프 앞뒤로 문자열 온 것도 파싱 가능 cat>test 또는 ls|expr $?

 

기타

  1. top 명령 이후 동작 안함. bash에서도 같은 문제가 있던데 구체적인 테스트 방법은 까먹음
  2. cat | cat | cat 이런 식으로 cat 여러번 열고 시그널 주기 (cntl + c,d,\)
  3. << a << b << c 이런 식으로 히어독 여러번 열고 시그널 주기
  4. cat | ls 결과 bash와 비교해보기
  5. $PATH를 ".:..", ".:..:bin"  이런식으로 설정하고 ls라는 이름의 실행 파일 만든 후 chmod로 권한 설정하면서 테스트 해보기
  6. 파이프 제대로 안닫아줘서 fd 많이 쓸 경우 pipe failed 에러 뜨고 종료되기도 했음 fd 개수 테스트 필요
  7. 파이프 | 뒤에 쉘 변수 $VAR 올 때, 특수문자 기준으로 파이프 기호 뒤 명령 올바른지 파싱한다면 동작하지 않을 수 있음

+)

cd 실패 시 (디렉토리 삭제해서)
이런 것도 가능

 

후기

앞에 설명한 내용 말고도 미니쉘 예외 사항은 정말 끝도 없이 나온다. 상상치도 못한 것들이 많다. 예외 사항을 찾는다면 틈틈이 포스팅 업데이트 하겠다. 열심히 하자.

728x90
반응형

'대외활동 > 42서울' 카테고리의 다른 글

[42서울] Netpractice LEVEL 8 문제 풀이  (1) 2024.11.11
[42서울] minitalk 구현(Makefile 포함)  (0) 2024.08.22
[42서울] so_long 그래픽, mlx 라이브러리  (0) 2024.08.11
[42서울] so_long 맵 유효성 검사(BFS)  (0) 2024.07.22
[42서울] get_next_line 구현 (메모리 누수 잡기, 구현 tip)  (1) 2024.07.21
'대외활동/42서울' 카테고리의 다른 글
  • [42서울] Netpractice LEVEL 8 문제 풀이
  • [42서울] minitalk 구현(Makefile 포함)
  • [42서울] so_long 그래픽, mlx 라이브러리
  • [42서울] so_long 맵 유효성 검사(BFS)
dev_ares
dev_ares
대학에서 컴퓨터공학을 전공하고 있는 학생입니다.
    반응형
    250x250
  • dev_ares
    노트
    dev_ares
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • IT 트랜드 (2)
      • 백엔드 (18)
        • Java + Spring (8)
        • Kotlin + Spring (5)
        • 백엔드 (5)
      • 프론트엔드 (1)
        • React (1)
      • 대외활동 (17)
        • 42서울 (17)
      • 백준 (6)
        • Java (2)
        • C++ (3)
      • 전공 (121)
        • 객체지향프로그래밍 (17)
        • 자료구조 (23)
        • 리눅스시스템관리 (16)
        • 컴퓨터구조 (25)
        • 네트워크 (25)
        • 데이터베이스 (15)
        • 기타 전공 (0)
      • 프로그래밍 언어 (18)
        • Java (5)
        • Swift (4)
        • C++ (1)
        • Kotlin (8)
      • 기타 (4)
      • 공군 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    메모리 계층 구조
    C++
    리눅스
    코틀린
    자바
    단일 사이클
    컴퓨터 구조 및 설계
    티스토리챌린지
    상속
    42서울
    데이터패스
    오블완
    자료구조
    추가 문제
    반복자
    사설 문제
    컴공 포트폴리오
    명령어
    컴퓨터구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
dev_ares
[42서울] minishell 테스트 케이스
상단으로

티스토리툴바