mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	# 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()
 |