diff --git a/src/Provider/Node/SystemNodeProvider.php b/src/Provider/Node/SystemNodeProvider.php index d3a27b3..cbcd089 100644 --- a/src/Provider/Node/SystemNodeProvider.php +++ b/src/Provider/Node/SystemNodeProvider.php @@ -25,7 +25,7 @@ class SystemNodeProvider implements NodeProviderInterface /** * Returns the system node ID * - * @return string System node ID as a hexadecimal string + * @return string|false System node ID as a hexadecimal string, or false if it is not found */ public function getNode() { @@ -40,6 +40,7 @@ class SystemNodeProvider implements NodeProviderInterface // Search the ifconfig output for all MAC addresses and return // the first one found + $node = false; if (preg_match_all($pattern, $this->getIfconfig(), $matches, PREG_PATTERN_ORDER)) { $node = $matches[1][0]; $node = str_replace(':', '', $node); diff --git a/tests/src/Provider/Node/SystemNodeProviderTest.php b/tests/src/Provider/Node/SystemNodeProviderTest.php index c28ceb7..edc49c3 100644 --- a/tests/src/Provider/Node/SystemNodeProviderTest.php +++ b/tests/src/Provider/Node/SystemNodeProviderTest.php @@ -71,6 +71,20 @@ class SystemNodeProviderTest extends TestCase $this->assertEquals('AABBCCDDEEFF', $node); } + public function testGetNodeWillNotExecuteSystemCallIfFailedFirstTime() + { + $provider = $this->getMockBuilder('Ramsey\Uuid\Provider\Node\SystemNodeProvider') + ->setMethods(['getIfconfig']) + ->getMock(); + + $provider->expects($this->once()) + ->method('getIfconfig') + ->willReturn('some string that does not match the mac address'); + + $provider->getNode(); + $provider->getNode(); + } + public function osCommandDataProvider() { return [