diff --git a/comsdk/misc.py b/comsdk/misc.py index 1e65ab0c2babf4b40f145f56c3f177258971859a..19fed0ce9140ea4a0558d96152aad2e158fe87fc 100644 --- a/comsdk/misc.py +++ b/comsdk/misc.py @@ -1,3 +1,4 @@ +import shutil from functools import reduce, partial import os import re @@ -163,7 +164,7 @@ def is_sequence(obj): ''' Checks whether obj is a sequence (string does not count as a sequence) ''' - return isinstance(obj, collections.Sequence) and (not hasattr(obj, 'strip')) + return isinstance(obj, collections.abc.Sequence) and (not hasattr(obj, 'strip')) def cp(from_, to_): ''' diff --git a/comsdk/parser.py b/comsdk/parser.py index f264ac0cfa19d097e9cbae3440504c26f124a2ab..1a468424c858a0da3f6bf7dfe77b61f818a897cc 100644 --- a/comsdk/parser.py +++ b/comsdk/parser.py @@ -275,8 +275,8 @@ class Parser(): def parse_file(self, filename): # @todo В случае, если на вход будет подан файл в отличной от UTF-8 кодировке программа работать не будет - file = open(filename, encoding='utf-8')# "r") - dot = file.read() + with open(filename, "r", encoding="utf-8") as file: + dot = file.read() self._check_brackets(dot) comments = [m for m in re.finditer(r'\".*\"', dot)] diff --git a/tests/test_parser.py b/tests/test_parser.py index cadf7ad55faa1d80d09f1362660772746ec308f8..feb577659909d5fd5f425b4b0425db8c15790380 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -1,3 +1,4 @@ +import gc import unittest import subprocess @@ -9,11 +10,16 @@ path_to_pycomsdk = "/home/lbstr/bmstu/pycomsdk" class ParserGoodCheck(unittest.TestCase): + def test_trivial_graph(self): parsr = Parser() - gr = parsr.parse_file("./tests/adot/trivial.adot") + gr = parsr.parse_file("./adot/trivial.adot") data = {"a": 1} - gr.run(data) + try: + gr.run(data) + finally: + # Явный вызов сборщика мусора для очистки ресурсов + gc.collect() self.assertEqual(data["a"], 4) def test_branching_graph(self):