Skip to content
Snippets Groups Projects
Commit 141ec1c7 authored by Ziheng Chen's avatar Ziheng Chen
Browse files

Upload New File

parent 0d038439
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env bats
# File: student_tests.sh
#
# Create your unit tests suit in this file
@test "Check if shell starts" {
run ./dsh <<< "exit"
[ "$status" -eq 0 ]
# These echo commands will help with debugging and will only print
#if the test fails
echo "Captured stdout:"
echo "Output: $output"
echo "Exit Status: $status"
echo "${stripped_output} -> ${expected_output}"
# Check exact match
[ "$stripped_output" = "$expected_output" ]
}
@test "Example: check ls runs without errors" {
run ./dsh <<EOF
ls
EOF
# Assertions
[ "$status" -eq 0 ]
# These echo commands will help with debugging and will only print
#if the test fails
echo "Captured stdout:"
echo "Output: $output"
echo "Exit Status: $status"
echo "${stripped_output} -> ${expected_output}"
# Check exact match
[ "$stripped_output" = "$expected_output" ]
}
@test "Create and navigate into new directory" {
run ./dsh <<EOF
mkdir -p /tmp/student_test_dir
cd /tmp/student_test_dir
pwd
EOF
# Remove extra spaces but **preserve newlines**
stripped_output=$(echo "$output" | tr -s '[:space:]' | tr '\n' '|' )
# Adjust expected output to match actual shell behavior
expected_output="/tmp/student_test_dir|dsh2> dsh2> dsh2> dsh2> |cmd loop returned 0|"
# Debugging output
echo "Captured stdout:"
echo "Output: $output"
echo "Exit Status: $status"
echo "${stripped_output} -> ${expected_output}"
# Assertion: Check exact match
[ "$stripped_output" = "$expected_output" ]
}
@test "Handle command execution failures gracefully" {
run ./dsh <<< "command_that_does_not_exist"
# Expected error message
expected_error="execvp failed: No such file or directory"
# Check if output contains the expected error message
[[ "$output" == *"$expected_error"* ]]
# Debugging output
echo "Captured stdout:"
echo "Output: $output"
echo "Exit Status: $status"
echo "${stripped_output} -> ${expected_output}"
# Assertion: Check exact match
[ "$stripped_output" = "$expected_output" ]
}
@test "Detect too many arguments for built-in cd" {
run ./dsh <<< "cd /tmp extra_argument"
# Expected error message
expected_error="error: cd command accepts at most 1 argument"
# Check if output contains the expected error message
[[ "$output" == *"$expected_error"* ]]
# Debugging output
echo "Captured stdout:"
echo "Output: $output"
echo "Exit Status: $status"
# Assertion: Check exact match
[ "$stripped_output" = "$expected_output" ]
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment