mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
feat: fix: create-project & create_component with proper file permission
This commit is contained in:
parent
4fc2e5cb95
commit
354e2c4673
@ -40,7 +40,11 @@ def is_empty_and_create(path: str, action: str) -> None:
|
||||
|
||||
|
||||
def create_project(target_path: str, name: str) -> None:
|
||||
copy_tree(os.path.join(os.environ['IDF_PATH'], 'examples', 'get-started', 'sample_project'), target_path)
|
||||
copy_tree(
|
||||
os.path.join(os.environ['IDF_PATH'], 'examples', 'get-started', 'sample_project'),
|
||||
target_path,
|
||||
preserve_mode=0,
|
||||
)
|
||||
main_folder = os.path.join(target_path, 'main')
|
||||
os.rename(os.path.join(main_folder, 'main.c'), os.path.join(main_folder, '.'.join((name, 'c'))))
|
||||
replace_in_file(os.path.join(main_folder, 'CMakeLists.txt'), 'main', name)
|
||||
@ -49,7 +53,11 @@ def create_project(target_path: str, name: str) -> None:
|
||||
|
||||
|
||||
def create_component(target_path: str, name: str) -> None:
|
||||
copy_tree(os.path.join(os.environ['IDF_PATH'], 'tools', 'templates', 'sample_component'), target_path)
|
||||
copy_tree(
|
||||
os.path.join(os.environ['IDF_PATH'], 'tools', 'templates', 'sample_component'),
|
||||
target_path,
|
||||
preserve_mode=0,
|
||||
)
|
||||
os.rename(os.path.join(target_path, 'main.c'), os.path.join(target_path, '.'.join((name, 'c'))))
|
||||
os.rename(os.path.join(target_path, 'include', 'main.h'),
|
||||
os.path.join(target_path, 'include', '.'.join((name, 'h'))))
|
||||
|
@ -237,6 +237,20 @@ def test_create_project(idf_py: IdfPyFunc, idf_copy: Path) -> None:
|
||||
assert ret.returncode == 4, 'Command create-project exit value is wrong.'
|
||||
|
||||
|
||||
def test_create_project_with_idf_readonly(idf_copy: Path) -> None:
|
||||
def change_to_readonly(src: Path) -> None:
|
||||
for root, dirs, files in os.walk(src):
|
||||
for name in dirs:
|
||||
os.chmod(os.path.join(root, name), 0o555) # read & execute
|
||||
for name in files:
|
||||
path = os.path.join(root, name)
|
||||
if '/bin/' in path: continue # skip excutables
|
||||
os.chmod(os.path.join(root, name), 0o444) # readonly
|
||||
logging.info('Check that command for creating new project will success if the IDF itself is readonly.')
|
||||
change_to_readonly(idf_copy)
|
||||
run_idf_py('create-project', '--path', str(idf_copy / 'example_proj'), 'temp_test_project')
|
||||
|
||||
|
||||
@pytest.mark.usefixtures('test_app_copy')
|
||||
def test_docs_command(idf_py: IdfPyFunc) -> None:
|
||||
logging.info('Check docs command')
|
||||
|
Loading…
Reference in New Issue
Block a user