Skip to content

Instantly share code, notes, and snippets.

@hikoz
Created June 26, 2012 12:46
Show Gist options
  • Select an option

  • Save hikoz/2995613 to your computer and use it in GitHub Desktop.

Select an option

Save hikoz/2995613 to your computer and use it in GitHub Desktop.

Revisions

  1. hikoz revised this gist Jun 26, 2012. 1 changed file with 6 additions and 7 deletions.
    13 changes: 6 additions & 7 deletions ReloadTest.java
    Original file line number Diff line number Diff line change
    @@ -4,13 +4,12 @@
    import static org.junit.Assert.*;

    import java.io.File;
    import java.nio.charset.Charset;
    import java.util.Properties;

    import org.junit.Test;

    import com.google.common.io.Files;
    import com.greenlaw110.rythm.Rythm;
    import com.greenlaw110.rythm.utils.IO;

    public class ReloadTest {
    @Test
    @@ -22,17 +21,17 @@ public void reload() throws Exception {
    Rythm.init(p);

    File f1 = new File(d, "f1.html");
    Files.write("@extends(f2)@set(title=\"foo\")", f1, Charset.defaultCharset());
    IO.writeContent("@extends(f2)@set(title=\"foo\")", f1);
    File f2 = new File(d, "f2.html");
    Files.write("@get(title)", f2, Charset.defaultCharset());
    IO.writeContent("@get(title)", f2);
    assertThat(Rythm.render("f1.html"), is("foo\n"));

    Files.write("@extends(f2)@set(title=\"bar\")", f1, Charset.defaultCharset());
    IO.writeContent("@extends(f2)@set(title=\"bar\")", f1);
    assertThat(Rythm.render("f1.html"), is("foo\n"));

    for (int i = 0; i < 5; ++i) {
    sleep(5);
    Files.write("@extends(f2)@set(title=\"baz\")", f1, Charset.defaultCharset());
    sleep(6);
    IO.writeContent("@extends(f2)@set(title=\"baz\")", f1);
    assertThat(Rythm.render("f1.html"), is("baz\n"));
    }
    }
  2. hikoz created this gist Jun 26, 2012.
    47 changes: 47 additions & 0 deletions ReloadTest.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,47 @@
    package rythm.test;

    import static org.hamcrest.Matchers.*;
    import static org.junit.Assert.*;

    import java.io.File;
    import java.nio.charset.Charset;
    import java.util.Properties;

    import org.junit.Test;

    import com.google.common.io.Files;
    import com.greenlaw110.rythm.Rythm;

    public class ReloadTest {
    @Test
    public void reload() throws Exception {
    File d = new File(System.getProperty("java.io.tmpdir"));
    Properties p = new Properties();
    p.setProperty("rythm.root", d.getAbsolutePath());
    p.setProperty("rythm.mode", "dev");
    Rythm.init(p);

    File f1 = new File(d, "f1.html");
    Files.write("@extends(f2)@set(title=\"foo\")", f1, Charset.defaultCharset());
    File f2 = new File(d, "f2.html");
    Files.write("@get(title)", f2, Charset.defaultCharset());
    assertThat(Rythm.render("f1.html"), is("foo\n"));

    Files.write("@extends(f2)@set(title=\"bar\")", f1, Charset.defaultCharset());
    assertThat(Rythm.render("f1.html"), is("foo\n"));

    for (int i = 0; i < 5; ++i) {
    sleep(5);
    Files.write("@extends(f2)@set(title=\"baz\")", f1, Charset.defaultCharset());
    assertThat(Rythm.render("f1.html"), is("baz\n"));
    }
    }

    private void sleep(int n) throws InterruptedException {
    for (int i = 0; i < n; ++i) {
    Thread.sleep(1000L);
    System.out.print(".");
    }
    System.out.println();
    }
    }
    17 changes: 17 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,17 @@
    java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(String.java:1937)
    at com.greenlaw110.rythm.internal.CodeBuilder.setExtended_deprecated(CodeBuilder.java:280)
    at com.greenlaw110.rythm.internal.CodeBuilder.setExtended(CodeBuilder.java:258)
    at com.greenlaw110.rythm.internal.parser.build_in.ExtendsParser$1$1.call(ExtendsParser.java:67)
    at com.greenlaw110.rythm.internal.CodeBuilder.invokeDirectives(CodeBuilder.java:388)
    at com.greenlaw110.rythm.internal.CodeBuilder.build(CodeBuilder.java:365)
    at com.greenlaw110.rythm.internal.compiler.TemplateClass.buildSourceCode(TemplateClass.java:320)
    at com.greenlaw110.rythm.internal.compiler.TemplateClass.refresh(TemplateClass.java:417)
    at com.greenlaw110.rythm.internal.compiler.TemplateClass.refresh(TemplateClass.java:311)
    at com.greenlaw110.rythm.internal.compiler.TemplateClassLoader.detectChange(TemplateClassLoader.java:355)
    at com.greenlaw110.rythm.internal.compiler.TemplateClassManager.checkUpdate(TemplateClassManager.java:91)
    at com.greenlaw110.rythm.internal.compiler.TemplateClassManager.getByTemplate(TemplateClassManager.java:80)
    at com.greenlaw110.rythm.RythmEngine.getTemplate(RythmEngine.java:407)
    at com.greenlaw110.rythm.RythmEngine.render(RythmEngine.java:456)
    at com.greenlaw110.rythm.Rythm.render(Rythm.java:94)
    at rythm.test.ReloadTest.reload(ReloadTest.java:36)