def METHOD_NAME(self, course_dir):
    """Ensure the force option works properly"""
    self._copy_file(join('files', 'test.ipynb'), join(course_dir, 'source', 'ps1', 'test.ipynb'))
    self._make_file(join(course_dir, 'source', 'ps1', 'foo.txt'), "foo")
    self._make_file(join(course_dir, 'source', 'ps1', 'data', 'bar.txt'), "bar")
    self._make_file(join(course_dir, 'source', 'ps1', 'blah.pyc'), "asdf")
    run_nbgrader(["db", "assignment", "add", "ps1"])
    run_nbgrader(["generate_solution", "ps1"])
    assert os.path.isfile(join(course_dir, 'solution', 'ps1', 'test.ipynb'))
    assert os.path.isfile(join(course_dir, 'solution', 'ps1', 'foo.txt'))
    assert os.path.isfile(join(course_dir, 'solution', 'ps1', 'data', 'bar.txt'))
    assert not os.path.isfile(join(course_dir, 'solution', 'ps1', 'blah.pyc'))
    # check that it skips the existing directory
    os.remove(join(course_dir, 'solution', 'ps1', 'foo.txt'))
    run_nbgrader(["generate_solution", "ps1"])
    assert not os.path.isfile(join(course_dir, 'solution', 'ps1', 'foo.txt'))
    # force overwrite the supplemental files
    run_nbgrader(["generate_solution", "ps1", "--force"])
    assert os.path.isfile(join(course_dir, 'solution', 'ps1', 'foo.txt'))
    # force overwrite
    os.remove(join(course_dir, 'source', 'ps1', 'foo.txt'))
    run_nbgrader(["generate_solution", "ps1", "--force"])
    assert os.path.isfile(join(course_dir, "solution", "ps1", "test.ipynb"))
    assert os.path.isfile(join(course_dir, "solution", "ps1", "data", "bar.txt"))
    assert not os.path.isfile(join(course_dir, "solution", "ps1", "foo.txt"))
    assert not os.path.isfile(join(course_dir, "solution", "ps1", "blah.pyc"))