diff --git a/tests/integration/files/file/base/requisites/requisite_in_match_by_name.sls b/tests/integration/files/file/base/requisites/requisite_in_match_by_name.sls new file mode 100644 index 000000000000..962863b0ee2e --- /dev/null +++ b/tests/integration/files/file/base/requisites/requisite_in_match_by_name.sls @@ -0,0 +1,8 @@ +bar state: + cmd.wait: + - name: 'echo bar' + +echo foo: + cmd.run: + - watch_in: + - cmd: 'echo bar' diff --git a/tests/integration/modules/state.py b/tests/integration/modules/state.py index 5214f4c4e0c8..0611c7010de9 100644 --- a/tests/integration/modules/state.py +++ b/tests/integration/modules/state.py @@ -1078,6 +1078,22 @@ def test_listen_requisite_resolution(self): listener_state = 'cmd_|-listener_test_listening_resolution_two_|-echo "Successful listen resolution"_|-mod_watch' self.assertIn(listener_state, state_run) + def test_issue_30820_requisite_in_match_by_name(self): + ''' + This tests the case where a requisite_in matches by name instead of ID + + See https://github.com/saltstack/salt/issues/30820 for more info + ''' + state_run = self.run_function( + 'state.sls', + mods='requisites.requisite_in_match_by_name' + ) + bar_state = 'cmd_|-bar state_|-echo bar_|-wait' + + self.assertIn(bar_state, state_run) + self.assertEqual(state_run[bar_state]['comment'], + 'Command "echo bar" run') + if __name__ == '__main__': from integration import run_tests run_tests(StateModuleTest)