1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

win_find fix up age parameter (#23195)

This commit is contained in:
Jordan Borean 2017-04-04 04:43:07 +10:00 committed by Matt Davis
parent 4d1b97d1ae
commit 3e1a16c574
3 changed files with 72 additions and 112 deletions

View file

@ -111,12 +111,12 @@ Function Assert-Age($info) {
if ($specified_seconds -ge 0) { if ($specified_seconds -ge 0) {
$start_date = (Get-Date).AddSeconds($abs_seconds * -1) $start_date = (Get-Date).AddSeconds($abs_seconds * -1)
if ($age_comparison -lt $start_date) { if ($age_comparison -gt $start_date) {
$valid_match = $false $valid_match = $false
} }
} else { } else {
$start_date = (Get-Date).AddSeconds($abs_seconds) $start_date = (Get-Date).AddSeconds($abs_seconds)
if ($age_comparison -gt $start_date) { if ($age_comparison -lt $start_date) {
$valid_match = $false $valid_match = $false
} }
} }
@ -246,13 +246,13 @@ Function Get-FileStat($file) {
filename = $file.Name filename = $file.Name
} }
$islink = $false $islnk = $false
$isdir = $false $isdir = $false
$isshared = $false $isshared = $false
if ($attributes -contains 'ReparsePoint') { if ($attributes -contains 'ReparsePoint') {
# TODO: Find a way to differenciate between soft and junction links # TODO: Find a way to differenciate between soft and junction links
$islink = $true $islnk = $true
$isdir = $true $isdir = $true
# Try and get the symlink source, can result in failure if link is broken # Try and get the symlink source, can result in failure if link is broken
@ -287,7 +287,7 @@ Function Get-FileStat($file) {
} }
} }
$file_stat.islink = $islink $file_stat.islnk = $islnk
$file_stat.isdir = $isdir $file_stat.isdir = $isdir
$file_stat.isshared = $isshared $file_stat.isshared = $isshared
@ -326,7 +326,7 @@ foreach ($path in $paths) {
Fail-Json $result "Argument path $path does not exist cannot get information on" Fail-Json $result "Argument path $path does not exist cannot get information on"
} }
} }
$paths_to_check = $paths_to_check | Select -Unique $paths_to_check = $paths_to_check | Select-Object -Unique
foreach ($path in $paths_to_check) { foreach ($path in $paths_to_check) {
$file = Get-Item -Force -Path $path $file = Get-Item -Force -Path $path

View file

@ -23,7 +23,6 @@ ANSIBLE_METADATA = {'metadata_version': '1.0',
'status': ['preview'], 'status': ['preview'],
'supported_by': 'community'} 'supported_by': 'community'}
DOCUMENTATION = r''' DOCUMENTATION = r'''
--- ---
module: win_find module: win_find
@ -36,15 +35,15 @@ options:
age: age:
description: description:
- Select files or folders whose age is equal to or greater than - Select files or folders whose age is equal to or greater than
the specified tim. Use a negative age to find files equal to or the specified time. Use a negative age to find files equal to or
less than the specified time. You can choose seconds, minues, less than the specified time. You can choose seconds, minutes,
hours, days or weeks by specifying the first letter of an of hours, days or weeks by specifying the first letter of an of
those words (e.g., "1w"). those words (e.g., "2s", "10d", 1w").
required: false required: false
age_stamp: age_stamp:
description: description:
- Choose the file property against which we compare C(age). The - Choose the file property against which we compare C(age). The
default attribute we compare with is last modification time. default attribute we compare with is the last modification time.
required: false required: false
default: mtime default: mtime
choices: ['atime', 'mtime', 'ctime'] choices: ['atime', 'mtime', 'ctime']
@ -271,7 +270,7 @@ files:
returned: success, path exists returned: success, path exists
type: boolean type: boolean
sample: True sample: True
islink: islnk:
description: if the path is a symbolic link or junction or not description: if the path is a symbolic link or junction or not
returned: success, path exists returned: success, path exists
type: boolean type: boolean

View file

@ -1,13 +1,4 @@
--- ---
- name: remove links if they exist as win_file struggles
win_command: cmd.exe /c rmdir "{{item}}"
ignore_errors: True
with_items:
- "{{win_find_dir}}\\nested\\link"
- "{{win_find_dir}}\\broken-link"
- "{{win_find_dir}}\\hard-link-dest\\hard-link.log"
- "{{win_find_dir}}\\junction-link"
- name: ensure the testing directory is cleared before setting up test - name: ensure the testing directory is cleared before setting up test
win_file: win_file:
path: "{{win_find_dir}}" path: "{{win_find_dir}}"
@ -146,13 +137,13 @@
win_find: win_find:
paths: "{{win_output_dir}}\\win_find\\single\\large.ps1" paths: "{{win_output_dir}}\\win_find\\single\\large.ps1"
register: actual register: actual
failed_when: "actual.msg != 'Argument path {{win_output_dir|regex_replace('\\\\', '\\\\\\\\')}}\\win_find\\single\\large.ps1 is a file not a directory'" failed_when: actual.msg != 'Argument path ' + win_output_dir + '\\win_find\\single\\large.ps1 is a file not a directory'
- name: expect failure whe path is set to a non existant folder - name: expect failure whe path is set to a non existant folder
win_find: win_find:
paths: "{{win_output_dir}}\\win_find\\thisisafakefolder" paths: "{{win_output_dir}}\\win_find\\thisisafakefolder"
register: actual register: actual
failed_when: "actual.msg != 'Argument path {{win_output_dir|regex_replace('\\\\', '\\\\\\\\')}}\\\\win_find\\\\thisisafakefolder does not exist cannot get information on'" failed_when: actual.msg != 'Argument path ' + win_output_dir + '\\win_find\\thisisafakefolder does not exist cannot get information on'
- name: get files in single directory - name: get files in single directory
win_find: win_find:
@ -173,7 +164,7 @@
filename: large.ps1, filename: large.ps1,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -189,7 +180,7 @@
filename: out_20161101-091005.log, filename: out_20161101-091005.log,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -205,7 +196,7 @@
filename: small.ps1, filename: small.ps1,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -221,7 +212,7 @@
filename: test.ps1, filename: test.ps1,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -233,7 +224,7 @@
- name: assert actual == expected - name: assert actual == expected
assert: assert:
that: "actual == expected" that: actual == expected
- name: find hidden files - name: find hidden files
win_find: win_find:
@ -255,7 +246,7 @@
filename: hidden.ps1, filename: hidden.ps1,
ishidden: True, ishidden: True,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -267,7 +258,7 @@
- name: assert actual == expected - name: assert actual == expected
assert: assert:
that: "actual == expected" that: actual == expected
- name: find file based on pattern - name: find file based on pattern
win_find: win_find:
@ -296,7 +287,7 @@
filename: out_20161101-091005.log, filename: out_20161101-091005.log,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -309,8 +300,8 @@
- name: assert actual == expected - name: assert actual == expected
assert: assert:
that: that:
- "actual_pattern == expected" - actual_pattern == expected
- "actual_regex == expected" - actual_regex == expected
- name: find files with recurse set - name: find files with recurse set
win_find: win_find:
@ -333,7 +324,7 @@
filename: test.ps1, filename: test.ps1,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -349,7 +340,7 @@
filename: file.ps1, filename: file.ps1,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -365,7 +356,7 @@
filename: test.ps1, filename: test.ps1,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -377,7 +368,7 @@
- name: assert actual == expected - name: assert actual == expected
assert: assert:
that: "actual == expected" that: actual == expected
- name: find files with recurse set and follow links - name: find files with recurse set and follow links
win_find: win_find:
@ -401,7 +392,7 @@
filename: link.ps1, filename: link.ps1,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -417,7 +408,7 @@
filename: test.ps1, filename: test.ps1,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -433,7 +424,7 @@
filename: file.ps1, filename: file.ps1,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -449,7 +440,7 @@
filename: test.ps1, filename: test.ps1,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -461,7 +452,7 @@
- name: assert actual == expected - name: assert actual == expected
assert: assert:
that: "actual == expected" that: actual == expected
- name: find directories - name: find directories
win_find: win_find:
@ -481,7 +472,7 @@
filename: sub-link, filename: sub-link,
ishidden: False, ishidden: False,
isdir: True, isdir: True,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -493,7 +484,7 @@
- name: assert actual == expected - name: assert actual == expected
assert: assert:
that: "actual == expected" that: actual == expected
- name: find directories recurse and follow with a broken link - name: find directories recurse and follow with a broken link
win_find: win_find:
@ -506,20 +497,20 @@
- name: check directory count with recurse and follow is correct - name: check directory count with recurse and follow is correct
assert: assert:
that: that:
- "actual.examined == 33" - actual.examined == 33
- "actual.matched == 13" - actual.matched == 13
- "actual.files[0].filename == 'broken-link'" - actual.files[0].filename == 'broken-link'
- "actual.files[0].islink == True" - actual.files[0].islnk == True
- "actual.files[2].filename == 'junction-link'" - actual.files[2].filename == 'junction-link'
- "actual.files[2].islink == True" - actual.files[2].islnk == True
- "actual.files[2].lnk_source == '{{win_find_dir|regex_replace('\\\\', '\\\\\\\\')}}\\\\junction-link-dest'" - actual.files[2].lnk_source == win_find_dir + '\\junction-link-dest'
- "actual.files[7].filename == 'link'" - actual.files[7].filename == 'link'
- "actual.files[7].islink == True" - actual.files[7].islnk == True
- "actual.files[7].lnk_source == '{{win_find_dir|regex_replace('\\\\', '\\\\\\\\')}}\\\\link-dest'" - actual.files[7].lnk_source == win_find_dir + '\\link-dest'
- "actual.files[11].filename == 'folder'" - actual.files[11].filename == 'folder'
- "actual.files[11].islink == False" - actual.files[11].islnk == False
- "actual.files[11].isshared == True" - actual.files[11].isshared == True
- "actual.files[11].sharename == 'folder-share'" - actual.files[11].sharename == 'folder-share'
- name: filter files by size without byte specified - name: filter files by size without byte specified
win_find: win_find:
@ -547,7 +538,7 @@
filename: large.ps1, filename: large.ps1,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -560,8 +551,8 @@
- name: assert actual == expected - name: assert actual == expected
assert: assert:
that: that:
- "actual_without_byte == expected" - actual_without_byte == expected
- "actual_with_byte == expected" - actual_with_byte == expected
- name: filter files by size (less than) without byte specified - name: filter files by size (less than) without byte specified
win_find: win_find:
@ -589,7 +580,7 @@
filename: small.ps1, filename: small.ps1,
ishidden: False, ishidden: False,
isdir: False, isdir: False,
islink: False, islnk: False,
lastaccesstime: 1477984205, lastaccesstime: 1477984205,
lastwritetime: 1477984205, lastwritetime: 1477984205,
owner: BUILTIN\Administrators, owner: BUILTIN\Administrators,
@ -602,8 +593,8 @@
- name: assert actual == expected - name: assert actual == expected
assert: assert:
that: that:
- "actual_without_byte == expected" - actual_without_byte == expected
- "actual_with_byte == expected" - actual_with_byte == expected
# For dates we cannot assert against expected as the times change, this is a poor mans attempt at testing # For dates we cannot assert against expected as the times change, this is a poor mans attempt at testing
- name: filter files by age without unit specified - name: filter files by age without unit specified
@ -621,32 +612,30 @@
- name: assert dates match each other - name: assert dates match each other
assert: assert:
that: that:
- "actual_without_unit == actual_with_unit" - actual_without_unit == actual_with_unit
- "actual_without_unit.matched == 1" - actual_without_unit.matched == 1
- "actual_without_unit.files[0].checksum == '7454f04e3ac587f711a416f4edf26507255e0a2e'" - actual_without_unit.files[0].checksum == '031a04ecc76f794d7842651de732075dec6fef04'
- "actual_without_unit.files[0].path == '{{win_find_dir|regex_replace('\\\\', '\\\\\\\\')}}\\\\date\\\\new.ps1'" - actual_without_unit.files[0].path == win_find_dir + '\\date\\old.ps1'
- name: filter files by age (older than) without unit specified - name: filter files by age (newer than) without unit specified
win_find: win_find:
paths: "{{win_find_dir}}\\date" paths: "{{win_find_dir}}\\date"
age: -1 age: -3600
register: actual_without_unit register: actual_without_unit
- name: filter files by age (older than) without unit specified - name: filter files by age (newer than) without unit specified
win_find: win_find:
paths: "{{win_find_dir}}\\date" paths: "{{win_find_dir}}\\date"
age: -1s age: -1h
register: actual_with_unit register: actual_with_unit
- name: assert dates match each other - name: assert dates match each other
assert: assert:
that: that:
- "actual_without_unit == actual_with_unit" - actual_without_unit == actual_with_unit
- "actual_without_unit.matched == 2" - actual_without_unit.matched == 1
- "actual_without_unit.files[0].checksum == '7454f04e3ac587f711a416f4edf26507255e0a2e'" - actual_without_unit.files[0].checksum == '7454f04e3ac587f711a416f4edf26507255e0a2e'
- "actual_without_unit.files[0].path == '{{win_find_dir|regex_replace('\\\\', '\\\\\\\\')}}\\\\date\\\\new.ps1'" - actual_without_unit.files[0].path == win_find_dir + '\\date\\new.ps1'
- "actual_without_unit.files[1].checksum == '031a04ecc76f794d7842651de732075dec6fef04'"
- "actual_without_unit.files[1].path == '{{win_find_dir|regex_replace('\\\\', '\\\\\\\\')}}\\\\date\\\\old.ps1'"
- name: get list of files with md5 checksum - name: get list of files with md5 checksum
win_find: win_find:
@ -658,7 +647,7 @@
- name: assert md5 checksum value - name: assert md5 checksum value
assert: assert:
that: that:
- "actual_md5_checksum.files[0].checksum == 'd1713d0f1d2e8fae230328d8fd59de01'" - actual_md5_checksum.files[0].checksum == 'd1713d0f1d2e8fae230328d8fd59de01'
- name: get list of files with sha1 checksum - name: get list of files with sha1 checksum
win_find: win_find:
@ -670,7 +659,7 @@
- name: assert sha1 checksum value - name: assert sha1 checksum value
assert: assert:
that: that:
- "actual_sha1_checksum.files[0].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'" - actual_sha1_checksum.files[0].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
- name: get list of files with sha256 checksum - name: get list of files with sha256 checksum
win_find: win_find:
@ -682,7 +671,7 @@
- name: assert sha256 checksum value - name: assert sha256 checksum value
assert: assert:
that: that:
- "actual_sha256_checksum.files[0].checksum == 'c20d2eba7ffda0079812721b6f4e4e109e2f0c5e8cc3d1273a060df6f7d9f339'" - actual_sha256_checksum.files[0].checksum == 'c20d2eba7ffda0079812721b6f4e4e109e2f0c5e8cc3d1273a060df6f7d9f339'
- name: get list of files with sha384 checksum - name: get list of files with sha384 checksum
win_find: win_find:
@ -694,7 +683,7 @@
- name: assert sha384 checksum value - name: assert sha384 checksum value
assert: assert:
that: that:
- "actual_sha384_checksum.files[0].checksum == 'aed515eb216b9c7009ae8c4680f46c1e22004528b231aa0482a8587543bca47d3504e9f77e884eb2d11b2f9f5dc01651'" - actual_sha384_checksum.files[0].checksum == 'aed515eb216b9c7009ae8c4680f46c1e22004528b231aa0482a8587543bca47d3504e9f77e884eb2d11b2f9f5dc01651'
- name: get list of files with sha512 checksum - name: get list of files with sha512 checksum
win_find: win_find:
@ -706,7 +695,7 @@
- name: assert sha512 checksum value - name: assert sha512 checksum value
assert: assert:
that: that:
- "actual_sha512_checksum.files[0].checksum == '05abf64a68c4731699c23b4fc6894a36646fce525f3c96f9cf743b5d0c3bfd933dad0e95e449e3afe1f74d534d69a53b8f46cf835763dd42915813c897b02b87'" - actual_sha512_checksum.files[0].checksum == '05abf64a68c4731699c23b4fc6894a36646fce525f3c96f9cf743b5d0c3bfd933dad0e95e449e3afe1f74d534d69a53b8f46cf835763dd42915813c897b02b87'
- name: get list of files without checksum - name: get list of files without checksum
win_find: win_find:
@ -718,35 +707,7 @@
- name: assert no checksum is returned - name: assert no checksum is returned
assert: assert:
that: that:
- "actual_no_checksum.files[0].checksum is undefined" - actual_no_checksum.files[0].checksum is undefined
- name: check if broken symbolic link exists
win_stat:
path: "{{win_find_dir}}\\broken-link"
register: broken_link_exists
- name: delete broken symbolic link if it exists
win_command: cmd.exe /c rmdir {{win_find_dir}}\broken-link
when: broken_link_exists.stat.exists
- name: check if junction symbolic link exists
win_stat:
path: "{{win_find_dir}}\\junction-link"
register: junction_link_exists
- name: delete junction symbolic link if it exists
win_command: cmd.exe /c rmdir {{win_find_dir}}\junction-link
when: junction_link_exists.stat.exists
- name: check if nested symbolic link exists
win_stat:
path: "{{win_find_dir}}\\nested\\link"
register: nested_link_exists
- name: delete nested symbolic link if it exists
win_command: cmd.exe /c rmdir {{win_find_dir}}\nested\link
when: nested_link_exists.stat.exists
- name: remove testing folder - name: remove testing folder
win_file: win_file: