pre-commit-hooks icon indicating copy to clipboard operation
pre-commit-hooks copied to clipboard

Changed errant `sys.argv` to `args` parameter passed in.

Open akfreed opened this issue 2 years ago • 1 comments

Fix for https://github.com/pocc/pre-commit-hooks/issues/46

In some use cases, the args param given to the Command constructor was an (purposely) stripped version of sys.argv. Command.get_added_files() was reading directly from sys.argv, circumventing this filtering.

akfreed avatar May 18 '22 05:05 akfreed

The Mac ci tests are failing due to the ls command failing... I tried taking it out and the test continued. However it failed later on. It looks like the test is failing because if an error in a config file? I checked and confirmed the failure is not due to my changes.

failure: https://github.com/akfreed/pocc-pre-commit-hooks/runs/6483498426?check_suite_focus=true

Run python3 -m pytest -x -vvv
  python3 -m pytest -x -vvv
  shell: /bin/bash -e {0}
============================= test session starts ==============================
platform darwin -- Python 3.9.12, pytest-7.1.2, pluggy-1.0.0 -- /usr/local/opt/[email protected]/bin/python3.9
cachedir: .pytest_cache
rootdir: /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks, configfile: pytest.ini
collecting ... collected 124 items

tests/test_dashp.py::TestHDashp::test_clang_tidy_dashp_present[ClangTidyCmd] PASSED [  0%]
tests/test_dashp.py::TestHDashp::test_clang_tidy_dashp_present[OCLintCmd] PASSED [  1%]
tests/test_hooks.py::TestHooks::test_run[run_shell_cmd clang-format /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/test_repo/err.c /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/test_repo/err.cpp --style=google --no-diff] PASSED [  2%]
tests/test_hooks.py::TestHooks::test_run[run_shell_cmd uncrustify /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/test_repo/err.c /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/test_repo/err.cpp -c /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/uncrustify_defaults.cfg --no-diff] FAILED [  3%]

=================================== FAILURES ===================================
_ TestHooks.test_run[run_shell_cmd uncrustify /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/test_repo/err.c /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/test_repo/err.cpp -c /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/uncrustify_defaults.cfg --no-diff] _

self = <tests.test_hooks.TestHooks object at 0x102707e20>
test_type = <function TestHooks.run_shell_cmd at 0x102792670>
cmd_name = 'uncrustify'
args = ['-c', '/Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/uncrustify_defaults.cfg', '--no-diff']
files = ['/Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/test_repo/err.c', '/Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/test_repo/err.cpp']
test_dir = '', expd_output = b'', expd_retcode = 1

    def test_run(self, test_type, cmd_name, args, files, test_dir, expd_output, expd_retcode):
        """Test each command's class from its python file
        and the command for each generated by setup.py."""
        fix_in_place = self.determine_edit_in_place(cmd_name, args)
        has_err_file = any(["err.c" in f for f in files])
        will_fix_in_place = fix_in_place and has_err_file
>       test_type(cmd_name, files, args, test_dir, expd_output, expd_retcode)

tests/test_hooks.py:390: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_hooks.py:447: in run_shell_cmd
    utils.assert_equal(target_output, actual)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

expected = b''
actual = b"Problem with uncrustify: Unexpected Stderr/return code received when analyzing /Users/runner/work/pocc-pre-commit-ho...oks/pocc-pre-commit-hooks/tests/uncrustify_defaults.cfg:23: Expected number , for 'indent_bool_paren'; got 'false'\n\n"

    def assert_equal(expected: bytes, actual: bytes):
        """Stand in for Python's assert which is annoying to work with."""
        actual = actual.replace(b"\r", b"")  # ignore windows file ending differences
        if expected != actual:
            print(f"\n\nExpected:`{expected}`")
            print(f"\n\nActual__:`{actual}`")
            if isinstance(expected, bytes) and isinstance(actual, bytes):
                expected_str = expected.decode()
                actual_str = actual.decode()
                print("String comparison:", expected_str == actual_str)
                diff_lines_gen = difflib.context_diff(expected_str, actual_str, "Expected", "Actual")
                diff_lines = "".join(list(diff_lines_gen))
                print(f"\n\nDifference:\n{diff_lines}")
            else:
                print(f"Expected is type {type(expected)}\nActual is type {type(actual)}")
>           pytest.fail("Test failed!")
E           Failed: Test failed!

tests/test_utils.py:34: Failed
----------------------------- Captured stdout call -----------------------------


Expected:`b''`


Actual__:`b"Problem with uncrustify: Unexpected Stderr/return code received when analyzing /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/test_repo/err.c.\nArgs: ['uncrustify', '-c', '/Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/uncrustify_defaults.cfg', '-q', '-f', '/Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/test_repo/err.c']\n#include <stdio.h>\nint main() {\n  int i;\n  return;\n}Option<NUM>: at /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/uncrustify_defaults.cfg:22: Expected number , for 'indent_comma_paren'; got 'false'\nOption<NUM>: at /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/uncrustify_defaults.cfg:23: Expected number , for 'indent_bool_paren'; got 'false'\n\n"`
String comparison: False


Difference:
*** Expected
--- Actual
***************
*** 0 ****
--- 1,778 ----
+ P+ r+ o+ b+ l+ e+ m+  + w+ i+ t+ h+  + u+ n+ c+ r+ u+ s+ t+ i+ f+ y+ :+  + U+ n+ e+ x+ p+ e+ c+ t+ e+ d+  + S+ t+ d+ e+ r+ r+ /+ r+ e+ t+ u+ r+ n+  + c+ o+ d+ e+  + r+ e+ c+ e+ i+ v+ e+ d+  + w+ h+ e+ n+  + a+ n+ a+ l+ y+ z+ i+ n+ g+  + /+ U+ s+ e+ r+ s+ /+ r+ u+ n+ n+ e+ r+ /+ w+ o+ r+ k+ /+ p+ o+ c+ c+ -+ p+ r+ e+ -+ c+ o+ m+ m+ i+ t+ -+ h+ o+ o+ k+ s+ /+ p+ o+ c+ c+ -+ p+ r+ e+ -+ c+ o+ m+ m+ i+ t+ -+ h+ o+ o+ k+ s+ /+ t+ e+ s+ t+ s+ /+ t+ e+ s+ t+ _+ r+ e+ p+ o+ /+ e+ r+ r+ .+ c+ .+ 
+ A+ r+ g+ s+ :+  + [+ '+ u+ n+ c+ r+ u+ s+ t+ i+ f+ y+ '+ ,+  + '+ -+ c+ '+ ,+  + '+ /+ U+ s+ e+ r+ s+ /+ r+ u+ n+ n+ e+ r+ /+ w+ o+ r+ k+ /+ p+ o+ c+ c+ -+ p+ r+ e+ -+ c+ o+ m+ m+ i+ t+ -+ h+ o+ o+ k+ s+ /+ p+ o+ c+ c+ -+ p+ r+ e+ -+ c+ o+ m+ m+ i+ t+ -+ h+ o+ o+ k+ s+ /+ t+ e+ s+ t+ s+ /+ u+ n+ c+ r+ u+ s+ t+ i+ f+ y+ _+ d+ e+ f+ a+ u+ l+ t+ s+ .+ c+ f+ g+ '+ ,+  + '+ -+ q+ '+ ,+  + '+ -+ f+ '+ ,+  + '+ /+ U+ s+ e+ r+ s+ /+ r+ u+ n+ n+ e+ r+ /+ w+ o+ r+ k+ /+ p+ o+ c+ c+ -+ p+ r+ e+ -+ c+ o+ m+ m+ i+ t+ -+ h+ o+ o+ k+ s+ /+ p+ o+ c+ c+ -+ p+ r+ e+ -+ c+ o+ m+ m+ i+ t+ -+ h+ o+ o+ k+ s+ /+ t+ e+ s+ t+ s+ /+ t+ e+ s+ t+ _+ r+ e+ p+ o+ /+ e+ r+ r+ .+ c+ '+ ]+ 
+ #+ i+ n+ c+ l+ u+ d+ e+  + <+ s+ t+ d+ i+ o+ .+ h+ >+ 
+ i+ n+ t+  + m+ a+ i+ n+ (+ )+  + {+ 
+  +  + i+ n+ t+  + i+ ;+ 
+  +  + r+ e+ t+ u+ r+ n+ ;+ 
+ }+ O+ p+ t+ i+ o+ n+ <+ N+ U+ M+ >+ :+  + a+ t+  + /+ U+ s+ e+ r+ s+ /+ r+ u+ n+ n+ e+ r+ /+ w+ o+ r+ k+ /+ p+ o+ c+ c+ -+ p+ r+ e+ -+ c+ o+ m+ m+ i+ t+ -+ h+ o+ o+ k+ s+ /+ p+ o+ c+ c+ -+ p+ r+ e+ -+ c+ o+ m+ m+ i+ t+ -+ h+ o+ o+ k+ s+ /+ t+ e+ s+ t+ s+ /+ u+ n+ c+ r+ u+ s+ t+ i+ f+ y+ _+ d+ e+ f+ a+ u+ l+ t+ s+ .+ c+ f+ g+ :+ 2+ 2+ :+  + E+ x+ p+ e+ c+ t+ e+ d+  + n+ u+ m+ b+ e+ r+  + ,+  + f+ o+ r+  + '+ i+ n+ d+ e+ n+ t+ _+ c+ o+ m+ m+ a+ _+ p+ a+ r+ e+ n+ '+ ;+  + g+ o+ t+  + '+ f+ a+ l+ s+ e+ '+ 
+ O+ p+ t+ i+ o+ n+ <+ N+ U+ M+ >+ :+  + a+ t+  + /+ U+ s+ e+ r+ s+ /+ r+ u+ n+ n+ e+ r+ /+ w+ o+ r+ k+ /+ p+ o+ c+ c+ -+ p+ r+ e+ -+ c+ o+ m+ m+ i+ t+ -+ h+ o+ o+ k+ s+ /+ p+ o+ c+ c+ -+ p+ r+ e+ -+ c+ o+ m+ m+ i+ t+ -+ h+ o+ o+ k+ s+ /+ t+ e+ s+ t+ s+ /+ u+ n+ c+ r+ u+ s+ t+ i+ f+ y+ _+ d+ e+ f+ a+ u+ l+ t+ s+ .+ c+ f+ g+ :+ 2+ 3+ :+  + E+ x+ p+ e+ c+ t+ e+ d+  + n+ u+ m+ b+ e+ r+  + ,+  + f+ o+ r+  + '+ i+ n+ d+ e+ n+ t+ _+ b+ o+ o+ l+ _+ p+ a+ r+ e+ n+ '+ ;+  + g+ o+ t+  + '+ f+ a+ l+ s+ e+ '+ 
+ 

=========================== short test summary info ============================
FAILED tests/test_hooks.py::TestHooks::test_run[run_shell_cmd uncrustify /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/test_repo/err.c /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/test_repo/err.cpp -c /Users/runner/work/pocc-pre-commit-hooks/pocc-pre-commit-hooks/tests/uncrustify_defaults.cfg --no-diff]
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
========================= 1 failed, 3 passed in 1.73s ==========================

akfreed avatar May 18 '22 06:05 akfreed