diff --git a/test/test.py b/test/test.py index a73a3ebd3b00c2db691f1f9dfd6edacd0c2d8885..a4aacc47d3bbce91c1a3e1a410dd2e36f608ee0a 100644 --- a/test/test.py +++ b/test/test.py @@ -97,7 +97,7 @@ class Test: # Test if shell is still running if shell_ps.is_running(): raise AssertionError('Shell is still running after en of communication, either exit is not working or the shell does not terminate on Ctrl+D') - + return stdout, stderr, cwd except subprocess.TimeoutExpired: @@ -116,10 +116,10 @@ class Test: # check if command output (stdout, stderr and 0 exit status) is the one expected with ls command cmd = ['ls', '-l', '--all', '--author', '-h', '-i', '-S'] std_stdout, std_stderr, _ = self._execute_shell_command(cmd) - + # get "real" output real = subprocess.run(cmd, cwd=tempfile.gettempdir(), capture_output=True, encoding='utf-8') - + # check standard output if not real.stdout in std_stdout: raise AssertionError('The standard output of the command "{}" does not include the following correct result:\n{}\cmd result in shell:\n{}'.format(' '.join(cmd), real.stdout, std_stdout)) @@ -132,15 +132,15 @@ class Test: std_returncode = self._get_exit_code_from_stdout(std_stdout) if std_returncode != real.returncode: raise AssertionError('The command "{}" should return {} but the shell indicates {}'.format(' '.join(cmd), real.returncode, std_returncode)) - - + + def test_error_foregroundjob(self, cmd: list[str]): # check if command output (stdout, stderr and 0 exit status) is the one expected with ls command std_stdout, std_stderr, _ = self._execute_shell_command(cmd) - + # get "real" output real = subprocess.run(cmd, cwd=tempfile.gettempdir(), capture_output=True, encoding='utf-8') - + # check standard output if not real.stderr in std_stderr: raise AssertionError('The standard output of the command "{}" does not include the following correct result:\n{}\cmd result in shell:\n{}'.format(' '.join(cmd), real.stderr, std_stderr)) @@ -150,7 +150,7 @@ class Test: # check return code std_returncode = self._get_exit_code_from_stdout(std_stdout) if std_returncode != real.returncode: - raise AssertionError('The command "{}" should return {} but the shell indicates {}'.format(' '.join(cmd), real.returncode, std_returncode)) + raise AssertionError('The command "{}" should return {} but the shell indicates {}'.format(' '.join(cmd), real.returncode, std_returncode)) @test @@ -161,13 +161,13 @@ class Test: _, std_stderr, _ = self._execute_shell_command(cmd) if not std_stderr: - raise AssertionError('The command {} should return an error but stderr is empty'.format(str_cmd)) + raise AssertionError('The command "{}" should return an error but stderr is empty'.format(str_cmd)) def test_foregroundjobs(self): print('--- TESTING FOREGROUND JOBS ---') self.test_simple_foregroundjob() - + self.test_wrongcmd() self.test_successfull_foregroundjob() @@ -192,11 +192,17 @@ class Test: @test def test_builtin_cd(self): + # Test existing directory dir = tempfile.TemporaryDirectory() _, _, cwd = self._execute_shell_command(['cd', dir.name], cwd='.', timeout=1) if dir.name != cwd: raise AssertionError('Changing directory failed: the directory shouldbe {} but it is {}'.format(dir, cwd)) - #TODO: test if the directory does not exist + + # Test non-existing directory + cmd = ['cd', 'thisfoldershouldnotexist'] + _, stderr, _ = self._execute_shell_command(cmd, timeout=1) + if not stderr: + raise AssertionError('The command "{}" should return an error but stderr is empty'.format(' '.join(cmd))) def test_builtin(self):