mirror of
				https://github.com/tc39/test262.git
				synced 2025-11-04 05:33:50 +01:00 
			
		
		
		
	This is necessary so that updates to the tests without corresponding updates to the generator script will be flagged in CI runs.
		
			
				
	
	
		
			72 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
# Copyright (C) 2016 the V8 project authors. All rights reserved.
 | 
						|
# This code is governed by the BSD license found in the LICENSE file.
 | 
						|
 | 
						|
from __future__ import print_function
 | 
						|
import os, shutil, subprocess, sys
 | 
						|
 | 
						|
OUT_DIR = os.environ.get('OUT_DIR') or 'test'
 | 
						|
SRC_DIR = os.environ.get('SRC_DIR') or 'src'
 | 
						|
 | 
						|
 | 
						|
def shell(*args, **kwargs):
 | 
						|
    sp = subprocess.Popen(list(args), stdout=subprocess.PIPE,
 | 
						|
                          universal_newlines=True, **kwargs)
 | 
						|
    cmd_str = ' '.join(args)
 | 
						|
 | 
						|
    print('> ' + cmd_str)
 | 
						|
 | 
						|
    for line in iter(sp.stdout.readline, ''):
 | 
						|
        sys.stdout.write(line)
 | 
						|
 | 
						|
    sp.communicate()
 | 
						|
 | 
						|
    if sp.returncode == 1:
 | 
						|
        raise Exception('Command failed: ' + cmd_str)
 | 
						|
 | 
						|
targets = dict()
 | 
						|
def target(*deps):
 | 
						|
    def other(orig):
 | 
						|
        def wrapped():
 | 
						|
            print('Running target: ' + orig.__name__)
 | 
						|
 | 
						|
            for dep in deps:
 | 
						|
                targets[dep]()
 | 
						|
            return orig()
 | 
						|
        wrapped.__name__ = orig.__name__
 | 
						|
        targets[orig.__name__] = wrapped
 | 
						|
        return wrapped
 | 
						|
    return other
 | 
						|
 | 
						|
 | 
						|
@target()
 | 
						|
def npm_deps():
 | 
						|
    shell('npm', 'install', cwd='./tools/regexp-generator')
 | 
						|
 | 
						|
 | 
						|
@target('npm_deps')
 | 
						|
def build():
 | 
						|
    shell(sys.executable, 'tools/generation/generator.py',
 | 
						|
          'create',
 | 
						|
          '--parents',
 | 
						|
          '--out', OUT_DIR,
 | 
						|
          SRC_DIR)
 | 
						|
    shell('npm', 'run', 'build', cwd='./tools/regexp-generator')
 | 
						|
 | 
						|
 | 
						|
@target('npm_deps')
 | 
						|
def clean():
 | 
						|
    shell(sys.executable, 'tools/generation/generator.py', 'clean', OUT_DIR)
 | 
						|
    shell('npm', 'run', 'clean', cwd='./tools/regexp-generator')
 | 
						|
 | 
						|
 | 
						|
if len(sys.argv) == 1:
 | 
						|
    targets['build']()
 | 
						|
 | 
						|
for target in sys.argv[1:]:
 | 
						|
    if not target in targets:
 | 
						|
        sys.stderr.write('No target named: "' + target + '".\n' +
 | 
						|
            'Available targets: ' + ', '.join(list(targets)) + '\n')
 | 
						|
        sys.exit(1)
 | 
						|
    targets[target]()
 |