mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-10-02 04:59:52 +00:00
New optional GUI for BIMTester for user friendly testing
This commit is contained in:
@@ -15,6 +15,7 @@ import argparse
|
|||||||
import csv
|
import csv
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
|
import webbrowser
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
@@ -33,7 +34,8 @@ def get_resource_path(relative_path):
|
|||||||
|
|
||||||
def run_tests(args):
|
def run_tests(args):
|
||||||
if not get_features(args):
|
if not get_features(args):
|
||||||
sys.exit('No requirements could be found to check.')
|
print('No requirements could be found to check.')
|
||||||
|
return False
|
||||||
behave_args = [get_resource_path('features')]
|
behave_args = [get_resource_path('features')]
|
||||||
if args.advanced_arguments:
|
if args.advanced_arguments:
|
||||||
behave_args.extend(args.advanced_arguments.split())
|
behave_args.extend(args.advanced_arguments.split())
|
||||||
@@ -41,6 +43,7 @@ def run_tests(args):
|
|||||||
behave_args.extend(['--junit', '--junit-directory', args.junit_directory])
|
behave_args.extend(['--junit', '--junit-directory', args.junit_directory])
|
||||||
behave_main(behave_args)
|
behave_main(behave_args)
|
||||||
print('# All tests are finished.')
|
print('# All tests are finished.')
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def get_features(args):
|
def get_features(args):
|
||||||
@@ -150,6 +153,11 @@ parser.add_argument(
|
|||||||
'--purge',
|
'--purge',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help='Purge tests of deleted elements')
|
help='Purge tests of deleted elements')
|
||||||
|
parser.add_argument(
|
||||||
|
'-c',
|
||||||
|
'--cli',
|
||||||
|
action='store_true',
|
||||||
|
help='Run without a GUI, just as a CLI')
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-r',
|
'-r',
|
||||||
'--report',
|
'--report',
|
||||||
@@ -175,11 +183,64 @@ parser.add_argument(
|
|||||||
default='')
|
default='')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
if args.purge:
|
if args.cli:
|
||||||
TestPurger().purge()
|
if args.purge:
|
||||||
elif args.report:
|
TestPurger().purge()
|
||||||
generate_report(args)
|
elif args.report:
|
||||||
else:
|
generate_report(args)
|
||||||
run_tests(args)
|
else:
|
||||||
|
run_tests(args)
|
||||||
|
print('# All tasks are complete :-)')
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
print('# All tasks are complete :-)')
|
import tkinter
|
||||||
|
import tkinter.filedialog
|
||||||
|
import tkinter.messagebox
|
||||||
|
|
||||||
|
class Application(tkinter.Frame):
|
||||||
|
def __init__(self, master=None):
|
||||||
|
super().__init__(master)
|
||||||
|
self.master = master
|
||||||
|
self.master.title('BIMTester')
|
||||||
|
self.pack()
|
||||||
|
self.create_widgets()
|
||||||
|
self.directory = None
|
||||||
|
|
||||||
|
def create_widgets(self):
|
||||||
|
self.top_frame = tkinter.Frame(self, padx=5, pady=5)
|
||||||
|
self.top_frame.pack(side='top')
|
||||||
|
self.bottom_frame = tkinter.Frame(self, padx=5, pady=5)
|
||||||
|
self.bottom_frame.pack(side='bottom')
|
||||||
|
|
||||||
|
self.description = tkinter.Label(self.top_frame)
|
||||||
|
self.description['text'] = 'BIMTester'
|
||||||
|
self.description.pack(side='top')
|
||||||
|
|
||||||
|
self.browse = tkinter.Button(self.bottom_frame)
|
||||||
|
self.browse['text'] = 'Load Directory'
|
||||||
|
self.browse['command'] = self.load_file
|
||||||
|
self.browse.pack(side='left')
|
||||||
|
|
||||||
|
self.execute = tkinter.Button(self.bottom_frame)
|
||||||
|
self.execute['text'] = 'Check Requirements'
|
||||||
|
self.execute['command'] = self.check_requirements
|
||||||
|
self.execute.pack(side='right')
|
||||||
|
|
||||||
|
def load_file(self):
|
||||||
|
self.directory = tkinter.filedialog.askdirectory(parent=root, title='Choose a directory')
|
||||||
|
if self.directory:
|
||||||
|
os.chdir(self.directory)
|
||||||
|
|
||||||
|
def check_requirements(self):
|
||||||
|
if not self.directory:
|
||||||
|
tkinter.messagebox.showerror(message='Please select a directory first.')
|
||||||
|
return
|
||||||
|
if run_tests(args):
|
||||||
|
generate_report(args)
|
||||||
|
webbrowser.open(os.path.join(self.directory, 'report/'))
|
||||||
|
else:
|
||||||
|
tkinter.messagebox.showerror(message='No requirements were found or they were not able to be checked.')
|
||||||
|
|
||||||
|
root = tkinter.Tk()
|
||||||
|
app = Application(master=root)
|
||||||
|
app.mainloop()
|
||||||
|
|||||||
Reference in New Issue
Block a user