diff options
Diffstat (limited to 'tools/run_tests/python_utils/watch_dirs.py')
-rwxr-xr-x | tools/run_tests/python_utils/watch_dirs.py | 79 |
1 files changed, 39 insertions, 40 deletions
diff --git a/tools/run_tests/python_utils/watch_dirs.py b/tools/run_tests/python_utils/watch_dirs.py index 7bd085efaf..d2ad303a07 100755 --- a/tools/run_tests/python_utils/watch_dirs.py +++ b/tools/run_tests/python_utils/watch_dirs.py @@ -11,7 +11,6 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - """Helper to watch a (set) of directories for modifications.""" import os @@ -19,42 +18,42 @@ import time class DirWatcher(object): - """Helper to watch a (set) of directories for modifications.""" - - def __init__(self, paths): - if isinstance(paths, basestring): - paths = [paths] - self._done = False - self.paths = list(paths) - self.lastrun = time.time() - self._cache = self._calculate() - - def _calculate(self): - """Walk over all subscribed paths, check most recent mtime.""" - most_recent_change = None - for path in self.paths: - if not os.path.exists(path): - continue - if not os.path.isdir(path): - continue - for root, _, files in os.walk(path): - for f in files: - if f and f[0] == '.': continue - try: - st = os.stat(os.path.join(root, f)) - except OSError as e: - if e.errno == os.errno.ENOENT: - continue - raise - if most_recent_change is None: - most_recent_change = st.st_mtime - else: - most_recent_change = max(most_recent_change, st.st_mtime) - return most_recent_change - - def most_recent_change(self): - if time.time() - self.lastrun > 1: - self._cache = self._calculate() - self.lastrun = time.time() - return self._cache - + """Helper to watch a (set) of directories for modifications.""" + + def __init__(self, paths): + if isinstance(paths, basestring): + paths = [paths] + self._done = False + self.paths = list(paths) + self.lastrun = time.time() + self._cache = self._calculate() + + def _calculate(self): + """Walk over all subscribed paths, check most recent mtime.""" + most_recent_change = None + for path in self.paths: + if not os.path.exists(path): + continue + if not os.path.isdir(path): + continue + for root, _, files in os.walk(path): + for f in files: + if f and f[0] == '.': continue + try: + st = os.stat(os.path.join(root, f)) + except OSError as e: + if e.errno == os.errno.ENOENT: + continue + raise + if most_recent_change is None: + most_recent_change = st.st_mtime + else: + most_recent_change = max(most_recent_change, + st.st_mtime) + return most_recent_change + + def most_recent_change(self): + if time.time() - self.lastrun > 1: + self._cache = self._calculate() + self.lastrun = time.time() + return self._cache |