def run_test(test_filename, print_json = False, print_ninja = False): print("-> Testing %s" % test_filename) try: json_filename = os.path.splitext(test_filename)[0] + ".json" json_exists = os.path.isfile(json_filename) if json_exists or print_json: engine = EngineMock() parse(engine, test_filename) if print_json: print("--- JSON ---------------------") print(json.dumps(engine.output, sort_keys = True, indent = "\t")) print("--- JSON END -----------------") if json_exists: with open(json_filename, "r") as f: reference = json.loads(f.read()) if sys.version_info[0] < 3: def byteify(input): if isinstance(input, dict): return {byteify(key): byteify(value) for key,value in input.iteritems()} elif isinstance(input, list): return [byteify(element) for element in input] elif isinstance(input, unicode): return input.encode("utf-8") else: return input reference = byteify(reference) diff = DeepDiff(reference, engine.output) if diff: print("Results differ from reference:") pprint(diff) return False ninja_filename = os.path.splitext(test_filename)[0] + ".ninja" ninja_exists = os.path.isfile(ninja_filename) if ninja_exists or print_ninja: engine = Engine() engine.load(test_filename, logo = False) if print_ninja: print("--- NINJA --------------------") print(engine.text()) print("--- NINJA END ----------------") if ninja_exists: with open(os.path.splitext(test_filename)[0] + ".ninja", "r") as f: reference = f.read() diff = DeepDiff(reference, engine.text()) if diff: print("Results differ from reference:") pprint(diff) return False if not (json_exists or print_json or ninja_exists or print_ninja): print("json and ninja files are not present") return False return True except: err = sys.exc_info()[0] print("Exception error: %s" % err) traceback.print_exc() return False
def load(self, filename, logo = True): self.filename = filename self.rel_path = rel_dir(filename) if logo: self.output.append("# generated with love by buildfox from %s" % filename) self.write_rel_path() parse(self, filename)
def on_include(self, obj): paths = self.eval_find_files([obj]) for path in paths: old_rel_path = self.rel_path self.rel_path = rel_dir(path) self.write_rel_path() parse(self, path) self.rel_path = old_rel_path
def load_core(self, fox_core): self.filename = "fox_core.fox" self.rel_path = "" self.write_rel_path() parse(self, self.filename, text = fox_core)
def run_test(test_filename, print_json=False, print_ninja=False): print("-> Testing %s" % test_filename) try: json_filename = os.path.splitext(test_filename)[0] + ".json" json_exists = os.path.isfile(json_filename) if json_exists or print_json: engine = EngineMock() parse(engine, test_filename) if print_json: print("--- JSON ---------------------") print(json.dumps(engine.output, sort_keys=True, indent="\t")) print("--- JSON END -----------------") if json_exists: with open(json_filename, "r") as f: reference = json.loads(f.read()) if sys.version_info[0] < 3: def byteify(input): if isinstance(input, dict): return { byteify(key): byteify(value) for key, value in input.iteritems() } elif isinstance(input, list): return [byteify(element) for element in input] elif isinstance(input, unicode): return input.encode("utf-8") else: return input reference = byteify(reference) diff = DeepDiff(reference, engine.output) if diff: print("Results differ from reference:") pprint(diff) return False ninja_filename = os.path.splitext(test_filename)[0] + ".ninja" ninja_exists = os.path.isfile(ninja_filename) if ninja_exists or print_ninja: engine = Engine() engine.load(test_filename, logo=False) if print_ninja: print("--- NINJA --------------------") print(engine.text()) print("--- NINJA END ----------------") if ninja_exists: with open(os.path.splitext(test_filename)[0] + ".ninja", "r") as f: reference = f.read() diff = DeepDiff(reference, engine.text()) if diff: print("Results differ from reference:") pprint(diff) return False if not (json_exists or print_json or ninja_exists or print_ninja): print("json and ninja files are not present") return False return True except: err = sys.exc_info()[0] print("Exception error: %s" % err) traceback.print_exc() return False