forked from mirrors/gecko-dev
		
	 54ee6457a1
			
		
	
	
		54ee6457a1
		
	
	
	
	
		
			
			# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D162656
		
			
				
	
	
		
			92 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # This Source Code Form is subject to the terms of the Mozilla Public
 | |
| # License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | |
| 
 | |
| import os
 | |
| import subprocess
 | |
| 
 | |
| import mozunit
 | |
| import pytest
 | |
| 
 | |
| from mozlint import editor
 | |
| from mozlint.result import Issue, ResultSummary
 | |
| 
 | |
| here = os.path.abspath(os.path.dirname(__file__))
 | |
| 
 | |
| 
 | |
| @pytest.fixture
 | |
| def capture_commands(monkeypatch):
 | |
|     def inner(commands):
 | |
|         def fake_subprocess_call(*args, **kwargs):
 | |
|             commands.append(args[0])
 | |
| 
 | |
|         monkeypatch.setattr(subprocess, "call", fake_subprocess_call)
 | |
| 
 | |
|     return inner
 | |
| 
 | |
| 
 | |
| @pytest.fixture
 | |
| def result():
 | |
|     result = ResultSummary("/fake/root")
 | |
|     result.issues["foo.py"].extend(
 | |
|         [
 | |
|             Issue(
 | |
|                 linter="no-foobar",
 | |
|                 path="foo.py",
 | |
|                 lineno=1,
 | |
|                 message="Oh no!",
 | |
|             ),
 | |
|             Issue(
 | |
|                 linter="no-foobar",
 | |
|                 path="foo.py",
 | |
|                 lineno=3,
 | |
|                 column=10,
 | |
|                 message="To Yuma!",
 | |
|             ),
 | |
|         ]
 | |
|     )
 | |
|     return result
 | |
| 
 | |
| 
 | |
| def test_no_editor(monkeypatch, capture_commands, result):
 | |
|     commands = []
 | |
|     capture_commands(commands)
 | |
| 
 | |
|     monkeypatch.delenv("EDITOR", raising=False)
 | |
|     editor.edit_issues(result)
 | |
|     assert commands == []
 | |
| 
 | |
| 
 | |
| def test_no_issues(monkeypatch, capture_commands, result):
 | |
|     commands = []
 | |
|     capture_commands(commands)
 | |
| 
 | |
|     monkeypatch.setenv("EDITOR", "generic")
 | |
|     result.issues = {}
 | |
|     editor.edit_issues(result)
 | |
|     assert commands == []
 | |
| 
 | |
| 
 | |
| def test_vim(monkeypatch, capture_commands, result):
 | |
|     commands = []
 | |
|     capture_commands(commands)
 | |
| 
 | |
|     monkeypatch.setenv("EDITOR", "vim")
 | |
|     editor.edit_issues(result)
 | |
|     assert len(commands) == 1
 | |
|     assert commands[0][0] == "vim"
 | |
| 
 | |
| 
 | |
| def test_generic(monkeypatch, capture_commands, result):
 | |
|     commands = []
 | |
|     capture_commands(commands)
 | |
| 
 | |
|     monkeypatch.setenv("EDITOR", "generic")
 | |
|     editor.edit_issues(result)
 | |
|     assert len(commands) == len(result.issues)
 | |
|     assert all(c[0] == "generic" for c in commands)
 | |
|     assert all("foo.py" in c for c in commands)
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     mozunit.main()
 |