Code Monkey home page Code Monkey logo

Comments (11)

PlagueHO avatar PlagueHO commented on July 16, 2024

Hi @jcwalker:

  1. which folder is set as the current folder when you call Invoke-Pester?
  2. Are you in the Tests\Integration or the DSC Module Root folder when you call Invoke-Pester? If the current folder is anything but the DSC Module Root folder the tests will fail.

Regarding the testing guidance, are you referring to this document? It might be that the testing guidance needs tweaking.

Thanks!

from dscresource.tests.

jcwalker avatar jcwalker commented on July 16, 2024

Hey @PlagueHO
Yes I am in the Tests\Integration folder. And yes I'm referring to that document.
So I should be calling Invoke-Pester from the module root folder and not from the Test\Integration folder?

Thanks for being so quick to respond to this.

from dscresource.tests.

KarolKaczmarek avatar KarolKaczmarek commented on July 16, 2024

Currently Initialize-TestEnvironment is written in a way that it requires to call Invoke-Pester from root folder, however I think we should modify it so that it works regardless of the location where we invoke tests from (this way we can easily execute either unit or integration tests only).

from dscresource.tests.

PlagueHO avatar PlagueHO commented on July 16, 2024

@KarolKaczmarek - that is a good idea - didn't think of that (I've usually just specified the -script parameter on invoke-pester). Although if you do run Invoke-Pester from a subfolder you'd end up with a copy of the DSCResource.Test in that folder as well - but I don't see that as a problem.

We could look for "$DSCModuleName.psd1" in the current folder and if it is not found, walk up the directory tree to find it (that is risky though). Better idea might be to check current folder and if the two leaf nodes are named "Tests\Integration" then adjust the $RelativeModulePath accordingly (e.g. $RelativeModulePath = "..\..\$DSCModuleName.psd1"

Would do something similar with the unit test path as well.

Should I give either of these two approaches a try and submit a PR if appropriate? Or is there a better way?

Tx

from dscresource.tests.

PlagueHO avatar PlagueHO commented on July 16, 2024

@jcwalker, glad to help. At the moment, the test initialization code does need to be called from the root folder of your DSC Module (via INvoke-Pester), but as @KarolKaczmarek suggests, this might be able to be changed as executing just Integration or Unit tests only would be useful.

from dscresource.tests.

KarolKaczmarek avatar KarolKaczmarek commented on July 16, 2024

@PlagueHO
DscResource.Tests should always be cloned to the root directory, so that regardless of where we call tests from, there's always only one copy of it present.

To achieve that, just make sure that you obtain the root path within the integration_template.ps1 and copy DscResource.Tests there specifically (currently we copy it wherever we call Invoke-Pester from since we use the current location). You can do it in the same way as it's done in Initialize-TestEnvironment:

[String] $moduleRoot = Split-Path -Parent (Split-Path -Parent $Script:MyInvocation.MyCommand.Path)

I believe this should also fix the problem @jcwalker reported.

from dscresource.tests.

PlagueHO avatar PlagueHO commented on July 16, 2024

@KarolKaczmarek, your suggestion works 100% 👍 and does indeed resolve @jcwalker's issue.

I'll submit a PR for the test.templates in DSCResources.

from dscresource.tests.

KarolKaczmarek avatar KarolKaczmarek commented on July 16, 2024

Awesome, thanks!

from dscresource.tests.

jcwalker avatar jcwalker commented on July 16, 2024

Thanks @KarolKaczmarek and @PlagueHO . That was a fast resolution!

from dscresource.tests.

PlagueHO avatar PlagueHO commented on July 16, 2024

Glad to help and good catch 😄

from dscresource.tests.

KarolKaczmarek avatar KarolKaczmarek commented on July 16, 2024

Fixed in PowerShell/DscResources#85

from dscresource.tests.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.