Skip to content

Instantly share code, notes, and snippets.

View zainab-ali's full-sized avatar

Zainab Ali zainab-ali

View GitHub Profile
@zainab-ali
zainab-ali / Provider.test.scala
Created October 1, 2025 14:05
Demonstrates usage of `Provider` vs `SharedResourceSuite`
//> using scala "3.7.0"
//> using test.dep org.typelevel::weaver-cats::0.11-5acfd6a-SNAPSHOT
//> using repository "https://central.sonatype.com/repository/maven-snapshots"
import cats.effect.*
import cats.*
import cats.data.OptionT
import weaver.*
import fs2.*
type MyEffect[A] = OptionT[IO, A]
@zainab-ali
zainab-ali / WeaverScalaNativeBug.scala
Last active September 23, 2025 12:36
weaver's shading logic for munit-diff causes linking errors in Scala Native
//> using scala "3.7.0"
//> using platform native
//> using repository "https://central.sonatype.com/repository/maven-snapshots"
// The linking error occurs in the latest published version:
//> using nativeVersion 0.4.17
//> using dep org.typelevel::weaver-cats::0.10.1
// They also occur in the 0.5 version, regardless of the version of munit-diff:
// using nativeVersion 0.5.7
@zainab-ali
zainab-ali / DisciplineBug.test.scala
Created September 19, 2025 13:47
Demonstrates bugs in DisciplineFSuite
//> using scala "3.7.3"
//> using test.dep org.typelevel::weaver-cats::0.10.1
//> using test.dep org.typelevel::weaver-discipline::0.10.1
import weaver.*
import weaver.discipline.*
import cats.effect.IO
object DisciplineBug extends SimpleIOSuite with DisciplineFSuite[IO] {
//> using scala "3.7.3"
//> using test.dep org.typelevel::weaver-cats::0.10.1
//> using test.dep org.typelevel::weaver-scalacheck::0.10.1
import weaver.*
import weaver.scalacheck.*
import org.scalacheck.rng.Seed
object CheckersBug extends SimpleIOSuite with Checkers {
@zainab-ali
zainab-ali / NonTerminatingSuite.test.scala
Created September 5, 2025 11:42
weaver-issue-83-repo
//> using scala "3.7.0"
//> using dep "org.typelevel::weaver-cats::0.10.1"
//> using dep "org.typelevel::weaver-scalacheck::0.10.1"
import org.scalacheck.{Arbitrary, Gen}
import weaver.*
import weaver.scalacheck.*
object NonTerminatingSuite extends SimpleIOSuite with Checkers:
test("Fix me") {
@zainab-ali
zainab-ali / MySuite.test.scala
Created September 2, 2025 10:56
Weaver SourceLocation macro bug
//> using scala "3.7.0"
//> using dep "org.typelevel::weaver-cats::0.10.0"
import weaver.*
object MySuite extends FunSuite:
test("parse and compare valid semver"):
expect.all(
1 > 2
)
@zainab-ali
zainab-ali / RenameExpectToExpectSame.scala
Created June 25, 2025 11:01
weaver: replace `expect(.. == ..)` with `expect.same`
package fix
import scalafix.v1._
import scala.meta._
class RenameExpectToExpectSame extends SemanticRule("RenameExpectToExpectSame") {
override def fix(implicit doc: SemanticDocument): Patch = {
val expectMethod =
SymbolMatcher.normalized("weaver/Expectations.Helpers#expect.")
doc.tree.collect {
@zainab-ali
zainab-ali / MeteredParEvalMapUnbounded.scala
Created June 23, 2025 17:04
aquascape: metered & parEvalMapUnorderedUnbounded
//> using scala "3.7.0"
//> using dep "com.github.zainab-ali::aquascape::0.4.0"
import fs2.*
import cats.effect.*
import aquascape.*
import aquascape.drawing.*
import scala.concurrent.duration.*
object MeteredParEvalMapUnbounded extends AquascapeApp {
@zainab-ali
zainab-ali / lsug-talks-thank-you.scala
Last active August 14, 2025 19:32
London Scala User Group Talks Thank-you Template
//> using dep com.indoorvivants::decline-derive::latest.release
import decline_derive.*
case class Attributes(
@Name("intro-slides")
introSlides: String,
@Name("venue")
venue: String,
@Name("venue-bsky")
venueBsky: String,
@zainab-ali
zainab-ali / pizza-calculator.scala
Last active April 17, 2025 15:58
London Scala User Group Pizza Calculator
/** This app calculates the number of pizzas needed for each
* London Scala event.
*
* Meat, vegetarian and vegan pizzas are all a Dominos Large
* size. Gluten-free pizzas come in a single small size.
*
* You can run this locally with:
*
* > scala https://gist.github.com/zainab-ali/231e3ded6e8241d11e3927f9521bc0cc -- <numberOfSignupsOnMeetupDotCom>
*