{"id":44044732,"url":"https://github.com/nowsprinting/create-script-folders-with-tests","last_synced_at":"2026-02-07T21:36:05.035Z","repository":{"id":39875513,"uuid":"364682623","full_name":"nowsprinting/create-script-folders-with-tests","owner":"nowsprinting","description":"Create script folders (Editor, Runtime, and each Tests) containing assembly definition file (.asmdef)","archived":false,"fork":false,"pushed_at":"2025-08-31T03:19:21.000Z","size":1225,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-31T03:35:19.879Z","etag":null,"topics":["asmdef","testing","unity","unity-editor","unity3d"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nowsprinting.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-05-05T19:17:02.000Z","updated_at":"2025-08-31T03:19:23.000Z","dependencies_parsed_at":"2023-02-09T19:46:05.597Z","dependency_job_id":"5b9793cb-6d5a-42cd-89f0-d0374ef0af02","html_url":"https://github.com/nowsprinting/create-script-folders-with-tests","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/nowsprinting/create-script-folders-with-tests","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowsprinting%2Fcreate-script-folders-with-tests","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowsprinting%2Fcreate-script-folders-with-tests/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowsprinting%2Fcreate-script-folders-with-tests/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowsprinting%2Fcreate-script-folders-with-tests/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nowsprinting","download_url":"https://codeload.github.com/nowsprinting/create-script-folders-with-tests/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowsprinting%2Fcreate-script-folders-with-tests/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29208764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T21:35:21.898Z","status":"ssl_error","status_checked_at":"2026-02-07T21:35:20.106Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asmdef","testing","unity","unity-editor","unity3d"],"created_at":"2026-02-07T21:36:04.950Z","updated_at":"2026-02-07T21:36:05.030Z","avatar_url":"https://github.com/nowsprinting.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Create Script Folders and Assemblies with Tests\n\n[![Meta file check](https://github.com/nowsprinting/create-script-folders-with-tests/actions/workflows/metacheck.yml/badge.svg)](https://github.com/nowsprinting/create-script-folders-with-tests/actions/workflows/metacheck.yml)\n[![Test](https://github.com/nowsprinting/create-script-folders-with-tests/actions/workflows/test.yml/badge.svg)](https://github.com/nowsprinting/create-script-folders-with-tests/actions/workflows/test.yml)\n[![openupm](https://img.shields.io/npm/v/com.nowsprinting.create-script-folders-with-tests?label=openupm\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.nowsprinting.create-script-folders-with-tests/)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/nowsprinting/create-script-folders-with-tests)\n\nA Unity editor extension that creates script folders (Editor, Runtime, and Tests) and adds an Assembly Definition File (.asmdef) to each.\n\n\n## Features\n\nWhen opening the context menu and selecting\n**Create \u003e C# Script Folders and Assemblies with Tests**\nThe root folder (e.g., named **YourFeature**) and all folders below it will be created as follows:\n\n### Creating folders and asmdefs\n\n#### When used under the Assets folder\n\n```\nAssets\n└── YourFeature\n   ├── Scripts\n   │   ├── Editor\n   │   │   └── YourFeature.Editor.asmdef\n   │   └── Runtime\n   │       └── YourFeature.asmdef\n   └── Tests\n       ├── Editor\n       │   └── YourFeature.Editor.Tests.asmdef\n       └── Runtime\n           └── YourFeature.Tests.asmdef\n```\n\n#### When used under the Packages folder\n\n```\nPackages\n└── your.package.name\n   └── YourFeature\n      ├── Editor\n      │   └── YourFeature.Editor.asmdef\n      ├── Runtime\n      │   └── YourFeature.asmdef\n      └── Tests\n          ├── Editor\n          │   └── YourFeature.Editor.Tests.asmdef\n          └── Runtime\n              └── YourFeature.Tests.asmdef\n```\n\n\u003e [!IMPORTANT]  \n\u003e Package folder (e.g., named **your.package.name**) and package.json must be created before.\n\u003e Because you can not open the context menu directly under the Packages folder.\n\nAfter creating folders, move the Editor, Runtime, and Tests folders directly under the **your.package.name** folder.\nAnd remove the **YourFeature** folder.\nThen it will be the same as the official [package layout](https://docs.unity3d.com/Manual/cus-layout.html).\n\n```\nPackages\n└── your.package.name\n   ├── Editor\n   │   └── YourFeature.Editor.asmdef\n   ├── Runtime\n   │   └── YourFeature.asmdef\n   └── Tests\n       ├── Editor\n       │   └── YourFeature.Editor.Tests.asmdef\n       └── Runtime\n           └── YourFeature.Tests.asmdef\n```\n\n\u003e [!WARNING]  \n\u003e Move folders using JetBrains Rider.\n\u003e Because to update DotSettings files (see below).\n\n\n### Set Assembly Definition References in asmdefs\n\nSet the **Assembly Definition References** in each asmdef as follows:\n\n```mermaid\ngraph RL\n    Runtime\n    Editor --\u003e Runtime\n    Runtime.Tests --\u003e Runtime\n    Editor.Tests --\u003e Runtime\n    Editor.Tests --\u003e Editor\n    Editor.Tests --\u003e Runtime.Tests\n```\n\n\n### Creates AssemblyInfo.cs files for friend assemblies\n\nCreates an AssemblyInfo.cs file for each assembly to mark **Assembly Definition References** as [Friend assemblies](https://learn.microsoft.com/en-us/dotnet/standard/assembly/friend).\nThis allows access to `internal` types and members.\n\n\n### Creates DotSettings files\n\nCreates .csproj.DotSettings file for each assembly.\nThis file is set up to make the [Namespace does not correspond to file location](https://www.jetbrains.com/help/rider/CheckNamespace.html) inspection work as expected in JetBrains Rider.\n\nThis will result in the expected namespace per folder as follows:\n\n- Scripts/Editor: `YourFeature.Editor`\n- Scripts/Runtime: `YourFeature`\n- Tests/Editor: `YourFeature.Editor`\n- Tests/Runtime: `YourFeature`\n\n\u003e [!TIP]  \n\u003e `Tests` is not included in the namespace.\n\u003e When the same namespaces as the production code and test code are used, `using` directives are not required.\n\nSpecifically, disabled the [Namespace provider](https://www.jetbrains.com/help/rider/Refactorings__Adjust_Namespaces.html) for the following folders:\n\n- Scripts\n- Scripts/Runtime\n- Tests\n- Tests/Runtime\n\n\u003e [!WARNING]  \n\u003e Under Packages namespace resolution works with Unity 2020.2 or later.\n\u003e Because to use the Root Namespace property of asmdef.\n\nSee also: [Code Inspections in C# | JetBrains Rider Documentation](https://www.jetbrains.com/help/rider/Reference__Code_Inspections_CSHARP.html)\n\n\n## Installation\n\n1. Open the Project Settings window (**Editor \u003e Project Settings**) and select **Package Manager** tab (figure 1.)\n2. Click **+** button under the **Scoped Registries** and enter the following settings:\n    1. **Name:** `package.openupm.com`\n    2. **URL:** `https://package.openupm.com`\n    3. **Scope(s):** `com.nowsprinting`\n3. Open the Package Manager window (**Window \u003e Package Manager**) and select **My Registries** tab (figure 2.)\n4. Select **Create Script Folders and Assemblies with Tests** and click the **Install** button\n\n**Figure 1.** Scoped Registries setting in Project Settings window\n\n![](Documentation~/ScopedRegistries_Dark.png#gh-dark-mode-only)\n![](Documentation~/ScopedRegistries_Light.png#gh-light-mode-only)\n\n**Figure 2.** My Registries in Package Manager window\n\n![](Documentation~/PackageManager_Dark.png#gh-dark-mode-only)\n![](Documentation~/PackageManager_Light.png#gh-light-mode-only)\n\n\n## License\n\nMIT License\n\n\n## How to contribute\n\nOpen an issue or create a pull request.\n\nBe grateful if you could label the pull request as `enhancement`, `bug`, `chore`, and `documentation`. See [PR Labeler settings](.github/pr-labeler.yml) for automatically labeling from the branch name.\n\n\n## How to development\n\n### Clone repo as a embedded package\n\nAdd this repository as a submodule to the Packages/ directory in your project.\n\nRun the command below:\n\n```bash\ngit submodule add git@github.com:nowsprinting/create-script-folders-with-tests.git Packages/com.nowsprinting.create-script-folders-with-tests\n```\n\n\n### Run tests\n\nGenerate a temporary project and run tests on each Unity version from the command line.\n\n```bash\nmake create_project\nUNITY_VERSION=2019.4.40f1 make -k test\n```\n\n\n### Release workflow\n\nThe release process is as follows:\n\n1. Run **Actions \u003e Create release pull request \u003e Run workflow**\n2. Merge created pull request\n\nThen, will do the release process automatically by [Release](.github/workflows/release.yml) workflow.\nAfter tagging, [OpenUPM](https://openupm.com/) retrieves the tag and updates it.\n\n\u003e [!CAUTION]  \n\u003e Do **NOT** manually operation the following operations:\n\u003e - Create a release tag\n\u003e - Publish draft releases\n\n\u003e [!CAUTION]  \n\u003e You must modify the package name to publish a forked package.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnowsprinting%2Fcreate-script-folders-with-tests","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnowsprinting%2Fcreate-script-folders-with-tests","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnowsprinting%2Fcreate-script-folders-with-tests/lists"}