def download_project_sources(self, snapshot=None, url=None): Builder.download_project_sources(self, snapshot, url) godep_path = os.path.join(os.environ["GOPATH"], "src/github.com/trustedanalytics/") if not os.path.exists(godep_path): os.makedirs(godep_path) if not os.path.exists(os.path.join(godep_path, self.name)): os.symlink(os.path.join(PLATFORM_PARENT_PATH, self.name), os.path.join(godep_path, self.name))
def test_collection_mid_uplink_zaa(): """ Same as for ``aa``, but with different naming """ logger.setLevel(logging.DEBUG) class A: b = Uplink() class B: zaa = Collection(A) c = Uplink() class C: bb = Collection(B) B.c.linksTo(C, C.bb) A.b.linksTo(B, B.zaa) builder = Builder(B).withA(HavingIn(B.zaa, 1), HavingIn(C.bb, 1)) c = builder.build().c assert len(c.bb) == 2 assert len(c.bb[0].zaa) == 2 assert len(c.bb[1].zaa) == 2
def test_modifier_supply(): class A: foo = 0 bar = 0 class B: a = Unique(A) mod1 = InstanceModifier(A).thatSets(foo=1) mod2 = InstanceModifier(A).thatSets(bar=1) b1 = Builder(B).withA(mod1, mod2).build() b2 = Builder(B).withA([mod1, mod2]).build() b3 = Builder(B).withA(*[mod1, mod2]).build() b4 = Builder(B).withA([mod1], [mod2]).build() b5 = Builder(B).withA([mod1], mod2).build() def test(b): assert b.a.foo == 1 assert b.a.bar == 1 test(b1) test(b2) test(b3) test(b4) test(b5)
def test_local_reused(): u1 = Builder(U).build() u2 = Builder(U).build() assert isinstance(u1.a, A) assert isinstance(u1.b, A) assert u1.a == u2.a assert u1.a != u1.b
def test_given_chains(): c = Builder(C).build() c2 = Builder(C).withA(Given(B.a, c.b.a)).build() assert c2.b.a == c.b.a c3 = Builder(C).withA(Given(C.b, c.b)).build() assert c3.b == c.b
def download_project_sources(self, snapshot=None, url=None): Builder.download_project_sources(self, snapshot, url) godep_path = os.path.join(os.environ["GOPATH"], 'src/github.com/trustedanalytics/') if not os.path.exists(godep_path): os.makedirs(godep_path) if not os.path.exists(os.path.join(godep_path, self.name)): os.symlink(os.path.join(PLATFORM_PARENT_PATH, self.name), os.path.join(godep_path, self.name))
def test_reuse(): d1 = Builder(Down).withA(InstanceModifier(Up).thatSets(id=1)).build() # assert d1 in d1.up.downs FIXME: this should work d2 = Builder(Down).withA(InstanceModifier(Up).thatSets(id=1)).build() d3 = Builder(Down).withA(InstanceModifier(Up).thatSets(id=2)).build() assert d1.up == d2.up # assert d1 in d2.up.downs FIXME: this should work # assert d2 in d2.up.downs FIXME: this should work assert d1.up != d3.up
def test_reused_keys_mod(): builder = Builder(ReusingKey).withA(InstanceModifier(A).thatSets(b='ololo')) rk1 = builder.build() rk2 = builder.build() rk3 = builder.withA(InstanceModifier(A).thatSets(b='hahaha')).build() assert isinstance(rk1.a, A) assert isinstance(rk2.a, A) assert isinstance(rk3.a, A) assert rk1.a == rk2.a assert rk1.b == rk2.b assert rk1.a != rk3.a
def test_maybe_enabled(): class A: pass class B: a = Maybe(Unique(A)) b1 = Builder(B).withA(Enabled(B.a)).build() b2 = Builder(B).build() assert b1.a is not None assert b2.a is None
def test_maybe_disabled(): class A: pass class B: a = Maybe(Unique(A), enabled=True) b1 = Builder(B).withA(Disabled(B.a)).build() b2 = Builder(B).build() assert b1.a is None assert b2.a
def test_maybe_default(): class A: pass class B: a = Maybe(Unique(A), enabled=True) b1 = Builder(B).build() b2 = Builder(B).build() assert b1.a assert b2.a
def test_uplink_reset(): class B: a = Uplink() class A: bs = Collection(B) B.a.linksTo(A, A.bs) a = Builder(A).withA(NumberOf(A.bs, 0)).build() b = Builder(B).build() assert a != b.a
def test_reused_keys_mod(): builder = Builder(ReusingKey).withA( InstanceModifier(A).thatSets(b='ololo')) rk1 = builder.build() rk2 = builder.build() rk3 = builder.withA(InstanceModifier(A).thatSets(b='hahaha')).build() assert isinstance(rk1.a, A) assert isinstance(rk2.a, A) assert isinstance(rk3.a, A) assert rk1.a == rk2.a assert rk1.b == rk2.b assert rk1.a != rk3.a
def test_not_touches(): class A: pass class B: a = Unique(A) b1 = Builder(B).withA(Given(B.a, 8)).build() assert b1.a == 8 b2 = Builder(B).build() assert isinstance(b2.a, A)
def test_Having_instances(): class A: pass class B: a = Collection(A) myA = A() b = Builder(B).withA(HavingIn(B.a, myA)).build() assert myA in b.a b2 = Builder(B).withA(HavingIn(B.a, myA)).withA(NumberOf(B.a, 3)).build() assert myA in b2.a assert len(b2.a) == 3
def test_class_modifiers_over_lambda(): modifier = InstanceModifier(A).thatDoes(lambda a: setattr(a, 'value', 8)) a = Builder(A).withA(modifier).build() assert isinstance(a, A) assert a.value == 8
def test_key_is_unique(): class A: a = Key(Random(start=1, end=100)) values = [Builder(A).build().a for _ in xrange(100)] assert sorted(list(set(values))) == sorted(values)
def test_thatSetsCarefully_is_careful(): with pytest.raises(AssertionError) as e: Builder(CarefulA).withA( InstanceModifier(CarefulA).thatCarefullySets(foo='bar')).build() assert 'foo' in e.value.message assert 'missing' in e.value.message
def test_uid_is_random(): class A: a = Uid() values = [Builder(A).build().a for _ in xrange(100)] assert sorted(list(set(values))) == sorted(values)
def test_maybe(): class A: b = Uplink() class B: a = Maybe(Unique(A)) A.b.linksTo(B, B.a) b1 = Builder(B).build() b2 = Builder(B).withA(Enabled(B.a)).build() a = Builder(A).withA(Enabled(B.a)).build() assert not b1.a assert isinstance(b2.a, A) assert b2.a.b == b2 assert a.b.a == a
def test_thatSets(): class A: pass a = Builder(A).withA(InstanceModifier(A).thatSets(ololo=1, hahaha=2)).build() assert a.ololo == 1 assert a.hahaha == 2
def test_class_passed_to_lambda(): def check_instance_passed(instance): assert isinstance(instance, A) class A: a = Lambda(check_instance_passed) Builder(A).build()
def test_random_number(run): class A: a = Random(1, 10) value = Builder(A).build() assert value.a >= 1 assert value.a <= 10
def test_lots_of_big_squads(): player = Builder(Player).withA(NumberOf(Squad.units, 5), NumberOf(Player.squads, 3)).build() assert len(player.squads) == 3 for squad in player.squads: assert isinstance(squad.leader, Hero) assert squad.leader.squad == squad assert len(squad.units) == 5
def test_uid_gives_valid_uid(): class A: a = Uid() value = Builder(A).build().a import uuid uuid.UUID(value)
def test_random_string(run): class A: a = Random(1, 10, 'foo_%s') value = Builder(A).build().a assert value[:4] == 'foo_' assert int(value[4:]) >= 1 assert int(value[4:]) <= 10
def test_Y_reverse(): d = Builder(D).build() assert d assert isinstance(d, D) assert isinstance(d.r, R) assert isinstance(d.l, L) assert d.l.d == d assert d.r.d == d
def test_simple(): b = Builder(B).build() assert isinstance(b, B) assert isinstance(b.a, A) assert isinstance(b.a.b, B) assert b == b.a.b assert not A.b.value assert not B.a.value
def test_lambda_executed_twice(): from itertools import count gen = count() class A: a = Lambda(lambda _: gen.next()) values = [Builder(A).build().a for _ in xrange(2)] assert (values[0], values[1]) == (0, 1)
def test_class_modifier_as_class(): def set_value(instance): A.value = 5 M = InstanceModifier(A).thatDoes(set_value) a = Builder(A).withA(M).build() assert isinstance(a, A) assert a.value == 5
def test_reverse(): a = Builder(A).build() assert isinstance(a, A) assert isinstance(a.b, B) assert isinstance(a.b.a, A) assert a == a.b.a assert not A.b.value assert not B.a.value
def test_Y(): r = Builder(R).build() assert r assert isinstance(r, R) assert isinstance(r.d, D) assert isinstance(r.d.l, L) assert r.d.r == r assert r.d.l.d == r.d assert not D.r.value assert not D.l.value
def __init__(self, app_info): Builder.__init__(self, app_info)