Browse Source

fix(): fixing the test

adding info in the readme
DEV-4397-piscine-ai-missing-file-for-ex-7-of-nlp
miguel 1 year ago committed by MSilva95
parent
commit
9d0f9d4506
  1. 20
      sh/tests/in-back-ground_test.sh
  2. 2
      sh/tests/solutions/in-back-ground.sh
  3. 22
      subjects/devops/in-back-ground/README.md

20
sh/tests/in-back-ground_test.sh

@ -7,20 +7,28 @@ IFS='
FILENAME="student/in-back-ground.sh"
script_dirS=$(cd -P "$(dirname "$BASH_SOURCE")" &>/dev/null && pwd)
echo "- Australia is wider than the moon. The moon sits at 3400km in diameter, while Australia's diameter from east to west is almost 4000km." >facts
challenge() {
submitted=$(cd "$1" && bash "$script_dirS"/$FILENAME)
std_out=$(cat output.txt)
expected=$(cd "$1" && bash "$script_dirS"/solutions/in-back-ground.sh)
sol_out=$(cat output.txt)
diff <(echo "$submitted") <(echo "$expected")
diff <(echo "$std_out") <(echo "$sol_out")
}
challenge_no_output() {
if [[ -f output.txt ]]; then
exit 1
fi
submitted=$(cd "$1" && bash "$script_dirS"/$FILENAME)
expected=$(cd "$1" && bash "$script_dirS"/solutions/in-back-ground.sh)
diff <(echo "$submitted") <(echo "$expected")
}
challenge .
rm output.txt
echo "The sun is a star!" >facts
challenge .
if [ -f sol-output ] && [ -f output ]; then
diff sol-output output
rm sol-output output
fi
challenge_no_output .

2
sh/tests/solutions/in-back-ground.sh

@ -1 +1 @@
nohup cat facts | grep "moon" && echo "The moon fact was found!" >sol-output &
nohup cat facts | grep "moon" && echo "The moon fact was found!" >output.txt &

22
subjects/devops/in-back-ground/README.md

@ -6,31 +6,39 @@ Create a script `in-back-ground.sh` which will execute a job in the background t
- Run the command `cat` on the file "facts" which will read the contents of the file and print it to `stdout`.
- The output of the cat command will be piped to the `grep` command, which will search for the string `"moon"` in the file.
- If the `grep` command succeeds (if it finds the string "moon"), the echo command will run and print `"The moon fact was found!"` to the `output` file.
- If the `grep` command succeeds (if it finds the string "moon"), you will print `"The moon fact was found!"` to the `output.txt` file. If it fails the file `output.txt` is not created.
- If the command finds the string "moon", it will print the matching line to the `stdout`.
- Redirect the `stdout` to a new file `output`.
- Redirect the `stdout` to a new file `output.txt`.
You must do all these steps running only one job and using the command `nohup`!
Expected output:
```console
$ ls
facts in-back-ground.sh
$ ./in-back-ground.sh
nohup: redirecting stderr to stdout
- Australia is wider than the moon. The moon sits at 3400km in diameter, while Australia's diameter from east to west is almost 4000km.
$ ls
facts in-back-ground.sh output
$ cat output
facts in-back-ground.sh output.txt
$ cat output.txt
The moon fact was found!
./in-back-ground.sh
$
```
```console
$ ./in-back-ground.sh # If the string isn't found
nohup: redirecting stderr to stdout
$ ls
facts in-back-ground.sh
$ cat output
cat: output: No such file or directory
$ cat output.txt
cat: output.txt: No such file or directory
$
```
> In order to test your solution, you need to create your own `facts` file. This file must not be submitted!
### Hints
The `nohup` command is used to run a command in the background, even if you close the terminal or log out of the system. When a command is run with nohup, it ignores the "SIGHUP" signal, which is sent to processes when the terminal they are running in is closed.

Loading…
Cancel
Save