mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-30 22:54:14 +00:00 
			
		
		
		
	| @@ -198,6 +198,7 @@ using the matched rule and runs it. Rules enabled by default are as follows: | ||||
| * `switch_lang` – switches command from your local layout to en; | ||||
| * `systemctl` – correctly orders parameters of confusing `systemctl`; | ||||
| * `test.py` – runs `py.test` instead of `test.py`; | ||||
| * `touch` – creates missing directories before "touching"; | ||||
| * `tsuru_login` – runs `tsuru login` if not authenticated or session expired; | ||||
| * `tsuru_not_command` – fixes wrong `tsuru` commands like `tsuru shell`; | ||||
| * `tmux` – fixes `tmux` commands; | ||||
|   | ||||
							
								
								
									
										29
									
								
								tests/test_touch.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								tests/test_touch.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| import pytest | ||||
| from thefuck.rules.touch import match, get_new_command | ||||
| from tests.utils import Command | ||||
|  | ||||
|  | ||||
| @pytest.fixture | ||||
| def stderr(): | ||||
|     return "touch: cannot touch '/a/b/c':" \ | ||||
|            " No such file or directory" | ||||
|  | ||||
|  | ||||
| def test_match(stderr): | ||||
|     command = Command( | ||||
|         'touch /a/b/c', stderr=stderr) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
|     Command('touch /a/b/c'), | ||||
|     Command('touch /a/b/c', stdout=stderr()), | ||||
|     Command('ls /a/b/c', stderr=stderr())]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(stderr): | ||||
|     command = Command('touch /a/b/c', stderr=stderr) | ||||
|     fixed_command = get_new_command(command) | ||||
|     assert fixed_command == 'mkdir -p /a/b && touch /a/b/c' | ||||
							
								
								
									
										13
									
								
								thefuck/rules/touch.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								thefuck/rules/touch.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| import re | ||||
| from thefuck.utils import for_app | ||||
| from thefuck.shells import and_ | ||||
|  | ||||
|  | ||||
| @for_app('touch') | ||||
| def match(command): | ||||
|     return 'No such file or directory' in command.stderr | ||||
|  | ||||
|  | ||||
| def get_new_command(command): | ||||
|     path = re.findall(r"touch: cannot touch '(.+)/.+':", command.stderr)[0] | ||||
|     return and_(u'mkdir -p {}'.format(path), command.script) | ||||
		Reference in New Issue
	
	Block a user