| # Copyright 2022 The IREE Authors | 
 | # | 
 | # Licensed under the Apache License v2.0 with LLVM Exceptions. | 
 | # See https://llvm.org/LICENSE.txt for license information. | 
 | # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
 |  | 
 | from typing import Tuple | 
 |  | 
 | from io import StringIO | 
 | import unittest | 
 | import sys | 
 |  | 
 | from iree.runtime.scripts.iree_devices import __main__ as cli | 
 |  | 
 |  | 
 | def run_cli(*args) -> Tuple[int, str, str]: | 
 |     capture_stdout = StringIO() | 
 |     capture_stderr = StringIO() | 
 |     sys.stdout = capture_stdout | 
 |     sys.stderr = capture_stderr | 
 |     try: | 
 |         rc = cli.main(args) | 
 |     finally: | 
 |         sys.stdout = sys.__stdout__ | 
 |         sys.stderr = sys.__stderr__ | 
 |     return rc, capture_stdout.getvalue(), capture_stderr.getvalue() | 
 |  | 
 |  | 
 | class DevicesCliTest(unittest.TestCase): | 
 |     def testLs(self): | 
 |         rc, output, err = run_cli("ls") | 
 |         self.assertEqual(rc, 0) | 
 |         self.assertIn("vmvx:0\tdefault", output) | 
 |  | 
 |     def testLsTryCreate(self): | 
 |         rc, output, err = run_cli("ls", "--try-create") | 
 |         self.assertEqual(rc, 0) | 
 |         self.assertIn("vmvx:0\tdefault\tSUCCESS", output) | 
 |  | 
 |     def testLsTryCreateExplicitDriver(self): | 
 |         rc, output, err = run_cli("ls", "--try-create", "-d", "vmvx") | 
 |         self.assertEqual(rc, 0) | 
 |         self.assertIn("vmvx:0\tdefault\tSUCCESS", output) | 
 |  | 
 |     def testLsTryCreateExplicitDriverNotFound(self): | 
 |         rc, output, err = run_cli("ls", "--try-create", "-d", "DOES_NOT_EXIST") | 
 |         self.assertEqual(rc, 0) | 
 |         self.assertIn("Could not create driver DOES_NOT_EXIST", err) | 
 |  | 
 |     def testTestIndexedDevice(self): | 
 |         rc, output, err = run_cli("test", "vmvx:0") | 
 |         self.assertEqual(rc, 0) | 
 |         self.assertIn("Creating device vmvx:0... SUCCESS", output) | 
 |  | 
 |     def testTestDefaultDevice(self): | 
 |         rc, output, err = run_cli("test", "vmvx") | 
 |         self.assertEqual(rc, 0) | 
 |         self.assertIn("Creating device vmvx... SUCCESS", output) | 
 |  | 
 |     def testTestNonExisting(self): | 
 |         rc, output, err = run_cli("test", "NOT_EXISTING") | 
 |         self.assertEqual(rc, 1) | 
 |         self.assertIn("Creating device NOT_EXISTING... ERROR", output) | 
 |  | 
 |  | 
 | if __name__ == "__main__": | 
 |     unittest.main() |