/******************************************************************************* * Copyright (c) 2013 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.usage.test; import static org.junit.Assert.assertEquals; import org.jboss.tools.usage.googleanalytics.eclipse.LinuxSystem; import org.jboss.tools.usage.test.fakes.LinuxSystemFake; import org.jboss.tools.usage.test.fakes.LinuxSystemFake.ReleaseFile; import org.junit.Test; public class LinuxSystemTest { @Test public void canDetectFedora() { LinuxSystem linuxSystem = new LinuxSystemFake( new ReleaseFile(LinuxSystem.INSTANCE.FEDORA.getReleaseFilePath(), "Fedora release 13 (Goddard)")); assertEquals("Fedora 13", linuxSystem.getDistroNameAndVersion()); } /** * Mint uses the default * <ul> * <li>/etc/lsb-release</li> * </ul> */ @Test public void canDetectMintVersion() { LinuxSystem linuxSystem = new LinuxSystemFake( new ReleaseFile( LinuxSystem.INSTANCE.DEBIAN.getReleaseFilePath(), "squeeze/sid"), new ReleaseFile( LinuxSystem.INSTANCE.MINT.getReleaseFilePath(), "DISTRIB_ID=LinuxMint\n" + "DISTRIB_RELEASE=12\n" + "DISTRIB_CODENAME=debian\n" + "DISTRIB_DESCRIPTION=\"Linux Mint 12 Lisa\"") ); assertEquals("LinuxMint 12", linuxSystem.getDistroNameAndVersion()); } /** * Ubuntu has 2 release files! * <ul> * <li>/etc/lsb-release</li> * <li>/etc/debian_version</li> * </ul> */ @Test public void canDetectUbuntu() { LinuxSystem linuxSystem = new LinuxSystemFake( new ReleaseFile( LinuxSystem.INSTANCE.DEBIAN.getReleaseFilePath(), "squeeze/sid"), new ReleaseFile( LinuxSystem.INSTANCE.UBUNTU.getReleaseFilePath(), "DISTRIB_ID=Ubuntu\n" + "DISTRIB_RELEASE=9.04\n" + "DISTRIB_CODENAME=jaunty\n" + "DISTRIB_DESCRIPTION=\"Ubuntu 9.04\"")); assertEquals("Ubuntu 9.04", linuxSystem.getDistroNameAndVersion()); } @Test public void returnsUnknownIfLSBReleaseWithUnknownContent() { LinuxSystem linuxSystem = new LinuxSystemFake( new ReleaseFile( "/etc/lsb-release", "adietish@redhat.com")); assertEquals("Unknown", linuxSystem.getDistroNameAndVersion()); } @Test public void canDetectRedHat() { LinuxSystem linuxSystem = new LinuxSystemFake( new ReleaseFile( LinuxSystem.INSTANCE.REDHAT.getReleaseFilePath(), "Red Hat Enterprise Linux Workstation release 6.0 (Santiago)")); assertEquals("Red Hat 6.0", linuxSystem.getDistroNameAndVersion()); } @Test public void canDetectGentoo() { LinuxSystem linuxSystem = new LinuxSystemFake( new ReleaseFile( LinuxSystem.INSTANCE.GENTOO.getReleaseFilePath(), "Gentoo Base System release 2.0.1")); assertEquals("Gentoo 2.0.1", linuxSystem.getDistroNameAndVersion()); } /** * CentOS uses the redhat-release file! * <ul> * <li>/etc/redhat-release</li> * </ul> */ @Test public void canDetectCentOS() { LinuxSystem linuxSystem = new LinuxSystemFake( new ReleaseFile( LinuxSystem.INSTANCE.CENTOS.getReleaseFilePath(), "CentOS release 5.3 (Final)")); assertEquals("CentOS 5.3", linuxSystem.getDistroNameAndVersion()); } @Test public void canDetectOsReleaseBasedDistro() { LinuxSystem linuxSystem = new LinuxSystemFake( new ReleaseFile( "/etc/os-release", "NAME=\"Ubuntu\"\n" + "VERSION=\"15.04 (Vivid Vervet)\"\n" + "ID=ubuntu\n" + "PRETTY_NAME=\"Ubuntu 15.04\"" + "VERSION_ID=\"15.04\"\n" + "HOME_URL=\"http://www.ubuntu.com/\"\n" + "SUPPORT_URL=\"http://help.ubuntu.com/\"\n" + "BUG_REPORT_URL=\"http://bugs.launchpad.net/ubuntu/\"\n") ); assertEquals("Ubuntu 15.04", linuxSystem.getDistroNameAndVersion()); linuxSystem = new LinuxSystemFake( new ReleaseFile( "/etc/os-release", "VERSION=\"15.04 (Vivid Vervet)\"\n" + "ID=ubuntu\n" + "PRETTY_NAME=\"Ubuntu 15.04\"" + "VERSION_ID=\"15.04\"\n") ); assertEquals("ubuntu 15.04", linuxSystem.getDistroNameAndVersion()); linuxSystem = new LinuxSystemFake( new ReleaseFile( "/etc/os-release", "NAME=Ubuntu\n" + "VERSION=\"15.04 (Vivid Vervet)\"\n" + "ID=ubuntu\n") ); assertEquals("Ubuntu 15.04", linuxSystem.getDistroNameAndVersion()); linuxSystem = new LinuxSystemFake( new ReleaseFile( "/usr/lib/os-release", "NAME=Ubuntu\n" + "VERSION=\"15.04 (Vivid Vervet)\"\n" + "ID=ubuntu\n") ); assertEquals("Ubuntu 15.04", linuxSystem.getDistroNameAndVersion()); linuxSystem = new LinuxSystemFake( new ReleaseFile( "/usr/lib/os-release", "NAME=incorrect\n" + "ID=incorrect\n"), new ReleaseFile( "/etc/os-release", "NAME=Ubuntu\n" + "VERSION=\"15.04 (Vivid Vervet)\"\n" + "ID=ubuntu\n") ); assertEquals("Ubuntu 15.04", linuxSystem.getDistroNameAndVersion()); linuxSystem = new LinuxSystemFake( new ReleaseFile( "/etc/os-release", "#$%^&*blah-blah-blah") ); assertEquals("Unknown", linuxSystem.getDistroNameAndVersion()); } @Test public void returnsUnknownIfRedHatReleaseWithUnknownContent() { LinuxSystem linuxSystem = new LinuxSystemFake( new ReleaseFile( LinuxSystem.INSTANCE.REDHAT.getReleaseFilePath(), "adietish@redhat.com")); assertEquals("Unknown", linuxSystem.getDistroNameAndVersion().trim()); } }