mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-31 07:04:12 +00:00 
			
		
		
		
	Closes https://github.com/nvbn/thefuck/issues/728
This commit is contained in:
		| @@ -218,6 +218,7 @@ using the matched rule and runs it. Rules enabled by default are as follows: | |||||||
| * `grunt_task_not_found` – fixes misspelled `grunt` commands; | * `grunt_task_not_found` – fixes misspelled `grunt` commands; | ||||||
| * `gulp_not_task` – fixes misspelled `gulp` tasks; | * `gulp_not_task` – fixes misspelled `gulp` tasks; | ||||||
| * `has_exists_script` – prepends `./` when script/binary exists; | * `has_exists_script` – prepends `./` when script/binary exists; | ||||||
|  | * `heroku_multiple_apps` – add `--app <app>` to `heroku` commands like `heroku pg`; | ||||||
| * `heroku_not_command` – fixes wrong `heroku` commands like `heroku log`; | * `heroku_not_command` – fixes wrong `heroku` commands like `heroku log`; | ||||||
| * `history` – tries to replace command with most similar command from history; | * `history` – tries to replace command with most similar command from history; | ||||||
| * `hostscli` – tries to fix `hostscli` usage; | * `hostscli` – tries to fix `hostscli` usage; | ||||||
|   | |||||||
							
								
								
									
										55
									
								
								tests/rules/test_heroku_multiple_apps.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								tests/rules/test_heroku_multiple_apps.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | # -*- coding: utf-8 -*- | ||||||
|  |  | ||||||
|  | import pytest | ||||||
|  | from thefuck.types import Command | ||||||
|  | from thefuck.rules.heroku_multiple_apps import match, get_new_command | ||||||
|  |  | ||||||
|  |  | ||||||
|  | suggest_output = ''' | ||||||
|  |  ▸    Multiple apps in git remotes | ||||||
|  |  ▸    Usage: --remote heroku-dev | ||||||
|  |  ▸    or: --app myapp-dev | ||||||
|  |  ▸    Your local git repository has more than 1 app referenced in git remotes. | ||||||
|  |  ▸    Because of this, we can't determine which app you want to run this command against. | ||||||
|  |  ▸    Specify the app you want with --app or --remote. | ||||||
|  |  ▸    Heroku remotes in repo: | ||||||
|  |  ▸    myapp (heroku) | ||||||
|  |  ▸    myapp-dev (heroku-dev) | ||||||
|  |  ▸ | ||||||
|  |  ▸    https://devcenter.heroku.com/articles/multiple-environments | ||||||
|  | ''' | ||||||
|  |  | ||||||
|  | not_match_output = ''' | ||||||
|  | === HEROKU_POSTGRESQL_TEAL_URL, DATABASE_URL | ||||||
|  | Plan:                  Hobby-basic | ||||||
|  | Status:                Available | ||||||
|  | Connections:           20/20 | ||||||
|  | PG Version:            9.6.4 | ||||||
|  | Created:               2017-01-01 00:00 UTC | ||||||
|  | Data Size:             99.9 MB | ||||||
|  | Tables:                99 | ||||||
|  | Rows:                  12345/10000000 (In compliance) | ||||||
|  | Fork/Follow:           Unsupported | ||||||
|  | Rollback:              Unsupported | ||||||
|  | Continuous Protection: Off | ||||||
|  | Add-on:                postgresql-round-12345 | ||||||
|  | ''' | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @pytest.mark.parametrize('cmd', ['pg']) | ||||||
|  | def test_match(cmd): | ||||||
|  |     assert match( | ||||||
|  |         Command('heroku {}'.format(cmd), suggest_output)) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @pytest.mark.parametrize('script, output', [ | ||||||
|  |     ('heroku pg', not_match_output)]) | ||||||
|  | def test_not_match(script, output): | ||||||
|  |     assert not match(Command(script, output)) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @pytest.mark.parametrize('cmd, result', [ | ||||||
|  |     ('pg', ['heroku pg --app myapp', 'heroku pg --app myapp-dev'])]) | ||||||
|  | def test_get_new_command(cmd, result): | ||||||
|  |     command = Command('heroku {}'.format(cmd), suggest_output) | ||||||
|  |     assert get_new_command(command) == result | ||||||
							
								
								
									
										12
									
								
								thefuck/rules/heroku_multiple_apps.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								thefuck/rules/heroku_multiple_apps.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | import re | ||||||
|  | from thefuck.utils import for_app | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @for_app('heroku') | ||||||
|  | def match(command): | ||||||
|  |     return 'https://devcenter.heroku.com/articles/multiple-environments' in command.output | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def get_new_command(command): | ||||||
|  |     apps = re.findall('([^ ]*) \([^)]*\)', command.output) | ||||||
|  |     return [command.script + ' --app ' + app for app in apps] | ||||||
		Reference in New Issue
	
	Block a user