summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/copy/tasks/check_mode.yml
blob: 5b405cc49a7386157a060b7a1a736186fbb13c8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
- block:

  - name: check_mode - Create another clean copy of 'subdir' not messed with by previous tests (check_mode)
    copy:
      src: subdir
      dest: 'checkmode_subdir/'
      directory_mode: 0700
      local_follow: False
    check_mode: true
    register: check_mode_subdir_first

  - name: check_mode - Stat the new dir to make sure it really doesn't exist
    stat:
      path: 'checkmode_subdir/'
    register: check_mode_subdir_first_stat

  - name: check_mode - Actually do it
    copy:
      src: subdir
      dest: 'checkmode_subdir/'
      directory_mode: 0700
      local_follow: False
    register: check_mode_subdir_real

  - name: check_mode - Stat the new dir to make sure it really exists
    stat:
      path: 'checkmode_subdir/'
    register: check_mode_subdir_real_stat

  # Quick sanity before we move on
  - assert:
      that:
      - check_mode_subdir_first is changed
      - not check_mode_subdir_first_stat.stat.exists
      - check_mode_subdir_real is changed
      - check_mode_subdir_real_stat.stat.exists

  # Do some finagling here. First, use check_mode to ensure it never gets
  # created. Then actualy create it, and use check_mode to ensure that doing
  # the same copy gets marked as no change.
  #
  # This same pattern repeats for several other src/dest combinations.
  - name: check_mode - Ensure dest with trailing / never gets created but would be without check_mode
    copy:
      remote_src: true
      src: 'checkmode_subdir/'
      dest: 'destdir_should_never_exist_because_of_check_mode/'
      follow: true
    check_mode: true
    register: check_mode_trailing_slash_first

  - name: check_mode - Stat the new dir to make sure it really doesn't exist
    stat:
      path: 'destdir_should_never_exist_because_of_check_mode/'
    register: check_mode_trailing_slash_first_stat

  - name: check_mode - Create the above copy for real now (without check_mode)
    copy:
      remote_src: true
      src: 'checkmode_subdir/'
      dest: 'destdir_should_never_exist_because_of_check_mode/'
    register: check_mode_trailing_slash_real

  - name: check_mode - Stat the new dir to make sure it really exists
    stat:
      path: 'destdir_should_never_exist_because_of_check_mode/'
    register: check_mode_trailing_slash_real_stat

  - name: check_mode - Do the same copy yet again (with check_mode this time) to ensure it's marked unchanged
    copy:
      remote_src: true
      src: 'checkmode_subdir/'
      dest: 'destdir_should_never_exist_because_of_check_mode/'
    check_mode: true
    register: check_mode_trailing_slash_second

  # Repeat the same basic pattern here.

  - name: check_mode - Do another basic copy (with check_mode)
    copy:
      src: foo.txt
      dest: "{{ remote_dir }}/foo-check_mode.txt"
      mode: 0444
    check_mode: true
    register: check_mode_foo_first

  - name: check_mode - Stat the new file to make sure it really doesn't exist
    stat:
      path: "{{ remote_dir }}/foo-check_mode.txt"
    register: check_mode_foo_first_stat

  - name: check_mode - Do the same basic copy (without check_mode)
    copy:
      src: foo.txt
      dest: "{{ remote_dir }}/foo-check_mode.txt"
      mode: 0444
    register: check_mode_foo_real

  - name: check_mode - Stat the new file to make sure it really exists
    stat:
      path: "{{ remote_dir }}/foo-check_mode.txt"
    register: check_mode_foo_real_stat

  - name: check_mode - And again (with check_mode)
    copy:
      src: foo.txt
      dest: "{{ remote_dir }}/foo-check_mode.txt"
      mode: 0444
    register: check_mode_foo_second

  - assert:
      that:
      - check_mode_subdir_first is changed

      - check_mode_trailing_slash_first is changed
      # TODO: This is a legitimate bug
      #- not check_mode_trailing_slash_first_stat.stat.exists
      - check_mode_trailing_slash_real is changed
      - check_mode_trailing_slash_real_stat.stat.exists
      - check_mode_trailing_slash_second is not changed

      - check_mode_foo_first is changed
      - not check_mode_foo_first_stat.stat.exists
      - check_mode_foo_real is changed
      - check_mode_foo_real_stat.stat.exists
      - check_mode_foo_second is not changed