Skip to content

Instantly share code, notes, and snippets.

@larsyencken
Created November 19, 2020 15:04
Show Gist options
  • Save larsyencken/469285a82ab0d6c2ecb0ca009e598039 to your computer and use it in GitHub Desktop.
Save larsyencken/469285a82ab0d6c2ecb0ca009e598039 to your computer and use it in GitHub Desktop.
Script to toggle JS unit tests on and off
#!/usr/bin/env python
from os import path, walk
import click
import sh
@click.command()
@click.argument("filenames", nargs=-1)
@click.option("--on", is_flag=True, default=None)
@click.option("--off", is_flag=True, default=None)
def toggle_test(filenames, on, off):
force = "on" if on else "off" if off else None
for file_or_dir in filenames:
if path.isdir(file_or_dir):
toggle_recursive(file_or_dir, force=force)
elif path.exists(file_or_dir):
toggle_file(file_or_dir, force=force)
else:
print(f"ERROR: no such file {file_or_dir}")
def toggle_file(filename, force=None):
if filename.endswith(".test.js") and force != "on":
dest = filename.replace(".test.js", ".test.js.disabled")
elif filename.endswith(".test.ts") and force != "on":
dest = filename.replace(".test.ts", ".test.ts.disabled")
elif filename.endswith("test.js.disabled") and force != "off":
dest = filename.replace(".test.js.disabled", ".test.js")
elif filename.endswith("test.ts.disabled") and force != "off":
dest = filename.replace(".test.ts.disabled", ".test.ts")
else:
dest = None
if dest:
print(f"{filename} --> {path.basename(dest)}")
sh.mv(filename, dest)
def toggle_recursive(dirname, force=None):
for filename in iter_files(dirname):
toggle_file(filename, force=force)
def iter_files(dirname):
for root, dirs, files in walk(dirname):
dirs.sort()
for filename in sorted(files):
yield path.join(root, filename)
if __name__ == "__main__":
toggle_test()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment