Skip to content

Commit

Permalink
Unit tests
Browse files Browse the repository at this point in the history
* Set up pytest

* asset tests

* material tests

* hello_world tests

* Iterate github workflows

* Update tests

* fix gh actions

* Remove installation checks for now

* Ignore dependencies folder

* Test improvements

* Fix unit test commit pyproject toml
  • Loading branch information
araistrick authored and pvl-bot committed Oct 4, 2023
1 parent c4a14d6 commit 0228fde
Show file tree
Hide file tree
Showing 35 changed files with 470 additions and 49 deletions.
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2
updates:
- package-ecosystem: pip
directory: "/"
schedule:
interval: weekly
time: "13:00"
groups:
python-packages:
patterns:
- "*"
40 changes: 40 additions & 0 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@

name: Lint & Test

on:
pull_request:
branches:
- main
- develop
push:
branches:
- main
- develop

jobs:

checks:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: "3.10"

- name: Install dependencies
run: |
pip install .[dev]
- name: Lint with ruff
run: |
# stop the build if there are Python syntax errors or undefined names
ruff --format=github --select=E9,F63,F7,F82 .
# default set of ruff rules with GitHub Annotations
#ruff --format=github . # to be enabled in a future PR
- name: Test with pytest
run: |
pytest tests --doctest-modules --junitxml=junit/test-results.xml --cov=com --cov-report=xml --cov-report=html
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ blender
blender.tar.xz
Blender.app

.coverage
coverage.xml

*/rclone.zip
*/miniconda.sh

Expand Down
16 changes: 16 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

repos:

# config from https://black.readthedocs.io/en/stable/integrations/source_version_control.html
#- repo: https://github.com/psf/black
# rev: 23.7.0
# hooks:
# - id: black
# language_version: python3.10

# config from https://github.com/astral-sh/ruff-pre-commit
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.0.285
hooks:
- id: ruff

Empty file added examples/__init__.py
Empty file.
8 changes: 4 additions & 4 deletions examples/generate_individual_assets.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@
from infinigen.core.util.logging import Suppress
from infinigen.core.util import blender as butil

from datagen.tools.results import strip_alpha_background as strip_alpha_background
from infinigen.datagen.tools.results import strip_alpha_background as strip_alpha_background

import generate_nature # to load most/all factory.AssetFactory subclasses

def build_scene_asset(factory_name, idx):
factory = None
for subdir in os.listdir('assets'):
for subdir in os.listdir('infinigen/assets'):
with gin.unlock_config():
module = importlib.import_module(f'assets.{subdir.split(".")[0]}')
if hasattr(module, factory_name):
Expand Down Expand Up @@ -91,7 +91,7 @@ def build_scene_asset(factory_name, idx):
def build_scene_surface(factory_name, idx):
try:
with gin.unlock_config():
scatter = importlib.import_module(f'surfaces.scatters.{factory_name}')
scatter = importlib.import_module(f'infinigen.assets.scatters.{factory_name}')

if not hasattr(scatter, 'apply'):
raise ValueError(f'{scatter} has no apply()')
Expand All @@ -109,7 +109,7 @@ def build_scene_surface(factory_name, idx):
except ModuleNotFoundError:
try:
with gin.unlock_config():
template = importlib.import_module(f'assets.materials.{factory_name}')
template = importlib.import_module(f'infinigen.assets.materials.{factory_name}')
bpy.ops.mesh.primitive_ico_sphere_add(radius=.8, subdivisions=9)
asset = bpy.context.active_object
template.apply(asset)
Expand Down
2 changes: 2 additions & 0 deletions examples/scripts/hello_world_stepbystep.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# DO NOT MODIFY STRUCTURE OR COMMENTS: commands are read by test_hello_world.py

# Generate a scene layout
python examples/generate_nature.py -- --seed 0 --task coarse -g desert.gin simple.gin --output_folder outputs/helloworld/coarse

Expand Down
4 changes: 3 additions & 1 deletion infinigen/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
__version__ = '1.1.0'
import pkg_resources
from pathlib import Path
__version__ = pkg_resources.get_distribution(Path(__file__).parent.name).version
1 change: 1 addition & 0 deletions infinigen/assets/creatures/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@
from .crustacean import CrustaceanFactory, CrabFactory, LobsterFactory, SpinyLobsterFactory
from .reptile import FrogFactory, LizardFactory, SnakeFactory
from .insects.dragonfly import DragonflyFactory
from .jellyfish import JellyfishFactory
3 changes: 2 additions & 1 deletion infinigen/assets/creatures/beetle.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

from infinigen.core.placement.factory import AssetFactory, make_asset_collection
from infinigen.core.util.math import lerp, clip_gaussian, FixedSeed
from infinigen.core import surface
import infinigen.assets.materials.chitin
from infinigen.assets.utils.tag import tag_object, tag_nodegroup

Expand Down Expand Up @@ -103,7 +104,7 @@ def beetle_genome():
parts=body,
postprocess_params=dict(
surface_registry=[
(assets.materials.chitin, 1)
(infinigen.assets.materials.chitin, 1)
],
hair=insect_hair_params()
)
Expand Down
17 changes: 9 additions & 8 deletions infinigen/assets/creatures/bird.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
from infinigen.core.util.math import clip_gaussian, FixedSeed
from infinigen.core.util.random import random_general as rg
from infinigen.core.util import blender as butil
from infinigen.core import surface

from infinigen.core.placement.factory import AssetFactory
from infinigen.assets.creatures.util.creature_util import offset_center
Expand Down Expand Up @@ -150,10 +151,10 @@ def duck_genome(mode):
animation=dict(),
hair=bird_hair_params(flying=False),
surface_registry=[
(assets.materials.spot_sparse_attr, 4),
(assets.materials.reptile_brown_circle_attr, 0.5),
(assets.materials.reptile_two_color_attr, 0.5),
(assets.materials.bird, 5)
(infinigen.assets.materials.spot_sparse_attr, 4),
(infinigen.assets.materials.reptile_brown_circle_attr, 0.5),
(infinigen.assets.materials.reptile_two_color_attr, 0.5),
(infinigen.assets.materials.bird, 5)
]
)
)
Expand Down Expand Up @@ -227,10 +228,10 @@ def flying_bird_genome(mode):
animation=dict(),
hair=bird_hair_params(flying=True),
surface_registry=[
#(assets.materials.spot_sparse_attr, 4),
#(assets.materials.reptile_brown_circle_attr, 0.5),
#(assets.materials.reptile_two_color_attr, 0.5),
(assets.materials.bird, 5)
#(infinigen.assets.materials.spot_sparse_attr, 4),
#(infinigen.assets.materials.reptile_brown_circle_attr, 0.5),
#(infinigen.assets.materials.reptile_two_color_attr, 0.5),
(infinigen.assets.materials.bird, 5)
]
)
)
Expand Down
6 changes: 3 additions & 3 deletions infinigen/assets/creatures/carnivore.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,9 @@ def tiger_genome():
hair=tiger_hair_params(),
skin=tiger_skin_sim_params(),
surface_registry=[
(assets.materials.tiger_attr, 3),
(assets.materials.giraffe_attr, 0.2),
(assets.materials.spot_sparse_attr, 2)
(infinigen.assets.materials.tiger_attr, 3),
(infinigen.assets.materials.giraffe_attr, 0.2),
(infinigen.assets.materials.spot_sparse_attr, 2)
]
)
)
Expand Down
4 changes: 2 additions & 2 deletions infinigen/assets/creatures/fish.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,8 +169,8 @@ def fish_genome():
cloth=fish_fin_cloth_sim_params(),
anim=fish_swim_params(),
surface_registry=[
(assets.materials.fishbody, 3),
#(assets.materials.scale, 1),
(infinigen.assets.materials.fishbody, 3),
#(infinigen.assets.materials.scale, 1),
]
)
)
Expand Down
8 changes: 4 additions & 4 deletions infinigen/assets/creatures/herbivore.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,14 +166,14 @@ def herbivore_genome():
if U() < 1:
hair = herbivore_hair()
registry = [
(assets.materials.giraffe_attr, 1),
(assets.materials.spot_sparse_attr, 3)
(infinigen.assets.materials.giraffe_attr, 1),
(infinigen.assets.materials.spot_sparse_attr, 3)
]
else:
hair = None
registry = [
(assets.materials.reptile_brown_circle_attr, 1),
(assets.materials.reptile_gray_attr, 1)
(infinigen.assets.materials.reptile_brown_circle_attr, 1),
(infinigen.assets.materials.reptile_gray_attr, 1)
]

return genome.CreatureGenome(
Expand Down
10 changes: 5 additions & 5 deletions infinigen/assets/creatures/reptile.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ def dinosaur():
postprocess_params=dict(
animation=dict(),
surface_registry=[
(assets.materials.snake_scale, 1),
(infinigen.assets.materials.snake_scale, 1),
]
)
)
Expand Down Expand Up @@ -178,7 +178,7 @@ def lizard_genome():
postprocess_params=dict(
anim=lizard_run_params(),
surface_registry=[
(assets.materials.snake_scale, 1),
(infinigen.assets.materials.snake_scale, 1),
]
)
)
Expand Down Expand Up @@ -227,7 +227,7 @@ def snake_genome():
postprocess_params=dict(
anim=snake_swim_params(),
surface_registry=[
(assets.materials.snake_scale, 1),
(infinigen.assets.materials.snake_scale, 1),
]
)
)
Expand All @@ -243,7 +243,7 @@ def chameleon_genome():
postprocess_params=dict(
anim=snake_swim_params(),
surface_registry=[
(assets.materials.snake_scale, 1),
(infinigen.assets.materials.snake_scale, 1),
]
)
)
Expand Down Expand Up @@ -304,7 +304,7 @@ def frog_genome():
speed_m_s=0.5
),
surface_registry=[
(assets.materials.snake_scale, 1),
(infinigen.assets.materials.snake_scale, 1),
]
)
)
Expand Down
3 changes: 2 additions & 1 deletion infinigen/assets/grassland/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@

from .dandelion import DandelionFactory, DandelionSeedFactory
from .flowerplant import FlowerPlantFactory
from .grass_tuft import GrassTuftFactory
from .grass_tuft import GrassTuftFactory
from .flower import FlowerFactory
7 changes: 7 additions & 0 deletions infinigen/assets/leaves/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from .leaf import BerryFactory, LeafFactory
from .leaf_broadleaf import LeafFactoryBroadleaf
from .leaf_ginko import LeafFactoryGinko
from .leaf_maple import LeafFactoryMaple
from .leaf_pine import LeafFactoryPine
from .leaf_v2 import LeafFactoryV2
from .leaf_wrapped import LeafFactoryWrapped
2 changes: 1 addition & 1 deletion infinigen/assets/leaves/leaf.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def create_asset(self, **params) -> bpy.types.Object:
butil.apply_transform(obj)

return obj

class BerryFactory(AssetFactory):

def __init__(self, factory_seed, genome, coarse=False):
Expand Down
3 changes: 1 addition & 2 deletions infinigen/assets/monocot/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from .agave import AgaveMonocotFactory
from .grasses import GrassesMonocotFactory, WheatMonocotFactory, WheatEarMonocotFactory, MaizeMonocotFactory, \
ReedMonocotFactory
from .grasses import GrassesMonocotFactory, WheatMonocotFactory, WheatEarMonocotFactory, MaizeMonocotFactory
from .tussock import TussockMonocotFactory
from .pinecone import PineconeFactory
from .generate import MonocotFactory
Expand Down
2 changes: 2 additions & 0 deletions infinigen/assets/scatters/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from .moss import MossFactory
from .lichen import LichenFactory
3 changes: 2 additions & 1 deletion infinigen/assets/underwater/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
from . import seaweed, urchin
from .seaweed import SeaweedFactory
from .urchin import UrchinFactory
14 changes: 13 additions & 1 deletion infinigen/assets/weather/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
from . import particles, cloud
from .cloud import CloudFactory
from .cloud import (
CloudFactory,
CumulonimbusFactory,
CumulusFactory,
AltocumulusFactory,
StratocumulusFactory
)
from .particles import (
DustMoteFactory,
RaindropFactory,
SnowflakeFactory
)

from .kole_clouds import add_kole_clouds
2 changes: 1 addition & 1 deletion infinigen/core/placement/detail.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
IS_COARSE = False # Global VARIABLE, set by examples/generate_nature.py and used only for whether to emit warnings

@gin.configurable
def scatter_res_distance(dist):
def scatter_res_distance(dist=4):
return dist

@gin.configurable
Expand Down
3 changes: 2 additions & 1 deletion infinigen/core/util/blender.py
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,8 @@ def approve_all_drivers():
def count_objects():
count = 0
for obj in bpy.context.scene.objects:
if element.type != "MESH": continue
if obj.type != "MESH":
continue
count +=1
return count

Expand Down
Loading

0 comments on commit 0228fde

Please sign in to comment.