Docker test 시행착오

no-glass-otacku·2025년 4월 14일
0

pintos -v -- -q run 'priority-change'
test를 하기위해 사용하게 되는 명령어
docker안에서 명령어 입력! 따옴표 안에 실행하고픈 테스트 이름을 넣으면 됨.
여기 있는 pintos라는 명령어를 사용하기 위해서는 아래 세팅을 해야함.

⚙️ 매번 pintos라고만 치고 실행하고 싶다면: 환경 변수 등록
find /pintos -name pintos
이거 하면 pintos 스크립트 위치를 알려주는데
/pintos/utils/pintos 랑 /pintos/src/utils/pintos에 있음

export PATH=$PATH:/pintos/utils

🧠 이걸 영구 적용하려면:
echo 'export PATH=$PATH:/pintos/utils' >> ~/.bashrc
source ~/.bashrc
당연히 얘네도 docker안에 입력해야함

📌 문제 원인
지금 너가 사용하는 PintOS 구조는 pintos-kaist 버전이 아닌,
공식 PintOS Reference (Stanford/CS140) 기본 버전 또는
Makefile에 테스트 자동화를 포함하지 않은 최소 버전이야.

즉, 이 구조에선 make check도 없고

TESTS=...도 지원되지 않으며

테스트 실행은 직접 명령어로 pintos 명령을 호출해서 수동으로 해야 함

🛠️ make 명령어 비교 (Pintos 기준)

명령어목적실행 위치공통점차이점
make clean빌드된 파일(.o, .d, kernel.bin 등) 제거/src, /src/threads모두 Makefile에 정의된 규칙을 사용함빌드된 결과물만 삭제하고 실행은 하지 않음
make현재 디렉토리의 Pintos 커널 빌드보통 /src/threadsMakefile로 빌드 대상 파일을 자동 생성커널만 컴파일하고 테스트는 실행하지 않음
make check전체 테스트 빌드 + 실행/src (프로젝트 루트)테스트를 위해 내부적으로 make 먼저 수행모든 디렉토리의 테스트를 다 실행하며 시간이 오래 걸림

✅ 추천 사용 흐름 (단계별)

  1. make clean – 이전 결과 삭제 (에러 방지용)
  2. make – 내가 수정한 코드가 잘 컴파일되는지 확인
  3. make check – 전체 테스트를 실행해서 결과 확인

좋아, 이 오류 메시지:

make: *** No rule to make target 'tests/threads/priority-change.result'.  Stop.

make가 테스트 실행 규칙을 찾지 못했다는 뜻인데,
대부분 다음 중 하나야:


✅ 1. 잘못된 디렉토리에서 테스트 실행 시도

너가 위치한 곳이 pintos/threads인데,
Pintos 공식 구조는 pintos/src/threads 구조여야 해.

🔧 해결:

cd /pintos/src/threads

src 폴더 안에 들어가서 Makefile이 있는지 확인해줘.


✅ 2. 처음 실행 시엔 make로 전체 빌드를 먼저 해줘야 할 수 있어

| 🔁 처음 빌드 했음? | make 또는 make all 했는지 |

cd /pintos/src/threads
make clean
make

이후 다시 아래 명령어 시도:

make tests/threads/priority-change.result
profile
Move forward

0개의 댓글