[stable-2.9] Don't treat no checksum as a checksum match (#62146)

Fixes #61978
* moar tests for get_url fetch behavior with existing file
* add changelog fragment
(cherry picked from commit 7d51cac)

Co-authored-by: Matt Martz <matt@sivel.net>
This commit is contained in:
Matt Martz 2019-09-13 12:24:15 -05:00 committed by Toshio Kuratomi
parent f7fed1dacc
commit 20fee691e3
3 changed files with 39 additions and 12 deletions

View file

@ -0,0 +1,3 @@
bugfixes:
- get_url - Don't treat no checksum as a checksum match
(https://github.com/ansible/ansible/issues/61978)

View file

@ -540,7 +540,7 @@ def main():
checksum_mismatch = True
# Not forcing redownload, unless checksum does not match
if not force and not checksum_mismatch:
if not force and checksum and not checksum_mismatch:
# Not forcing redownload, unless checksum does not match
# allow file attribute changes
module.params['path'] = dest

View file

@ -257,17 +257,6 @@
- result is changed
- "stat_result.stat.mode == '0775'"
- name: Get a file that already exists
get_url:
url: 'https://{{ httpbin_host }}/get'
dest: '{{ remote_tmp_dir }}/test'
register: result
- name: Assert that we didn't re-download unnecessarily
assert:
that:
- result is not changed
- name: test checksum match in check mode
get_url:
url: 'https://{{ httpbin_host }}/get'
@ -281,6 +270,41 @@
that:
- result is not changed
- name: Get a file that already exists with a checksum
get_url:
url: 'https://{{ httpbin_host }}/cache'
dest: '{{ remote_tmp_dir }}/test'
checksum: 'sha1:{{ stat_result.stat.checksum }}'
register: result
- name: Assert that the file was not downloaded
assert:
that:
- result.msg == 'file already exists'
- name: Get a file that already exists
get_url:
url: 'https://{{ httpbin_host }}/cache'
dest: '{{ remote_tmp_dir }}/test'
register: result
- name: Assert that we didn't re-download unnecessarily
assert:
that:
- result is not changed
- "'304' in result.msg"
- name: get a file that doesn't respond to If-Modified-Since without checksum
get_url:
url: 'https://{{ httpbin_host }}/get'
dest: '{{ remote_tmp_dir }}/test'
register: result
- name: Assert that we downloaded the file
assert:
that:
- result is changed
# https://github.com/ansible/ansible/issues/27617
- name: set role facts