summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2017-01-26 20:00:33 +0100
committerGiampaolo Rodola <g.rodola@gmail.com>2017-01-26 20:00:33 +0100
commitcc8d31c07378ed69b0cf7eaf4deef529c63ad177 (patch)
tree164e116f26480eeb7db55c6fe2276eed35f4acda
parent0684302e8e24dbebf536f4c8530475b21355f7c3 (diff)
parenta120b1e94322b17bf5ae41bb885faf3d17b991cd (diff)
downloadpsutil-cc8d31c07378ed69b0cf7eaf4deef529c63ad177.tar.gz
Merge branch '955-battery-sensors' of github.com:giampaolo/psutil into 955-battery-sensors
-rw-r--r--psutil/__init__.py2
-rwxr-xr-xpsutil/tests/test_windows.py47
2 files changed, 49 insertions, 0 deletions
diff --git a/psutil/__init__.py b/psutil/__init__.py
index 745d66fd..bfef0512 100644
--- a/psutil/__init__.py
+++ b/psutil/__init__.py
@@ -195,6 +195,8 @@ __author__ = "Giampaolo Rodola'"
__version__ = "5.1.0"
version_info = tuple([int(num) for num in __version__.split('.')])
AF_LINK = _psplatform.AF_LINK
+POWER_TIME_UNLIMITED = _common.POWER_TIME_UNLIMITED
+POWER_TIME_UNKNOWN = _common.POWER_TIME_UNKNOWN
_TOTAL_PHYMEM = None
_timer = getattr(time, 'monotonic', time.time)
diff --git a/psutil/tests/test_windows.py b/psutil/tests/test_windows.py
index 07f1d796..669adad0 100755
--- a/psutil/tests/test_windows.py
+++ b/psutil/tests/test_windows.py
@@ -159,6 +159,53 @@ class TestSystemAPIs(unittest.TestCase):
# ===================================================================
+# sensors_battery()
+# ===================================================================
+
+
+@unittest.skipUnless(WINDOWS, "WINDOWS only")
+class TestSensorsBattery(unittest.TestCase):
+
+ def test_percent(self):
+ w = wmi.WMI()
+ battery_psutil = psutil.sensors_battery()
+ battery_wmi = w.query('select * from Win32_Battery')[0]
+ if battery_psutil is None:
+ self.assertNot(battery_wmi.EstimatedChargeRemaining)
+ else:
+ self.assertAlmostEqual(
+ battery_psutil.percent, battery_wmi.EstimatedChargeRemaining,
+ delta=1)
+
+ def test_emulate_no_battery(self):
+ with mock.patch("psutil._pswindows.cext.sensors_battery",
+ return_value=(0, 128, 0, 0)) as m:
+ self.assertIsNone(psutil.sensors_battery())
+ assert m.called
+
+ def test_emulate_power_connected(self):
+ with mock.patch("psutil._pswindows.cext.sensors_battery",
+ return_value=(1, 0, 0, 0)) as m:
+ self.assertEqual(psutil.sensors_battery().secsleft,
+ psutil.POWER_TIME_UNLIMITED)
+ assert m.called
+
+ def test_emulate_power_charging(self):
+ with mock.patch("psutil._pswindows.cext.sensors_battery",
+ return_value=(0, 8, 0, 0)) as m:
+ self.assertEqual(psutil.sensors_battery().secsleft,
+ psutil.POWER_TIME_UNLIMITED)
+ assert m.called
+
+ def test_emulate_secs_left_unknown(self):
+ with mock.patch("psutil._pswindows.cext.sensors_battery",
+ return_value=(0, 0, 0, -1)) as m:
+ self.assertEqual(psutil.sensors_battery().secsleft,
+ psutil.POWER_TIME_UNKNOWN)
+ assert m.called
+
+
+# ===================================================================
# Process APIs
# ===================================================================