Solara Development - Solara-Kit/Solara GitHub Wiki

Solara Development

Table of Contents

Initial Setup

Cloning Solara

Clone Solara by executing this command in you terminal, then change the directory to the Solara folder:

git clone https://github.com/Solara-Kit/Solara.git

Installing Dependencies

After checking out the repository, run the following command to install the necessary dependencies:

bundle exec install

Cloning the Example Project

To run Solara on your local machine, clone the example project from Infinite.

git clone https://github.com/Solara-Kit/Infinite.git

Ensure that both Solara and Infinite reside in the same root folder.

parent-folder/
    ├── solara/
    └── infinite/

Then, execute:

bundle install

This will set up everything you need to get started.

For complete details, please refer to the Infinite repository.

Testing

Overview of RSpec

RSpec is utilized for testing Solara, encompassing two main types of testing outlined below:

Types of Testing

  • Unit Testing

    Unit testing focuses on verifying the behavior of individual functions within a single class. For example, solara/lib/solara_cli_spec.rb tests the functionality of each method in the CLI class.

  • Integration Testing

    Integration testing evaluates the runtime behavior of the entire gem. The TestLab repository (GitHub - TestLab) contains the projects necessary for running these tests. The tests are executed within a cloned environment. For specific implementation details, refer to solara_manager_integration_spec.rb.

Executing the Tests

  • Running Tests in Terminal

    To execute the tests, run the following command in your terminal. Ensure that your terminal is opened in the root directory of Solara:

rspec solara/lib/spec/
  • Continuous Integration with GitHub Actions

    The tests are automatically executed by a GitHub Actions workflow whenever there is a push to the main or develop branches, as well as on pull requests. For implementation details, please refer to the rspec.yml file.

⚠️ **GitHub.com Fallback** ⚠️