| 
Daniel O'Connor  [2009-01-28 23:30 UTC]Tests: With the unit tests; is there any way you can mock out large chunks of it so you don't have to setup a configuration file?
 
 For instance,
 http://devel.2bopen.org/cgi-bin/trac/pear/browser/trunk/Net_OpenSSH/Net/OpenSSH.php#L268
 
 proc_open creates streams for you to write to, and there's no way for the unit tests to replace that with something else (say, a php in memory stream) - think about ways to mock that out; and you can simulate a lot of behaviour / control your test environment.
 
 
 You might also be interested in PHPUnit's data provider features; which allow you to write 1x test and supply many assorted types of input.
 
 Also the tests are often a good way to demonstrate how the code is used - the way you've written them doesn't quite do that (though it does provide coverage)
 
 Finally Consider naming your tests in an agile fashion (http://www.phpunit.de/manual/3.1/en/other-uses-for-tests.html)
 OpenSSH
 
 
 Code:
 Might be worth swapping around some of the places where you do:
 
 function foo() {
 if (condition) {
 ... large part of function ...
 
 return true;
 } else {
 throw new Exception("BLEHHHHH!");
 }
 }
 
 
 to be:
 function foo() {
 if (!condition) {
 throw new Exception("BLEHHHHH!");
 }
 
 //     ... large part of function ...
 return true;
 }
 
 
 Other than that, LGTM
Kevin van Zonneveld  [2009-01-30 10:47 UTC]You don't have to make system calls to execute remote commands with ssh. You can check-for & use libssh instead. 
 http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/
 
 Works for scp as well.
Christian Weiske  [2009-06-25 08:07 UTC]Is this proposal dead, or are you going to finish it?Chuck Burgess  [2009-09-08 22:27 UTC]I can't download the tarball or see the PHPS files online... 2bopen.org is prompting for a username/password...Chuck Burgess  [2009-09-09 15:19 UTC]This looks pretty good.  I built something very similar to the OpenSSH piece at work last year, but talked myself out of proposing it since it was mainly all shell exec stuff ;-)   I could probably help you maintain this package if it's accepted.Matthew Fonda  [2009-09-09 18:10 UTC]Good looks great, nice work. I'd love to see this make its way into pearTill Klampaeckel  [2009-09-09 19:45 UTC]Hey Luca, 
 first off, I'm too looking forward to this code in PEAR.
 
 I also briefly looked at your code and here are some suggestions:
 
 * Move constants into the Net_SSH2 class.
 
 * & is not necessary in PHP5.
 
 * Always work with visibility (public, static, etc.) on methods (e.g. the factory).
 
 * Add optional dependency on PEAR::System and ext/proc to package.xml. (PEAR::File should be optional as well).
 
 * Maybe briefly test for File and System, before use (maybe in __construct()). Or introduce a small autoload, or require_once the files in between file and class comment.
 
 * Maybe wrap the options into a Net_SSH2::$data array, instead of $this->$key = $val, $this->data[$key] = $val (in the drivers __construct()).
 
 * In Net_SSH2_LibSSH2 you could support the .dll version (on Windows), you could also attempt loading the php_ssh2.dll/ssh2.so before you error out.
 
 * Document thrown Exceptions with @throws.
 
 * Instead of die() in your tests, please use $this->markTestIncomplete() or $this->markTestSkipped().
 
 * Also, for some tests, take a look at $this->setExpectedException().
 
 Anyway, your code is great regardless of what I find. Especially nice that you put a lot of effort into your test suite. :)
 
 Cheers,
 Till
 |