Hi Bram! On Mi, 03 Feb 2016, Bram Moolenaar wrote:
> > Danek Duvall wrote: > > > > Jun Takimoto wrote: > > > > > > > On 2016/02/03, at 7:23, Bram Moolenaar <[email protected]> wrote: > > > > > > > > > Patch 7.4.1246 > > > > > Problem: The channel functionality isn't tested. > > > > > Solution: Add a test using a Python test server. > > > > > > > > The Python test server doesn't quit and keeps running after the > > > > test (at least on my Mac, OSX 10.8.5, Python2.7). > > > > > > > > In test_channel.py, line 76: > > > > sys.exit(0) > > > > it seems this terminates only the current thread. > > > > > > > > # and it may raise the SystemExit exception. If I run > > > > # $ make check 2>&1 | tee testlog > > > > # then the shell hangs, but this may due to my shell's settings. > > > > > > > > Moreover, in test_channel.vim, line 52: > > > > call system("killall test_channel.py") > > > > this doesn't work either, because the name of the process is > > > > not 'test_channel.py' but 'python'. But of course we don't > > > > want to call 'killall python'. > > > > > > > > A possible patch for test_channel.py is attached below. > > > > On my Mac it seems to work. > > > > > > > > I don't know how to fix the killall. Without this, the python > > > > process will keep running if something goes wrong and shutdown > > > > fails. > > > > > > Yes, the killall does not appear to work reliably. It does work for my > > > specific setup. I wonder if there is a portable way (on Unix) to kill > > > the process. We'll also need it once we add commands to start and stop > > > jobs. > > > > LCD mentioned pkill, which at least exists on other OSes. But if for > > whatever reasons (multiple tests running in parallel?) there are other > > test_channel.py processes running on the machine, you'll just kill them > > all. > > > > I think the most reliable thing to do here is to have a way to know the pid > > and kill it directly, but since ! goes through a shell, you don't have any > > way of knowing what the pid of test_channel.py is. > > > > I think having a spawn() function (and a kill()) would probably the best > > answer for this, but perhaps for now, maybe do something like > > > > let pid = system("./test_channel.py& echo $!") > > ... > > call system("kill " . pid) > > There are some vague plans for job control. The idea is that you should > be able to run a job for your plugin. Either one job per Vim, or one > job shared with multiple Vims. And possibly it keeps running when Vim > exits, or it gets killed automatically. > > Something like: > > let job = job_start('command', {options}) > > call job_stop(job) > > Would also be useful to start a job if we can't open a channel: > > let job = job_maystart('command', {address}, {options}) > > We could also start a job and use stdin/stdout for communication. > That would would be in the options of job_start(). > There was an incomplete patch for this more than a year ago. I think that patch has now become neovim. Best, Christian -- Wer Kollegen hat, braucht keine Feinde. -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
