Exemple #1
0
  def testEnvironmentCommand(self):
    dir = VirtualDirectory()
    bar = Artifact("env/BAR", None)
    bar_set = Artifact("env/set/BAR", None)
    output = Artifact("foo", None)
    command = EnvironmentCommand(MockRuleContext(bar, bar_set), "BAR", output)

    enumerator = MockArtifactEnumerator({bar_set: "false"})
    command.enumerate_artifacts(enumerator)
    self.assertEquals([bar_set], enumerator.reads)
    self.assertEquals([], enumerator.inputs)
    self.assertEquals([output], enumerator.outputs)

    enumerator = MockArtifactEnumerator({bar_set: "true"})
    command.enumerate_artifacts(enumerator)
    self.assertEquals([bar_set], enumerator.reads)
    self.assertEquals([bar], enumerator.inputs)
    self.assertEquals([output], enumerator.outputs)

    context = MockCommandContext(dir)

    dir.write("env/set/BAR", "false")
    log = cStringIO.StringIO()
    self.assertFalse(command.run(context, log))
    self.assertFalse(dir.exists("foo"))
    self.assertEquals("Environment variable not set: BAR\n", log.getvalue())

    dir.write("env/set/BAR", "true")
    dir.write("env/BAR", "baz")
    log = cStringIO.StringIO()
    self.assertTrue(command.run(context, log))
    self.assertEquals("baz", dir.read("foo"))
    self.assertEquals("", log.getvalue())

    self.assertEquals("echo $BAR > foo\n", _print_command(command))
Exemple #2
0
    def testEnvironmentCommandWithDefault(self):
        bar = Artifact("env/BAR", None)
        bar_set = Artifact("env/set/BAR", None)
        default = Artifact("default", None)
        output = Artifact("foo", None)
        command = EnvironmentCommand(MockRuleContext(bar, bar_set), "BAR",
                                     output, default)

        enumerator = MockArtifactEnumerator({bar_set: "false"})
        command.enumerate_artifacts(enumerator)
        self.assertEquals([bar_set], enumerator.reads)
        self.assertEquals([default], enumerator.inputs)
        self.assertEquals([output], enumerator.outputs)

        enumerator = MockArtifactEnumerator({bar_set: "true"})
        command.enumerate_artifacts(enumerator)
        self.assertEquals([bar_set], enumerator.reads)
        self.assertEquals([bar], enumerator.inputs)
        self.assertEquals([output], enumerator.outputs)

        dir = VirtualDirectory()
        dir.write("env/set/BAR", "true")
        dir.write("env/BAR", "baz")
        context = MockCommandContext(dir)
        log = cStringIO.StringIO()
        self.assertTrue(command.run(context, log))
        self.assertEquals("baz", dir.read("foo"))
        self.assertEquals("", log.getvalue())

        dir = VirtualDirectory()
        dir.write("env/set/BAR", "false")
        dir.write("default", "qux")
        context = MockCommandContext(dir)
        log = cStringIO.StringIO()
        self.assertTrue(command.run(context, log))
        self.assertEquals("qux", dir.read("foo"))
        self.assertEquals("", log.getvalue())

        self.assertEquals("echo ${BAR:$(default)} > foo\n",
                          _print_command(command))
Exemple #3
0
    def testEnvironmentCommand(self):
        dir = VirtualDirectory()
        bar = Artifact("env/BAR", None)
        bar_set = Artifact("env/set/BAR", None)
        output = Artifact("foo", None)
        command = EnvironmentCommand(MockRuleContext(bar, bar_set), "BAR",
                                     output)

        enumerator = MockArtifactEnumerator({bar_set: "false"})
        command.enumerate_artifacts(enumerator)
        self.assertEquals([bar_set], enumerator.reads)
        self.assertEquals([], enumerator.inputs)
        self.assertEquals([output], enumerator.outputs)

        enumerator = MockArtifactEnumerator({bar_set: "true"})
        command.enumerate_artifacts(enumerator)
        self.assertEquals([bar_set], enumerator.reads)
        self.assertEquals([bar], enumerator.inputs)
        self.assertEquals([output], enumerator.outputs)

        context = MockCommandContext(dir)

        dir.write("env/set/BAR", "false")
        log = cStringIO.StringIO()
        self.assertFalse(command.run(context, log))
        self.assertFalse(dir.exists("foo"))
        self.assertEquals("Environment variable not set: BAR\n",
                          log.getvalue())

        dir.write("env/set/BAR", "true")
        dir.write("env/BAR", "baz")
        log = cStringIO.StringIO()
        self.assertTrue(command.run(context, log))
        self.assertEquals("baz", dir.read("foo"))
        self.assertEquals("", log.getvalue())

        self.assertEquals("echo $BAR > foo\n", _print_command(command))
Exemple #4
0
  def testEnvironmentCommandWithDefault(self):
    bar = Artifact("env/BAR", None)
    bar_set = Artifact("env/set/BAR", None)
    default = Artifact("default", None)
    output = Artifact("foo", None)
    command = EnvironmentCommand(MockRuleContext(bar, bar_set),
                                 "BAR", output, default)

    enumerator = MockArtifactEnumerator({bar_set: "false"})
    command.enumerate_artifacts(enumerator)
    self.assertEquals([bar_set], enumerator.reads)
    self.assertEquals([default], enumerator.inputs)
    self.assertEquals([output], enumerator.outputs)

    enumerator = MockArtifactEnumerator({bar_set: "true"})
    command.enumerate_artifacts(enumerator)
    self.assertEquals([bar_set], enumerator.reads)
    self.assertEquals([bar], enumerator.inputs)
    self.assertEquals([output], enumerator.outputs)

    dir = VirtualDirectory()
    dir.write("env/set/BAR", "true")
    dir.write("env/BAR", "baz")
    context = MockCommandContext(dir)
    log = cStringIO.StringIO()
    self.assertTrue(command.run(context, log))
    self.assertEquals("baz", dir.read("foo"))
    self.assertEquals("", log.getvalue())

    dir = VirtualDirectory()
    dir.write("env/set/BAR", "false")
    dir.write("default", "qux")
    context = MockCommandContext(dir)
    log = cStringIO.StringIO()
    self.assertTrue(command.run(context, log))
    self.assertEquals("qux", dir.read("foo"))
    self.assertEquals("", log.getvalue())

    self.assertEquals("echo ${BAR:$(default)} > foo\n", _print_command(command))