)]}'
{"run_tests.sh":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"b13a3d3bdec7b11ea0cae821fb4b3de14ab44239","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    diff -u --from-file /dev/null ${files} | ${wrapper} flake8 --diff"},{"line_number":199,"context_line":"}"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"function run_pylint {"},{"line_number":202,"context_line":"    local target\u003d${testargs:-all}"},{"line_number":203,"context_line":"    echo \"Running pylint...\""},{"line_number":204,"context_line":"    echo \"You can speed this up by running it on \u0027diff\u0027 only...\""}],"source_content_type":"text/x-sh","patch_set":1,"id":"ba7be1f8_ebf529ed","line":201,"updated":"2015-02-26 09:32:00.000000000","message":"run_pep8_changed/run_pylint uses different approach to check only last change(s), we could/should be consistent?","commit_id":"2dd1e324bda37b224a3000cf5dff24b904378fe7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"92c3742fd03375790429b7e8d7b1b342d0f5d349","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    diff -u --from-file /dev/null ${files} | ${wrapper} flake8 --diff"},{"line_number":199,"context_line":"}"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"function run_pylint {"},{"line_number":202,"context_line":"    local target\u003d${testargs:-all}"},{"line_number":203,"context_line":"    echo \"Running pylint...\""},{"line_number":204,"context_line":"    echo \"You can speed this up by running it on \u0027diff\u0027 only...\""}],"source_content_type":"text/x-sh","patch_set":1,"id":"ba7be1f8_0b619d04","line":201,"in_reply_to":"ba7be1f8_ebf529ed","updated":"2015-02-26 10:07:34.000000000","message":"I thought about it, but I find it odd to work well when invoked via tox, let me see what I can do..but I am not sure if it\u0027s worth the trouble in the context of this patch.","commit_id":"2dd1e324bda37b224a3000cf5dff24b904378fe7"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"b13a3d3bdec7b11ea0cae821fb4b3de14ab44239","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        files\u003d$(git diff --name-only \"HEAD~1\" -- \"*.py\" | tr \u0027\\n\u0027 \u0027 \u0027)"},{"line_number":209,"context_line":"    fi"},{"line_number":210,"context_line":"    for file in ${files}; do"},{"line_number":211,"context_line":"        pylint --rcfile\u003d.pylintrc --output-format\u003dcolorized ${file}"},{"line_number":212,"context_line":"    done"},{"line_number":213,"context_line":"}"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"ba7be1f8_8b858d5b","line":211,"updated":"2015-02-26 09:32:00.000000000","message":"pylint supports many files at once:\n\n pylint $file1 $file2 ...","commit_id":"2dd1e324bda37b224a3000cf5dff24b904378fe7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"92c3742fd03375790429b7e8d7b1b342d0f5d349","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        files\u003d$(git diff --name-only \"HEAD~1\" -- \"*.py\" | tr \u0027\\n\u0027 \u0027 \u0027)"},{"line_number":209,"context_line":"    fi"},{"line_number":210,"context_line":"    for file in ${files}; do"},{"line_number":211,"context_line":"        pylint --rcfile\u003d.pylintrc --output-format\u003dcolorized ${file}"},{"line_number":212,"context_line":"    done"},{"line_number":213,"context_line":"}"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"ba7be1f8_1629c0e5","line":211,"in_reply_to":"ba7be1f8_8b858d5b","updated":"2015-02-26 10:07:34.000000000","message":"I suppose I can make this smarter...","commit_id":"2dd1e324bda37b224a3000cf5dff24b904378fe7"},{"author":{"_account_id":11279,"name":"Angus Lees","email":"gus@inodes.org","username":"gus"},"change_message_id":"66b62d3eda7b5d8c60e9598ed836cd7e83bea632","unresolved":false,"context_lines":[{"line_number":16,"context_line":"  echo \"  -p, --pep8                  Just run PEP8 and HACKING compliance check\""},{"line_number":17,"context_line":"  echo \"  -8, --pep8-only-changed [\u003cbasecommit\u003e]\""},{"line_number":18,"context_line":"  echo \"                              Just run PEP8 and HACKING compliance check on files changed since HEAD~1 (or \u003cbasecommit\u003e)\""},{"line_number":19,"context_line":"  echo \"  -Y, --pylint [\u003cbasecommit\u003e] Run pylint check on the entire neutron module or just files changed in basecommit (e.g. HEAD~1)\""},{"line_number":20,"context_line":"  echo \"  -P, --no-pep8               Don\u0027t run static code checks\""},{"line_number":21,"context_line":"  echo \"  -c, --coverage              Generate coverage report\""},{"line_number":22,"context_line":"  echo \"  -d, --debug                 Run tests with testtools instead of testr. This allows you to use the debugger.\""}],"source_content_type":"text/x-sh","patch_set":2,"id":"ba7be1f8_23dada17","line":19,"range":{"start_line":19,"start_character":106,"end_line":19,"end_character":108},"updated":"2015-02-27 04:56:19.000000000","message":"I suggest rewording this to: \"... changed since basecommit\"","commit_id":"3feae3c02f3d8ce9a8c3255026ca832f7fb96c3e"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"eabfef78b03bd87477f6ced7b5a7f5737626d910","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    warn_on_flake8_without_venv"},{"line_number":198,"context_line":"    diff -u --from-file /dev/null ${files} | ${wrapper} flake8 --diff"},{"line_number":199,"context_line":"}"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"function run_pylint {"},{"line_number":202,"context_line":"    local target\u003d${testargs:-all}"},{"line_number":203,"context_line":"    echo \"Running pylint...\""}],"source_content_type":"text/x-sh","patch_set":2,"id":"ba7be1f8_289ac0c5","line":200,"updated":"2015-02-26 23:51:44.000000000","message":"Try renaming a file, it fails for me. I don\u0027t know if you care or should fix that.","commit_id":"3feae3c02f3d8ce9a8c3255026ca832f7fb96c3e"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"a18e7a5c6304cade44c17bfdfce352f333ae5a6b","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    warn_on_flake8_without_venv"},{"line_number":198,"context_line":"    diff -u --from-file /dev/null ${files} | ${wrapper} flake8 --diff"},{"line_number":199,"context_line":"}"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"function run_pylint {"},{"line_number":202,"context_line":"    local target\u003d${testargs:-all}"},{"line_number":203,"context_line":"    echo \"Running pylint...\""}],"source_content_type":"text/x-sh","patch_set":2,"id":"ba7be1f8_60c68818","line":200,"in_reply_to":"ba7be1f8_19baac0a","updated":"2015-02-27 04:15:09.000000000","message":"Try to rename neutron/agent/l3/agent.py and move it up a directory for example, run ./run_tests.sh -Y, and it will fail with some error (Before it runs pylint).","commit_id":"3feae3c02f3d8ce9a8c3255026ca832f7fb96c3e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"14f244d2e6bf68a278de408c75a468d4fb0fd695","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    warn_on_flake8_without_venv"},{"line_number":198,"context_line":"    diff -u --from-file /dev/null ${files} | ${wrapper} flake8 --diff"},{"line_number":199,"context_line":"}"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"function run_pylint {"},{"line_number":202,"context_line":"    local target\u003d${testargs:-all}"},{"line_number":203,"context_line":"    echo \"Running pylint...\""}],"source_content_type":"text/x-sh","patch_set":2,"id":"ba7be1f8_19baac0a","line":200,"in_reply_to":"ba7be1f8_289ac0c5","updated":"2015-02-27 01:24:19.000000000","message":"not sure I understand what you mean. Can you elaborate?","commit_id":"3feae3c02f3d8ce9a8c3255026ca832f7fb96c3e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f456039a8567ccdce3ead4e40ab5d02e403cfec7","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    warn_on_flake8_without_venv"},{"line_number":198,"context_line":"    diff -u --from-file /dev/null ${files} | ${wrapper} flake8 --diff"},{"line_number":199,"context_line":"}"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"function run_pylint {"},{"line_number":202,"context_line":"    local target\u003d${testargs:-all}"},{"line_number":203,"context_line":"    echo \"Running pylint...\""}],"source_content_type":"text/x-sh","patch_set":2,"id":"ba7be1f8_2092d0f6","line":200,"in_reply_to":"ba7be1f8_60c68818","updated":"2015-02-27 04:19:04.000000000","message":"but did you commit your changes before running the command?","commit_id":"3feae3c02f3d8ce9a8c3255026ca832f7fb96c3e"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"eae7c40a3a82e95208fbf892562c906abde5f857","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":"function run_pylint {"},{"line_number":202,"context_line":"    local target\u003d${testargs:-all}"},{"line_number":203,"context_line":"    echo \"Running pylint...\""},{"line_number":204,"context_line":"    echo \"You can speed this up by running it on \u0027HEAD~1\u0027 (this change) only...\""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    if [ ${target} \u003d\u003d \"all\" ]; then"}],"source_content_type":"text/x-sh","patch_set":2,"id":"ba7be1f8_a8707074","line":203,"updated":"2015-02-26 23:54:59.000000000","message":"You can move line 204 to line 207.","commit_id":"3feae3c02f3d8ce9a8c3255026ca832f7fb96c3e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"14f244d2e6bf68a278de408c75a468d4fb0fd695","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":"function run_pylint {"},{"line_number":202,"context_line":"    local target\u003d${testargs:-all}"},{"line_number":203,"context_line":"    echo \"Running pylint...\""},{"line_number":204,"context_line":"    echo \"You can speed this up by running it on \u0027HEAD~1\u0027 (this change) only...\""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    if [ ${target} \u003d\u003d \"all\" ]; then"}],"source_content_type":"text/x-sh","patch_set":2,"id":"ba7be1f8_d9bf34fb","line":203,"in_reply_to":"ba7be1f8_a8707074","updated":"2015-02-27 01:24:19.000000000","message":"Done","commit_id":"3feae3c02f3d8ce9a8c3255026ca832f7fb96c3e"},{"author":{"_account_id":11279,"name":"Angus Lees","email":"gus@inodes.org","username":"gus"},"change_message_id":"66b62d3eda7b5d8c60e9598ed836cd7e83bea632","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    if [ ${target} \u003d\u003d \"all\" ]; then"},{"line_number":207,"context_line":"        files\u003d\"neutron\""},{"line_number":208,"context_line":"    else"},{"line_number":209,"context_line":"        files\u003d$(git diff --name-only $target -- \"*.py\" | tr \u0027\\n\u0027 \u0027 \u0027)"},{"line_number":210,"context_line":"    fi"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    if [ -n \"${files}\" ]; then"}],"source_content_type":"text/x-sh","patch_set":2,"id":"ba7be1f8_43c0ae2a","line":209,"range":{"start_line":209,"start_character":32,"end_line":209,"end_character":36},"updated":"2015-02-27 04:56:19.000000000","message":"There\u0027s no need for `| tr \u0027\\n\u0027 \u0027 \u0027`.  If I remember my shell expansion rules (and I might be wrong), $files will be word split below, but the interior newlines will be just treated like any other whitespace word separator characters.","commit_id":"3feae3c02f3d8ce9a8c3255026ca832f7fb96c3e"},{"author":{"_account_id":11279,"name":"Angus Lees","email":"gus@inodes.org","username":"gus"},"change_message_id":"66b62d3eda7b5d8c60e9598ed836cd7e83bea632","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    if [ ${target} \u003d\u003d \"all\" ]; then"},{"line_number":207,"context_line":"        files\u003d\"neutron\""},{"line_number":208,"context_line":"    else"},{"line_number":209,"context_line":"        files\u003d$(git diff --name-only $target -- \"*.py\" | tr \u0027\\n\u0027 \u0027 \u0027)"},{"line_number":210,"context_line":"    fi"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    if [ -n \"${files}\" ]; then"}],"source_content_type":"text/x-sh","patch_set":2,"id":"ba7be1f8_638e9229","line":209,"range":{"start_line":209,"start_character":32,"end_line":209,"end_character":36},"updated":"2015-02-27 04:56:19.000000000","message":"`--diff-filter\u003dAM` will only pick up added and modified files (ie: skip deleted/renamed)","commit_id":"3feae3c02f3d8ce9a8c3255026ca832f7fb96c3e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0c5e635899340540dce2ee30595bddbebb32674e","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    if [ ${target} \u003d\u003d \"all\" ]; then"},{"line_number":207,"context_line":"        files\u003d\"neutron\""},{"line_number":208,"context_line":"    else"},{"line_number":209,"context_line":"        files\u003d$(git diff --name-only $target -- \"*.py\" | tr \u0027\\n\u0027 \u0027 \u0027)"},{"line_number":210,"context_line":"    fi"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    if [ -n \"${files}\" ]; then"}],"source_content_type":"text/x-sh","patch_set":2,"id":"ba7be1f8_31c267e9","line":209,"in_reply_to":"ba7be1f8_43c0ae2a","updated":"2015-03-04 04:09:49.000000000","message":"um...I can double check","commit_id":"3feae3c02f3d8ce9a8c3255026ca832f7fb96c3e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0c5e635899340540dce2ee30595bddbebb32674e","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    if [ ${target} \u003d\u003d \"all\" ]; then"},{"line_number":207,"context_line":"        files\u003d\"neutron\""},{"line_number":208,"context_line":"    else"},{"line_number":209,"context_line":"        files\u003d$(git diff --name-only $target -- \"*.py\" | tr \u0027\\n\u0027 \u0027 \u0027)"},{"line_number":210,"context_line":"    fi"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    if [ -n \"${files}\" ]; then"}],"source_content_type":"text/x-sh","patch_set":2,"id":"ba7be1f8_1198031b","line":209,"in_reply_to":"ba7be1f8_638e9229","updated":"2015-03-04 04:09:49.000000000","message":"I think -M should suffice, can you confirm?","commit_id":"3feae3c02f3d8ce9a8c3255026ca832f7fb96c3e"}],"tools/coding-checks.sh":[{"author":{"_account_id":11279,"name":"Angus Lees","email":"gus@inodes.org","username":"gus"},"change_message_id":"a1c43e21928f726a60b14178e2ee60da2343920f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        files\u003d\"neutron\""},{"line_number":33,"context_line":"    else"},{"line_number":34,"context_line":"      case \"$target\" in"},{"line_number":35,"context_line":"        *HEAD~[0-9]*) files\u003d$(git diff -M --name-only $target -- \"*.py\" | tr \u0027\\n\u0027 \u0027 \u0027);;"},{"line_number":36,"context_line":"        *) echo \"$target is an unrecognized basecommit\"; exit 1;;"},{"line_number":37,"context_line":"      esac"},{"line_number":38,"context_line":"    fi"}],"source_content_type":"text/x-sh","patch_set":6,"id":"ba7be1f8_1192c34b","line":35,"updated":"2015-03-04 04:00:23.000000000","message":"I think Asaaf\u0027s concern (and from my testing, I agree it\u0027s a valid issue) is that `git diff --name-only` will also list freshly-deleted files.  That means pylint may be invoked on files that no longer exist, and it will exit non-zero.\n\nSee my comments on patch 2 for an easy solution.","commit_id":"d1c75234a9ca49a0d62c59ab6d2512b4a0dd6546"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"42e28be1d5aac842449b6d6fafd2f1589bf4e796","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        files\u003d\"neutron\""},{"line_number":33,"context_line":"    else"},{"line_number":34,"context_line":"      case \"$target\" in"},{"line_number":35,"context_line":"        *HEAD~[0-9]*) files\u003d$(git diff -M --name-only $target -- \"*.py\" | tr \u0027\\n\u0027 \u0027 \u0027);;"},{"line_number":36,"context_line":"        *) echo \"$target is an unrecognized basecommit\"; exit 1;;"},{"line_number":37,"context_line":"      esac"},{"line_number":38,"context_line":"    fi"}],"source_content_type":"text/x-sh","patch_set":6,"id":"ba7be1f8_f1de0fd9","line":35,"in_reply_to":"ba7be1f8_1192c34b","updated":"2015-03-04 04:07:58.000000000","message":"not even with -M ? Let me double check...","commit_id":"d1c75234a9ca49a0d62c59ab6d2512b4a0dd6546"}]}
