summaryrefslogtreecommitdiff
path: root/tests/analysis/project.py
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2019-02-01 18:12:31 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2019-02-01 18:12:31 (GMT)
commit113f37b954e395beb2a335e5e364746c70af625d (patch)
treed58b2839f1dd95096f72221c07c4b2a508eca6e9 /tests/analysis/project.py
parent9d4a0ba0e5a217bf4ac63c21e14d5f44580b6138 (diff)
Inserted an option to render disassembly even in batch mode.
Diffstat (limited to 'tests/analysis/project.py')
-rw-r--r--tests/analysis/project.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/analysis/project.py b/tests/analysis/project.py
new file mode 100644
index 0000000..c38463e
--- /dev/null
+++ b/tests/analysis/project.py
@@ -0,0 +1,81 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+
+
+# S'assure du bon fonctionnement des blocs basiques
+
+
+from chrysacase import ChrysalideTestCase
+from pychrysalide.analysis.contents import FileContent
+from pychrysalide.analysis import StudyProject
+from pychrysalide.core import wait_for_all_global_works
+import os
+import sys
+
+
+class TestProjectFeatures(ChrysalideTestCase):
+ """TestCase for projects."""
+
+ @classmethod
+ def setUpClass(cls):
+
+ super(TestProjectFeatures, cls).setUpClass()
+
+ cls.log('Compile binary "hm" if needed...')
+
+ fullname = sys.modules[cls.__module__].__file__
+ dirpath = os.path.dirname(fullname)
+
+ os.system('make -C %s hm > /dev/null 2>&1' % dirpath)
+
+
+ @classmethod
+ def tearDownClass(cls):
+
+ super(TestProjectFeatures, cls).tearDownClass()
+
+ cls.log('Delete built binaries...')
+
+ fullname = sys.modules[cls.__module__].__file__
+ dirpath = os.path.dirname(fullname)
+
+ os.system('make -C %s clean > /dev/null 2>&1' % dirpath)
+
+
+ def testDisassemblyCache(self):
+ """Check disassembly cache availability for loaded binaries."""
+
+ fullname = sys.modules[self.__class__.__module__].__file__
+ filename = os.path.basename(fullname)
+
+ baselen = len(fullname) - len(filename)
+
+ cnt = FileContent(fullname[:baselen] + 'hm')
+ self.assertIsNotNone(cnt)
+
+ prj = StudyProject()
+ prj.discover(cnt, True)
+
+ wait_for_all_global_works()
+
+ self.assertTrue(len(prj.contents) == 1)
+
+ binary = prj.contents[0]
+
+ self.assertIsNotNone(binary)
+ self.assertIsNotNone(binary.disassembled_cache)
+
+ cnt = FileContent(fullname[:baselen] + 'hm')
+ self.assertIsNotNone(cnt)
+
+ prj = StudyProject()
+ prj.discover(cnt)
+
+ wait_for_all_global_works()
+
+ self.assertTrue(len(prj.contents) == 1)
+
+ binary = prj.contents[0]
+
+ self.assertIsNotNone(binary)
+ self.assertIsNone(binary.disassembled_cache)