This new part of the test_exit_status_correct_usage test was added
in PR #41382. This test, along with some memory leakage for the
test running in Python 3, has exposed an underlying issue with
Minion._thread_return subprocessing in the test suite. Due to this
issue, this test is extremely flaky.
Per @DmitryKuzmenko's recomendation in https://github.com/saltstack/salt-jenkins/issues/378,
this test should be commented out for the time being. He is planning
on coming back to this issue to uncomment the test once the underlying
problem has been resolved.
tests.support.helpers passes the single-asterisk tuple of args as
individual arguments to runtest_helpers.modules_available. This breaks
tests which pass more than one argument to the requires_salt_modules
decorator.
This has been fixed by making runtests_helpers.modules_available accept
an arbitrary number of args via using a single-asterisk.
This is the error
```
npm ERR! As of npm@5, the npm cache self-heals from corruption issues and
data extracted from the cache is guaranteed to be valid. If you want to make
sure everything is consistent, use 'npm cache verify' instead.
npm ERR!
npm ERR! If you're sure you want to delete the entire cache, rerun this command
with --force.
```
After talking to @cro, all of the mac power modules became super flaky in
Sierra. Because of this, I am marking all of the mac power tests with the
flaky decorator.
This allows for the shutdown function to also terminate any orphaned
processes which were spawned during the time between when
terminate_process is invoked, and when the processes are actually
killed.
If this is has any unicode characters in it, it won't load on systems that do
not default to a unicode locale.
find . -type f | while read line; do ret=$(file $line); if [[ $ret == *UTF-8* && $line == *.py ]]; then echo $line; fi; done
The above will list all files that have unicode characters in it and won't load
with locale set to C or POSIX
This fixes the test failures recently observed in
integration.shell.test_master.MasterTest.test_exit_status_correct_usage.
The test failures were not a regression, but rather a symptom of a
greater problem with the TestProgram class' shutdown() func. When
terminating the process using the terminate_process helper from
pytest-salt, it does not pass kill_children, which defaults to False.
This makes the helper only kill the main PID, leaving all the other PIDs
running.
This means that every time the integration suite was being run, each
time the TestProgram class was used to spawn a temporary daemon, it
would leave all the child PIDs running when the shutdown() is invoked.
By passing kill_children=True, we ensure that the child PIDs are also
killed. This should provide a significant perfomance improvement in the
test suite.
This test uses file.accumulated to accumulate data, to be used in the
file.blockreplace state. However, because this data is stored in a
dictionary, the iteration order is different on different versions of
Python. As it is very clearly stated that the accumulator data structure
is a dictionary, rather than modifying the file.accumulated behavior
this commit just updates the test so that it searches for all values
that it should find between the block markers.